Genetski algoritem je algoritem, ki posnema proces naravne selekcije. Pomaga reševati probleme optimizacije in iskanja. Genetski algoritmi so del večjega razreda evolucijskih algoritmov. Posnemajo biološke principe, kot so dedovanje, mutacija, selekcija in križanje, da bi postopoma izboljšali rešitve problema.

Načelo delovanja

Osnovna ideja genetskega algoritma je iskanje rešitev s populacijo kandidatov (imenovanih posamezniki ali kromosomi). Vsak posameznik predstavlja možno rešitev z določeno strukturo (kodiranjem). Algoritem iterativno izboljšuje populacijo preko ponavljajočih se korakov:

  • Inicializacija: ustvari se začetna populacija naključnih ali heuristično določenih posameznikov.
  • Evalvacija: vsak posameznik se oceni z ocenjevalno funkcijo (fitness), ki kvantificira kakovost rešitve.
  • Selektivni izbor: izberejo se posamezniki, ki bodo starši naslednje generacije (pogosto favorizirajo boljše rešitve).
  • Križanje (recombinacija): starši izmenjajo dele svojih kromosomov in ustvarijo otroke z mešanimi lastnostmi.
  • Mutacija: naključne spremembe v potomcih pomagajo ohranjati raznolikost in raziskovati novo območje iskanja.
  • Zamenjava: nova generacija nadomesti staro (vseh ali del populacije), pogosto s postopkom elitizma, ki ohrani najboljše rešitve.

Kaj je treba upoštevati pri kodiranju in operatorjih

  • Kodiranje (representation): izbira načina, kako predstaviti rešitev, je ključna. Pogoste oblike so binarno kodiranje, realno-številsko kodiranje, permutacijsko kodiranje (za probleme, kot je TSP) in drevesne strukture (v genetskem programiranju).
  • Funkcija primernosti (fitness): mora pravilno odražati cilj optimizacije; včasih je potrebno skaliranje ali kaznovanje neveljavnih rešitev.
  • Selekcijske metode: ruleta (proportional), turnirska selekcija, razvrščanje (rank) in deterministični turnir so najpogostejše.
  • Križanje: enotočkovno, dvotočkovno, uniformno križanje ali problem-specifični operatorji.
  • Mutacija: bit-flip za binarne kromosome, gaussova ali uniformna mutacija za realne vrednosti; pogosto majhna verjetnost, da se ohrani stabilnost iskanja.

Osnovni primer (pseudokoda)

 Inicializiraj populacijo P z naključnimi posamezniki Dokler ni izpolnjen kriterij zaustavitve:   Izračunaj fitness za vsak posameznik v P   Izberi starše iz P glede na fitness   Uporabi križanje in mutacijo za ustvarjanje nove populacije Q   Po potrebi uporabi elitizem (prenes najboljše posameznike v Q)   P ← Q Vrni najboljši posameznik iz P 

Uporabe in primeri

Genetski algoritmi se široko uporabljajo v situacijah, kjer je iskalni prostor velik, negladek ali brez diferenciabilne funkcije cilja. Nekatere aplikacije:

  • Optimizacija inženirskih konstrukcij (npr. oblikovanje struktur, optimizacija aerodinamičnih oblik).
  • Načrtovanje urnikov in usklajevanje (scheduling), logistika in razporejanje virov.
  • Strojno učenje: izbira značilk, optimizacija hiperparametrov modelov, evolucijsko učenje arhitektur nevronskih mrež.
  • Telekomunikacije: optimizacija omrežij, načrtovanje anten, kodiranje.
  • Finančna optimizacija (portfelji), igre in umetna inteligenca za strategije ter generiranje vsebine (genetsko programiranje).

Prednosti in omejitve

  • Prednosti: ne potrebujejo gradientov ali analitičnih lastnosti ciljne funkcije, so robustni za multimodalne probleme, omogočajo paralelno izvedbo in pogosto najdejo dobre rešitve v omejenem času.
  • Omejitve: nimajo garancije za globalni optimum, so občutljivi na nastavitve hiperparametrov (velikost populacije, verjetnost mutacije/križanja), lahko se zgodijo predčasne konvergence in zahtevajo veliko število ocenjevanj fitness funkcije, kar je lahko računsko drago.

Nasveti za uspešno rabo

  • Ustrezen izbor kodiranja in fitness funkcije je pogosto pomembnejši kot izbira specifičnih operatorjev.
  • Vzdržuj raznolikost (večja mutacija ali raznolike iniciacije), da se izogneš zataknitvi v lokalnih optimumih.
  • Uporabi elitizem za ohranitev najboljših rešitev skozi generacije.
  • Kalibriraj parametre postopoma in spremljaj konvergenco (grafi fitness vrednosti skozi generacije so pogosto zelo informativni).
  • Če je mogoče, izkoristi porazdeljeno ali vzporedno izvajanje za pospešitev ocenjevanja fitness funkcije.

Različice in razširitve

Poleg klasičnih genetskih algoritmov obstajajo številne različice, kot so genetsko programiranje (evolucija programskih dreves), evolucijski strategiji (ES), diferencialna evolucija (DE) in hibridni pristopi, ki kombinirajo GA z lokalnimi iskanji ali drugimi optimizacijskimi metodami.

Genetski algoritmi so prilagodljivi in močni heuristični pripomočki z veliko praktičnih uporab, a zahtevajo premišljeno oblikovanje in nastavitev, da dosežejo najboljše rezultate za konkretne probleme.