En genetisk algoritm är en algoritm som efterliknar det naturliga urvalet. De hjälper till att lösa optimerings- och sökproblem. Genetiska algoritmer är en del av den större klassen evolutionära algoritmer. Genetiska algoritmer imiterar naturliga biologiska processer, t.ex. arv, mutation, urval och crossover.

Begreppet genetiska algoritmer är en sökteknik som ofta används inom datavetenskapen för att hitta komplexa, icke uppenbara lösningar på algoritmiska optimerings- och sökproblem. Genetiska algoritmer är en global sökheuristik.

Grundprinciper

En genetisk algoritm arbetar typiskt med en population av lösningskandidater (ofta kallade individer eller kromosomer). Varje individ representerar en möjlig lösning till problemet och har en kromosom (representation), till exempel en binär sträng, vektor av reella tal eller ett annat lämpligt datastrukturformat. I varje generation utvärderas individernas kvalitet med en fitnessfunktion, som styr sannolikheten att en individ väljs för att bilda avkomma.

Vanliga operatorer

  • Selection (urval) – Väljer vilka individer som får reproducera sig. Vanliga metoder: roulette-wheel (proportionell), rankbaserad urval, turneringsurval.
  • Crossover (rekombination) – Kombinerar två föräldrar för att skapa en eller flera barn. Exempel: single-point, two-point, uniform crossover.
  • Mutation – Introducerar slumpmässiga förändringar i en individ för att bevara mångfald. För binär representation kan det vara bitflip; för reella vektorer kan det vara små gaussian-störningar.
  • Elitism – Säkerställer att bäst presterande individ(er) tas med till nästa generation oförändrade, vilket förhindrar att bra lösningar förloras.

Algoritmens flöde (förenklad pseudokod)

  • Initiera en population av N individer (slumpmässigt eller heuristiskt).
  • Utvärdera varje individs fitness med en fitnessfunktion.
  • Upprepa tills stoppkriterium är uppfyllt:
    • Välj föräldrar baserat på fitness (selection).
    • Tillämpa crossover för att producera barn.
    • Tillämpa mutation på barnen.
    • Sätt ihop ny population (med eller utan elitism).
    • Utvärdera nya individers fitness.
  • Returnera bästa funna lösning.

Parameter som påverkar beteendet

  • Populationens storlek – Påverkar sökets bredd och beräkningskostnad.
  • Korsningssannolikhet (pc) – Hur ofta crossover sker mellan föräldrar.
  • Mutationssannolikhet (pm) – Sannolikheten för att en gen muteras.
  • Urvalsmetod – Påverkar trycket mot exploatering av bra lösningar vs. utforskning av sökutrymmet.
  • Terminationskriterier – Max antal generationer, tid, eller när en acceptabel fitness uppnåtts.

Tillämpningar

Genetiska algoritmer används i många praktiska problem, särskilt där sök- och optimeringslandskap är icke-linjära, diskontinuerliga eller har många lokala extrempunkter. Exempel:

  • Ingenjörsdesign (t.ex. strukturoptimering, aerodynamik)
  • Schemaläggning och ruttoptimering
  • Maskininlärning — hyperparameteroptimering och model selection
  • Ekonomi och portföljoptimering
  • Biologiska problem och bioinformatik
  • Spel, robotik och automatiserad design

Styrkor och svagheter

  • Styrkor: Bra för globala sökproblem, kräver inte gradientinformation, flexibla representationsformer, enkelt parallelliserbara.
  • Svagheter: Kan vara beräkningskrävande (stora populationer/generationer), känsliga för parameterinställningar, risk för premature convergence (att fastna i lokala optima).

Varianter och förbättringar

  • Genetic Programming (GP) – Evolverar program eller uttrycksträd istället för fasta vektorer.
  • Evolutionary Strategies (ES) och Differential Evolution (DE) – Närbesläktade tekniker med olika representationer och mutationstrategier.
  • Memetic algorithms – Kombinerar genetiska algoritmer med lokal sökning för snabbare finkornig förbättring.
  • Adaptive parametrisering – Ändrar mutation- och crossoverhastigheter under körning för att balansera utforskning/exploatering.

Praktiska tips

  • Välj en representation som fångar problemet naturligt — kodning påverkar prestanda starkt.
  • Skapa en pålitlig fitnessfunktion som speglar målet; skala den vid behov för att undvika dominans av vissa individer.
  • Använd elitism i kombination med mångfaldsbevarande mekanismer (t.ex. mutationsnivå, niching) för att undvika tidig konvergens.
  • Experimentera med populationens storlek och urvalsmetoder; kör flera repeterade körningar för att bedöma stabilitet.
  • Överväg hybridmetoder (t.ex. lokala förbättringar) för problem som kräver finjustering.

Genetiska algoritmer är ett kraftfullt verktyg när traditionella deterministiska metoder misslyckas eller när funktionsytan är komplex. Med rätt representation, fitnessfunktion och parametrar kan de hitta goda eller nära-optima lösningar i svåra optimeringslandskap.