» »

Evolucijski algoritmi

Evolucijski algoritmi

terryww ::

Zanimajo me naslednje stvari:

1. Dobra knjiga za uvod v EA in programiranje le teh
2. Vaše izkušnje z EA, na kateri arhitekturi jih poganjate (se splača na CUDA-i)
3. Kako ocenit kdaj se bo pojavila nova rešitev
4. Iz vaše prakse, povprečen čas za novo rešitev
5. Kako uporabne so potem rešitve
6. V katerem jeziku je dobro pisat (glede na to da je Matlab dobil podporo za računanje na GPU http://www.mathworks.com/products/conne...

No, to zaenkrat.

BigWhale ::

Verjetno bo Thomas kako pametno povedal.

terryww ::

Thomas ima preveč dela v temi o LHCju. Sem ga povabil, ampak še kr tam vztraja.

Thomas ::

Čist tko. En tipček je izračunal, da so inteligentno delujoči rekurzivno optimizirajoči se algoritmi, počasnejši od evolucijskih.

Zelo zanimivo. Jaz to trdim že zelo dolgo.
Man muss immer generalisieren - Carl Jacobi

terryww ::

Fino, potem bi lahko recimo odgovoril na vprašanja 3-5

Thomas ::

3. Kako ocenit kdaj se bo pojavila nova rešitev


Ne moreš. Lahko, da se ne bo nikoli, to se komot pripeti.

Če bi vedel, bi pomenilo, da si naredil tisto evolucijo sam. To je sploh značilno za vsak izračun. Če kaj oceniš, si ga že vsaj delno izračunal.

Lahko si pa samo ugibal. V tem primeru nisi boljši od random uganjevalca.
Man muss immer generalisieren - Carl Jacobi

nevone ::

1. Dobra knjiga za uvod v EA in programiranje le teh
Kakšna Darwinova ali Dawkinsova.

2. Vaše izkušnje z EA, na kateri arhitekturi jih poganjate (se splača na CUDA-i)
Poganjaš jih lahko na vsaki arhitekturi, ki omogoča računanje.

3. Kako ocenit kdaj se bo pojavila nova rešitev
Nove rešitve se pojavljajo praktično ves čas, jih je pa treba ustrezno ovrednotiti.

4. Iz vaše prakse, povprečen čas za novo rešitev
1 sekunda - 1 minuta

5. Kako uporabne so potem rešitve
Kolikor se ti zdijo uporabne.

6. V katerem jeziku je dobro pisat (glede na to da je Matlab dobil podporo za računanje na GPU http://www.mathworks.com/products/conne...
V asemblerju, če znaš, če ne pa v kateremkoli.

o+ nevone
Either we will eat the Space or Space will eat us.

Thomas ::

Nove rešitve se pojavljajo praktično ves čas, jih je pa treba ustrezno ovrednotiti.


Vrednotenje mora seveda avtomatično, ne da človek pove kaj je good. Na človeku je, da spiše kriterij fitnesa. To se razume.
Man muss immer generalisieren - Carl Jacobi

Gundolf ::

jmakov: Introduction to Evolutionary Computing bo čisto fajn za začetek.

terryww ::

O, hvala! Pa še rabljene so poceni, genialno!

Ti, Gundolf, povej kaj več o tvojih izkušnjah z EA, s programiranjem le teh. Na katere področju jih uporabljaš in kak si kaj zadovoljen z rezultati?

Zgodovina sprememb…

  • spremenil: terryww ()

1024 ::

Ali lahko kdo posteže s kakšnim praktičnim primerom?
Fish knows everything.

terryww ::

Spomnim se, da je svoj čas bila odmevna novica enekga komada, ki je v virtualen svet postavil neko telo, in rekel telesu, naj poskuša čim efektivnejše se premikati po tistem prostoru. Svašta načine premikanja je comp zgruntal, eden je imel povdarek na izkoriščanju gravitacije (mnda se je pokonci postavil in pogem naprej padel).
Sigurno se da kje najt kak video o tem. No, jaz vem samo za ta primer.

Gundolf ::

Praktičen primer česa? Evolucijskega algoritma? To so le postopki optimizacije. Kadarkoli imaš optimizacijski problem lahko uporabiš nek evolucijski algoritem za iskanje rešitve. Ne na to gledat kot neko hudo specifično stvar. Imaš polno različic samih algoritmov in še več primerov uporabe.

Trivialen primer uporabe - iščeš kje ima neka grda večdimenzionalna funkcija minimum.

Loki ::

matlab ima verjetno kaksen toolbox za AI, pa se gpu povezavo pa se cpp compiler.
grafe pa tudi lepo lahko delas.
I left my wallet in El Segundo

Zgodovina sprememb…

  • spremenil: Loki ()

terryww ::

@Loki
>pa se gpu povezavo pa se cpp compiler
1.http://www.mathworks.com/products/conne...
2. matlabove funkcije -> cpp.. to je bolj tak. Vstavit to v CUDA-o pa verjetno nebi videl kakih pospeškov.

>gpu povezavo
Z matlabom nisem čisto na tekočem. A zdaj že majo, da avtomatsko požene na gpuju, al imajo toolbox za gpu al kak?

Zgodovina sprememb…

  • spremenil: terryww ()

1024 ::

Praktičen primer česa? Evolucijskega algoritma?



Praktičen primer reševanja praktičnega problema s praktičnim outcomom.

jmakov komentar pride blizu. Mogoče še kakšen?
Fish knows everything.

terryww ::

Ja, mene tud zanima kje kaj to uporabljate. Ne bit tak skrivnostni no, saj če imate kako izjemno idejo, date TM zraven al pa ©, pa bomo vedli :).

Zgodovina sprememb…

  • spremenil: terryww ()

Gundolf ::

@1024
Sej sem rekel, kateri koli optimizacijski problem, teh je pa nešteto na voljo. Optimizacija letalskega krila, ali pa spoilerja na avtu, ali pa celotne oblike avta, ali pa motorja, ali pa posameznega dela motorja, ali pa marsikaterega industrijskega procesa, ... Karkoli ima že optimizacijo v imenu potem pa še parkarat toliko stvari ki je nima :)

1024 ::

Torej uporabi se lahko kjerkoli, uporablja se pa nikjer, če prav zastopm.
Fish knows everything.

terryww ::

@Gundolf
A ni to fajn prilika da se zaposliš na TI in poganjaš EA na supercompu za recimo optimizacijo turbin?

A. Smith ::

@1024:

Thomas je s pomočjo evolucijskega algoritma optimiral sortirni algoritem.

Mislim, da je to dovolj konkreten primer.
"Be professional, be polite,
but have a plan to kill everyone you meet".
- General James Mattis

Loki ::

........
I left my wallet in El Segundo

Zgodovina sprememb…

  • spremenil: Loki ()

terryww ::

@Loki
Ne, samo pravim da ako jim zmanjka dela, da Thomasa pokličejo ;). Sicer pa, poganjat EA za optimizacijo turbin se tud ne sliši neumno. Maš direkt profit, opazne so pa že male izboljšave.

snow ::

1. Dobra knjiga za uvod v EA in programiranje le teh
Tudi na internetu dosti najdeš. http://www.generation5.org/articles.asp...
Mogoče knjiga od Goldberga za začetek ;)
Če imaš dostop do virov UL, lahko pogledaš malo po knjigah na springerju in v reviji IEEE Transactions on Evolutionary Computation.

2. Vaše izkušnje z EA, na kateri arhitekturi jih poganjate (se splača na CUDA-i)
Laufal na x86, windows večina. CUDA bi bila zanimiva zadeva ja, masovna paralelizacija je zanimiva zadeva za EA. Če nimaš preveč branchev v fitnessu ali mutacijah...

3. Kako ocenit kdaj se bo pojavila nova rešitev
Popolnoma odvisno od primera. Navadno gledaš kdaj imaš neko novo rešitev, ne kdaj bo neka nova rešitev. Kdaj bo človek imel krila?

4. Iz vaše prakse, povprečen čas za novo rešitev
Povprečen čas za novo rešitev? Čas za mutacijo? Kako dobra je rešitev? +čas za fitness.

5. Kako uporabne so potem rešitve
Kolikor dobro zastaviš problem.

6. V katerem jeziku je dobro pisat (glede na to da je Matlab dobil podporo za računanje na GPU http://www.mathworks.com/products/conne...
Kar ti srce poželi. Hočeš hitro napisat in imaš nezahteven problem - python, hočeš hitro zadevo in malo več heca - C++

Da ne boš izumil tople vode: http://lancet.mit.edu/ga/

Jaz sem uporabljal EA večinoma v kakih manjših problemih (ki so bili online tekmovanja) in kot algoritem za učenje nevronske mreže.

Physical TSP:

Problem: http://algoval.essex.ac.uk/ptsp/ptsp.ht...
Rešitve: http://dces.essex.ac.uk/staff/sml/gecco...
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Zgodovina sprememb…

  • spremenilo: snow ()

Gundolf ::

> @Gundolf
> A ni to fajn prilika da se zaposliš na TI in poganjaš EA na supercompu za recimo optimizacijo turbin?

Se strinjam, zelo fajn, sam sem še rahlo vezan ta moment :)

> Torej uporabi se lahko kjerkoli, uporablja se pa nikjer, če prav zastopm.
Uporabi se kjerkoli, za konkretne primere ti pa jaz ne znam povedat. Tako bi lahko zastopil. Oz. en dober recimo je, kar iz one knjige ki sem jo predlagal, optimizacija držala za anteno na satelitu, kjer so z EA izboljšali (menda) trdnost 200x, obdržali so pa nizko težo itd.

gzibret ::

Tukaj imaš eno dobro stran o EA. Lahko downloadaš tudi source kode.
Vse je za neki dobr!

snow ::

Zastonj knjiga (2008) (o genetskem programiranju): http://www.lulu.com/items/volume_63/216...
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

imagodei ::

snow,

a je kaj podobnega tudi za nevronske mreže? :)
- Hoc est qui sumus -

Arto ::


> Torej uporabi se lahko kjerkoli, uporablja se pa nikjer, če prav zastopm.
Uporabi se kjerkoli, za konkretne primere ti pa jaz ne znam povedat. Tako bi lahko zastopil. Oz. en dober recimo je, kar iz one knjige ki sem jo predlagal, optimizacija držala za anteno na satelitu, kjer so z EA izboljšali (menda) trdnost 200x, obdržali so pa nizko težo itd.


Če se ne motim, so EA uporabljali tudi pri dizajniranju nekega F1 dirkalnika. Šlo je pa za bate motorja. No, vsaj tako imam v spominu.

snow ::

Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Zgodovina sprememb…

  • spremenilo: snow ()

imagodei ::

uuu, tenks
- Hoc est qui sumus -

nevone ::

Z evolucijskim algoritmom je tako, da je v resnici zelo malo teorije o sami tehniki programiranja. Večji problem je, da moraš problematiko, ki jo želiš reševati z EA zelo dobro poznati, poleg tega, pa moraš včasih pogruntat kakšno finto (mogoče matematično ali kakšno drugačno), kako nastaviti fitnes, da bodo rezulati, ki ti jih bo EA dajal res vedno boljši, oziroma vedno bolj takšni, kot si želimo. Sama osnovna tehnika je pa enostavna, gre pa nekako takole:

Rešujemo recimo Problem1.

1. Izmislimo si eno random Rešitev1, ki je obenem naša BestRešitev problema Problem1.
2. Izračunamo Fitness, ki je obenem nas BestFitness, ki ga oceni.
3. Naredimo Mutacijo ali več njih na Rešitvi1.
4. Izračunamo Fitness, ki ga oceni.
5. Če je Fitness boljši od BestFitness potem
6.    spremenjena Rešitev1 postane naša BestRešitev
7.    novi Fitness postane naš BestFitness
8. Pojdi na 3. točko

To je vsa umetnost tehnike programiranja.

Problem je pa:
1. pravilno nastaviti kriterije za izračun fitnessa
2. delati takšne mutacije, ki hitreje vodijo k napredku

o+ nevone
Either we will eat the Space or Space will eat us.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

DLL path za MATLAB

Oddelek: Programiranje
13837 (646) MrStein
»

It means business (strani: 1 2 3 4 5 6 7 8 )

Oddelek: Znanost in tehnologija
37428273 (14272) Thomas
»

Program za "Motion detection"

Oddelek: Programska oprema
102270 (1981) BIG_Yack
»

Nakup Matlaba

Oddelek: Programska oprema
183045 (2534) OChack
»

vaša sintaksa pri programiranju (strani: 1 2 )

Oddelek: Programiranje
986933 (4736) Thomas

Več podobnih tem