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 14:33] 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 493: | Line 539: | ||
* penalize | * penalize | ||
* roulette2 | * roulette2 | ||
- | * // | + | * // |
Vysoka mutacia, nizka reprodukcia, | Vysoka mutacia, nizka reprodukcia, | ||
Line 501: | Line 547: | ||
---- | ---- | ||
- | + | **laptop 2.12 11:42** | |
- | **smecnet:** | + | |
* populacia: 100 | * populacia: 100 | ||
- | * radical mut:0.87 | + | * radical mut: 0.7 |
- | * repro:0.8 | + | * repro:0.9 |
* mut:0.6 | * mut:0.6 | ||
* penalize | * penalize | ||
- | * roulette1 | + | * roulette2 |
- | * // | + | * // |
+ | |||
+ | {{: | ||
---- | ---- | ||
- | **smecnet:** | + | **laptop 2.12 12:30** |
- | * populacia: | + | * populacia: |
- | * radical mut:0.92 | + | * radical mut: 0.9 - 1 |
- | * repro:0.6 | + | * 2bit mut: 0.4 - 0.9 |
- | * mut:0.8 - 1, postupne od 0 po 5000 generaciu | + | * 1bit mut: 0 - 0.4 |
- | * penalize | + | * repro:0.9 |
- | * roulette1, od generacie 4000 roulette2 | + | * mut:0.6 |
- | * fitness dava 0.01 nezastavenym automatom | + | * penalize |
- | * // | + | * roulette2 |
+ | * // | ||
- | === Stare Data === | + | Nova mutacia - radical mutation vytvori novy stav ale s rovnakym initom, podla nahodneho cisla est aj 2bitova alebo jednobitova mutacia, 2bitova je najpravdepodobnejsia.. |
- | Evolucia | + | |
- | {{:evolution_nu_roulett_nut_mut_penalization_repaired.jpg|:evolution_nu_roulett_nut_mut_penalization_repaired.jpg}} | + | {{:population_2_12_12-30.jpg|:population_2_12_12-30.jpg}} |
---- | ---- | ||
- | Evolucia s novou ruletou, a s penalizaciou: | + | **laptop 2.12 12:30** |
+ | * 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.. | ||
- | {{:evolution_nu_roulett_nu_mut_penalization.jpg|:evolution_nu_roulett_nu_mut_penalization.jpg}} | + | {{:population_2_12_12-30.jpg|:population_2_12_12-30.jpg}} |
---- | ---- | ||
- | Stara evolucia, este stare fitness = pocet jednotiek / 100, bez penalizacie, so starou ruletou | + | **laptop 2.12 12:30** |
+ | * populacia: | ||
+ | * 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.. | ||
- | {{:evolution_old_fit_mut_087_no_penalize_old_roulette.jpg|:evolution_old_fit_mut_087_no_penalize_old_roulette.jpg}} | + | {{:population_2_12_12-30.jpg|:population_2_12_12-30.jpg}} |
---- | ---- | ||
- | Najstarsia evolucia, bez penalizacie a so starou ruletou | + | **laptop 2.12 13: |
- | + | * populacia: 100 | |
- | {{:evolution_old_fit_much_mut.jpg|:evolution_old_fit_much_mut.jpg}} | + | * 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:// |