v0.11 Features

1) A 'gen' szocska torlese a statisztikak nevebol. :-)

2) Ujfajta property [gen ;-)] statisztika bevezetese (kapcsolhato: isPropertyHistogram2].
   Ez egy adta ugyanaz, mint a masik hasonnevu hisztogram, kiveve, hogy az
   oszlopok sorrendje [csoportositasa] valtozott a vizszintes tengelyen.


================================================================================

v0.10 Features

1) Property [Gen] statisztikak. A statisztika formaja jelenleg egy hisztogram.
   Minden gen eloszlasa kulon szinnel jelenik meg, s minden lepesben dinamikusan
   valtozik. Ha uj gen jelenik meg, akkor uj szin jon letre a hisztogramon is.
   [Tul sok gen eseten mar nem sok minden lathato, de ez ellen nemigen lehet
   vedekezni.]

Technikai megjegyzes:
Kicsit meg kellett hackelni a Repast-ot, hogy tudja ezt es pont igy, ezert
hirtelen a sok uj fajl.

Megjegyzesek:

1) Az alapbeallitasok (pMuation=0.2) mellett jol lathato (?), hogy a
rendszer (faj) 'szettart'. Ez, persze, ilyen magas mutacio-erteknel
nem meglepo es nem is baj. Ugyanezen beallitasok, de pMutation=0 mellett
viszont 'egyben vannak'. Tehat OK. Sot, pMutation=0.1 mellett is
egesz jo a helyzet, a sracok nagyjabol egyben vannak.

2) Az utobbi beallitasok (pMutation=0.1) mellett, a 'faj' viszonylag
stabil, csak >1000 lepes utan 'vandorol el'. Ekkor is 'egyben van' azonban,
csak a konkret genek erteke valtozik. 'Sodrodas' van. Hogy ez jo, vagy sem,
nem tudom.

3) Felmerulhet a kerdes, hogy pMutation=0 eseten vegig. es pMutation=0.1-nel
az elejen miert 8 az erteke minden gennek. A valasz: veletlen. Mas random
seed-del mas a helyzet.

4) Ha elkezdunk uj slot-okat generalni, akkor a fiuk hamar kihalnak. Ezen
lehet segiteni, ha lejjebb vesszuk a mutaciot es feljebb a mappingLimit-et.
A mellekelt ('stabil-multi-slot-params-for-v10') parameter-kombinacio mellett
mar szep szammal vannak uj slot-ok, es a populacio is fennmarad. Hogy a
gen-eloszlasbol milyen kovetkeztetest lehet levonni, nem tudom.

================================================================================

v0.9 Features

1) 'Delete' gomb a control panel-en. Ez torli a populaciot. Sajnos, technikai
   okok miatt nem sikerult megoldanom, hogy azonnal frissitse a grafikonokat
   es egyeb kijelzoket, igy varni kell a kovetkezo lepesig. Praktikusan,
   erdemes csak allo szimulacio mellett hasznalni.

2) 'Generate' gomb a control panel-en. Ezzel lehetseges agenseket letrehozni
   'egy gombben'. Az uj agensek _hozzaadodnak_ az eddig meglevokhoz. (Ergo,
   elvileg ket, vagy tobb 'gomb' is letrehozhato.)

   A gomb lenyomasa utan feljon egy uj ablak, amelyben a ket felso 'potmeterrel'
   a generalando agensek szamat, illetve azok a 'gomb kozpontjatol' vett tavolsagat
   adhatjuk meg. (Ez utobbit 1 es 1000 kozott, mely egy ezres osztassal kepzodik
   0.001 es 1.0 koze.) Az ablak kozepso reszeben annyi darab 'potmeter' talalhato,
   ahany gen ('property') eppen van a rendszerben (ld. numProps parameter). Ezek
   segitsegevel allithato a 'gomb' kozeppontja. (Mivel az ablak merete veges, a
   slide-okat tartalmazo panelt fel-le szkrollozni kell, ha sok van beloluk.)
   Az ablak aljan talalhato 'Generate' gomb legyartja az agenseket a beallitott
   parameterekkel, es bezarja az ablakot.

   Sajnos, technikai okok miatt nem sikerult megoldanom, hogy azonnal frissitse
   a grafikonokat es egyeb kijelzoket, igy varni kell a kovetkezo lepesig.
   Praktikusan, erdemes csak allo szimulacio mellett hasznalni.

   (Megjegyzes: a legyartas butan, stochasztikusan tortenik. Azaz, csinalunk
    egy agenst abszolut veletlen pozicioba, ha nincs benne a gombben, akkor
    eldobjuk. Ergo, minel kisebb a megengedett terfogat (v.o. fel/negyed/etc.
    'gomb' a ter szelen), annal lassabb a processzus. Extrem ertekekre extrem
    lassu...)


Megjegyzes:

Mindket gombra igaz, hogy eredmenyesseguk/ertelmuk nem garantalt a modell
inicializalasa ('Initialize' gomb a '180 fokos nyillal') elott.

A jelenlegi verzioban eleg nehez az agenseket, s azok egymastol valo tavolsagat
latni. Probalkoztam pl. ket 'gombot' csinalni, de nem jartam latvanyos sikerrel.
Hiszem, hogy a generacio pillanataban megvan a ket gomb, csak nem elnek tul.
Ezt nehez eldonteni, mivel a kijelzok nem frissulnek azonnal. Mellesleg, ha
tennek is, a grafrol pl. nemigen latszik, hogy epp 'gomb(ok)' van(nak).
Szoval, egyre inkabb erik a regebben kert 'alternativ megkozelites' legyartasa...

Masreszt, bekapcsolat 'Average Distance' mellett, nem mindig tudtam ertelmezni
a kijelzett eredmenyt. Pl. a letezo populacio torlese utan hiaba generaltam egy
0.1 sugaru gombot. Ekkor az atmero, ugye, 0.2. A kijelzett atlagtavolsag
viszont nem ennyi volt (hanem tobb). Kisebb sugarral az atlagtavolsag is csokken,
de tovabbra sem all pariban a szamitasokkal. Itt, sajnos, melyebb problemat
sejtek, s hajlamos lennek nem szonyeg ala soporni ezt a kerdest...


================================================================================

v0.8 Features

1) Hibajavitas: most mar ha ures populaciora 'kapcsoljuk vissza' a grafot,
   akkor sincs hibajelzes.

2) Az atlagos tavolsagot most mar folyamatosan lehet szamolni/kijelezni.
   Termesztesen meg mindig csak bekapcsolt graf eseten. [Mindkettohoz
   n^2-es algoritmus kell, raadasul ugyanazokon az egyed-egyed tavolsagokon
   kell vegigmenni, igy logikus a ketto egymashoz kotese.]
   Ezen tulmenoen az atlagos tavolsag grafikonkent lett kivezetve a feluletre es
   kapott egy kulon kapcsolot: isAvgDistanceGraph. Ez ugyancsak ki/bekapcsolhato
   menet kozben, de csak akkor van dinamikus hatasa (akkor jelenik meg/tunik el
   a grafikon), amikor az isNetwork=true.

3) Az uj slot megjelenese a mutaciohoz lett kotve. Ez azt jelenti, hogy amikor
   mutacio van, akkor pNewSlot valoszinuseggel nem hibas masolas tortenik, hanem
   egy uj gen jelenik meg. (Technikailag nem az eppen aktualis helyen, hanem a
   lanc vegen, de ez elvben mindegy.) Ilyenkor az eppen masolt gen hibatlanul
   kerul atirasra.

   Viszonylag erdekes modon ez a valtozas azt igenyelte, hogy megvaltoztassuk
   picit a parametereket. A pNewSlot-ot eldonto veletlen dobas athelyezese
   ugyanis megvaltoztatta a veletlen dobasok szamat, s igy a tobbi veletlen
   valasztas ertekeit is. Mivel az eredeti parameter-beallitasokkal a
   rendszer eleg erzekeny volt; igy az uj esetben jo esellyel kihalt a populacio.
   Ezert felvettem a mappingLimit-et 0.02-re.


================================================================================

v0.7 Features

1) Atlag-tavolsag jelentes. Felkesz. Egyelore csak akkor megy,
amikor bekapcsoljuk a grafot. Akkor az elso lepesben kiirja
a konzolra (ahol a hibak is vannak).

2) Kor-eloszlas (ld. isAgeHistogram). Ez is ki-be kapcsolhato,
mint a network.


================================================================================

v0.6 Features

1) Uj szaporodasi-letfenntartasi modell. Uj/atnevezett parameterek:

   isDeath (az isMaxAge helyett)
   eConsumption
   eInput
   eDisc

   initEnergy (initFood helyett)
   incrEnergy (incrFood helyett)


================================================================================

v0.5 Features

1) Elobb eszik, aztan hal.

2) Graf-okozta replikacios hiba kikuszobolese.

================================================================================

v0.4 Features:

1) Network ki- es bekapcsolhato most mar. Most mar az sem kell,
   hogy indulaskor a graf be legyen kapcsolva. Es kikapcsolt
   allapotban a display-hez szukseges adminisztracio nem lassitja
   a futast. (Cserebe viszont visszakapcsolaskor picit lassabb az
   elso lepesben, illetve 'villan' egyet.)

Eszrevetelek:

i) Az 1)-es feature utan nyilvanvalova valik, hogy a v0.3 default
   parameterkeszletevel sikerul mutacio es crossover nelkul stabil
   populaciot elerni. Ebben van egy dominans 'faj', annak ellenere,
   hogy a kezdeti populacioban ilyen nem volt.

   Viszont, feltuno, hogy az egytagu 'szatellit-fajok' sehogyan sem
   akarnak eltunni, meg kb. 2000 lepes utan sem. Ez gond, hiszen az
   egytagu fajok szaporodni nem tudnak (a linkek jelzik a lehetseges
   szaporodasi helyeket); a tagok pedig ilyen hosszu ideig nem elhetnek.
   Ez utobbi nem is tortenik meg, hiszen a tagok ID-je (az ovalisokba irt
   szam) szepen novekszik, azaz nem ugyanazokrol az egyedekrol es fajokrol
   van szo.

   Viszont mutacio es crossover hianyaban nagy kerdes, hogy honnan a banatbol
   kerultek/nek ezek elo?!

2) Volt egy csunya technikai hiba a reprodukcioban. Emiatt aztan az
   utod genjei jobbara random allitodtak. Csoda tehat, hogy eddig barmit
   lattunk az uj implementacioban. (Mellesleg meg, ugye, tanulsag, hogy
   ha eleget fozzuk, barmi ad eredmenyt! :-))

   Namost, ez most javitva lett. Emiatt persze a parametereket is at kellett
   skalazni, mert mutacio es crossover nelkul baromi gyorsan no a populacio.
   (Ez, persze, ertheto is, hiszen azok nelkul az utodok tavolsaga nulla az
    egyik szulotol; s a masiktol is szaporodason beluli tavolsagra vannak.)
   Nem is sikerult egyelore ugy beallitani a modellt, hogy ne exponencialis,
   vagy kihalo legyen, de lehet, hogy mutacio es crossover nelkul ez nem is
   mehet. Az viszont jo hir, hogy ugy szaguld az egyetlen faj fele, hogy ihaj...

   Az uj parameterek:

NumAgents : 100
NumProps : 5
MaxProp : 10
MinProp : 0

MappingLimit : 0.02
MappingMax : 3

PCrossOver : 0.5
PEncounter : 1.0
PMutation : 0.0
PNewSlot : 0.0

MaxMaxAge : 12
MinMaxAge : 10

IncrFood : 1
InitFood : 1

================================================================================

v0.3 Features:

1) Network ki/bekapcsolasi hiba javitva (a szim. ujrainditasanal).
   (A netSurf nem volt 'null'-ra allitva dispose() utan a setup()-ban.)

2) Orokeletu agensek eltuntetese. (Ld. lent.)


3) A fenti modositasok utani uj parameterezes beallitasa:

    pEncounter = 1.0
    pCrossOver = 0
    mappingLimit = 0.02
    mappingMax = 30
    minMaxAge = 10
    maxMaxAge = 12
    initFood = 100
    incrFoord = 30

4) Uj network ki/bekapcsolasi hiba detektalasa: ha bekapcsolt
   graffal indultunk, kikapcsoltuk, majd vissza, akkor a ki- es bekapcsolas
   kozott keletkezett, illetve eltunt agensek a grafon nem lettek frissitve.
   Javitasa: a wasNetwork valtozo bevezetese, ami azt tartja nyilvan, hogy
   indulaskor volt-e graf. Ha igen, akkor az update-fuggvenyek mindig futnak;
   fuggetlenul az isNetwork aktualis allasatol.

   Igy viszont a futas mindig lassu, ha inditaskor volt graf, fuggetlenul attol,
   hogy megjelenitjuk-e. Logikus is ez, hiszen alapvetoen az update a lassu;
   minden agenssel meg kell nezni az ujat/eltunot, hogy volt-e el kozottuk.
   Ennek javitasa mar uj verziot igenyel viszont --> ld. majd v0.3-ben.


Eszrevetelek:

1) Az eddigiekben pEncounter = 0.01 volt. Ez, ugye, azt jelenti, hogy
minden egyed varhatoan minden 100-ik (!) lepesben probal meg (!) szaporodni.
Ez nyilvan baromi keves, tekintve, hogy a kajalas nelkuli varhato elettartam
~20 lepes; kaja meg baromi keves van. Felvettem tehat a pEncounter-t 0.05-re,
ez varhatoan egy szaporodasi kiserletet eredmenyez minden agens eleteben
(kajalas nelkul!). Mellesleg meg gyorsitja az 'esemenyek folyasat'.

2) Viszont 'cserebe' levettem a mappingLimit-et 0.1-re es a mappingMax-ot
3-ra. (Az elgondolas az, hogy csak nem kellene, hogy kezdetben veletlenul
generalt 100 egyed egy fajba essek. Ez meg igy is csak mersekelten igaz.)

Viszont elojott egy kis problema:


3) A mappingLimit tovabbi csokkentese (0.01/0.02, etc.) es mappingMax=3
mellett az indulo gubo legalabb szetesik, de kicsit tan tulsagosan is.
Ez viszont ujabb dolgok vizsgalatanak ad teret. mappingLimit = 0.04
mellett pl. hamarost csak 5, egymassal -- a graf tanusaga szerint --
szaporodni nem tudo egyed marad fenn. Megis, mintha ezek orokeletuek
lennenek valamiert... (Mondjuk az teny, hogy ha mar csak egyetlen agens
marad, az orokeletu lesz, hiszen minden lepesben 1.0 valoszinuseggel
eszik, s ezzel a hatralevo evei szamat megtoldja annak 0.9-szeresevel.
Ez mar viszonylag alacsony fennmarado evszam eseten is /2-3/ a
vegtelenbe tart.) Es mivel varhatoan nem 2-3 fennmarado evvel kezdenek
ebbe a fiuk; ez varhatoan 'elbirja', hogy ne minden lepesben egyenek,
csak minden 5-ikben...

A megoldas vegulis az volt, hogy kajalas eseten az 'eletnovekmeny' a
kovetkezo lett:

  maxMaxAge * 0.9^age

ahol 'age' az agens aktualis kora, maxMaxAge pedig a model azon
parametere, ami megadja, hogy egy uj agens indulaskori varhato
elettartama max. mennyi.

================================================================================

Azt hiszem, megvan a cel; meg mutacioval is (bar defaultbol az most nincs).
Bar a slot-statisztika meg hatravan. Addig is, erdemes megnezni eloszor a graf
nelkul, csak a grafikonokat; aztan pedig a graffal. Vegul egy pillantast
(de csak annyit! :-)) erdemes vetni a 'size of the species' grafikonra, a
kluszterezes bekapcsolasa (isClustering = true) mellett. Nota bene, ekkor a
kluszterezes ingovanyos talajan mozgunk...

Szerintem a graf eleg meggyozo a vegen (meg animacioban is). Az egyetlen baja,
hogy nemigen kulonbozik a kiindulo-graftol. Es ez eleg nagy baj, azt hiszem.
(Abrazolas-technika!)


v0.2 Features:

1) mappingLimit es mappingMax (a ket distance->numChildren) parameter
   kivezetve a parameterlapra.
2) Network-display kapcsolgatas OK.

3) a) Kihalas; kajakkal, etc. (ld. lent).
   b) foodGraph (kajaszam) + isFoodGraph parameter: ki-be kapcsolja.

4) Parameterek beallitasa: kihalas nelkul (isMaxAge=false) exponencialisan
   elszalad. Azzal egyutt kb. stabil, s tan egy fajhoz tart (ld. lent).


I.
a)

1) Kaja linearis utemben no.
2) Kaja a kor _vegen_ no.
3) Az agens elobb oregszik, aztan eltunik/nem, s csak ezek _utan_ ehet.
4) A kajalasi valoszinuseg minden lepesben es minden agensre:
     numFood / numAgents.
   Ha egy agens eszik, a numFood csokken eggyel. (Ha meg meghal, akkor
   a numAgents, nyilvanvaloan.)

   Ez elvileg azt jelenti, hogy minden lepesben minden kaja elfogy.
   (Azt is, hogy fuggetlenul a kaja mennyisegetol, mindig elfogy!
    Ergo, ha tobb van, tobbet esznek, ha kevesebb, kevesebbet...)

5) Most egesz szukre vettem a kajaadagot (kezdetben 1, azaz egy
   egyseg; s ez minden lepesben 1-gyel no), hogy jobban lassunk a
   grafon.

   A ket kerdeses parameter (ld. 'elolap'): initFood es incrFood.

b)
  Nem ertem viszont, hogy miert van a populacionak novekvo trendje, meg mindig.
  Bar tan ez csak egy ideig all (2000-2500 lepes). Akkor OK.

II.
Network Graf 'bug' (implementacios feature, egyelore):
Ha kezdetben nem volt bekapcsolva, akkor kozben nem lehet bekapcsolni.

III.
Vegyuk eszre, hogy az elethossz fuggetlen a genkeszlettol.