Framsticks – założenia modelu 

Planując świat i jego mieszkańców staraliśmy się, aby był podobny do rzeczywistego – aby posiadał te cechy, które umożliwiają ukierunkowanie procesu ewolucji i powodują, że organizmy mogą – błądząc po omacku – odkrywać nowe sposoby życia według kryterium dopasowania (ang. fitness) definiowanego przez użytkownika. Z drugiej strony, staraliśmy się zapewnić rozsądne warunki życia w środowisku bez zdefiniowanych kryteriów oceny – to znaczy, dla ewolucji swobodnej.

Ewolucja biologiczna zaczynała od prostych związków. Dużo czasu minęło, zanim pierwsze jej wytwory były zdolne do rozmnażania się. W naszym sztucznym świecie przeskakujemy ten etap "ewolucji chemicznej" i wyposażamy organizmy w podstawowe umiejętności: zapis cech w genotypie, powielanie genotypów i gospodarkę energią. Narzucamy też zasady budowy organizmu. Trudno byłoby symulować świat przymując jako podstawowy element kwarki, atomy a nawet tak wielkie bloki budulca jak białka, czy inne cząsteczki organiczne. Dla sensownej wielkości kawałka świata byłoby ich trochę za dużo jak na możliwości obliczeniowe dostępnych komputerów. Dlatego cegiełka budująca każdy z naszych organizmów jest znacznie większa – jest nią pręt (odcinek, patyk, rurka... ). Element taki może pełnić różne funkcje zależnie od genetycznego opisu, według którego powstał: może być po prostu patykiem, może uzyskać zdolność przesyłania i obróbki impulsów i stać się kawałkiem mózgu lub receptorem, może być wyposażony w mięśnie i stać się narządem ruchu, może wyspecjalizować się jako organ dostarczający energię.

Zespół połączonych patyków jest samodzielnym organizmem – "patyczakiem". Umieszczony w symulatorze staje się żywy!

Moduł symulacji fizycznej oblicza jego interakcję ze światem ("Framsworld"), analizuje siły działające na poszczególne części i oblicza ich nowe położenia. Symulacja fizyczna odbywa się w trzech wymiarach, wykorzystuje metodę elementów skończonych i dynamikę bryły sztywnej.

Moduł neuronowy wyznacza wzbudzenia w sieci neuronowej, odbiera dane od receptorów i wysyła sygnały do mięśni. Sieć neuronowa organizmu różni się od zwykle stosowanych w sztucznej inteligencji tym, że jej topologia jest całkowicie dowolna, a neurony mogą charakteryzować się bezwładnością.

Moduł energetyczny śledzi zyski i straty energii. Dla pewnej definicji eksperymentu na przykład, organizm może uzyskiwać energię przez asymilację czy wchłanianie znalezionego pokarmu, a tracić - przez pracę mięśni i neuronów. Po zużyciu całej energii organizm może "ginąć".

Moduł kreatora wytwarza nowe organizmy – na przykład mutując i krzyżując genotypy najlepszych żyjących do tej pory okazów.

Symulator pozostaje na usługach skryptu definiującego eksperyment. Przykładowym eksperymentem jest "standard.expdef".

Przykładowe zachowanie systemu przy eksperymencie "standardowym"

Dwa główne parametry opisują architekturę systemu: pojemność listy genotypów (N) i pojemność świata wirtualnego (n). Algorytm wysyła organizm o danym genotypie do symulatora świata, aby go ocenić (wtedy, kiedy jest tam miejsce, to znaczy liczba symulowanych organizmów jest mniejsza od n). Po śmierci osobnika obliczana jest jego ocena (zobacz: Parameters: Fitness).


Architektura systemu w "standardowym" eksperymencie


Jeśli ustalono n=1, nie wystąpią interakcje pomiędzy symulowanymi stworzeniami i system będzie działał jak typowy algorytm ewolucyjny, w którym wartość dopasowania osobnika nie zależy od innych osobników.

Zadania wykonywane w każdym kroku symulacji:

  • jeśli potrzeba, utwórz nowe stworzenie (zależy od ustawień 'simulated creatures' – n)
  • jeśli populacja na liście genotypów przekracza 'capacity' (N), niektóre z nich muszą zostać usunięte (parametry: 'delete genotypes')
  • oblicz kolejny krok trójwymiarowej symulacji świata (mięśnie i neurony: nowe pozycje, siły, wzbudzenia itd.)
  • oblicz przepływ energii
  • jeśli jakimś stworzeniom skończyła się energia, "zabij" je i zaktualizuj statystykę (osiągi) genotypów