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
