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 metod. Denna process jämförs ofta med linjär programmering, där programmeraren skriver specifika instruktioner för datorn att 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 citeras ofta genetisk programmering som ett exempel på bioinspirerad datoranvändning.
Genetiska program fungerar genom att generera och köra tusentals program och väljer det mest effektiva att använda. Till exempel kan en allmänlä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 datorteckningsfunktioner i slumpmässiga kombinationer. Då skulle GP fastställa vart och ett av dessa program i ordning och mata ut resultaten för var och en till bildfiler.
Nästa steg för fastighetsläkaren ä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 ritningsprogrammet skulle fastighetsenheten använda bildjämförelseprogramvara för att bestämma vilken av de slumpmässiga ritningarna som var mest lik den bild programvaran försökte rita. Av de slumpmässigt genererade programmen skulle fastighetsinstitutet välja de översta flera och kasta resten. Urvalsprocessen kallas konditionutvärdering och anses generellt vara den svåraste delen av genetisk programmering.
När de bästa programmen har valts kommer GP att använda dem som grund för ett nytt program. Varje nytt parti kallas en generation. De två sätten att skapa den nya generationen är mutation och crossover. Mutationen fungerar genom att ta ett av de befintliga programmen och göra slumpmässiga förä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 ett nytt program med program, upprepar fastlegen processen att köra och utvärdera dem och upprepar sedan urvals-, eliminations- och genereringsprocesserna. Läkare kommer ofta att driva 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.