Geneettinen algoritmi on algoritmi, joka jäljittelee luonnonvalintaa. Niiden avulla voidaan ratkaista optimointi- ja hakuongelmia. Geneettiset algoritmit ovat osa evoluutioalgoritmien suurempaa luokkaa. Geneettiset algoritmit jäljittelevät luonnollisia biologisia prosesseja, kuten periytymistä, mutaatiota, valintaa ja risteytymistä.

Geneettisten algoritmien käsite on hakutekniikka, jota käytetään usein tietojenkäsittelytieteessä monimutkaisten, ei-selkeiden ratkaisujen löytämiseksi algoritmisiin optimointi- ja hakuongelmiin. Geneettiset algoritmit ovat globaalin haun heuristiikkoja.

Perusperiaatteet

Geneettinen algoritmi toimii populaatiolla mahdollisia ratkaisuja (yksilöitä). Jokainen yksilö esittää ratkaisua muodossa, jota kutsutaan usein kromosomiksi tai genotyypiksi. Algoritmin peruskierros sisältää tyypillisesti seuraavat vaiheet:

  • Alustus: luodaan alkuperäinen populaatio satunnaisesti tai heuristiikan avulla.
  • Sopivuuden arviointi (fitness): jokaiselle yksilölle lasketaan kuinka hyvä se on ongelman kannalta.
  • Valinta: paremmat yksilöt valitaan todennäköisemmin jatkamaan jälkeläisten muodostuksessa.
  • Risteytys (crossover): kahden vanhemman geneettisestä materiaalista muodostetaan yksi tai useampi jälkeläinen.
  • Mutaation soveltaminen: pienet satunnaiset muutokset pitävät populaation monimuotoisena.
  • Korvaus: muodostetaan uusi populaatio ja toistetaan prosessia, kunnes pysäytyskriteeri täyttyy (esim. maksimigeneraatio tai riittävä ratkaisu).

Esitys ja sopivuusfunktio

Ratkaisut voidaan esittää eri tavoilla: binaarisina merkkijonoina, kokonaislukuina, reaalilukuvektoreina, puina (esim. symbolinen regressio) tai muilla rakenteilla. Sopivuusfunktio on keskeinen: se määrittää, kuinka hyvin yksilö suoriutuu tavoitteesta. Sopivuus voi sisältää useita tavoitteita (monitavoite-optimointi) tai rangaistuksia rajoitteiden rikkomisesta.

Valintamenetelmät

Yleisimmät valintatekniikat ovat muun muassa:

  • Roulette-wheel (fitness-proportionate): valinta todennäköisyyden mukaan suhteessa sopivuuteen.
  • Rank-valinta: valinta perustuu järjestykseen, ei absoluuttisiin fitness-arvoihin — auttaa, kun fitness-pisteet eroavat voimakkaasti.
  • Turnausvalinta: satunnaisesti valittu joukko kilpailee keskenään ja paras valitaan; helppo toteuttaa ja säädettävissä kilpailun voimakkuuden mukaan.
  • Elitismi: parhaat yksilöt säilytetään sellaisenaan seuraavaan sukupolveen, jolloin hyvät ratkaisut eivät katoa sattuman vuoksi.

Risteytys ja mutaatio

Risteytys yhdistää kahden vanhemman geenejä tuottaen uusia yksilöitä. Tyyppejä ovat esimerkiksi yksipiste-, kaksipiste- ja uniform-risteytys sekä aritmeettinen risteytys reaalilukuesityksissä.

Mutaatiolla lisätään pientä satunnaisuutta, mikä estää liian nopeaa konvergoitumista paikallisiin maksimeihin. Esimerkkejä: bitin kääntö binaariesityksessä, pienten Gaussian-virheiden lisääminen reaalivektoreihin tai satunnaisen geenin korvaaminen toisella arvolla.

Sukupolven uudistaminen ja pysähtymiskriteerit

Populaation päivittäminen voi olla generatiivista (koko populaatio korvataan uusilla jälkeläisillä) tai steady-state (vain osa populaatiosta vaihdetaan). Pysäytysehto voi olla kiinteä määrä sukupolvia, laskennallinen budjetti, haluttu fitness tai kun parannus lakkaa tapahtumasta.

Hyödyt ja rajoitukset

  • Hyödyt: eivät vaadi gradienttia tai jatkuvuutta, toimivat mustan laatikon ongelmissa, kykenevät löytämään globaalimpia ratkaisuja ja soveltuvat monimutkaisiin, monimuotoisiin hakutiloihin.
  • Rajoitukset: voivat olla laskennallisesti kalliita (paljon fitness-evaluointeja), edellyttävät parametrien (populaation koko, mutaatio- ja risteytysasteet) huolellista valintaa, eivät takaa optimaalista ratkaisua ja voivat jumittua paikallisiin optimeihin ilman toimenpiteitä monimuotoisuuden ylläpitämiseksi.

Käyttökohteita

Geneettisiä algoritmeja käytetään laajasti: suunnittelu- ja optimointitehtävissä (esim. rakenteiden optimointi, piirit, reititykset), aikataulutus- ja resurssienallokointiongelmissa, koneoppimisessa (piirteiden valinta, hyperparametrien optimointi), evoluutiivisessa ohjelmoinnissa, tekoälykentissä (pelistrategioiden kehitys) ja taiteessa (generatiivinen taide, muotojen suunnittelu).

Parannukset ja käytännön vinkit

  • Säädä populaation kokoa ja mutaatiota testien avulla; liian pieni populaatio johtaa hukkumiseen monimuotoisuudessa, liian suuri lisää kustannuksia.
  • Käytä elitismiä suojataksesi parhaita ratkaisuja.
  • Harkitse adaptiivisia tai riippuvaisia mutaatiorateja, tai hybridi-menetelmiä, joissa geneettinen algoritmi yhdistetään paikallishakuihin (ns. memettiset algoritmit) parhaan tuloksen saavuttamiseksi.
  • Normalisoi ja skaloi fitness-arvot tarvittaessa, ja varmista, ettei fitness-funktio aiheuta liian jyrkkiä eroavaisuuksia, jotka johtaisivat ennenaikaiseen konvergenssiin.
  • Parallellisointi: koska yksilöiden fitness-laskenta on usein riippumatonta, geneettiset algoritmit skaalautuvat hyvin rinnakkaisessa ympäristössä.

Yleisiä variaatioita

On olemassa useita laajennuksia ja variantteja: monitavoite-GA (esim. NSGA-II), evoluutio-strategiat, evoluutiokoneoppiminen (esim. NEAT neuroverkkojen rakenteiden evoluutiossa) sekä erikoistuneet koodaustavat (esim. permutaatioesitys reititysongelmissa).

Yhteenvetona: geneettiset algoritmit ovat joustavia ja tehokkaita heuristiikkoja monimutkaisten optimointi- ja hakuongelmien ratkaisemiseen, kunhan parametrien valintaan, esitystapaan ja monimuotoisuuden ylläpitoon kiinnitetään riittävästi huomiota.