This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
beaver [2006/12/02 15:15] admin |
beaver [2006/12/18 01:47] admin |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Priprava Busy Beaver v domacom prostredi ====== | ====== Priprava Busy Beaver v domacom prostredi ====== | ||
+ | |||
+ | === Logbook ;) === | ||
+ | |||
+ | vsetko fici, az nato ze ked uz evolucia dospeje ku nejakemu rieseniu stale mam pocit ze je to len lokalne maximum - velka uniformita populacie a malo cudzich genov, mozno je to problem hamingovskej bariery, mozno toho ze mutacie TS, ktore su uz na hrane riesenia (napr. 10 alebo 9) ich len nicia a ze vyssie riesenia su umiestnene v priestore moznosti niekde inde. preto som sa rozhodol zmenit ruletu (aby vyberala nie to coho je najviac) ale aby vyberala podla pseudonahodnej funkcie (ako by mala v skutocnosti). takisto som zaviedol penalizaciu ktora tresta prilis rovnake ts a berie im fitness body. nakoniec som pridal mutaciu ktora v istom pripade vygeneruje ts cely novy stav nemiesto zmeny pismena. | ||
+ | |||
+ | zmenil som roulette na roulette 2, z nejakeho dovodu sa cela populacia sprava ako totalny hnoj a chaos - aj ked sa objavi prevratne riesenie (napr. 0.64) nepresadi sa a vsetko sa straca v priemere. skusil som to pustit zo starou roulette - je to lepsie ale stali nic moc. urcite ma natom najvacsi vplyv ruleta, mozno aj penalizacia ktora sposobuje ze je potom viacej oblasti kde pada kocka s tym istym vysledkom (napr. 0.64 - 0.6312 0.64 - 0.6228 pre dve rozne 8 jednotkove ts) mutacia sa asi ukazala prilis hrubou nato aby z vyssich ts spravila nejake lepsie riesenia.. ked vygeneruje cely stav nahodne, jasne ze to vo vacsine pripadov cely ts odjebe. | ||
+ | |||
+ | Roulette2 som uz opravil - bola v nej chyba.. skusim vypocty s roulette1 a roulette2 ako sa spravaju. | ||
+ | |||
+ | **2.12.2006** | ||
+ | |||
+ | Spravil som novu vizualizaciu pre evoluciu, vidiet na nej ake rozne chromozomy sa nachadzaju v populacii a aj ich pomer a ich vyvoj v case. Premyslal som o mutacii, ktora je jednobitova a preto sposobuje to ze z jedneho typu TS rovnakej sily na druhy je tazke prejst, pretoze jednobitova mutacia hociaj spravnym smerom tento TS oslabi a preto sa nebude dalej rozmnozovat. Prepisal som mutacie tak, aby sa diali naraz dve bitove zmeny (bit - rozumej pismenko v stave). Hned tretia evolucia mi strasne rychlo nasla 11 jednotkovy TS !!! Zrusil som ju kvoli akejsi chybe vo vykreslovani, | ||
+ | Dalsia zaujimava vec je, ze cca 40% populacie zabera shit - teda menejcenne automaty (0.25 a menej). Tie najlepsie su v hornych 15 percentach ;) | ||
+ | |||
+ | bezim evolucie na smecnete aj na laptope. na laptope su s grafmi priebehu fitness funkcie (spriemerovanej). | ||
+ | |||
+ | **17.12.2006** | ||
+ | |||
+ | No tymto to asi padne, netusil som ze 5 a 6 stavove su uz take huste na vypocty. heh. Zacal som v pondelok (11.12) s tym ze som len prepisal 4stavovy kod pre 5stavove automaty. Este nejaky tinkering aby to bezalo na servri a aby som videl results (http:// | ||
+ | ved toto necham dobezat, aspon som sa nieco naucil, nasiel som aj 11 jednotkovy 4TS a uz mam aj napad ako evoluciu pouzit na jeden plagat co mam spravit do konca decembra.. hmm kod dole je outdated,, keby niekto chcel poskytnem sucasny stav :) | ||
==== Evolucia ==== | ==== Evolucia ==== | ||
Line 5: | Line 25: | ||
Evoluciu robim v pythone, asi je to pomale oproti c-cku ale easy sa v tom kodi. Tu je kod gentickeho algoritmu, doplnil som do neho poznamky. Procedury a funkcie ktore vola su nizsie. | Evoluciu robim v pythone, asi je to pomale oproti c-cku ale easy sa v tom kodi. Tu je kod gentickeho algoritmu, doplnil som do neho poznamky. Procedury a funkcie ktore vola su nizsie. | ||
- | < | + | < |
def genetic_alg(iterat, | def genetic_alg(iterat, | ||
t = 0 | t = 0 | ||
Line 90: | Line 110: | ||
=== Ruleta === | === Ruleta === | ||
- | < | + | < |
# Ruleta 2 | # Ruleta 2 | ||
Line 138: | Line 158: | ||
=== Fitness funkcia === | === Fitness funkcia === | ||
- | < | + | < |
def fitness((count, | def fitness((count, | ||
Line 156: | Line 176: | ||
== Krizenie == | == Krizenie == | ||
- | < | + | < |
def reproduce(a, | def reproduce(a, | ||
Line 194: | Line 214: | ||
== Mutacia == | == Mutacia == | ||
- | < | + | < |
def mutate(a, | def mutate(a, | ||
Line 272: | Line 292: | ||
Vymyslel som si penalizaciu, | Vymyslel som si penalizaciu, | ||
- | < | + | < |
def penalize(pop, | def penalize(pop, | ||
Line 299: | Line 319: | ||
Penalizacia proste vypocita percentualny podiel jedinca na populacii, obrati ho (100 - podiel) a prenasobi ho tak aby vysledne cislo bolo z intervalu 0.8 az 1. Tym padom sa nemoze stat ze schopnejsi jedinec ma mensiu fitness ako menej schopny. | Penalizacia proste vypocita percentualny podiel jedinca na populacii, obrati ho (100 - podiel) a prenasobi ho tak aby vysledne cislo bolo z intervalu 0.8 az 1. Tym padom sa nemoze stat ze schopnejsi jedinec ma mensiu fitness ako menej schopny. | ||
- | ==== Vysledky ==== | ||
- | === Logbook ;) === | ||
- | vsetko fici, az nato ze ked uz evolucia dospeje ku nejakemu rieseniu stale mam pocit ze je to len lokalne maximum - velka uniformita populacie a malo cudzich genov, mozno je to problem hamingovskej bariery, mozno toho ze mutacie TS, ktore su uz na hrane riesenia (napr. 10 alebo 9) ich len nicia a ze vyssie riesenia su umiestnene v priestore moznosti niekde inde. preto som sa rozhodol zmenit ruletu (aby vyberala nie to coho je najviac) ale aby vyberala podla pseudonahodnej funkcie (ako by mala v skutocnosti). takisto som zaviedol penalizaciu ktora tresta prilis rovnake ts a berie im fitness body. nakoniec som pridal mutaciu ktora v istom pripade vygeneruje ts cely novy stav nemiesto zmeny pismena. | + | ==== Vysledky ==== |
- | zmenil | + | Pre 4 stavove TS som nasiel najlepsi TS taky, ktory zapise 11 jednotiek |
- | Roulette2 som uz opravil - bola v nej chyba.. skusim vypocty s roulette1 a roulette2 ako sa spravaju. | + | **q0 0 1 A R;A 0 1 C R;B 0 1 A L;C 0 1 B L;B 1 1 B L;q0 1 0 q0 L;C 1 0 q0 R;** |
- | **2.12.2006** | + | vypocet: |
- | Spravil som novu vizualizaciu pre evoluciu, vidiet na nej ake rozne chromozomy sa nachadzaju v populacii a aj ich pomer a ich vyvoj v case. Premyslal som o mutacii, ktora je jednobitova a preto sposobuje to ze z jedneho typu TS rovnakej sily na druhy je tazke prejst, pretoze jednobitova mutacia hociaj spravnym smerom tento TS oslabi a preto sa nebude dalej rozmnozovat. Prepisal som mutacie tak, aby sa diali naraz dve bitove zmeny (bit - rozumej pismenko v stave). Hned tretia evolucia mi strasne rychlo nasla 11 jednotkovy TS !!! Zrusil som ju kvoli akejsi chybe vo vykreslovani, pustil zase a cela populacia stagnuje okolo 10 jednotkoveho TS. Ked som porovnaval rozdiely medzi 0.64 TS z ktorej sa vyvinul | + | [' |
- | Dalsia zaujimava vec je, ze cca 40% populacie zabera shit - teda menejcenne automaty (0.25 a menej). Tie najlepsie su v hornych 15 percentach ;) | + | [0, ' |
- | + | [0, '1', ' | |
- | bezim evolucie na smecnete aj na laptope. na laptope su s grafmi priebehu fitness funkcie (spriemerovanej). | + | [' |
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [0, ' | ||
+ | [0, ' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | \\ | ||
+ | Pre 5 a 6 stavove som uz nestihol vela.\\ | ||
=== Data === | === Data === | ||
Line 514: | Line 560: | ||
---- | ---- | ||
+ | **laptop 2.12 12: | ||
+ | * populacia: 100 | ||
+ | * radical mut: 0.9 - 1 | ||
+ | * 2bit mut: 0.4 - 0.9 | ||
+ | * 1bit mut: 0 - 0.4 | ||
+ | * repro:0.9 | ||
+ | * mut:0.6 | ||
+ | * penalize | ||
+ | * roulette2 | ||
+ | * // | ||
+ | |||
+ | Nova mutacia - radical mutation vytvori novy stav ale s rovnakym initom, podla nahodneho cisla est aj 2bitova alebo jednobitova mutacia, 2bitova je najpravdepodobnejsia.. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ---- | ||
+ | |||
+ | **laptop 2.12 12: | ||
+ | * populacia: 100 | ||
+ | * radical mut: 0.9 - 1 | ||
+ | * 2bit mut: 0.4 - 0.9 | ||
+ | * 1bit mut: 0 - 0.4 | ||
+ | * repro:0.9 | ||
+ | * mut:0.6 | ||
+ | * penalize | ||
+ | * roulette2 | ||
+ | * // | ||
+ | |||
+ | Nova mutacia - radical mutation vytvori novy stav ale s rovnakym initom, podla nahodneho cisla est aj 2bitova alebo jednobitova mutacia, 2bitova je najpravdepodobnejsia.. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ---- | ||
+ | |||
+ | **laptop 2.12 12: | ||
+ | * populacia: 100 | ||
+ | * radical mut: 0.9 - 1 | ||
+ | * 2bit mut: 0.4 - 0.9 | ||
+ | * 1bit mut: 0 - 0.4 | ||
+ | * repro:0.9 | ||
+ | * mut:0.6 | ||
+ | * penalize | ||
+ | * roulette2 | ||
+ | * // | ||
+ | |||
+ | Nova mutacia - radical mutation vytvori novy stav ale s rovnakym initom, podla nahodneho cisla est aj 2bitova alebo jednobitova mutacia, 2bitova je najpravdepodobnejsia.. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ---- | ||
+ | |||
+ | **laptop 2.12 13: | ||
+ | * populacia: 100 | ||
+ | * radical mut: 0.9 - 1 | ||
+ | * 2bit mut: 0.4 - 0.9 | ||
+ | * 1bit mut: 0 - 0.4 | ||
+ | * repro:0.9 | ||
+ | * mut:0.6 | ||
+ | * penalize | ||
+ | * roulette2 | ||
+ | * // | ||
+ | |||
+ | stale ten isty problem, akonahle dospeje povedzme po 0.64 uz iba mlati prazdne zito s tym istym genomom. nic nove sa uz neobjavi.. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ---- | ||
+ | dalsie (new) vysledky [[http:// |