===== Algorytmy genetyczne ===== ==== 1. Podsumowanie na jednym obrazku ==== {{genetic-diagram.png?direct&600|}} ==== 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: [[https://natureofcode.com/book/chapter-9-the-evolution-of-code/#chapter09_section11|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 ([[https://natureofcode.com/book/chapter-9-the-evolution-of-code/#exercise-99|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 ([[https://natureofcode.com/book/chapter-9-the-evolution-of-code/#exercise-98|Zadanie 9.8 w Nature of Code]])