-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[2022] Simulacije muve #9
Draft
basicskill
wants to merge
8
commits into
master
Choose a base branch
from
2022-simulacija-muve
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 1 commit
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
7770609
Prvi commit
Aleksandar204 876efdb
Dodao uvod
Aleksandar204 7007ffd
Istrazivanje i slike
Aleksandar204 1115fe8
Promene ML
Aleksandar204 d370f5c
Ispravke 1
Aleksandar204 abc8624
Promenio neke grafike u SVG
Aleksandar204 f0d987c
Ispravke 2 - Tadej
Aleksandar204 720598a
Ispravke 3
Aleksandar204 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -213,4 +213,69 @@ Ta funkcija vrši simulaciju kretanja muve pomoću mreže koju je dobila i vrać | |
|
||
Za svaki gen nakon izvršavanja pomenute funkcije računamo fitnes tako što uzmemo da je fitnes jednak visini bube u poslednjem trenutku simulacije. | ||
Nakon što ovo uradimo za svaku bubu, funkcija se završava. | ||
Zatim se u fajlu geneticAlgo.py dešava stvaranje nove generacije gena za muve i zatim se opet pokreće naša fitnes funkcija sa novim genima. | ||
Zatim se u fajlu geneticAlgo.py dešava stvaranje nove generacije gena za muve i zatim se opet pokreće naša fitnes funkcija sa novim genima. | ||
|
||
### Istraživanje i rezultati | ||
- Cilj nam je bio da naučimo bubu da leti što više po y koordinati. | ||
|
||
Prvi način koji smo koristili za procenu neuralnih mreža je bio da na postavimo da fitnes mreže bude jednak proseku visine bube u toku simulacije, tj. proseku y koordinate bube. | ||
Dužinu simulacije smo ograničili na 3 sekunde. | ||
Za simulacije 1 sekunde bube je bilo potrebno značajno manje od 1 sekunde realnog vremena. | ||
Ovo je značajno uticalo na brzinu treniranja. | ||
|
||
Kada smo pokrenuli kod, program je često pucao i na grafiku bube se videlo kako se u nekim delovima veoma brzo menja visina bube, kao što se može videti na sledećem grafiku: | ||
|
||
**Na svim graficima (osim ako drugačije nije naznačeno) će se nalaziti zavisnost visine bube od vremena proteklog od početka simulacije.** | ||
|
||
![slika](/images/2022/simulacija-muve/Figure_3.png) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Dodajte naslov na grafik i obeležite ose na srpskom jeziku |
||
|
||
Zaključili smo da je problem bio u tome što smo pomerali krila bube pomoću neuralne mreže svake milisekunde simulacije što je dovelo do toga da buba pokušava da pravi prebrze pokrete koji su mogli da postave odrećene promenjive na vrednosti koje odgovaraju beskonačnosti zbog kojih bi pri kasnijim proračunima došlo do pucanja programa. | ||
|
||
Nakon što smo podesili da se krila kontrolišu na svakih 10 milisekundi, ovaj problem se više nije dešavao. | ||
Dobili smo sledeći grafik: | ||
|
||
![slika](/images/2022/simulacija-muve/Figure_4.png) | ||
|
||
Sa grafika se vidi da je buba uspela da proizvodi pokrete koji predstavljaju mahanje krilima, ali previše dopušta sebi da padne pre nego što opet napravi zamah krilima. | ||
Ovo se takođe može protumačiti kao da buba nije naučila da optimalno vraća krila gore, tj. u poziciju odakle može da krene novi zamah, što je rezultovalo dodatnim spuštanjem visine. | ||
|
||
Promenili smo program tako da nam fitnes bude jednak samo visini bube po y osi u poslednjem trenutku simjulacije, ovo je značanjno poboljšalo visinu koju je buba dostizala (2-3 puta). | ||
Grafik je onda izgledao ovako: | ||
|
||
![slika](/images/2022/simulacija-muve/Figure_8.png) | ||
|
||
Vidi se da je buba uspela da nauči da na optimalan način vrati krila gore, bez da se dodatno spusti. | ||
|
||
Nakon svakih x generacija smo čuvali sve podatke o položajima buba u generaciji što nam je omogućavalo da rekonstruišemo 3d prikaz simulacije. | ||
Zapazili smo da buba kreće ukoso, pa smo odlučili da to popravimo. | ||
Promenili smo malo fitnes bube: | ||
|
||
$ fitness = Y_t - (\frac{1}{T} * \sum_{i = 1}^{T}(X_i)) * \frac{1}{5} - (\frac{1}{T} * \sum_{i = 1}^{T}(Y_i)) * \frac{1}{5}$ | ||
|
||
X, Y i Z su nizovi koordinata u svakoj milisekundi simulacije | ||
|
||
T je vreme trajanja simulacije u milisekundama | ||
|
||
Jednostavnije, fitnes nam je visina bube u poslednjem trenutku od koje oduzimamo prosečno odstupanje x i z koordinate bube od 0 podeljeno sa 5, jer nam je to nije toliko bitno koliko i visina bube. | ||
|
||
Nakon treniranja 50 generacija buba na 3 sekunde dobili smo sledeći grafik koji predstavlja fitnes u odnosu na broj generacija: | ||
|
||
![slika](/images/2022/simulacija-muve/fitness7.png) | ||
|
||
**Imati na umu da fitnes više ne predstavlja samo visinu bube** | ||
|
||
Sledeći grafik predstavlja fitnes u odnosu na broj generacija, nakon treniranja od 1000 generacija: | ||
|
||
![slika](/images/2022/simulacija-muve/figure1000.png) | ||
|
||
Na kraju smo produžili dužinu simulacije na 30 sekundi i dobili smo sledeći video na kome se veoma lepo vidi buba maše krilima i kako se ne kreće toliko po x i z osama. | ||
|
||
### Zaključak | ||
Videli smo da se na ovaj način mogu postići prilično realni rezultati i da je algoritam sposoban da nauči ono što zahtevamo od njega. | ||
|
||
Ova ideja može da se proširi i da se iskoristi da se napravi kontroler za bubu pomoću koga će korisnik moći da odredi u kom smeru će se buba kretati. | ||
Buba bi trebalo da isprati komande koje joj korisnik zada. | ||
Ovo se može postići korišćenjem više mreža koje treniramo pomoću istog algoritma ali sa drugačijim fitnes funkcijama. | ||
Trebalo bi istrenirati mrežu gde buba lebdi oko jedne tačke, i mreže za kretanje u sva četiri pravca (ili 6 pravaca u slučaju da oćemo da podržimo i kretanje po y osi). | ||
Za treniranje možemo da koristimo i različite početne parametre za bubu, tj. buba neće kretati uvek iz stanja mirovanja. Ovo sve može da se spoji u kontroler. | ||
|
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ne koristiti boldovane rečenice