Hlavní navigace

Názory k článku
Biologické algoritmy (2) - Evoluční algoritmy

tm
tm (neregistrovaný) 2a01:490:11:----:----:----:----:----
11. 4. 2012 0:29 Nový

Kvalita kódu

celé vlákno

Na tohle opravdu nemám sílu, abych to vyluštil, vždyť se to nedá číst. První díl byl super, ale tohle mě dočista odrazuje. Jestli bude i v následujících dílech podobně napsaný kód (nebo nedej bože bude navazovat na dnešní), tak to můžu rovnou zabalit. Škoda.

Petr Krčmář aura:99
11. 4. 2012 10:11 Nový

Re: Kvalita kódu

celé vlákno

Kvalitu kódu neovlivním, ale zapnul jsem alespoň obarvování. Snad se to tím zpřehlední.

peci1
peci1 (neregistrovaný) ---.koleje.cuni.cz
11. 4. 2012 0:29 Nový

Uprava zdrojoveho kodu

celé vlákno

Informacni hodnota clanku je slusna, to ano, ale ten kod. Nejde cist. Nazvy mnohych promennych jsou krypticke. Vypocet probiha v konstruktoru (!) tridy. Navic se tam micha kreslici a vypocetni kod. Temer nic neni oddelene do samostatnych metod, napr. doCrossover(), doMutation() apod. Takhle ja si ukazkovy kod nepredstavuju. "Setreni mistem" (uspora par radku inlinovanim funkci) zde opravdu "neni na miste".

Navic mam pocit, ze SimpleGA mutuje jedince i tehdy, pokud se nekrizili, coz tenhle kod myslim nedela.

Gimli2
Gimli2 (neregistrovaný) ---.net.upcbroadband.cz
11. 4. 2012 12:27 Nový

Re: Uprava zdrojoveho kodu

celé vlákno

Jo, uvedeny kod nedovoluje mutaci, pokud se nekrizilo.

Je to sice jen o definici SimpleGA a vuli autora, ale mnohdy je uzitecne provadet mutaci i bez krizeni. Obzvlaste kdyz krizenim hrozi rozbiti jedince (vznik nevalidniho reseni), nebo je oprava rozbiteho jedince prilis draha.
Napriklad pri krizeni (rozhodovacich) stromu s unikatnimi atributy v listech a pritom chceme zajistit, aby vysledny strom po krizeni (prohozeni nahodne vybranych podstromu) mel i nadale dane vlastnosti - urcitou hloubku, unikatni atributy v listech - tedy ze se nam nestane, ze ve 2 listech budeme mit shodny atribut apod.

Proto taky v pripadech, kdy mame v genu kodovane slozitejsi struktury nez pole cisel - napriklad uz zminene stromy, kusy zdrojoveho kodu, polynomy, atd. a mame i striktnejsi pozadavky na validitu reseni, prichazi do uvahy evolvovat misto techto struktur gramatiky poposujici pripustna reseni. Obrovskou vyhodou je, za kazda takto vznikla gramatika produkuje pouze validni reseni. Nic anm vsak nezarucuje, ze takto produkovana reseni budou lepsi, nez jina - primo nalezena pomoci GA i za cenu velmi slozitych implementaci doCross()/doMu­tate() s pripadnymi naslednymi opravami vzniklych zmetku.

Je tedy na kazdem, aby peclive uvazil jakou cestou jit a idealne se rovnou poucit z predchozich (ne)uspechu jinych experimentatoru.

Karell aura:82
11. 4. 2012 18:16 Nový

Re: Uprava zdrojoveho kodu

celé vlákno

Souhlasim. Cvicne jsem si zkusil zavest tridu Organism s tim double[9] a fitness, par radku pribylo, velikost souboru se vsak dokonce zmensila a je to samozrejme mnohem prehlednejsi. Takhle to autor utopil v polich a indexech. Pripomina mi to starou poucku, ze fortranske programy se daji psat v jakemkoli jazyce :-)

Jinak serial hezky, sice jsem se na GA vyblbnul az moc, ale cist bych o tom mohl porad. Tesim se na dalsi dil.

fqwerqwerqwr
fqwerqwerqwr (neregistrovaný) ---.customer.poda.cz
11. 4. 2012 7:19 Nový

Re: Biologické algoritmy (2) - Evoluční algoritmy

celé vlákno

ja myslim, ze vytky na kod jsou temer zbytecne, vzdyt je to jen par desitek
radku, tak to snad dokaze precist kazdy.
rozsekat tenhle kousek kodu na milion ruznych metod, ktere by stejne
obsahovaly radek nebo dva radky kodu, abyste se v tom
vyznali by byl kanon na komara.

mr.dan
mr.dan (neregistrovaný) ---.net.upcbroadband.cz
11. 4. 2012 9:05 Nový

Re: Biologické algoritmy (2) - Evoluční algoritmy

celé vlákno

tak mohlo by se pole zaznam[][] jmenovat treba record[][] kdyz uz se vsechny ostatni promenne pojmenovavaji anglicky.... :-)
bez podrobnejsiho zkoumani treba nezjistim k cemu je vubec pole arFitness[] to se opravdu nemohlo jmenovat hur...
v celem kodu chybi mezery - okolo zavorek, znamenek, vsude
a asi nejvetsi maglajz v tom dela to proporcionalni pismo... to by se mozna jeste dalo vytunit

jasne ze se to da s trochou snahy precist a pochopit, ale autor si dela spatne PR a asi mu klesne pocet ctenaru, coz je imho skoda

cvzvczxv
cvzvczxv (neregistrovaný) 193.179.215.---
11. 4. 2012 9:21 Nový

Re: Biologické algoritmy (2) - Evoluční algoritmy

celé vlákno

je celkem jedno jaky styl ma autor, zavorky s mezerou nebo bez, ale kdyz
je konzistentni v celem kodu tak je to v poradku.

kert
kert (neregistrovaný) ---.cz.polarion.com
11. 4. 2012 10:59 Nový

Re: Biologické algoritmy (2) - Evoluční algoritmy

celé vlákno

Kdyby byl autor profesionální programátor, tak by ten kód vypadal jinak, ale autor je profesionál v něčem jiném a ten kód podle toho vypadá - a co? Když nějakého čtenáře zajímá problematika natolik, že je ochoten číst zdroják, tak beztak nejlepší způsob na pochopení je copy&paste do nějakého IDE a hrát si s tím... a může si to i cvičně zrefaktorovat ;)

dannak
dannak (neregistrovaný) ---.cz.logica.com
12. 4. 2012 14:07 Nový

Re: Biologické algoritmy (2) - Evoluční algoritmy

celé vlákno

Ano, kod je citelny, ale s urcitou davkou usili. Nekdy proste par radek kodu rekne vic, nez odstavec popisku. A kdyz ten kod je takto zatemnen, je to pochopeni slozitejsi.
Za me tedy vic oddelovat kod na vypocty a malovani, vystiznejsi pojmenovavani a vic odsazovani. jinak super!
Asi opravdu skoncim u toho cvicneho refaktoringu. Nebyl to nakonec autoruv cil, nedelat to ctenarum zbytecne jednoduche a zadat takhle domaci ukol :) ?

igieon aura:43
11. 4. 2012 9:24 Nový

Java kniznice pre ev algoritmy

http://jgap.sourceforge.net/ - trosku horsie sa to rozsiruje a defunuje strom

http://www.epochx.org/ - celkom pekna kniznica a dobre funguje,len je to single thread

Teraz sa akurat hram z http://watchmaker.uncommons.org/

Honza
Honza (neregistrovaný) 88.103.74.---
11. 4. 2012 10:37 Nový

Jsem rad za priklad

Chvalim autora za to, ze ty algoritmy demonstruje na konkretnim prikladu.

no5256
no5256 (neregistrovaný) ---.ais-servis.cz
11. 4. 2012 12:38 Nový

jen pro nejavisty

celé vlákno

unzip evolucnialg-zip.zip

mkdir genetics

mv Genetics.java genetics/

javac genetics/Gene­tics.java

java -cp . genetics.Genetics

dafyk
dafyk (neregistrovaný) 62.197.220.---
26. 4. 2012 19:18 Nový

Re: jen pro nejavisty

celé vlákno

nerozbehal by som to. dakujem za postup

HuB
HuB (neregistrovaný) ---.inext.cz
11. 4. 2012 15:33 Nový

Použití na luštění čísel z obrázku?

celé vlákno

Jsou genetické algoritmy vhodné na rozlišení čísel z obrázku? Třeba 6 ciferné číslo a každá cifra má vždy pevně dané místo v obrázku.
Díky

stewe
stewe (neregistrovaný) ---.pks.muni.cz
11. 4. 2012 15:40 Nový

Re: Použití na luštění čísel z obrázku?

celé vlákno

skor neuronove siete

JSH
JSH (neregistrovaný) ---.fit.vutbr.cz
11. 4. 2012 17:00 Nový

Re: Použití na luštění čísel z obrázku?

celé vlákno

Na rozpoznávání číslic bych doporučil AdaBoost nebo nějakou jeho variantu. Podle mých zkušeností funguje podstatně líp než neuronové sítě. Ale dost záleží na tom, jak moc jsou ty číslice zmršené.

jenom_ja
jenom_ja (neregistrovaný) ---.kolej.mff.cuni.cz
11. 4. 2012 17:52 Nový

Re: Použití na luštění čísel z obrázku?

celé vlákno

Ked mas pevne dane miesto v obrazku a presny font, pricom mas cisla, tak nepotrebujes ziadne evolucne algoritmy a ani neuronove siete, lebo nie je treba ziadne prisposobovanie sa niecomu.
Podla mna je najlepsie skusit spravit na konkretnom mieste rozdiel medzi niekde zaznamenanym cislom (kludne vo forme obrazku) a aktualnym stavom. Tieto rozdiely staci nejak scitat a vratit to cislo, ktore da najmensi rozdiel. Mierne vylepsenie je, ked sa nevrati nic, ak je najmensi rozdiel prilis velky.

Toto som nejaku dobu uspesne pouzival na odcitavanie hodnot zo 7 segmentoveho displeja pomocou webkamery; stacilo na to za hodinu "ubastlit" cca 50 riadkovy kod v PHP (inde neviem tak lahko pristupovat k jednotlivym pixelom).

Ak je treba nieco na "mechanicke porovnavanie", tak odporucam taketo riesenie - urcite to funguje lepsie, nie je to treba skoro vobec ladit a skoro nie je moznost, aby sa tam vyskytla skryta chyba.

Mihi
Mihi (neregistrovaný) 2001:67c:1220:----:----:----:----:----
11. 4. 2012 20:06 Nový

alternativa

Na takto jednoduchých geometrických tvarech bych spíš doporučil Houghova transformaci (převod do parametrického prostoru)

jxzero
jxzero (neregistrovaný) ---.net.upcbroadband.cz
11. 4. 2012 21:11 Nový

vysledek...

celé vlákno

Jsem liny si s tim hrat, ale takhle od pohledu bych nasel i lepsi vysledek.

Zajima me, co vedlo autora k pouziti normalniho rozdeleni v hodnotici funkci. Tim myslim radek:

quality += Math.exp( -(x*x) / (2.0*sigma*sigma) );

Co by se stalo, kdybych to jen tak hloupe poscital:

quality += x*x;

A pak zrejme otocil znamenko, protoze vlastne hledame maximum, takze vlastne:

quality -= x*x;

raketak
raketak (neregistrovaný) ---.sh.cvut.cz
13. 4. 2012 1:20 Nový

Re: vysledek...

celé vlákno

Zmensi se tim rozdil fitness mezi lepsim a horsim resenim. Pri selekci pak bude o neco vetsi pravdepodobnost vyberu horsich jedincu a tim o neco vetsi diverzita populace. Muze to pomoct proti predcasne konvergenci k lokalnimu minimu.

Metod pro zachovani diverzity populace je spousta a predpokladam, ze se tomu nejaky dalsi clanek bude venovat.

Bez toho by to fungovalo taky. Jak dobre, to nevim. Muselo by se to zmerit. Neexistuje zadny presny navod jak pouzivat EA.

Trm
Trm (neregistrovaný) 109.80.80.---
12. 4. 2012 1:31 Nový

aneb, nevis-li si rady s problemem, ...

celé vlákno

U nas na pracovisti mame oblibeny bonmot: nevis-li si rady s problemem, nasroubuj na to adhoc neuronovku, nejlepe mixlou genetickym algoritmem, ant kolonii a uplne nejlip totalnim random blind-searchem ve vysocedimenzi­onalnim prostoru (pro jistotu ho pred hodne lidma nazyvej poradne vedecky, jako n-dimenzionalni krychle, abys nebyl za pitomecka), pak udelej nezopakovatelny experiment na pochybnych datech, ktery nejde nijak interpretovat, ale neco si vymysli ... a uspech je zarucen; tohle je oblibena kratochvile ruznych velkych ceskych IT odborniku, kvazivedcu a dalsi pakaze, ktera pumpuje prachy od statu a EU. Inu, staci se podivat na webove stranky nekterych VS u nas, kde se ,,dela informatika'', ... to je teda pekny pruser, ... to jen tak pro zamysleni.

x
x (neregistrovaný) ---.net.upcbroadband.cz
12. 4. 2012 1:56 Nový

Re: aneb, nevis-li si rady s problemem, ...

celé vlákno

nahod nejaky odkazy na ty VS at se zasmejeme :)

Martin Janiczek aura:85
12. 4. 2012 15:50 Nový

CoffeeScript

celé vlákno

Zkusil jsem to udělat v CoffeeScriptu:
https://gist.github.com/2367382

Taky tam mám některé názvy docela kryptické, ale psal jsem to pro sebe a až pak mě napadlo to sem hodit... F je fitness, apod...

Ke stažení i tady (nevím na jak dlouho, CloudApp si čistívám):
http://cl.ly/2S3N2s1o431e3X1x163w

Martin Janiczek aura:85
12. 4. 2012 16:00 Nový

Re: CoffeeScript

celé vlákno

... a ještě mě láká zkusit si na to napojit Underscore a udělat to trošku funkcionálně...

Visgean Skeloru
Visgean Skeloru (neregistrovaný) ---.opengate.cz
19. 4. 2012 14:49 Nový

Re: CoffeeScript

celé vlákno

Díky, je to pěkna real time ilustrace a narozdíl od toho java kodu je psaná i čitelně..

Zasílat nově přidané příspěvky e-mailem