|
|
||
|---|---|---|
| .. | ||
| Diophantine.ipynb | ||
| Genetic.ipynb | ||
| README.md | ||
README.md
Geneettiset algoritmit
Esiluentakysely
Geneettiset algoritmit (GA) perustuvat evolutionÀÀriseen lÀhestymistapaan tekoÀlyssÀ, jossa populaation evoluutiomenetelmiÀ kÀytetÀÀn optimaalisen ratkaisun löytÀmiseksi tiettyyn ongelmaan. Ne esitti vuonna 1975 John Henry Holland.
Geneettiset algoritmit perustuvat seuraaviin periaatteisiin:
- Ongelman kelvolliset ratkaisut voidaan esittÀÀ geeneinÀ
- Risteytys mahdollistaa kahden ratkaisun yhdistÀmisen uuden kelvollisen ratkaisun saamiseksi
- Valinta valitsee optimaalisempia ratkaisuja kÀyttÀen jotain soveltuvuusfunktiota
- Mutaatioita lisÀtÀÀn optimoimisen epÀvakauttamiseksi ja paikallisesta minimistÀ pÀÀsemiseksi
Jos haluat toteuttaa geneettisen algoritmin, tarvitset seuraavat asiat:
- MenetelmĂ€n ongelman ratkaisujen koodaamiseen kĂ€yttĂ€en geenejĂ€ gâÎ
- Geenijoukossa Î tĂ€ytyy mÀÀritellĂ€ soveltuvuusfunktio fit: ÎâR. PienemmĂ€t funktion arvot vastaavat parempia ratkaisuja.
- MÀÀritellĂ€ risteytysmekanismi, joka yhdistÀÀ kaksi geeniĂ€ uuden kelvollisen ratkaisun saamiseksi crossover: Î2âÎ.
- MÀÀritellĂ€ mutaatiomekanismi mutate: ÎâÎ.
Monissa tapauksissa risteytys ja mutaatio ovat melko yksinkertaisia algoritmeja, jotka manipuloivat geenejÀ numeerisina jonoina tai bittivektoreina.
Geneettisen algoritmin tarkka toteutus voi vaihdella tapauskohtaisesti, mutta yleinen rakenne on seuraava:
- Valitse alkuperĂ€inen populaatio GâÎ
- Valitse satunnaisesti, mikÀ operaatio suoritetaan tÀssÀ vaiheessa: risteytys tai mutaatio
- Risteytys:
- Valitse satunnaisesti kaksi geeniĂ€ g1, g2 â G
- Laske risteytys g=crossover(g1,g2)
- Jos fit(g)<fit(g1) tai fit(g)<fit(g2) - korvaa vastaava geeni populaatiossa g:llÀ.
- Mutaatio - valitse satunnainen geeni gâG ja korvaa se mutate(g):llĂ€
- Toista vaiheesta 2, kunnes saavutetaan riittÀvÀn pieni fit-arvo tai kunnes askelten mÀÀrÀ saavuttaa rajan.
Tyypilliset tehtÀvÀt
GeneettisillÀ algoritmeilla ratkaistaan tyypillisesti seuraavia tehtÀviÀ:
- Aikataulujen optimointi
- Optimaalinen pakkaus
- Optimaalinen leikkaus
- Uuvuttavan haun nopeuttaminen
âïž Harjoitukset: Geneettiset algoritmit
Jatka oppimista seuraavissa muistikirjoissa:
Siirry tÀhÀn muistikirjaan nÀhdÀksesi kaksi esimerkkiÀ geneettisten algoritmien kÀytöstÀ:
- Aarteiden reilu jakaminen
- 8 kuningattaren ongelma
Yhteenveto
GeneettisiÀ algoritmeja kÀytetÀÀn monien ongelmien ratkaisemiseen, mukaan lukien logistiikka- ja hakutehtÀvÀt. Ala on saanut inspiraationsa tutkimuksesta, joka yhdisti psykologian ja tietojenkÀsittelytieteen aiheita.
đ Haaste
"Geneettiset algoritmit ovat yksinkertaisia toteuttaa, mutta niiden kÀyttÀytymistÀ on vaikea ymmÀrtÀÀ." lÀhde Tee tutkimusta löytÀÀksesi geneettisen algoritmin toteutuksen, kuten Sudoku-pulman ratkaisemisen, ja selitÀ, miten se toimii luonnoksena tai vuokaaviona.
JĂ€lkiluentakysely
Kertaus ja itseopiskelu
Katso tÀmÀ loistava video, jossa kerrotaan, miten tietokone voi oppia pelaamaan Super Mariota kÀyttÀen geneettisillÀ algoritmeilla koulutettuja neuroverkkoja. Opimme lisÀÀ siitÀ, miten tietokone oppii pelaamaan tÀllaisia pelejÀ seuraavassa osiossa.
TehtÀvÀ: Diofanttinen yhtÀlö
Tavoitteenasi on ratkaista niin sanottu Diofanttinen yhtÀlö - yhtÀlö, jolla on kokonaislukuratkaisuja. Esimerkiksi yhtÀlö a+2b+3c+4d=30. Sinun tÀytyy löytÀÀ kokonaislukuratkaisut, jotka tÀyttÀvÀt tÀmÀn yhtÀlön.
TÀmÀ tehtÀvÀ on saanut inspiraationsa tÀstÀ artikkelista.
VinkkejÀ:
- Voit harkita ratkaisujen olevan vÀlillÀ [0;30]
- GeeninÀ voit kÀyttÀÀ juurten arvojen listaa
KÀytÀ Diophantine.ipynb aloituspisteenÀ.