Wat is genetisch programmeren?
Genetische programmering is het proces waarbij een computerprogramma wordt gebruikt om een ander computerprogramma te schrijven met behulp van op evolutionaire algoritmen gebaseerde methodologie. Dit proces wordt vaak vergeleken met lineair programmeren, waarbij de programmeur specifieke instructies schrijft die de computer moet uitvoeren. LISP en Scheme zijn de meest voorkomende programmeertalen voor dit soort werk vanwege hun hoge functionaliteit en flexibiliteit. Vanwege zijn conceptuele gelijkenis met biologische evolutie, wordt genetische programmering vaak genoemd als een voorbeeld van bio-geïnspireerde computing.
Genetische programma's (huisartsen) werken door duizenden programma's te genereren en uit te voeren en kiezen de meest effectieve om te gebruiken. Een huisarts kan bijvoorbeeld worden gebruikt om een programma te maken om een schets van een foto te maken. Het eerste wat de huisarts zou doen, is een set programma's maken die verschillende computertekenfuncties in willekeurige combinaties gebruiken. Vervolgens zou de huisarts elk van deze programma's in volgorde uitvoeren en de resultaten van elk naar beeldbestanden uitvoeren.
De volgende stap voor de huisarts is het selecteren van de beste van die programma's uit de set. Dit proces is over het algemeen het moeilijkste deel van genetische programmering. In het geval van het tekenprogramma zou de huisarts beeldvergelijkingssoftware gebruiken om te bepalen welke van de willekeurige tekeningen het meest leek op het beeld dat de software probeerde te tekenen. Van de willekeurig gegenereerde programma's zou de huisarts de bovenste selecteren en de rest weggooien. Het selectieproces staat bekend als fitnessevaluatie en wordt algemeen beschouwd als het moeilijkste onderdeel van genetische programmering.
Nadat de bovenste paar programma's zijn geselecteerd, gebruikt de huisarts deze als basis voor een nieuwe reeks programma's. Elke nieuwe batch wordt een generatie genoemd. De twee manieren om de nieuwe generatie te creëren zijn mutatie en crossover. Mutatie werkt door een van de bestaande programma's te nemen en er willekeurige wijzigingen in aan te brengen, hopelijk ten goede. Crossover, ook wel fokken genoemd, werkt door twee van de topprogramma's te nemen en elementen ervan te combineren om nieuwe programma's te maken.
Na het maken van een nieuwe serie programma's herhaalt de huisarts het proces van uitvoeren en evalueren en herhaalt vervolgens de selectie-, eliminatie- en generatieprocessen. Huisartsen zullen vaak honderden generaties draaien voordat ze een enkel programma vinden met een bevredigend resultaat. Ondanks deze beperking is genetische programmering een veel voorkomende manier om enkele soorten moeilijke computerproblemen op te lossen, waaronder robottechnologie en kunstmatige intelligentie.