Niestandartowy eksperyment 

Wiatam!
Chciałem wykonać eksperyment "wysokościowców", czyli fitness formula ustawić
na maksymalny wzrost. Przy czym nie pasowało mi "this.vertpos", bo to jest
średnia z symulacji, czyli patyczak, który rodzi się w pionowej pozycji, a
potem się przewraca to też ma niezerową fitness. Mi chodziło o bardziej
stabilne patyczaki. Czyli chciałem użyć pozycji końcowej, przy ostatnim
kroku życia patyka.

Niestety Genotype nie zawiera takich parametrów. Zmodyfikowałem więc nieco
eksperyment "generational". W zdarzeniu "onKill()" dodałem zapis
"Genotype.user1=Creature.center_z" A w fitness formula "this.user1"
(Czy tak to się powinno robić? Może nie w "onKill()"?)

Tyle, że mam wrażenie, że "GenotypeLibrary.copyGenotype()" , która znajduje
się w "prepareNewEpoch()" niepoprawnie kopiuje dane genotypu z jednego Gene
Pool'a do drugiego (Current->Previous i Previous->Current), bo po
przetestowaniu wszystkich patyków i przekopiowaniu do drugiego Gene Pool'a
zarówno "user1" i "fit", są równe zero. Dla pewności dodałem ręczne
kopiowanie "user1", ale dalej nie działa to tak jak trzeba. Po skopiowaniu
wartości są równe zero, dopiero po zrobieniu jakiejś operacji na okienku
"Gene Pools" poprawia się wszystko. Nie bardzo mi się to podoba. Dlaczego
Fitness znikają?

Czy coś robię nie tak? Nie chciałbym puszczać symulacji na dwa dni zanim nie
będę miał pewności.

Pozdrawiam, Grzegorz Kimbar

Szymon Ulatowski's picture

Kimbar wrote:
> Niestety Genotype nie zawiera takich parametrów. Zmodyfikowałem więc nieco
> eksperyment "generational". W zdarzeniu "onKill()" dodałem zapis
> "Genotype.user1=Creature.center_z" A w fitness formula "this.user1"
> (Czy tak to się powinno robić? Może nie w "onKill()"?)

tak, onKill to wlasciwe miejsce

> Tyle, że mam wrażenie, że "GenotypeLibrary.copyGenotype()" , która znajduje
> się w "prepareNewEpoch()" niepoprawnie kopiuje dane genotypu z jednego Gene
> Pool'a do drugiego (Current->Previous i Previous->Current), bo po
> przetestowaniu wszystkich patyków i przekopiowaniu do drugiego Gene Pool'a
> zarówno "user1" i "fit", są równe zero. Dla pewności dodałem ręczne
> kopiowanie "user1", ale dalej nie działa to tak jak trzeba. Po skopiowaniu
> wartości są równe zero, dopiero po zrobieniu jakiejś operacji na okienku
> "Gene Pools" poprawia się wszystko. Nie bardzo mi się to podoba. Dlaczego
> Fitness znikają?

copyGenotype rzeczywiscie dziala zle (bedzie to poprawione w nastepnej
wersji).
natomiast przy kopiowaniu recznym powinno to dzialac.
z tego co piszesz wynika ze problem jest "tylko" z odswiezeniem wartosci
w okienku. odswiezenie genoypu na liscie jest wyzwalane przez ustawianie
niektorych pol genotypu - ale nie wszystkich. jest tez wywolywane w
funkcji addperformancefromcreature. mysle ze pomogloby przeniesienie
ustawiania pola user przed wywolanie addperformancefromcreature (wtedy
zalapie sie na tamto odswiezenie).

sz.