Hvad er genetisk programmering?
Genetisk programmering er processen med at bruge et computerprogram til at skrive et andet computerprogram ved hjælp af evolutionær algoritme-baseret metode. Denne proces sammenlignes ofte med lineær programmering, hvor programmereren skriver specifikke instruktioner til computeren, der skal udføres. LISP og Scheme er de mest almindelige programmeringssprog til denne type arbejde på grund af deres høje funktionalitet og fleksibilitet. Som et resultat af dens konceptuelle lighed med biologisk evolution citeres genetisk programmering ofte som et eksempel på bioinspireret computing.
Genetiske programmer arbejder ved at generere og køre tusinder af programmer og vælger de mest effektive at bruge. F.eks. Kan en læge bruges til at oprette et program til at tegne en skitse af et fotografi. Den første ting, som fastlegen ville gøre, er at oprette et sæt programmer, der bruger forskellige computertegningsfunktioner i tilfældige kombinationer. Derefter kører fastlegen hvert af disse programmer i rækkefølge og udsender resultaterne af hver til billedfiler.
Det næste trin for fastlegen er at vælge det bedste af disse programmer fra sættet. Denne proces er generelt den vanskeligste del af genetisk programmering. I tilfælde af tegningsprogrammet ville fastlegen bruge billedsammenligningssoftware til at bestemme, hvilken af de tilfældige tegninger der var mest ligner det billede, softwaren forsøgte at tegne. Af de tilfældigt genererede programmer ville fastlegen vælge de øverste flere og kaste resten. Udvælgelsesprocessen er kendt som fitnessevaluering og betragtes generelt som den mest vanskelige del af genetisk programmering.
Når de få få programmer er valgt, vil praktiserende læge bruge dem som grundlag for en ny batch af programmer. Hver nye batch kaldes en generation. De to måder at skabe den nye generation på er mutation og crossover. Mutation fungerer ved at tage et af de eksisterende programmer og foretage tilfældige ændringer i det, forhåbentlig til det bedre. Crossover, også kaldet avl, fungerer ved at tage to af de øverste programmer og kombinere elementer af dem for at skabe nye programmer.
Efter at have oprettet en ny batch af programmer, gentager fastlegen processen med at køre og evaluere dem, og gentager derefter markerings-, eliminations- og genereringsprocesserne. Læger vil ofte køre hundreder af generationer, før de finder et enkelt program med et tilfredsstillende resultat. På trods af denne begrænsning er genetisk programmering en almindelig måde at løse nogle typer vanskelige databehandlingsproblemer, herunder robotteknik og kunstig intelligens.