36
Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica Simulacija Fudbala Seminarski rad iz predmeta Programske Paradigme Nemanja Mićović 1 Lazar Ranković 2 1 [email protected] www.alas.matf.bg.ac.rs/~mi13283 Matematički Fakultet 2 [email protected] www.alas.matf.bg.ac.rs/~mi13268 Matematički Fakultet Prezentacija projekta, 2. februar 2016 Nemanja Mićović, Lazar Ranković Matematički Fakultet Simulacija Fudbala - Project Aurora

Simulacija Fudbala - Seminarski rad iz predmeta Programske ...alas.matf.bg.ac.rs/~mi13283/projects/aurora_football_simulation/... · Struktura seminarskog rada Python engine Baza

  • Upload
    others

  • View
    42

  • Download
    1

Embed Size (px)

Citation preview

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Simulacija FudbalaSeminarski rad iz predmeta Programske Paradigme

Nemanja Mićović1 Lazar Ranković2

[email protected]/~mi13283

Matematički Fakultet

[email protected]/~mi13268

Matematički Fakultet

Prezentacija projekta, 2. februar 2016

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

O programu

Struktura programaI Python engine za generisanje podatakaI Baza podatakaI Java program baziran na MVC-u

Motivacija za temu:I Primena verovatnoće i statistikeI Duboko poznavanje samog fudbalaI Kompleksnost same tematike

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Paradigme koje su javile

Korišćene paradigme:I Skript paradigma (Python)I Paradigma upitnih jezika (SQL)I Objektna paradigma (Java)I Komponentna paradigma (JavaFX)I Konkurentna paradigma (Java niti)I Funkcionalna paradigma (Java lambda izrazi)I Vizuelna paradigma (UML dijagrami i konstrukcija automata)

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Python engine za generisanje podataka

Koliko je podataka potrebno (na nivou sloga baze podataka) zasimulaciju fudbalske utakmice?1 tim → ime lige, ime tima, logo tima1 igrac → ime, prezime, datum rođenja, tim, slika, 20 ocenaUzmimo: 10 timova, 11 igraca Ukupno:10 ∗ 11 ∗ (20 + 6) + 10 ∗ 4 = 2900 slogova!

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Python engine za generisanje podatakaPitanje od milion dolara?

Šta radi programer kada treba da uradi više od 5 (ili 2900) putaistu stvar, iako mu pada teško i da samo jednom to radi?

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Python engine za generisanje podatakaPitanje od milion dolara?

Napravi program koji to uradi za njega.

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Python engine za generisanje podatakaStruktura

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Python engine za generisanje podatakaHTML podaci

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Python engine za generisanje podatakaPython kod

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Python engine za generisanje podatakaCSV podaci

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Python engine za generisanje podatakaBaza podataka

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Baza podatakaBaza podataka

Zašto baza podataka?I performanseI sigurnostI prenosivostI manipulacija podatakaI paralelna obrada

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Baza podatakaShema baze

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Baza podatakaSlika baze

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Baza podatakaKorišćena tehnologija

Korišćene tehnologije:I mySQLI PhpMyAdmin

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programZašto java?

Zašto java?I portabilnostI kvalitetan interfejs za rad sa bazomI kvalitetna dokumentacijaI velika zajednicaI kvalitetno razvojno okruženjeI velika količina dostupnih bibliotekaI Intellij Idea

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programMVC patern

MVC (Model, View, Controller) patern (engl. pattern) razdvajaproblem na 3 osnovne komponente.Osnovni delovi:

I model (engl. model)I pogled (engl. view)I kontroler (engl. controller)

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programMVC patern

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programUML dijagram klasa

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programParadigme u javi

Koje se to paradigme javljaju u Javi?I Objektna paradigmaI Komponentna paradigmaI Konkurentna paradigmaI Funkcionalna paradigmaI Paradigma upitnih jezika

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programObjektna paradigma

Korišćeni elementi objektne paradigme:I enkapsulacija objekataI nasleđivanjeI polimorfizamI biblioteke (yodatime, jdbc)

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programObjektna paradigma

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programKomponentna paradigma

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programKonkurentna paradigma

Program koristi java klasu Thread koju nasleđuju neke odimplementiranih klasa.Java niti omogućavaju kontrolu brzine simulacije, dodelu nitisamom automatu koji se izvršava odvojeno od niti za iscrtavanjeinterfejsa i slično.

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programFunkcionalna paradigma

Primena lambda izraza sa sortiranje.

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programFunkcionalna paradigma

Primena lambda izraza sa sortiranje.

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Java programParadigma upitnih jezika

Korišćenje jezika SQL za komunikaciju sa bazom podataka.

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Konačni deterministički automat

Konačni deterministički automatFormalna definicija

DefinicijaNedeterministički konačni automat je uređena petorka(Σ,Q, I,F , ∆).Gde su:

I Σ azbukaI Q skup stanjaI I početna stanjaI F završna stanjaI ∆ skup prelaza po stanjima

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Konačni deterministički automat

Konačni deterministički automatFormalna definicija

DefinicijaDeterministički konačni automat zadovljava prethodno datudefiniciju i važi:

I Ne postoje ε prelaziI |I| = 1I Prelaz iz svakog stanja u naredno je jedinstveno određen.

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Konačni deterministički automat

Algoritam za simulaciju

Automat se koristi za simulaciju utakmice.Stanja automata su događaji iz fudbala poput:

I Tim A ima posed lopteI Igrač A iz tima B šutiraI Korner za tim AI Igrač A dodaje loptu igraču BI Igrač A oduzima loptu igraču BI Gol za tim A

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Konačni deterministički automat

Algoritam za simulacijuPrelazak automata iz stanje u stanje

Automat menja stanja na osnovu ishoda događaja koji sesimuliraju.Kada tim A ima posed lopte, generišu se verovatnoće (zasnovanena podacima iz realnog života) na osnovu kojih se donosi odlukašta tim A pokušava da uradi sa loptom.Ishod bilo kakve akcije tima A se zasniva na pozivanju evaluacionefunkcije koja vraća ishod događaja koji se izračunava na osnovuocena igrača koji učestuju u duelu.

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Konačni deterministički automat

Algoritam za simulacijuKako poboljšati nivo realnosti simulacije?

I Bolje modelovanje evaluacionih verovatnoćaI Dodavanja novih stanja u automat (aut, penal, izmena...)

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Dalji razvojBudućnost samog projekta?

Aplikacija je:I skalabilnaI dokumentovanaI na GitHub-uI prati MVCI lako proširiva

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Dalji razvojBudućnost algoritma za simulaciju?

Šta je potrebno dodati:I uopštavanjeI primena na druge sportoveI optimizacijaI formalna verifikacija

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Pitanja

Pitanja?

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora

Struktura seminarskog rada Python engine Baza podataka Java program Algoritam simulacije Zaključak Zahvalnica

Zahvalnicaza seminarski rad

Ovom prilikom bi smo se zahvalili dr. Mileni Vujošević Janičić napruženoj prilici da kreiramo prikazani seminarski rad, kao i naznanju koje smo stekli tokom slušanja kursa Programskeparadigme.Zahvalili bismo i kolegi Čedomiru Dimiću koji nam je pomogao priunosu podataka u bazu podataka.

Nemanja Mićović, Lazar Ranković Matematički FakultetSimulacija Fudbala - Project Aurora