Algoritm Pentru Stabilirea Rezultatului Unui Meci de Fotbal

TITLUL LUCRĂRII DE LICENȚĂ

LUCRARE DE LICENȚĂ

2016

Absolvent: Prenumele NUMELE

TITLUL LUCRĂRII DE LICENȚĂ

Enunțul temei: Scurtă descriere a temei lucrării de licență și datele inițiale

Conținutul lucrării: (enumerarea părților componente) Exemplu: Pagina de prezentare, aprecierile coordonatorului de lucrare, titlul capitolului 1, titlul capitolului 2,… titlul capitolului n, bibliografie, anexe.

Locul documentării: Exemplu: Universitatea Tehnică din Cluj-Napoca, Departamentul Calculatoare

Consultanți:

Data emiterii temei: 1 noiembrie 2015

Data predării: 30 Iunie 2016 (se va completa data predării)

Declarație pe proprie răspundere privind

autenticitatea lucrării de licență

Subsemnatul(a)________________________________________________________________________________________________________________________, legitimat(ă) cu _______________ seria _______ nr. ___________________________
CNP _______________________________________________, autorul lucrării ____________________________________________________________________________________________________________________________________________________________________________________________elaborată în vederea susținerii examenului de finalizare a studiilor de licență la Facultatea de Automatică și Calculatoare, Specializarea ________________________________________ din cadrul Universității Tehnice din Cluj-Napoca, sesiunea _________________ a anului universitar __________, declar pe proprie răspundere, că această lucrare este rezultatul propriei activități intelectuale, pe baza cercetărilor mele și pe baza informațiilor obținute din surse care au fost citate, în textul lucrării, și în bibliografie.

Declar, că această lucrare nu conține porțiuni plagiate, iar sursele bibliografice au fost folosite cu respectarea legislației române și a convențiilor internaționale privind drepturile de autor.

Declar, de asemenea, că această lucrare nu a mai fost prezentată în fața unei alte comisii de examen de licență.

In cazul constatării ulterioare a unor declarații false, voi suporta sancțiunile administrative, respectiv, anularea examenului de licență.

Capitolul 1 Introducere – Contextul proiectului

Contextul proiectului

Capitolul 2 Obiectivele Proiectului

2.1 Obiectivele specifice aplicatiei

Fotbalul este un sport minunat, cunoscut si sub numele de Soccer, fiind practicat de circa 250 de milioane de jucatori din peste 200 de tari. Interesul pentru acest sport creste de la an la an, nu numai din partea persoanelor care practica fotbalul, ci si de persoanele care vor sa vada un spectacol. Se poate spune ca fotbalul este cel mai popular si mediatizat sport din lume.

Astfel intentionez sa creez o aplicatie care sa poata sa analizeze meciurle de fotbal cat mai in detaliu, si sa ofere sustinatorilor acestui sport un pronostic pentru deznaodamantul acestora. Cei interesati care vor sa culeaga cat mai multe informatii despre echipele favorite, despre cat si despre jucatori, vor putea face acest lucru prin intermediul aplicatiei, intr-un mod simplu si rapid. Aplicatia va fi capabila sa simuleze orice meci de fotbal in functie de numeroase criterii.

Utilizatorii aplicatei vor avea posibilitatea sa aleaga un meci din lista oferita si sa analizeze meciul respectiv si sa analizeze pronosticurile oferite. Pentru a vizualiza lista de meciuri oferita de aplicatie utilizatorul trebuie sa aleaga o anumita data, iar toate meciurile care se joaca la data respectiva vor fi afisate. Dupa ce se alege data dorita, se vor afisa meciurile in oridnea importantei si popularitatii acestora. IN MARE : Importanta unui meci va fi stabilita de catre aplicatie in urmatorul mod: un meci important sau popular este atuncia cand cel putin una dintre echipe este una de top, este o echipa cu multi fani, urmarita de multe persoane, daca este un derby ( Real Madrid – Barcelona, Manchester United – Manchester City, Inter Milan – AC Milan ) sau daca este un meci important in competitia in care se disputa ( finala/semifinala de cupa , champions league, campionat european, meci intre primele echipe dintr-un clasament ). Ordinea afisarii meciurilor se poate schimba daca utilizatorul doreste asta. Meciurile pot fi grupate in diferite moduri : in functie de campionat ( toate meciurile din anglia, urmate de toate meciurile din franta, urmate de toate meciruile din spania etc. ) ( campionatele sunt grupate in functie de populariatatea acestora : Anglia, Italia, Spania, Franta, Germania ), in functie de ora la care incepe fiecare eveniment, in functie de meciurile care au proncentajul de succes al predictiei cel mai ridicat. Se pot vizualiza mecirile din ziua curenta, meciurile care urmeaza sa se desfasoare ( meciurile din urmatoarele 5 zile fata de ziua curenta ) si meciurile care s-au termiant ( meciurile din precendentele 5 zile ) . Astfel utilziatorul poate sa observe predictiile meciurilor care s-au terminat si sa observe vedidicitatea acestora. Astfel utilizatorul poate sa isi faca o opinie despre ratia de succes al algoritmului aplicatiei.

Dupa ce utilizatorul isi selecteaza meciul dorit acesta va vedea urmatoarele informatii:

Pronosticurile oferite pentru meciul respectiv: acestea pot fi pronosticuri pentru rezultatul meciului ( victorie, egal sau infrangere ), rezultatul meciului in sansa dubla ( victorie sau egal, infrangere sau egal ) , numarul de goluri in meci ( peste 2, 3 sau 4 goluri ), daca amele echipe vor marca sau nu, o echipa marcheaza sau nu ( acest pronostic poate fi si daca o echipa va marca cel putin doua goluri ). Pronosticurile vor fi calculate printr-un algoritm propriu si se aleg in functie de urmatoarele criterii : se alege pronosticul cu cel mai mare procentaj de succes si apoi se cauta cota oferita de agentiile de pariuri pentru pronosticul respectiv. Daca cota este mai mica de 1.18 atunci pronosticul este considerat irelevant si se trece la urmatorul.

Statistici pentru meciul resprectiv: statisticile sunt bazate pe urmatorii factori : procentajul de meciuri castigate, pierdute sau terminate la egalitate in cazul ambelor echipe, proncentajul meciurilor jucate pe propriul stadion castigate, pierdute sau terminate la egalitate in cazul echipei gazda, proncentajul meciurilor jucate in deplasare si castigate, pierdute sau terminate la egalitate in cazul echipei oaspete, ultimele 5 meciuri in cazul ambelor formatii, ultimele 5 meciuri care au avut loc intre cele doua formatii, statistica meciurilor intre cele doua formatii, procentajul golurilor marcate si primite de ambele formatii, procentajul golurilor in partidele dintre cele doua formatii, lotul ambelor echipe, pozitia ambelor echipe in clasament, jucatori indisponibili de la ambele formatii ( jucatori accidentati, jucatori indisponibili din cauza comportamentului, jucatori care sunt plecati la meciuri internationale), golgheterii ambelor echipe. Aceste informatii dau o imagine de ansamblu meciului respectiv si ofera sansa utilizatorului de a fi informat si asi putea face o opinie proprie despre deznodamantul acestuia.

Informatii despre echipa si despre jucatorii echipei: Informatiile oferite despre echipa sunt urmatoarele : valoare, campionat, scurt istoric despre club, trofee, nationalitate. Informatiile oferite despre jucatori sunt urmatoarele: Nume, Prenume, Instoic ( echipele la care au activat in trecut, numarul de meciuri si numarul de goluri ), trofee, realizari personale.

Optiune de chat: aceasta optiune poate fi folosita pentru a comunica cu alti utilizatori sau chiar cu administratorul. Utilizatorul poate sa isi spuna parerea despre aplicatie ( care sunt functionalitatile de care este multumit si care sunt functionalitatile care ar trebui imbunatatite sau adaugate) sau despre anumite pronosticuri ( daca anumite pronosticuri au fost ajutatoare pentru utilizator sau l-au derutat pe acesta).

Utilizatorul dupa ce analizeaza meciul, cu ajutorul informatiilor oferite de aplicatie, poate sa aleaga unul sau mai multe pronosticuri dintre cele oferite de catre aplicatie. Dupa finalul meciului se va decide daca pronosticul ales este castigator sau nu. Fiecarui utilizator i se face un procentaj cu pronosticurile alese de catre acesta ( statistica va fi facuta in functie de cate pronosticuri alese au fost corecte si cate nu ).

Utilizatorul va avea posibilitatea de a crea propriu meci. Trebuie alese 2 echipe din baza de date a aplcatei. Dupa ce meciurile au fost alese se va crea o analiza a meciului creat ( analiza va fi exact lafel ca cea a unui meci normal ). Dupa ce se va face analiza se vor oferi pronosticuri pentru meciul resprectiv. Analiza si pronosticurile vor fi facute luand in considerare forma actuala a celor doua echipe ( ca si cand urmatorul meci al abelor echipe ar fi acesta ). Din punct de vedere al factorului de importanta a meciului, meciul va fi considerat ca unul amical ( un meci amical este un meci fara miza, un meci in care se folosesc mai multi jucatori, nu neaparat cei mai buni, un meci imprevizibil ). Astfel incat daca se va simula acelasi meci de mai multe ori, este posibil ca pronosticurile sa difere intr-o oarecare masaura.

Aplicatia se adreseaza persoanelor pasionate de fotbal. Fotbalul fiind un sport foarte iubit, urmarit de un numar foarte mare de persoane, de la copii la oameni in varsta, de la barbati la femei, oameni din toate clasele sociale, exista interes pentru o aplicatie de acest gen. In mare parte persoanele care ar fi interesate de aceasta aplicatie ar fi persoanele pasionate de fotbal si ancelasi timp si de pariuri sportive. Aceste pesroane pot foarte simplu sa analizeze un meci cu ajutorul informatiilor oferite de aplicatie, sa se gandeasca la un pronostic proproiu, iar apoi sa se consulte cu pronosticurile oferite de aplicatie. Alte persoane pot pur si simplu sa aleaga din pronosticurile oferite de aplicatie, depinde de increderea pe care aplicatia o ofera fiecaruia. Este un lucru foarte benefic ca un jucator de pariuri sa se consulte cu o astfel de aplicatie inaintea plasarii unui pariu, deoarece aceasta aplicatie ofera pronosticuri in urma unei analize foarte detaliate si precise si in special nu implica factorul subiectiv al fiecarei persoane. Multe persoane pasioanate de fotbal au echipe favorite, sau cel putin isi doresc ca anumite echipe sa castige si se lasa purtati de sentiment, uneori analizand un meci foarte subiectiv. O astfel de aplicatie poate ajuta intr-o astfel de situatie, predictia oferita de aplicatie fiind oferita strict de statistici si nu favorizeaza nici o echipa. Informatiile suplimentare oferite de catre aplicatie, majoritatea fiind factori importanti in calcularea probabilitatilor si alegerea predictiilor sunt oferite utilizatorului pentru a creste increderea acestuia in aplicatie si pentru a-i oferi posibilitatea sa analizeze singur meciu. Dupa analiza se poate observa care este motivul pentru care au fost oferite predictiile respective. In acest fel fiecare persoana pasionata de pariuri sportive poate sa isi imbunatateasca strategia de analiza a unui meci de fotbal, sau poate macar sa se consulte cu analiza facuta de aplicatie. In al doilea rand, aplicatia se axeaza si pe persoanele pasionate de fotbal dar care nu sunt interesare de pariuri sportive. Acestea pot folosi aplicatia ca simpla sura de informare. Pronosticurile oferite dau o imsgine de ansambu a meciului pe care utilizatorul il urmareste. Persoane care sunt fanii unei echipe pot sa vada inaintea meciului o analiza detaliata si pot sa isi faca o parere daca favoritii lor vor fi invingatori. Deasemnea unele persoane pot sa vada cu ajutaorul acestei aplicatii daca un meci va fi spectaculos, daca se asteapta sa fie multe goluri sau rasturnarii de sitruatii, doar din predicitile care le sunt oferite.

Timpul de raspuns al aplicatei este unul redus, se doreste a fi undeva la 3-4 secunde pentru actualizarea datelor. Daca utilizatorul selecteaza o data pentru care sa fie afisate meciurile, timpul de raspuns este unul foarte scurt, deoarece baza de date folosita este una performanta cu un algoritm de cautare si de selectare foarte optim. Depinde foarte mult si de conexiunea intre SAP Fiori si baza de date, atunci cand se porneste aplicatia, pentru a putea analiza timpul de raspuns la incarcarea sau actualizarea datelor. Odata ce aplicatia are toate informatiile din baza de date flowul aplicatiei este unul fluent. Nu se astepata in cazul in care se doreste gruparea meciurilor dupa un anumit criteriu, sau daca se doreste vizutalizarea anumitor predictii sau statistici. Aplicatia doar preia inforamtii din tabele si nu se porduc modificari la nivelul datelor. Baza de date este actualizata cu ajutorul program de tip job care ruleaza automat zilnic si aplica modificarile negesare. Datele actualizate sunt: validarea predictiilor pentru meciurile jucate in ziua respectiva, actualzarea rezultatelor si a evenimentelor petrecute in meci, actualizarea clasamentelor, actualziarea inforamtiilor despre jcuatori, actualizarea statisticilor pentru fiecare meci in parte, calcularea predictiilor pentru meciurile urmatoare a echipelor care deja au jucat in etapa curenta. In acest fel navigarea se va face foarte fluent in cazul acestei aplicatii deaorece datele odata actualizare in aplicatie nu mai este nevoie de alte requesturi sau interogari cu baza de date. DESPRE MECIU FACUT DE USER.

Datele folosite vor fi obtinute cu ajutorul unui serviciu web, mai exact cu ajutorul www.xmlsoccer.com. Datele furnizate de acest serviciu web sunt de ajuns pentru a efectua statisticile dorite. Acesta ofera gratuit doar date din campionatul Scotiei, iar pentru a folosi date din alte campionate trebuie facut abonament. Pentru a putea folosi acest serviciu web trebuie de inceput ca utlizatorul sa isi creeze un cont, iar apoi va primi pe mail un token personal. Cu ajutorul aceslui token, utilizatorul poata se creeze requesturi si sa primeasca date in format csv. DETALII.

Platformele sistemului de operare în partea utilizatorului sunt reprezentate de diferite versiuni de Windows cu ultimele servicii de pachete, cât și diferite versiuni de Android si IOS.

Capitolul 3 Studiu Bibliografic

3.1 Solutii similare

Fotbalul este un sport urmarit de un numar foarte mare de persoane, astfel incat dea lungul aniilor s-au dezvoltat multe aplicatii legate de fotbal. Exista simulatoare de fotbal, cele mai cunoscute fiind FIFA si PES unde utilizatorul efectiv simuleaza un meci de fotbal implicandu-se in desfasurarea meciului controland jucatorii. Deasemenea exista multe site-uri si aplicatii care ofera informatii despre meciuri de fotbal sau despre alte aspecte legate de acest sport cum ar fi echipe, jucatori, antrenori, trnasferuri, rezumatele partidelor etc. Pe langa acestea exista si anumite aplicatii care incearca sa prezica desfasurarea unui meci de fotbal, oferind pronosricuri pentru rezultatul acestuia. Acestea sunt aplicatii asemanatoare cu cea ce am dezvoltat eu. Exista mai multe astfel de aplicatii iar eu am incercat sa preiau ce am considerat a fi punctele lor forte si am incercat sa modific ce mi sa parut a fiind puncte slabe. Doar putine dinte aceste aplicatii ofera informatii despre implementarea algorimtului de oferire a pronosticurilor astfel incat eu am decis sa creez propriul algoritm care sa urmareasca o statistica foarte detaliata gandita de mine.

3.1.1 Forebet

Forebet este o aplicație care oferă anumite prosnosticuri fotbalistice bazate pe statistici și pe analiză matematică. Autorul își prezintă algoritmul fosolit pentru oferirea predictiilor, ca fiind un algoritm matematic complex, care folosește tehnici de data mining. Principiile și regulile de baza pentru crearea pronosticurilor sunt urmatoarele: Kelly Criterion, Poisson Distributiom, Probability Theory.

Aceasta aplicatie acopera o arie foarte mare a fotbalului, se ofera informatii din majoritatea campionatelor. Spune ce pronosticuri ofera aplicatia.!! In cazul meciurilor live, aplicatia ofera informatii in timp real despre scorul acestora, astfel incat ofera posibilitatea utilizatorilor de a urmarii meciurile de fotbal, chiar daca acestia nu sunt interesati de functionalitatea de oferire a predictiilor. Un dezavantaj al aplicatiei ar fi faptul ca nu ofera informatii legate de rata de scucces a predictiilor, astfel incat acestia sa poata evalua anumite predictii, si chiar aplicatia in sine. De asemenea aplicatia nu ofera informatii despre predictiile anterioare, sunt afisate doar predictiile din ziua respectiva si predictii pentru meciurile care v-or urma. Acest lucru ofera deasemenea o impresie neplacuta, deoarece nu da sigurnata utilizatorului. Afisand predictiile meciurilor anterioare, ofera incredere utilizatorului in algoritmul de calculare a rezultatelor oferite de aplicatie. Utilizatorul poate sa faca o statistica proprie a unui meci de fotbal, sa ofere o predictie proprie a rezultatului si sa compare cu rezultatul propriuzis si deasemenea cu predictia oferita de aplicatie. Astfel pot spune ca din punct de vedere a utilizatorilor aplicatiei, este negesare o perioada indelungata de timp pana cand se poate forma o parere despre veridicitatea predictiilor aplicatiei. Cu toate acestea, utilizatorul se poate informa despre un meci de fotbal intr-un mod destul de detaliat, deoarece aplicatie ofera numeroase informatii despre fiecare meci, cum ar fi: ultimele intalniri directe intre cele doua echipe, ultimele meciuri ale fiecarei echipe in parte ( meciuri de acasa/deplasare ), clasamentul actualizat al competitiei in care se disputa meciul, statistici in legatura cu goluri marcate/primite, vremea meteo in care se va dsiputa partida. Din punctul meu de vedere unele informatii sunt foarte bune pentru a putea incepe o analiza a meciului de fotbal, dar altele pot fi inlocuite cu informatii mai relevante. Din punctul meu de vedere ar fi mai relevante informatii despre jucatori, lot, echipe de start, valoarea echipei sau a unui jucator decat informatii despre vreme. Un punct interesant al aplicatiei este, posibilitatea de a primii o statistica a unui meci introdus de catre utilizator. Aceasta statistica se realizeaza astfel: se aleg doua echipe aleatorii si se creaza o statistica cu informatiile prezentate mai sus. Din punctul meu de vedere este un lucru foarte interesant, deoarece solicita imaginatia utilizatorului, precum si posibila dorinta a utilizatorului de a compara doua echipe. Aceasta functionalitate ar putea fi imbunatatita prin aplicarea algoritmului de generare a pronosticurilor si pe meciul introdus de catre utilizator, astfel incat sa se poata vedea si un posibil rezultat al unui meci direct intre cele doua echipe, nu doar anliza meciului respectiv. Din punctul meu de vedere interactiunea intre utilizator si administatorul aplicatiei este foarte importanta deaorece acesta este cel mai bun mod de a observa avantajele si dezavantajele aplicatiei. O optiune de contactare a administatorului este foarte benefica pentru cei care administreaza aplicatia, astfel acestia avand posibilitatea de a imbunatatii anumite functionalitati, sau chiar a adauga anumite functionalitati pe baza parerilor primite de la cei care utilizeaza aplicatia.

Trends + football articles!!!!

Aceasta aplicatie este disponibila gratuit pe http://www.forebet.com/ sau in cazul in care se doreste utilizarea acestia de pe telefonul mobil, poate fi descarcata de pe google play.

3.1.2 Predictions Online

Predictions Online este o aplicatie care ofera predictii anumitor meciuri de fotbal. Oferta meciurilor este una restransa, fiind compusa doar din cele mai importante meciuri din cele mai importante campionate. Dupa parerea mea, acest lucru este un aspect pozitiv fata de alte aplicatii, deoarece se ofera informatii doar despre meciurile de interes, intre echipe destul de cunoscute. Exista putine persoane, foarte pasionate de fotbal, care urmasesc meciuri care nu fac parte din topul campionatelor, divizii secunde ect. (exemple ). Oferind doar anumite meciuri si proniosticuri satisface un numar mai mare de utilizatori si deasemenea creste procentajul de succes al pronosticurilor. Este cunoscut ca in divizii inferioare, se practica un fotbal imprevizibil intre echipe si jucatori despre care nu se cunosc foarte multe informatii certe (exemple ) . Deasemenea numarul de blaturi in astfel de meciuri este unul ridicat, cel putin mai ridicat decat in campionatele importante care sunt supravegheate atent de catre FIFA si UEFA. Din acest punct de vedere pot spune ca aceasta aplicatie a abordat inteligent aceasta problema. Fiecarui meci ii sunt atribuite 3 tipuri de pronosticuri ( exemple ): cel mai probabil, un pronostic mediu si unul mai riscant. Acest lucru ofera utilizatorului un punct de vedere despre cum este posibil sa se desfasoare meciul. In cele mai multe cazuri, daca pronosticul cel mai putin favorabil este corect, si restul pronisticurilor sunt corecte. Cel mai probabil pronostic este cel care in marea majoritate se reflecta si in rezultatul final al meciului. Cu o astfel de strategie creste si increderea in aplicatie si si procentul pronosticurilor corecte oferite de aplicatie. In acest mod este pus la incercare si utilizatorol, caruia i se da posibilitatea de a alege, sau de a evita anumite pronosticuri in functie de cele 3 pronosticuir oferite de aplicatie. Aceasta aplicatie ofera informatii si pronosticuri despre meciurile anterioare, astfel incat utilizatorul poate sa isi construiasca propria incredere in aplicatie. Un meci este bifat ca fiind prezis corect daca cel putin doua din cele 3 pronosticuri sunt adevarate. Un punct slab al acestei aplicatii este faptul ca nu ofera informatii precise despre meciul prezis, astfel incat utilizatorul nu poate sa analizeze singur meciu. Singura sursa de analiza sunt pronosticurile oferite de aplicatie. Utilizatorul poate sa isi faca o parere mai buna despre meci, sau chiar sa se imformeze in legatura cu anumite aspecte ale echipelor daca ii sunt puse la indemana anumite statistici cum ar fi (exemple ). Cu toate ca aplicatia ofera un numar redus de meciuri, este benefica functionalitatea de a alege meciurile favorite. In scest fel utilizatorului nu ii este atrasa atentia de catre meciuri care de care nu este interesat. Aceasta optiune ofera utlizatorului posibilitatea de a urmarii doar meciurile de interes si chiar a primii notificari la aparitia unui eveniment ( se inscrie un gol, se termina un meci, pronosticurile prezise de catre aplicatie sunt corecte sau nu ). In ziua de astazi foarte important este interactiunea intre utilizatori, sau intre utilziator si administrator. O functionalitate in acest scop este oferirea posibilitatii utilizatorului de a alege propriu pronostic. Dupa ce utlizatorul alege pronosticul dorit, se afiseaza o diagrama cu pronosticurile altor utilizatori, astfel se poate observa obtiuniile utilizatorilor aplicateiei. Utilizatorii pot crea deasemenea un blet virtual de pariuri, in care pot selecta una sau mai multe pronosticuri. Acest lucru ofera incredere utilizatorului in prezicerea unui meci de fotbal, fie cu ajutorul aplicateiei sau prin propria statistica.

Aceasta aplicatie nu ofera detalii despre implementare sau despre algoritmii folositi pentru a gasi predictii pentru meciurile de fotbal. Nu exista o statistica generala a predictiilor corecte, ci doar o statistica a corectitudinii celor 3 pronosticuri in functie de un anumit campionat ( ex: Angliea 75% easy, 62% medium, 42% hard ). Aplicatia nu este disponibilia pentru browser, doar pentru telefonul mobil si se poate descarca de pe google play sau app store. Aplicatia apare in doua variante, gratis si contra cost ( dezvolta ).

3.2 Solutii alese

Informându-mă despre soluțiile similare propunerii personale, am putut observa avantajele și dezavantajele fiecărora din punctul de vedere al unui utilizator. În aplicația mea voi incerca să fiu cât mai original, cu toate că vor fi și anumite aspecte care vor fi asemănătoare cu ceea ce exista deja.

Cerinte functionale:

In primul rand, aplicatia va avea la baza un algoritm care sa poata oferi un anumit proentaj pentru deznodamantul unui meci de fotbal ( cine va castiga, cate goluri se vor marca, care echipa va marca, etc.) Aceasta este functionalitatea principala a aplicatie. Pentru a realiza acest lucru voi crea un algoritm care se va baza pe urmatoarele informatii:

Valoare loturilor celor doua echipe

Antrenorii celor doua echipe

Forma celor doua echipe in functie de ultimele 5 meciuri jucate de fiecare dintre acestea

Stadionul pe care se va juca partida

Rezultatele inregistrate intre cele doua echipe in trecut

Motivarea pe care ar aveao fiecare dintre cele doua echipe

Toate cele mentionate mai sus vor fi la randul lor functionalitati ale aplicatiei.

În al doilea rând, aș dori să ofer utilizatorilor mai multe informații și statistici despre fiecare meci în parte. Despre fiecare aspect de care va depinde algoritmul creat de mine, va fi înstiințat și utilizatorul. Următoarele informații mi se par relevante și nu le-am regăsit în alte aplicații: echipele de start probabile, statistica jucătorilor, importanța meciului, etc. Pentru fiecare meci se va afișa forma anumitor jucători (acei jucatori care arată o evolutie de la un meci la altul), precum și jucatorii care sunt indisponibili pentru un anumit meci. Voi oferi un istoric al meciurilor și un procentaj al ratei de succes al algortmului.

O alta funcționalitate care aș vrea să o dezvolt, și pe care nu am întâlnit-o la alte aplicații, este ca utilizatorul să poată simula un meci între două echipe alese de acesta. În urma simularii, utilizatorul va primi o statistică detaliată a meciului respectiv. Desigur această statistică va fi creeată pentru forma actuală a celor două echipe.

Aplicația mea va oferi utilizatorului posibilitatea de a crea un mini-capionat propriu, în care alege un număr de echipe și aplicatia va simula acel campionat după forma actuală a fiecarei echipe. După simularea campionatului utilizatorul va putea vedea statisticile fiecărui meci disputat.

Aplicatia pe care o voi crea vreau sa fie si una interactiva, nu doar de statistica. Astfel utilizatorul va avea posibilitatea sa aleaga propriul pronostic pentru orice meci disponibil. Acesta va putea pune in aplicare cele invatate, informatiile pe care le-a acumulat. Utilizatorul va avea optiunea de a vizualiza si o statistica cu toate pronosticurile pe care le-a nimerit. Astfel se poate crea o oarecare competitie intre aplicatie si utilizator, sau o competitie intre utilizatori.

In ultimul rand, aplicatia va avea un design elegant si usor de folosit. Vreau ca utilizatorul sa poata naviga usor, si sa gasesasca informatiile dorite cat mai repede. Succesiunea la paginile care contin informatii dieferite (despre echipa, clasament, jucatori, meciuri, meciuri anterioare, etc.) sa fie structurate intr-un mod cat mai circular.

Cerinte non-functionale:

Pentru realizarea acestuia voi folosi ca limbaj de programare SAP ABAP. Acest limbaj de programare creat de compania nemteasca SAP si este o prescurtare la Advanced Business Application Programing.

Pentru realizarea aplicatiei voi folosi o arhitectura bazata pe 3 layere:

Baza de date: pentru sitemul de baze de date se va folsi SAP HANA.

Data access: pentru prelucrarea datelor si crearea unor algoritmi care sa ajute la optinerea rezultatelor asteptate. Voi folosi un tip de programare orientat pe obiect, astfel incat tabele sa fie mapate in clase corespunzatoare.

Interfata utilizator: pentru interfata utilizator web voi folosi ABAP Web Dynpro, iar pentru interfata utilizator pentru sisteme mobile voi folosi SAP Fiori (aceasta tehnologie foloseste HTML5 si Javascript).

În concluzie, aș dori să mă folosesc de descrierea aplicaților enumerate mai sus și să încerc să le corectez dezavantajele pentru a obține o aplicație optimă. În special îmi doresc ca utilizatorii să considere această aplicație de încredere, care să ofere informații corecte și exacte, pe care aceștia să le poată folosi în scopuri persoanale. Un alt atu al aplicației mele va fi posibilitatea utilizatorului de a folosi aplicația pe post de joc, unde să poată să își încerce norocul și să intre în competiție cu alți utilizatori.

3.2.1 Kelly Criterion

3.2.2 Poisson Distribution

3.2.3 Bayesian Interface

3.2.4 Apiori

Capitolul 4 Analiza si Fundamentare Teoretica

4.1 SAP

Pentru aplicatia pe care eu o voi dezvolta voi folosi ca principal tehnologie SAP.

SAP AG este o compania originare din Germania fondata in anul 1972, SAP fiind prescurtarea la “Systeme, Anwendungen, Produkte in der Datenverarbeitung” (insemnand sisteme, aplicatii, produse in procesarea datelor). Programul SAP este complex, fiind folosit in servicii business, solutii tehnologice, in arii precum contabilitate, banci, lanturi de furnizare si aprovizionare si multe altele. Acesta este cel mai mare producator European de software si este singurul producatori de software, din primii 10 cei mai mari producatori globali, care nu provine din Statele Unite.

SAP Netweaver Application Server se bazeaza pe 3 layere: database, application si presentation layer. Scopul acestei impartiri pe layere este preformanta ridicata si scalabilitate.

Baza de date consta din datele care sunt folosite in aplicatie, dar si din intregul cod al SAP Application Server si application programs, toate datele administrative si setari de Customizing. Astfel programele create sunt stocare in baza de date a stistemului.

Application Layer este plasat intre database layer si presentation layer si contine unu sau mai multe applications servere si un singur message server ( acesta fiind responsabil de comunicatia intre layere). Toate programele ABAP sunt executate in acest layer.

Presentation Layer reprezinta interfata prezentata userului si este responsabila de afisarea ecranului.

4.1.1 SAP ABAP

Pentru partea de application layer coi folosi limbajul de programare al companiei SAP, cunoscut sub numele de ABAP (Advanced Business Aplication Programing). Acest limbaj de programare este in prezent pozitionat la acelasi nivel cu Java, fiind parte a NetWeaver platform pentru crearea aplicatiilor business. Programele scrise vor folosi ABAP Editor , care face parte din ABAP Workbench, acesta apartinand serverului. Programele ABAP pot fi abordate procedural sau orientat pe obiect, iar eu voi folosi a doua varianta.

Paradigmele programarii orientate pe obiect in ABAP sunt aceleasi ca in alte limbaje orientate pe obiect, cum ar fi C++ sau Java. Doar o mica parte a conceptelor, care sau dovedit sa nu fie folositoare in celalate limbaje de programare, nu au fost incluse in ABAP. Diferenta majora este ca se pot folosi in dezvoltare absolut toate functiile existente in ABAP Workbench. ABAP Objects nu este un nou limbaj de programare, ci este o extensie a limbajului de programare ABAP, astfel incat sunt incluse toate partile procedurale. Aceasat extensie aduce in plus type check-uri mai stricte, iar limbajul ABAP a fost “curatat” astfel incat anumite declaratii invechite produc erori de sintaxa ( aceste declaratii considereate invechite se pot gasi in “ABAP keyword documentation”).

Obiectele in ABAP se comporta ca niste sisteme client/server, astfel incat cand un obiect trimite un mesaj unui alt obiect, acesta urmand sa isi schimbe comportamentru datorita mesajului primit, primul obiect poate fi considerat clientul iar al doilea serverul. Pentru a se putea separa requesturile si livrarile de servicii clientul trebuie sa folosesasca un protocol cuniscut de catre server, iar acest protocol trbeuie sa descris clar si in detaliu astfel incat clientul s ail poata intelege. De obicei, obiectele pot avea ambele roluri simultan ( pot oferii service pentru alte obiecte, iar in acelasi timp pot si sa ceara servicii).

Caracteristicile ABAP OO ar fi urmatoarele :

Obiectele sunt o abstractizare directa a lumii reale

Obiectele sunt formate din date si din functionalitati pentru datele respective

Procesele pot fi implementate intr-un mod realistic

4.1.2 SAP HANA

Pentru partea de database layer voi folosi o baza de date de tip SAP HANA. Aceasta este in in-memory platform careste folosita pentru procesarea unui numar mare de informatii in timp real. HANA permite analiza pe un volum foarte larg de date in timp real. Infrastructura de tipul in-memory database are ca avantaj ca nu trebuie sa se mai incarce sau rescrie date , ci foloseste direct memoria principala de langa CPU. Astfel se creste performanta, deoarece nu se mai folosesc I/O ale diskului, si se minimizeaza transferal de date. HANA include o componenta de programare care permite sa se creeze sis a se ruleze aplicatii pe propria platforma, astfel incat se poate rula in parallel cu o aplicatie SAP. Acest lucru duce la o accesare a datelor in timp real de catre utilizator.

Un table de baza de date este in mod conceptual o structura de date organizata in randuri si coloane, iar memoria unui calculator este organizata intr-o structura liniara. Un table poate fi reprezentat ca row-order sau colom-order. O organizare row-oriented stocheaza o tabela ca o secventa de intrari, iar o organizare column-oriented stocheaza intrarile unei coloane in locatii de memorie contigue. SAP HANA suporta ambele variante, dar este optimizata in particular pentru stocarea de tip column-order.

SAP HANA foloseste metode foarte eficiente pentru compresie: run-length encoding, cluster coding si dinctionary coding. Dictionary coding ne ajuta sa stocam coloanele ca o secventa de biti, astfel incat cand se verifica daca doua valori sunt egale, aceasta verificare se executa pe acea secventa ( fiind mult mai rapid decat daca s-ar verifica doua valori de tip string). Stocarea pe coloane nu mai necesita structure aditionale de indexare ( deoarece se stocheaza datele pe coloane este similar cu a avea un index pentru fiecare coloana).

SAP HANA executa caculele de baza, cum ar fi join-uri, scan-uri sau agregri, in parallel folosind une ori si 100 de core-uri in acelasi timp. Cu ajutorul stocarii column-oriented, operatiile simple pe o singura coloana pot fi implementate ca un loop pe un array stocat in locatii de memorie contigue ( o astfel de operatie poate fi executata foarte eficeint de catre cache). Acest tip de stocare permite executia operatiilor in parallel folosind procesoare multiple, deoarece datele sunt stocate in partitii vertical astfel incat operatiile pe coloane pot fi executate cu usurinta in parallel.

SAP HANA extinde rolul de database server si poate fi folosita ca platforma de dezvoltare si de executie a anumitor aplicatii, oferind si support de Web-based applications. sistemul SAP HANA poate fi accesat direct prin HTTP, iar controller-ul aplicatiei poate rula direct pe SAP HANA, fara a mai avea nevoie de un application server extern.

4.1.3 SAP Fiori

Pentru partea de presentation layer voi folosi SAPUI5, mai exact SAP Fiori. SAPUI5 (SAP user interface for HTML5) reprezinta o colectiie de librarii pe care le poate folosi un developer pentru a crea desktop sau moblile applications care sa ruleze intr-un browser. Datorita toolkit-ului JavaScript, se poate creea o applicate web folosind HTML5. SAP Fiori a fost creat folosind SAPUI5, si este folosit pentru reprezentarea interfetei utilizator. SAPUI5 are urmatoarele puncta forte: se poate folosi pe diferite platforme, pe orice fel de ecran, teme si branduri puternice, eficienta si performanta. Se poate folosi si pentru Mobile cat si pentru Desktop Applications.

Aplicatiile SAPUI5 trebuie sa contina un bootstamp, pentru a initializa SAPUI5 in runtime, iar atributele acestuia sunt evaluate pentru a configure acest lucru. Se foloseste agregare (ex: maparea randurilor la tabele) si Data Binding, astfel incat exista o relatiie automatic de update intre model si configurarea UI. Sunt suportate urmatoarele 3 modele de implementare:

JSON Model: se folosesc date intr-un format de JavaScript Object, exista posibilitatea pentru “two way binding”

XML Model: se folosesc data XML, exista posibilitatea pentru “two way binding”

OData Model: se folosesc date de tip OData, se creaza un OData request si trimite un OData response, include libraria “dataJS” pentru a putea rezolva requesturile de tip OData.

4.2 Analiza unui meci de fotbal

4.3 Algoritmi

4.3.1 Algoitm pentru prezicerea numarului de goluri

4.3.2 Algoritm pentru prezicerea echipelor de start

4.3.3 Algoritm pentru determinarea mizei unui meci de fotbal

4.3.4 Algoritm pentru prezicerea echipelor de start

4.3.5 Algoritm pentru simularea unui meci de fotbal

4.4 Cazuri de utilizare

4.4.1 Simularea unui meci de fotbal

Utilizatorul porneste aplicatia. Va aparea o interfata grafica simpla, cu 2 sectiuni. Prima sectiune contine o lista cu toate meciurile, iar a doua sectiune contine detalii despre meciul selectat

Steps:

Utilizatorul porneste aplicatia

Utilizatorul selecteaza meciul ( in functie de data, campionat, echipa)

Aplicatia afiseaza predictiile despre meciul respectiv

Utilizatorul analizeaza predictiile si incepe sa faca o analiza proprie a meciului

Utilizatorul se uita la forma ambelor echipe

Utilizatorul vede echipele de start probabile ale fiecarei echipe

Utilizatorul analizeaza statisticile meciului/a echipelor

Utilizatorul cauta informatii despre un anumit jucator/o anumita echipa

Utilizatorul termina analiza proprie si scrie un review despre predictia aplicatiei

Utilizatorul selecteaza meciul, il plaseaza in lista cu meciuri favorite, pentru a primi notificare daca predictia aplicatiei a fost exacta sau nu.

Use-Case End

Use case-ul se termina cand meciurile selectate de utilizator se termina si aplicatia trimite notificare cu rata de succes a predictiilor.

4.4.2 Analizarea unui meci de fotbal

Capitolul 5 Proiectare de Detaliu si Implementare

5.1 Arhitectura Sistemului

5.2 Arhitectura Bazei de Date

Pentru inceput as vrea sa prezint o schita a bazei de date pe care as vrea sa o folosesc prin descrierea unor tabele:

Jucatori: Aceasta tabela va contine numele jucatorilor precum, varsta acestora, pozitia pe care acestia evolueaza, o evaluare ( un puctaj atribuit de mine in urma calitatii acestora si in urma clasamentului mondial) precum si valoarea acestora pe piata de transferuri.

Echipe: Aceasta tabela va contine un numar de n jucatori ( acest numar variaza de la echipa la echipa ), un antrenor, campionatul in care aceasta profeseaza, o “vitrine cu treofee” si o evaluare ( un punctaj care este calculate in functie de valoarea lotului de care dispune o echipa ).

Antrenor: Aceasta tabela va contine numele antrenorului, un istoric al acestuia ( echipele antrenate/ trofee castigate), precum si o evaluare ( un punctaj atribuit de mine in functie de valoarea acestuia ).

Clasament: Aceasta tabela va contine echipele angrenate intr-o competite, pozitia fiecarea dintre acestea, precum si punctele obtinute de fiecare echipa.

Meci: Aceasta tabela va contine cele doua echipa care urmeaza sa joace/au jucat un anumit meci, rezultatul, scorul final si numarul de goluri.

Jucatori indispinibili: Aceasta tabela va contine o lista cu jucatorii indisponibili si cu perioada acestora de indisponibitate care se rezuma la accidentari sau restrictionarea de a juca datorita indisciplinei.

Formatii: Aceasta tabela va contine un numar limitat de formatii de joc, cele mai des intalnite ( ex: 4-4-2,4-3-3 ).

Acestea sunt tabelele de la care as vrea sa incep

5.2.1 Jucatori

5.2.2 Meci

5.2.3 Echipa

5.2.4 Campionat

5.3 Implementare software a aplicatiei

5.3.1 Popularea datelor

5.3.2 Stabilirea conexiunii intre componente

5.3.3 Descrierea claselor utilizate

5.3.4 Elemente de UI

5.3.5 Librarii folosite

Capitolul 6 Testare si Validare

6.1 Testare aplicatie

6.1.1 Testare conexiune

6.1.2 Testare algoritmi

6.1.3 Evolutia algoritmului

6.1.4 Compararea rezultatelor

Capitolul 7 Manual de Instalare si Utilizare

7.1 Modul de configurare a aplicatiei

7.1.1 Acces la SAP

7.1.2 Acces la Baza de Date

7.1.3 Modul de configurare a aplicatiei

7.1.4 Modul de utilizare a aplicatiei

Capitolul 8 Concluzii

8.1 Avantaje si Dezavantaje

8.2 Descrierea eficientei aplicatiei

8.3 Dezvoltari ulterioare

Capitolul 9 Bibliografie

[1] Gianluca Baio, Marta A. Blangiardo, Bayesian hierarchical model for the prediction of football results 2008

[2] Mathematics in Games, Sports, and Gambling: – The Games People Play (Textbooks in Mathematics), Ronald J. Gould, Chapman and Hall/CRC, 2009.

[3] BENZ, M.-A.; BRANDES, L.; FRANCK, E. 2009. Do Soccer Associations Really Spend on a Good Thing? Empirical Evidence on Heterogeneity in the Consumer Response to Match Uncertainty of Outcome. Contemporary Economic Policy. 2009, Vol. 27, No. 2, pp. 216-35

[4] Brojanigo William, Analysis of Football Prediction Methods, 2013

[5] Edward O. Thorp, The Kelly Criterion in Blackjack Sports Betting, and the stock market, 2007

Similar Posts