Kodowanie rozwojowe trójwymiarowych organizmów Wzrost ciała opisany regułami "chemicznymi" ------------------------------------------------ Kodowanie rozwojowe (DNA-podobne) trójwymiarowych organizmów składających się z odcinków (-> Framsticks). Generalna zasada działania: rozwój określony jest przez zbiór reguł, które mogą "odpalać się" i powodować wzrost organizmu, a także wpływać na działanie kolejnych reguł. Genotyp to zbiór reguł postaci: IF features(f1, f2, .., fm) & subst(s1, s2, .., sn) THEN grow, modfeatures(df1, df2, .., dfm), modsubst(ds1, .., dsn) fi : i=2..m. liczba lub "-". Określa cechy stika/neuronu/połączenia (f1). Jeśli za dużo cech, nadwyżka jest ignorowana. Jeśli za mało, brakujące cechy są domyślne lub losowe. Cechy -> M.K. sj : minimalna wartość intensywności substancji j (liczba 0..1) grow : f1==0: stick, f1==0.5: neuron, f1==1: neuron connection dsj : delty: o ile zwiększyć intensywność substancji j (dsj>=0) dfi : delty: o ile zmienić wartość cechy i (dfi dowolne) i=1..m (cechy f lub df, m=const) j=1..n (substancje s lub ds, n=const) W przestrzeni 3D są rozproszone substancje s i cechy f. Cechy istnieją miejscowo, substancje generują słabnące "pole". PROCEDURA WZROSTU: (*) W każdym kroku symulacji wzrostu wybiera się ze zbioru reguł tę, która ma najwyższy stopień spełnienia. Potem sprawdza się, czy nasycenie substancji w danym miejscu jest odpowiednie. Jeśli nie, goto (*). Jeśli żadna reguła nie może być uaktywniona, KONIEC WZROSTU. Else: odpal regułę w konkretnym miejscu 3D, czyli: - zmniejsz/zwiększ cechy wg dfi, tzn fi=fi+dfi - zbuduj element stworzenia wyposażając go w cechy fi - zmniejsz intensywności źródeł substancji o tyle, ile zostało "zużyte" (suma sj) - zmniejsz/zwiększ intensywności źródeł w danym miejscu wg dsj (możesz rozdysponować tyle energii, ile zostało "zużyte" pomnożone przez wskaźnik sprawności "e") goto (*) Symulacja wzrostu - trzeba pamiętać wzrastającą strukturę 3D, wzrastającą NN, miejsca wydzielonych substancji i wektory cech. Krzyżowanie: wymiana losowych reguł (po połowie). Mutacje: zmiany wartości (na inną wartość lub na "-"), relacji, akcji; usunięcie/dodanie reguły. Wartość sj nie może być mniejsza od progu S. Globalne parametry: m (np. 10), n (np. 5), e (np. 0.9), S (np. 0.2) --- SZCZEGÓŁY. - początek rozwoju. źródło substancji 1 o intensywności 1. Źródło cechy 0. - podstawowy osobnik. reguła (dla m=n=1) IF features(0) & subst(.9) THEN modfeatures(0), grow, modsubst(0) - stopień spełnienia reguły - przydatny w razie konfliktu, kiedy >1 reguła mogłaby być odpalona. Jest to miara podobieństwa cech wymaganych przez regułę i istniejących w danym miejscu (np. suma różnic). - zużycie substancji: kiedy reguła się odpala, zużywa substancje. Należy odjąć od źródeł substancji wielkości proporcjonalne do tego, ile "promieniowania" z tych źródeł dociera do miejsca odpalenia reguły, czyli ile ona "pobrała" z danych źródeł. - ds. Niech reguła zużywa w sumie SUMA różnych substancji. Może więc wyemitowć SUMA*e różnych substancji w miejscu, gdzie się odpaliła. Liczba SUMA*e jest dzielona proporcjonalnie wg wektora ds, w ten sposób powstaje nowe źródło emitujące wektor substancji. - intensywność: <sj> maleje z 3-cią potęgą odległości euklidesowej w 3D. Mutacje wartości przy <sj> i <dsj> uwzględniają ten nierównomierny rozkład (skala intensywności nie jest podzielona na równoprawdopodobne przedziały).
Dalsza analiza i pomysly