- Ściągnij najnowszą wersję symulatora Framsticks i rozpakuj w jakimś katalogu.
- Czym są "rozwiązania" (w kontekście optymalizacji) we Framsticks?
- Ile jest wszystkich potencjalnych rozwiązań i dlaczego?
- Włącz "teatr".
- Wybierz pokaz "mutation". Czym są kolejne organizmy? Na co wpływa ustawienie "Mutant variation"?
- Kliknij "Restart with simple f0 creature". Czy widać jakąś różnicę w stosunku do "f1"? Jaka jest różnica na poziomie genetycznym?
- Wybierz pokaz "biomorph" i przeprowadź kilkanaście kroków ewolucji sterowanej własnymi preferencjami. Powtórz to dla reprezentacji "f0" i opisz różnicę w obu reprezentacjach. W której z nich łatwiej osiągnąć pożądany kształt?
- Wybierz pokaz "reproduction". Wedle obowiązujących w tej symulacji zasad, od ilu do ilu osobników może mieć populacja organizmów? Od ilu do ilu może być sztuk pożywienia?
- Wybierz pokaz "evolution_demo" i prędkość "Very fast". Zapoznaj się z różnymi metodami selekcji. Ile czasu zajmuje powstanie konstrukcji wznoszącej się ponad podłoże przy użyciu reprezentacji f1, a ile przy użyciu f0? Dlaczego?
- Wybierz pokaz "evolution". Ustaw kryterium "wysokość", czas symulacji w tle "90%", prędkość "Very fast", i kliknij "Restart evolution with empty gene pool". Obserwuj wyniki.
- Włącz GUI.
- Dodaj nowy genotyp X
- W parametrach ustaw:
- Gene pool capacity = 20
- Initial placement = Central
- Unchanged = 0
- Fitness: tylko "Vertical position" = 1, reszta 0
- Starting energy = 300
- W "Genetics", f1→Neural net→Add/remove neuron = 0 (zmniejszamy przeszukiwaną przestrzeń rozwiązań)
- Następnie włącz wykresy minimalnego, średniego i najlepszego dopasowania w populacji: W ustawieniach interfejsu/Simulator charts wybierz "Genotypes: Final fitness: minimal final fitness", kliknij Apply a potem Add chart. Powtórz dla "average" i "maximal".
- Uruchom symulację.
- Naciśnij F9 (ustawienia szybkiej symulacji) i w menu Window włącz okienka Genotypes, World i Charts. Poukładaj wykresy.
- Posortuj genotypy po "final fitness" (największa wartość u góry).
- Poczekaj, aż zaczną powstawać wysokie konstrukcje. Co można powiedzieć o wykresach minimal, average i maximal fitness?
- Jak myślisz, na co wpływa liczność puli genów? Co jeśli będzie bardzo mała? Co jeśli bardzo duża?
- Przełącz parametr "Delete genotypes" z "Randomly" na "Only the worst". Co dzieje się na wykresach i w puli genów? Dlaczego? Co powoduje usuwanie losowe, a co usuwanie najgorszego? Jakie te dwie sytuacje mają wady i zalety?
- Zatrzymaj symulację. Usuń wszystkie genotypy i wszystkie żyjące organizmy.
- W Gene Pools→Genotypes→Fitness formula wpisz:
var m=Model.newFromGeno(this.geno); return (m.size_x-2)*(m.size_y-2)*(m.size_z-2);
- Co określa taka funkcja celu?
- Ustaw "Starting energy" na 1 (bo funkcja celu i tak nie bazuje teraz na osiągach wyznaczanych podczas życia, tylko na samym genotypie)
- Wcześniej, kiedy liczyliśmy wysokość organizmu, symulator po umieszczeniu osobnika w świecie czekał, aż jego ciało znieruchomieje, i dopiero potem wyznaczał wysokość. Teraz okres "czekania" nie jest wcale potrzebny, więc żeby bardzo znacznie zaoszczędzić na czasie symulacji, ustaw Populations→Creatures→Performance calculation na "Immediate". Organizmy będą żyły dokładnie 1 krok symulacji, a nie (okres czekania na znieruchomienie)+1 krok.
- Dodaj genotyp X
- ...i uruchom symulację, pamiętając że "Delete genotypes" zostało na "Only the worst", i jakie są tego konsekwencje.
- Teraz ocena dotyczy fenotypów takich, jakie widać w okienku "Body and brain", a nie podczas symulacji w świecie.
- Zatrzymaj symulację. Usuń wszystkie genotypy i wszystkie żyjące organizmy.
- W Gene Pools→Genotypes→Fitness formula wpisz teraz:
var m=Model.newFromGeno(this.geno); var s=m.size_x; if (m.size_y<s) s=m.size_y; if (m.size_z<s) s=m.size_z; return s;
- Co określa taka funkcja celu i czym się różni od poprzedniej?
- Dodaj genotyp X
- i uruchom symulację; czy optymalizacja spełnia oczekiwania związane z funkcją celu?
- a co wyrażałaby taka funkcja?
return s - (m.size_x-s) - (m.size_y-s) - (m.size_z-s);
Ilustracja optymalizacji ewolucyjnej i zachłannej