Algorytmy genetyczne
1. Podsumowanie na jednym obrazku
2. Smart Rockets
Dzisiaj wracamy do p5js (znane nam z lab_steer i z lab_minimax).
Sketch: https://editor.p5js.org/kkutt/sketches/9Z8kBpixG
- Opis w Nature of Code: 9.11 Smart Rockets
- Cel życia (300 jednostek czasu):
- Rakieta trafia w cel
- Ewaluacja:
- Odległość od celu (na koniec symulacji)
- Czas dotarcia do celu
- Kara za uderzenie w przeszkodę
- Punkt wyjścia:
- działający algorytm genetyczny
- gen: osobny wektor ruchu na każdą jednostkę czasu
Zadania do realizacji:
- [5 EXP] Zmienić sposób działania rakiet (Zadanie 9.9 w Nature of Code):
- zamiast wektora ruchu na każdą jednostkę czasu, każda rakieta posiada 5 silników (o określonych parametrach), które w czasie lotu (w każdej jednostce czasu) mogą być niezależnie włączane i wyłączane
- w takim podejściu gen powinien kodować:
- 5 wektorów opisujących parametry każdego z silników (dowolny zwrot, dowolna długość)
- binarną sekwencję odpalania dla każdego z silników (sekwencja może mieć długość 300, wtedy na każdą jednostkę czasu przypada jedna wartość; albo może mieć krótszą długość, wtedy jest powtarzana w kółko aż do zakończenia czasu życia)
- wektor ruchu w danej jednostce czasu jest wyliczany jako suma wektorów silników włączonych w danej jednostce czasu
- [4 EXP] Zwiększyć trudność / dodać dodatkowe przeszkody i sprawdzić czy rakiety dalej będą potrafiły się wyuczyć właściwej ścieżki (Zadanie 9.8 w Nature of Code)