Skip to content

Latest commit

 

History

History
80 lines (49 loc) · 4.21 KB

File metadata and controls

80 lines (49 loc) · 4.21 KB

Geneettiset algoritmit

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:

  1. Valitse alkuperäinen populaatio G⊂Γ
  2. Valitse satunnaisesti, mikä operaatio suoritetaan tässä vaiheessa: risteytys tai mutaatio
  3. 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ä.
  1. Mutaatio - valitse satunnainen geeni g∈G ja korvaa se mutate(g):llä
  2. 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ä:

  1. Aikataulujen optimointi
  2. Optimaalinen pakkaus
  3. Optimaalinen leikkaus
  4. 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ä:

  1. Aarteiden reilu jakaminen
  2. 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.

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.

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ä:

  1. Voit harkita ratkaisujen olevan välillä [0;30]
  2. Geeninä voit käyttää juurten arvojen listaa

Käytä Diophantine.ipynb aloituspisteenä.