Vad är genetisk programmering?

Genetisk programmering är processen att använda ett datorprogram för att skriva ett annat datorprogram med hjälp av evolutionär algoritmbaserad metodik. Denna process jämförs ofta med linjär programmering, där programmeraren skriver specifika instruktioner som datorn ska utföra. LISP och Scheme är de vanligaste programmeringsspråken för denna typ av arbete på grund av deras höga funktionalitet och flexibilitet. Som ett resultat av dess konceptuella likhet med biologisk evolution, nämns genetisk programmering ofta som ett exempel på bioinspirerad datoranvändning.

Genetiska program (GPs) fungerar genom att generera och köra tusentals program och väljer de mest effektiva att använda. Till exempel kan en husläkare användas för att skapa ett program för att rita en skiss av ett fotografi. Det första som GP skulle göra är att skapa en uppsättning program som använder olika datorritningsfunktioner i slumpmässiga kombinationer. Sedan körde GP vart och ett av dessa program i ordning och matade ut resultaten av vart och ett till bildfiler.

Nästa steg för GP är att välja det bästa av dessa program från uppsättningen. Denna process är i allmänhet den svåraste delen av genetisk programmering. När det gäller ritprogrammet skulle GP använda bildjämförelseprogram för att avgöra vilken av de slumpmässiga ritningarna som var mest lik den bild som programvaran försökte rita. Av de slumpmässigt genererade programmen skulle GP välja de översta och kassera resten. Urvalsprocessen är känd som fitnessutvärdering och anses allmänt vara den svåraste delen av genetisk programmering.

När de bästa programmen har valts ut kommer GP att använda dem som grund för en ny serie program. Varje ny batch kallas en generation. De två sätten att skapa den nya generationen är mutation och crossover. Mutation fungerar genom att ta ett av de befintliga programmen och göra slumpmässiga ändringar i det, förhoppningsvis till det bättre. Crossover, även kallad avel, fungerar genom att ta två av de bästa programmen och kombinera delar av dem för att skapa nya program.

Efter att ha skapat en ny grupp program upprepar GP processen att köra och utvärdera dem, och upprepar sedan urvals-, eliminerings- och genereringsprocesserna. Allmänläkare kommer ofta att köra hundratals generationer innan de hittar ett enda program med ett tillfredsställande resultat. Trots denna begränsning är genetisk programmering ett vanligt sätt att lösa vissa typer av svåra datorproblem, inklusive robotteknik och problem med artificiell intelligens.