{"id":5006029,"date":"2011-08-02T07:07:02","date_gmt":"2011-08-02T05:07:02","guid":{"rendered":"https:\/\/criticalbiomass.blog.hu\/2011\/08\/02\/haztaji_evolucioszimulator"},"modified":"2011-08-02T07:07:02","modified_gmt":"2011-08-02T05:07:02","slug":"haztaji_evolucioszimulator","status":"publish","type":"post","link":"https:\/\/criticalbiomass.hu\/?p=5006029","title":{"rendered":"H\u00e1zt\u00e1ji evol\u00faci\u00f3szimul\u00e1tor"},"content":{"rendered":"<p><!-- p { margin-bottom: 0.21cm; }a:link {  } --><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\"><img loading=\"lazy\" class=\"blossom-image-align-left\" src=\"http:\/\/criticalbiomass.blog.hu\/media\/image\/201108\/kepecske.jpg\" alt=\"\" width=\"298\" height=\"137\" \/>Nemr\u00e9g egy f\u00f3rumon akadtam egy <\/span><a href=\"http:\/\/www.friweb.hu\/k4zm3r\/evo\/index.php\">programra<\/a><span style=\"color: #000000;\">, ami els\u0151re mellbev\u00e1gott, ez tulajdonk\u00e9ppen egy h\u00e1zi k\u00e9sz\u00edt\u00e9s\u0171 evol\u00faci\u00f3szimul\u00e1tor, r\u00e1ad\u00e1sul ny\u00edlt forr\u00e1sk\u00f3d\u00fa, egyszer\u0171 webes fel\u00fclettel, \u00edgy b\u00e1rki k\u00f6nnyed\u00e9n j\u00e1tszhat vele. <\/span><span style=\"color: #000000;\">A kezel\u00e9se egyszer\u0171, a jobb oldali panelen be\u00e1ll\u00edthat\u00f3, hogy milyen kis arcocska legyen a legel\u0151ny\u00f6sebb, majd a bal oldali ablakban v\u00e9gigk\u00f6vethetj\u00fck, ahogy egy popul\u00e1ci\u00f3 egyedei evolv\u00e1lnak.   Annyira megtetszett, hogy mindenk\u00e9ppen szerettem volna r\u00f3la \u00edrni, \u00edgy megkerestem a szerz\u0151t, sajnos_kacatot, hogy v\u00e1laszoljon p\u00e1r k\u00e9rd\u00e9sre, magyar\u00e1zza el, hogyan is m\u0171k\u00f6dik a program! Az \u0151 v\u00e1laszai olvashat\u00f3k al\u00e1bb. <\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p><!--more--><!-- p { margin-bottom: 0.21cm; }a:link {  } --><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\"><img loading=\"lazy\" class=\"blossom-image-align-left\" src=\"http:\/\/criticalbiomass.blog.hu\/media\/image\/201108\/kepecske.jpg\" alt=\"\" width=\"298\" height=\"137\" \/>Nemr\u00e9g egy f\u00f3rumon akadtam egy <\/span><a href=\"http:\/\/www.friweb.hu\/k4zm3r\/evo\/index.php\">programra<\/a><span style=\"color: #000000;\">, ami els\u0151re mellbev\u00e1gott, ez tulajdonk\u00e9ppen egy h\u00e1zi k\u00e9sz\u00edt\u00e9s\u0171 evol\u00faci\u00f3szimul\u00e1tor, r\u00e1ad\u00e1sul ny\u00edlt forr\u00e1sk\u00f3d\u00fa, egyszer\u0171 webes fel\u00fclettel, \u00edgy b\u00e1rki k\u00f6nnyed\u00e9n j\u00e1tszhat vele. <\/span><span style=\"color: #000000;\">A kezel\u00e9se egyszer\u0171, a jobb oldali panelen be\u00e1ll\u00edthat\u00f3, hogy milyen kis arcocska legyen a legel\u0151ny\u00f6sebb, majd a bal oldali ablakban v\u00e9gigk\u00f6vethetj\u00fck, ahogy egy popul\u00e1ci\u00f3 egyedei evolv\u00e1lnak.   Annyira megtetszett, hogy mindenk\u00e9ppen szerettem volna r\u00f3la \u00edrni, \u00edgy megkerestem a szerz\u0151t, sajnos_kacatot, hogy v\u00e1laszoljon p\u00e1r k\u00e9rd\u00e9sre, magyar\u00e1zza el, hogyan is m\u0171k\u00f6dik a program! Az \u0151 v\u00e1laszai olvashat\u00f3k al\u00e1bb. <\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\"><br \/><\/span><span style=\"color: #000000;\"><em>Azt szeretn\u00e9m k\u00e9rdezni, hogy mostanra m\u00e1r j\u00f3nak tartod a programot? K\u00e9szen \u00e1llsz a k\u00e9rd\u00e9sekre?<\/em><\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\">J\u00f3nak \u00e9ppen nem mondan\u00e1m, mivel Explorerben 8-as \u00e9s az alatti verzi\u00f3kkal nem m\u0171k\u00f6dik, Safarival sem teszteltem, tableteken \u00e9s okostelefonokon sem teszteltem, sz\u00f3val a m\u0171k\u00f6d\u00e9s felt\u00e9tele Firefox vagy Chrome, \u00e9s ez nem egy t\u00fal eleg\u00e1ns megold\u00e1s. Persze \u00f6sszerakhatn\u00e9k egy exploreres verzi\u00f3t is, de att\u00f3l f\u00e9lek a sebess\u00e9g\u00e9vel gondok lenn\u00e9nek&#8230;<br \/>Mindenesetre amit bele akartam \u00edrni, az m\u00e1r benne van.<\/p>\n<p><\/span><span style=\"color: #000000;\"><em>Honnan j\u00f6tt az \u00f6tlet? Mi\u00e9rt kezd el egy programoz\u00f3 evol\u00faci\u00f3s algoritmusokat fejleszteni?<\/em><\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\">\u00c9n konkr\u00e9tan az\u00e9rt kezdtem el ezt a projektet, mert visszatal\u00e1ltam egy kor\u00e1bban olvasott <\/span><a href=\"http:\/\/aiblog.blog.hu\/2010\/03\/19\/hogy_mukodnek_az_evolucios_modszerek\">cikkhez<\/a><span style=\"color: #000000;\"> az AI blogon. Valamelyik evol\u00faci\u00f3tagad\u00f3 oldalon k\u00f6zben ism\u00e9t r\u00e1tal\u00e1ltam a j\u00f3l ismert mantr\u00e1ra, hogy v\u00e9letlenszer\u0171 v\u00e1ltoztat\u00e1sokkal nem lehet el\u0151\u00e1ll\u00edtani \u00e9rtelmes mondatot egy karaktersorozatb\u00f3l. Sz\u00f3ba ker\u00fclt Dawkins \u0151sr\u00e9gi weasel programja is, \u00e9n meg \u00f6r\u00f6mmel vettem \u00e9szre, hogy erre nekem is van egy megold\u00e1som, de tulajdonk\u00e9ppen lehetne azt m\u00e1sra is haszn\u00e1lni, ak\u00e1r az AI blogon l\u00e1tott \u00e1br\u00e1k evol\u00faci\u00f3j\u00e1t is szimul\u00e1lhatn\u00e1m vele.<\/p>\n<p><\/span><span style=\"color: #000000;\"><em>Felhaszn\u00e1lt\u00e1l a programhoz kor\u00e1bbi algoritmusokat?<\/em><\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\">Volt egy olyan programom, ami a Shakespeare szonettet \u00edr\u00f3g\u00e9pen el\u0151\u00e1ll\u00edt\u00f3 majmokat modellezte. Persze genetikus algoritmust haszn\u00e1lva, hogy a v\u00e9g\u00e9n a majmokb\u00f3l igazi Shakespeare-t teny\u00e9ssz\u00fcnk ki. Ez a szoftver annyit tudott, hogy l\u00e9trehozott egy csom\u00f3 v\u00e9letlen karaktersorozatot, majd ezekb\u0151l kiszelekt\u00e1lta azokat, amik a be\u00edrt sz\u00f6veghez legjobban hasonl\u00edtottak, ezeket kombin\u00e1lta, \u00e9s apr\u00f3 v\u00e1ltoztat\u00e1sokat eszk\u00f6z\u00f6lt rajta. N\u00e9h\u00e1ny sz\u00e1z gener\u00e1ci\u00f3 alatt eljutott a popul\u00e1ci\u00f3 az el\u0151re be\u00edrt sz\u00f6veghez.<br \/>Ezt a programot m\u00e9g akkor csin\u00e1ltam, amikor anno 2009-ben ID_EGEN terroriz\u00e1lta a szkeptikusokat a r\u00e9gi f\u00f3rumon. Saj\u00e1t g\u00e9pemen j\u00f3l m\u0171k\u00f6d\u00f6tt, de a freeweb akkori szerver\u00e9n valami korl\u00e1toz\u00e1s volt be\u00e1ll\u00edtva a php futtat\u00e1sra, \u00e9s n\u00e9h\u00e1ny gener\u00e1ci\u00f3 ut\u00e1n mindenf\u00e9le hiba\u00fczenetekkel elsz\u00e1llt. M\u00e1r akkor gondoltam r\u00e1, hogy \u00e1t kellene \u00edrnom tiszt\u00e1n javascript alap\u00fara, hogy ne f\u00fcggj\u00f6n se<\/span><span style=\"color: #000000;\">m<\/span><span style=\"color: #000000;\">milyen szervert\u0151l, de betemetett a c\u00e9ges munka, \u00e9s f\u00e9lbemaradt a megval\u00f3s\u00edt\u00e1s, azt\u00e1n motiv\u00e1ci\u00f3 hi\u00e1ny\u00e1ban egy darabig nem foglalkoztam vele.<\/p>\n<p>Visszat\u00e9rve az el\u0151z\u0151 k\u00e9rd\u00e9sre: mi\u00e9rt kezd el egy programoz\u00f3 evol\u00faci\u00f3s algoritmusokat fejleszteni?<br \/>Olyan m\u00e9rn\u00f6ki probl\u00e9m\u00e1k megold\u00e1s\u00e1ra, amik t\u00fal sok v\u00e1ltoz\u00f3 param\u00e9tert tartalmaznak, nem lehet \u0151ket egy\u00e9rtelm\u0171en megoldani, \u00e9s a numerikus sz\u00e1m\u00edt\u00e1si m\u00f3dszerek is t\u00fal sok\u00e1ig tartan\u00e1nak.<br \/>Ezek a genetikus algoritmusok l\u00e9nyeg\u00e9ben egy minimumkeres\u00e9si probl\u00e9m\u00e1t oldanak meg. Ha n darab szempont alapj\u00e1n \u00e9rt\u00e9kelsz egy modellezett rendszert, \u00e9s a ki\u00e9rt\u00e9kel\u00e9st \u00fagy v\u00e1lasztod meg, hogy a 0 \u00e9rt\u00e9k jelenti az optim\u00e1lis \u00e9rt\u00e9ket, akkor a param\u00e9terek alapj\u00e1n fel tudsz &#8220;rajzolni&#8221; egy olyan n dimenzi\u00f3s fel\u00fcletet, aminek a lok\u00e1lis minimumhelyei k\u00f6zel\u00edt\u0151leg j\u00f3 param\u00e9terek reprezent\u00e1lnak. Ha siker\u00fcl megtal\u00e1lnod a glob\u00e1lis minimumhelyeket, akkor az ott leolvasott n darab param\u00e9ter alapj\u00e1n le tudod a val\u00f3s\u00e1gban is gy\u00e1rtani a modellezett rendszer optim\u00e1lis v\u00e1ltozat\u00e1t.<br \/>A genetikus algoritmusok \u00fagy v\u00e9gzik a keres\u00e9st, hogy az elej\u00e9n a teljes fel\u00fcleten v\u00e9letlenszer\u0171en sz\u00e9tsz\u00f3rsz egy nagy sz\u00e1m\u00fa popul\u00e1ci\u00f3t, majd minden l\u00e9p\u00e9sben azokat szelekt\u00e1lod ki, amelyek k\u00f6zelebb vannak a 0-hoz. Persze el\u0151fordulhat, hogy hosszabb id\u0151re is beragad egy lok\u00e1lis minimumhelyre a keres\u00e9s, ennek kiv\u00e9d\u00e9s\u00e9re vannak olyan tr\u00fckk\u00f6k, hogy minden egyed bitenk\u00e9nt invert\u00e1lt v\u00e1ltozat\u00e1t is hozz\u00e1adj\u00e1k a popul\u00e1ci\u00f3hoz, vagy az, hogy a nagyon gyenge fitnesz\u0171 egyedek is kapnak es\u00e9lyt a szaporod\u00e1sra (ez ut\u00f3bbit haszn\u00e1ltam \u00e9n is).<\/p>\n<p><\/span><span style=\"color: #000000;\"><em>Ha j\u00f3l l\u00e1tom tulajdonk\u00e9ppen egy evol\u00faci\u00f3szimul\u00e1torr\u00f3l van sz\u00f3, ahol el\u0151re be\u00e1ll\u00edthatod az el\u0151ny\u00f6s fenot\u00edpust, majd figyelheted hogyan evolv\u00e1l egy popul\u00e1ci\u00f3.<\/em><\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\">Igaz\u00e1b\u00f3l k\u00e9t program van itt egybe\u00e9p\u00edtve. Van egy alap genetikus algoritmus, ami az aktu\u00e1lis popul\u00e1ci\u00f3t, \u00e9s az egyedekhez tartoz\u00f3 fitnesseket t\u00e1rolja, l\u00e9trehozza a k\u00f6vetkez\u0151 gener\u00e1ci\u00f3t, \u00e9s v\u00e9grehajtja a szelekci\u00f3t.<br \/>A m\u00e1sik r\u00e9sz, amit a felhaszn\u00e1l\u00e1st\u00f3l f\u00fcgg\u0151en kell meg\u00edrni, az tartalmazza a &#8220;<\/span><span style=\"color: #000000;\">DNS<\/span><span style=\"color: #000000;\">&#8221; el\u0151\u00e1ll\u00edt\u00e1s\u00e1hoz sz\u00fcks\u00e9ges funkci\u00f3kat, a mut\u00e1ci\u00f3s oper\u00e1tort, a fitnesst ki\u00e9rt\u00e9kel\u0151 f\u00fcggv\u00e9nyt, \u00e9s a megjelen\u00edt\u00e9st. (Van egy harmadik r\u00e9sz is ami a param\u00e9terek be\u00e1ll\u00edt\u00e1s\u00e1t lehet\u0151v\u00e9 tev\u0151 felhaszn\u00e1l\u00f3i fel\u00fclet.)<br \/>Az oldal alj\u00e1n van egy demo1 felirat\u00fa link, ami ugyanazt az alap algoritmust haszn\u00e1lja egy \u00e9rtelmes mondat el\u0151\u00e1ll\u00edt\u00e1s\u00e1hoz.<\/p>\n<p><\/span><span style=\"color: #000000;\"><em>L\u00e1tni csak annyit lehet, hogy minden egyed egy arcocska. Milyenek bel\u00fclr\u0151l, milyen a genot\u00edpusuk, azaz mi hat\u00e1rozza meg egy egyed fenot\u00edpus\u00e1t? Haploidok? Diploidok?<\/em><\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\">A &#8220;<\/span><span style=\"color: #000000;\">DNS<\/span><span style=\"color: #000000;\">&#8221; egy bin\u00e1ris sz\u00e1msorozat, jelen esetben egy byte-okb\u00f3l \u00e1ll\u00f3 t\u00f6mb. Az els\u0151 byte a form\u00e1t hat\u00e1rozza meg, a k\u00f6vetkez\u0151 h\u00e1rom a sz\u00ednt, a k\u00f6vetkez\u0151 n\u00e9gy meg a vigyor form\u00e1j\u00e1t. 0-t\u00f3l 255-ig terjed\u0151 eg\u00e9sz sz\u00e1mok \u00edrnak le minden &#8220;g\u00e9nt&#8221;, de a fenot\u00edpus el\u0151\u00e1ll\u00edt\u00e1sakor ezek \u00e1talak\u00edt\u00e1sra ker\u00fclnek. A sz\u00ednekn\u00e9l nem kell konvert\u00e1lni, de pl a vigyor az egy Bezier g\u00f6rbe, aminek van 4 fix param\u00e9tere, \u00e9s 4 v\u00e1ltoz\u00f3, amit a g\u00e9nek hat\u00e1roznak meg, itt a &#8220;g\u00e9nt&#8221; szorzom 10-el, osztom 255-el, hogy egy 10 pixeles s\u00e1von bel\u00fcl v\u00e1lto<\/span><span style=\"color: #000000;\">z<\/span><span style=\"color: #000000;\">zon a Bezier g\u00f6rbe kontro<\/span><span style=\"color: #000000;\">l<\/span><span style=\"color: #000000;\">lpontj\u00e1nak helyzete.<\/p>\n<p>A haploid-diploid fogalomnak ut\u00e1na kellett n\u00e9znem. Mivel csak egyetlen &#8220;kromosz\u00f3ma&#8221; van, minden g\u00e9n csak egyszer szerepel az egyed &#8220;<\/span><span style=\"color: #000000;\">DNS<\/span><span style=\"color: #000000;\">&#8220;-\u00e9ben, ez\u00e9rt azt kell mondjam, hogy haploidok. A diploid, vagy pol<\/span><span style=\"color: #000000;\">i<\/span><span style=\"color: #000000;\">ploid kromosz\u00f3m\u00e1k implement\u00e1l\u00e1sa nagyon elbonyol\u00edtan\u00e1 az algoritmust, \u00e9s nem j\u00e1rna t\u00fal sok el\u0151nnyel. Lenne recessz\u00edv meg domin\u00e1ns \u00f6r\u00f6kl\u0151d\u00e9s, ami a term\u00e9szetben j\u00f3 dolog, biztos\u00edtja, hogy bizonyos g\u00e9nek akkor is tov\u00e1bbad\u00f3djanak, ha esetleg nem jelennek meg a fenot\u00edpusban. \u00c9s esetleg ennek a recessz\u00edv g\u00e9nnek a mut\u00e1ci\u00f3ja fog valami el\u0151ny\u00f6s tulajdons\u00e1got l\u00e9trehozni. Szerintem a recessz\u00edv g\u00e9neket helyettes\u00edti az, hogy kell\u0151en nagy a popul\u00e1ci\u00f3 m\u00e9rete, kell\u0151en sok ut\u00f3d j\u00f6n l\u00e9tre, \u00e9s a legrosszabb fitnesz\u0171 egyednek is van es\u00e9lye a szaporod\u00e1sra, \u00edgy nem l\u00e1ttam sz\u00fcks\u00e9gesnek t\u00falbonyol\u00edtani a szimul\u00e1ci\u00f3t.<\/p>\n<p><\/span><span style=\"color: #000000;\"><em>Hogyan \u00f6r\u00f6k\u00edtik a tulajdons\u00e1gaikat az ut\u00f3daikra?<\/em><\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\">Nem \u00f6r<\/span><span style=\"color: #000000;\">\u00f6<\/span><span style=\"color: #000000;\">k\u00edtik. :<\/span><span style=\"color: #000000;\">-)<\/span><span style=\"color: #000000;\"><br \/>Err\u0151l vit\u00e1ztunk is j\u00f3 hosszan vaskalapossal, hogy az aut\u00f3kra vajon \u00e9rv\u00e9nyes-e az evol\u00faci\u00f3 algoritmusa vagy sem, \u0151 azt mondja, hogy mivel nem \u00f6nmagukat m\u00e1solj\u00e1k, ez\u00e9rt nem \u00f6r\u00f6k\u00edtik sem<\/span><span style=\"color: #000000;\">m<\/span><span style=\"color: #000000;\">ilyen tulajdons\u00e1gukat az ut\u00f3dgener\u00e1ci\u00f3ra (ak\u00e1r az aut\u00f3kat ak\u00e1r az aut\u00f3k tervrajz\u00e1t n\u00e9zz\u00fc<\/span><span style=\"color: #000000;\">k<\/span><span style=\"color: #000000;\">). \u00c9n meg azt mondom, hogy ez nem az evol\u00faci\u00f3hoz tartozik, ez a mi sz\u00e1m\u00edt \u00e9l\u0151nek\/\u00e9lettelennek c\u00edm\u0171 vita t\u00e1rgya lenne.<br \/>Szerintem olyan genetikus algoritmust m\u00e9g senki nem \u00edrt, ahol maga a g\u00e9nek m\u00e1sol\u00e1sa \u00e9s az ut\u00f3d l\u00e9trehoz\u00e1sa magukba az egyedekbe lenne k\u00f3dolva. Ez egy k\u00fcl\u00f6n f\u00fcggv\u00e9ny, ami veszi a mama g\u00e9njeit, a papa g\u00e9njeit, kijel\u00f6l egy v\u00e9letlen pontot a bin\u00e1ris sorozatban, ott elv\u00e1gja, keresztezi a k\u00e9t &#8220;<\/span><span style=\"color: #000000;\">DNS<\/span><span style=\"color: #000000;\">&#8220;-t, \u00e9s m\u00e1ris k\u00e9sz az \u00faj egyed.<br \/>Ez a k\u00e9rd\u00e9s r\u00e1vil\u00e1g\u00edtott egy hib\u00e1ra a programban. Minden \u00faj egyedben a <\/span><span style=\"color: #000000;\">DNS<\/span><span style=\"color: #000000;\"> els\u0151 fele biztosan a mam\u00e1t\u00f3l, a m\u00e1sodik fele pedig biztosan a pap\u00e1t\u00f3l sz\u00e1rmazik, pedig ezt randomiz\u00e1lni kellene&#8230;<\/p>\n<p>R\u00f6viden: ivaros szaporod\u00e1st modellez a program (minden egyed hermafrodita), egyetlen ponton keresztezve a <\/span><span style=\"color: #000000;\">DNS<\/span><span style=\"color: #000000;\">-t. De az ut\u00f3d l\u00e9trehoz\u00e1sa sem r\u00e9sze az alap programnak, ezt is a felhaszn\u00e1l\u00f3 \u00edrhatja meg, ha csak a mama &#8220;<\/span><span style=\"color: #000000;\">DNS<\/span><span style=\"color: #000000;\">&#8220;-\u00e9t haszn\u00e1lja fel akkor l\u00e9nyeg\u00e9ben az oszt\u00f3d\u00e1sos szaporod\u00e1st lehet modellezni.<\/p>\n<p><\/span><span style=\"color: #000000;\"><em>Hogyan mut\u00e1lnak?<\/em><\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\">A be\u00e1ll\u00edtott mut\u00e1ci\u00f3s r\u00e1ta a &#8220;<\/span><span style=\"color: #000000;\">DNS<\/span><span style=\"color: #000000;\">&#8221; minden bitj\u00e9re vonatkozik. V\u00e9gigmegy a f\u00fcggv\u00e9ny minden biten, gener\u00e1l egy v\u00e9letlen sz\u00e1mot 0 \u00e9s 1 k\u00f6z\u00f6tt, ha ez kisebb mint a mut\u00e1ci\u00f3s r\u00e1ta, akkor invert\u00e1lja az adott bitet.<br \/>\u00daj egyed l\u00e9trehoz\u00e1sakor a crossover ut\u00e1n h\u00edv\u00f3dik meg a mut\u00e1ci\u00f3s f\u00fcggv\u00e9ny.<\/p>\n<p><\/span><span style=\"color: #000000;\"><em>Hogyan hat r\u00e1juk a szelekci\u00f3?<\/em><\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\">S\u00falyozott rulettker\u00e9k szelekci\u00f3t haszn\u00e1ltam. Van t\u00f6bbf\u00e9le megold\u00e1s is, p\u00e9ld\u00e1ul kiv\u00e1logathatn\u00e1m mind<\/span><span style=\"color: #000000;\">i<\/span><span style=\"color: #000000;\">g az els\u0151 10 legjobb egyedet, \u00e9s csak azoknak engedn\u00e9m meg a szaporod\u00e1st, ez lenne az elitista strat\u00e9gia. Ez gyorsabban konverg\u00e1l, de nagyobb es\u00e9llyel ragad be lok\u00e1lis minimumhelyre.<br \/>A s\u00falyozott rulettker\u00e9k szelekci\u00f3 \u00fagy m\u0171k\u00f6dik, hogy minden egyed a fitnesz\u00e9vel s\u00falyozva kap es\u00e9lyt a szaporod\u00e1sra. Ha mondjuk 4 egyedn\u00e9l a fitneszek \u00f6sszege 1, \u00e9s egyedenk\u00e9nt: 0.4, 0.3, 0.25, 0.05, akkor az els\u0151 egyednek 40% es\u00e9lye van a szaporod\u00e1sra, az utols\u00f3nak meg 5%. Gener\u00e1lok egy v\u00e9letlen sz\u00e1mot 0 \u00e9s 1 k\u00f6z\u00f6tt, ha a 0-0.4 intervallumba esik, akkor az els\u0151 egyedet v\u00e1lasztom mam\u00e1nak, ha a 0.4-0.7 intervallumba akkor a m\u00e1sodikat, stb. stb. (Arra nem figyelek, hogy ne legyen v\u00e9rfert\u0151z\u00e9s, teh\u00e1t lehet hogy ugyanaz az egyed lesz a mama \u00e9s a papa is.)<\/p>\n<p><\/span><span style=\"color: #000000;\"><em>Van egy kapcsol\u00f3, ami a ragadoz\u00f3t kapcsolja be. Hogyan m\u0171k\u00f6dik a ragadoz\u00f3, mi alapj\u00e1n ejt zs\u00e1km\u00e1nyt?<\/em><\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\">Ez egy t\u00falegyszer\u0171s\u00edtett ragadoz\u00f3, igaz\u00e1b\u00f3l ugyanaz t\u00f6rt\u00e9nik, mintha a fenot\u00edpus sz\u00edn\u00e9t \u00e1ll\u00edtan\u00e1d \u00e1t. (Csak itt a h\u00e1tt\u00e9rsz\u00ednhez fognak hasonl\u00edtani egy id\u0151 ut\u00e1n az egyedek.) Arra j\u00f3 ez a gomb, hogy ha m\u00e1r van egy popul\u00e1ci\u00f3d, ami viszonylag homog\u00e9n, \u00e9s hirtelen megjelenik egy ragadoz\u00f3, akkor l\u00e1tni lehet, hogy mennyi id\u0151 alatt tud elterjedni egy \u00faj, hasznos mut\u00e1ci\u00f3. Ez n\u00e1lam mind<\/span><span style=\"color: #000000;\">i<\/span><span style=\"color: #000000;\">g t\u00f6bb id\u0151t vett ig\u00e9nybe, mint egy adott fenot\u00edpus kiteny\u00e9szt\u00e9se.<\/p>\n<p><\/span><span style=\"color: #000000;\"><em>A h\u00e1tt\u00e9r hogyan befoly\u00e1solja az eredm\u00e9nyt? A ragadoz\u00f3 sikere f\u00fcgg a h\u00e1tt\u00e9r sz\u00edn\u00e9t\u0151l?<\/em><\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\">Mondhatjuk azt, hogy a rejt\u0151sz\u00ednt\u0151l nagyon elt\u00e9r\u0151 egyedeket fogja megenni. De mivel maga a ragadoz\u00f3 nincs rendesen szimul\u00e1lva, \u00edgy igaz\u00e1b\u00f3l nincs j\u00f3 v\u00e1laszom erre a k\u00e9rd\u00e9sre.<br \/>Majd elgondolkozom m\u00e9g azon, hogyan lehetne k\u00e9t k\u00fcl\u00f6n\u00e1ll\u00f3 popul\u00e1ci\u00f3 koevol\u00faci\u00f3j\u00e1t j\u00f3l szimul\u00e1lni, bele\u00e9rtve a ragadoz\u00f3k sikeress\u00e9g\u00e9t is, de ez jelenleg nincs megval\u00f3s\u00edtva.<\/p>\n<p><\/span><span style=\"color: #000000;\"><em>Milyen v\u00e1ltoztat\u00e1sokat szeretn\u00e9l m\u00e9g be\u00e9p\u00edteni?<\/em><\/span><span style=\"color: #000000;\"><br \/><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\">B\u00e1rmilyen javaslatot sz\u00edvesen fogadok, amivel a biol\u00f3giai evol\u00faci\u00f3hoz jobban hasonl\u00edt\u00f3 rendszert lehetne k\u00e9sz\u00edteni.<br \/>A baj az, hogy csak ilyen t\u00falegyszer\u0171s\u00edtett modellek eset\u00e9n lesz gyors a futtat\u00e1s, ha egy val\u00f3s m\u00e9rn\u00f6ki probl\u00e9ma megold\u00e1s\u00e1ra haszn\u00e1ln\u00e1m, mondjuk egy rep\u00fcl\u0151g\u00e9p sz\u00e1rnymodell kifejleszt\u00e9s\u00e9re, akkor a fitness ki\u00e9rt\u00e9kel\u00e9se l\u00e9nyeg\u00e9ben azt jelenten\u00e9, hogy a &#8220;DNS&#8221;-ben t\u00e1rolt adatokb\u00f3l l\u00e9tre kell hozni a sz\u00e1rny 3D-s modellj\u00e9t, beletenni a sz\u00e9lcsatorna szimul\u00e1ci\u00f3s programba, ezt megism\u00e9telni a popul\u00e1ci\u00f3 minden egyed\u00e9re, a kapott eredm\u00e9nyek alapj\u00e1n cs\u00f6kken\u0151 sorrendbe rendezni az egyedeket, majd ezekb\u0151l szelekt\u00e1lni \u00e9s \u00faj gener\u00e1ci\u00f3t l\u00e9trehozni. <br \/>A ki\u00e9rt\u00e9kel\u00e9s m\u00f3dja miatt lass\u00faak \u00e1ltal\u00e1ban a genetikus algoritmusok, a szelekci\u00f3, crossover, \u00e9s mut\u00e1ci\u00f3 megvan egy pillanat alatt, csak a fitness sz\u00e1m\u00edt\u00e1sa f\u00fcgg a modell bonyolults\u00e1g\u00e1t\u00f3l.<\/p>\n<p>Egy\u00e9bk\u00e9nt a szoftver open source, gpl3 licenszel, b\u00e1rki let\u00f6ltheti a forr\u00e1st, \u00e9s \u00e1t\u00edrhatja kedve szerint. Maga a genetikus algoritmus csak a szelekci\u00f3t v\u00e9gzi el, illetve megh\u00edvja a felhaszn\u00e1l\u00f3 \u00e1ltal defini\u00e1lt dns gener\u00e1l\u00f3, mut\u00e1ci\u00f3, crossover, \u00e9s fitnesz ki\u00e9rt\u00e9kel\u0151 f\u00fcggv\u00e9nyeket. A be\u00e9p\u00edtett p\u00e9ld\u00e1kat megn\u00e9zve l\u00e1that\u00f3, hogy milyen f\u00fcggv\u00e9nyeket kell megval\u00f3s\u00edtani, \u00e9s milyen form\u00e1ban kell az eredm\u00e9nyt visszaadni.<\/span><\/p>\n<p style=\"margin-bottom: 0cm;\">\u00a0<\/p>\n<p style=\"margin-bottom: 0cm;\"><span style=\"color: #000000;\"><em>K\u00f6sz\u00f6n\u00f6m a v\u00e1laszokat! <\/em><\/span><\/p>\n<p style=\"margin-bottom: 0cm;\">\u00a0<\/p>\n<p style=\"margin-bottom: 0cm;\">Update: Egyvalami kimaradt, a v\u00e1laszaimb\u00f3l is, meg a programb\u00f3l is. Akartam egy  olyan funkci\u00f3t is, hogy az optim\u00e1lis fenot\u00edpus el\u00e9r\u00e9sekor meg\u00e1lljon, \u00e9s  vissza lehessen lapozni egyes\u00e9vel az \u00f6sszes gener\u00e1ci\u00f3t. Ez sajnos nem  ker\u00fclt bele, mert eszm\u00e9letlen sok mem\u00f3ri\u00e1t zab\u00e1lt firefoxon, pedig  ut\u00e1nasz\u00e1molva nem olyan sok az az adat, amit t\u00e1rolnia kellene. M\u00e9g  k\u00eds\u00e9rletezek vele, \u00e9s ha siker\u00fcl haszn\u00e1lhat\u00f3 megold\u00e1st tal\u00e1lnom, akkor  azt mindenk\u00e9ppen belerakom.<br \/>Ez a gener\u00e1ci\u00f3nk\u00e9nti visszalapoz\u00e1s f\u0151leg  az \u00e9rtelmes mondatot el\u0151\u00e1ll\u00edt\u00f3 programn\u00e1l lenne fontos. Dawkins weasel  programj\u00e1t is amiatt t\u00e1madj\u00e1k, hogy a h\u00e1tt\u00e9rben nem csin\u00e1l m\u00e1st, mint  hogy a sikeresen megtal\u00e1lt karaktereket ber\u00f6gz\u00edti, amik azt\u00e1n soha  t\u00f6bbet nem m\u00f3dosulhatnak, \u00edgy folyamatosan n\u00f6veli a v\u00e9letlenszer\u0171  keres\u00e9s siker\u00e9nek es\u00e9ly\u00e9t.<br \/>Azt kellene \u00e9szrevennie a kritikusoknak,  hogy itt nem egyetlen karaktersorozatot m\u00f3dos\u00edtgat az algoritmus. Minden  l\u00e9p\u00e9sben egy teljes popul\u00e1ci\u00f3t t\u00e1rol, aminek az egyedei k\u00f6z\u00f6tt az id\u0151  el\u0151rehaladt\u00e1val egyre t\u00f6bb lesz az olyan, amelyik hasonl\u00edt a futtat\u00e1s  elej\u00e9n megadott fenot\u00edpusra. De ezek k\u00f6z\u00f6tt az egyedek k\u00f6z\u00f6tt lesz el\u00e9g  sok olyan, amelyekn\u00e9l egy kor\u00e1bbi j\u00f3l megtal\u00e1lt karakter hely\u00e9n valami  teljesen m\u00e1s bet\u0171 van. A teljes popul\u00e1ci\u00f3b\u00f3l itt csak a legnagyobb  fittnessz\u0171 egyed ker\u00fcl megjelen\u00edt\u00e9sre. Sok futtat\u00e1s sor\u00e1n lehet tal\u00e1lni  olyan eseteket is, amikor k\u00e9t egym\u00e1st k\u00f6vet\u0151 gener\u00e1ci\u00f3ban egy karakter  &#8220;elromlik&#8221;, de k\u00e9t m\u00e1sik viszont &#8220;kijavul&#8221;.  <br \/>Nincs semilyen  &#8220;reteszel\u0151 mechanizmus&#8221; a programban. Sem a Dawkins \u00e1ltal \u00edrt weaselben,  sem az eny\u00e9mben. A &#8220;kromosz\u00f3m\u00e1k&#8221; minden egyes bitj\u00e9re vonatkozik a  mut\u00e1ci\u00f3s r\u00e1ta, azaz minden bitnek azonos es\u00e9lye van arra, hogy  invert\u00e1l\u00f3djon. A &#8220;reteszel\u0151 mechanizmus&#8221; maga az evol\u00faci\u00f3.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nemr\u00e9g egy f\u00f3rumon akadtam egy programra, ami els\u0151re mellbev\u00e1gott, ez tulajdonk\u00e9ppen egy h\u00e1zi k\u00e9sz\u00edt\u00e9s\u0171 evol\u00faci\u00f3szimul\u00e1tor, r\u00e1ad\u00e1sul ny\u00edlt forr\u00e1sk\u00f3d\u00fa, egyszer\u0171 webes fel\u00fclettel, \u00edgy b\u00e1rki k\u00f6nnyed\u00e9n j\u00e1tszhat vele. A kezel\u00e9se egyszer\u0171, a jobb oldali panelen be\u00e1ll\u00edthat\u00f3, hogy milyen kis arcocska legyen a &hellip; <a href=\"https:\/\/criticalbiomass.hu\/?p=5006029\">Egy kattint\u00e1s ide a folytat\u00e1shoz&#8230;. <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/criticalbiomass.hu\/index.php?rest_route=\/wp\/v2\/posts\/5006029"}],"collection":[{"href":"https:\/\/criticalbiomass.hu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/criticalbiomass.hu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/criticalbiomass.hu\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/criticalbiomass.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5006029"}],"version-history":[{"count":0,"href":"https:\/\/criticalbiomass.hu\/index.php?rest_route=\/wp\/v2\/posts\/5006029\/revisions"}],"wp:attachment":[{"href":"https:\/\/criticalbiomass.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5006029"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/criticalbiomass.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5006029"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/criticalbiomass.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5006029"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}