Hva er genetisk programmering?
Genetisk programmering er prosessen med å bruke ett dataprogram for å skrive et annet dataprogram ved hjelp av evolusjonær algoritmebasert metodikk. Denne prosessen sammenlignes ofte med lineær programmering, der programmereren skriver spesifikke instruksjoner for datamaskinen å utføre. LISP og Scheme er de vanligste programmeringsspråk for denne typen arbeid på grunn av deres høye funksjonalitet og fleksibilitet. Som et resultat av dens konseptuelle likhet med biologisk evolusjon siteres genetisk programmering ofte som et eksempel på bioinspirert databehandling.
Genetiske programmer fungerer ved å generere og kjøre tusenvis av programmer og velger det mest effektive å bruke. For eksempel kan en fastlege brukes til å lage et program for å tegne en skisse av et fotografi. Det første som fastlegen vil gjøre er å lage et sett med programmer som bruker forskjellige datategningsfunksjoner i tilfeldige kombinasjoner. Da ville fastlegen kjørt hvert av disse programmene i rekkefølge, og gitt resultatene fra hver til bildefiler.
Neste trinn for fastlegen er å velge det beste av disse programmene fra settet. Denne prosessen er generelt den vanskeligste delen av genetisk programmering. Når det gjelder tegningsprogrammet, vil fastlegen bruke bildesammenligningsprogramvare for å bestemme hvilken av de tilfeldige tegningene som var mest lik bildet programvaren forsøkte å tegne. Av de tilfeldig genererte programmene, ville fastlegen velge topp flere og forkaste resten. Seleksjonsprosessen er kjent som kondisjonsevaluering, og anses generelt å være den vanskeligste delen av genetisk programmering.
Når de beste programmene er valgt, vil fastlegen bruke dem som grunnlag for en ny gruppe programmer. Hver nye batch kalles en generasjon. De to måtene å skape den nye generasjonen på er mutasjon og crossover. Mutasjon fungerer ved å ta et av de eksisterende programmene og gjøre tilfeldige endringer i det, forhåpentligvis til det bedre. Crossover, også kalt avl, fungerer ved å ta to av toppprogrammene og kombinere elementer av dem for å lage nye programmer.
Etter å ha laget en ny gruppe programmer, gjentar fastlegen prosessen med å kjøre og evaluere dem, og gjentar deretter valg, eliminering og generasjonsprosesser. Fastleger vil ofte løpe hundrevis av generasjoner før de finner et enkelt program med et tilfredsstillende resultat. Til tross for denne begrensningen, er genetisk programmering en vanlig måte å løse noen typer vanskelige databehandlingsproblemer, inkludert robotteknikk og kunstig intelligens.