Kaj je genetsko programiranje?

Genetsko programiranje je postopek uporabe enega računalniškega programa za pisanje drugega računalniškega programa z uporabo metodologije, ki temelji na evolucijskem algoritmu. Ta proces se pogosto primerja z linearnim programiranjem, pri katerem programer napiše posebna navodila, ki jih mora izvesti računalnik. LISP in Scheme sta zaradi svoje visoke funkcionalnosti in prilagodljivosti najpogostejša programska jezika za tovrstno delo. Zaradi konceptualne podobnosti z biološko evolucijo se genetsko programiranje pogosto navaja kot primer računalništva, ki ga navdihuje bio.

Genetski programi (GP) delujejo tako, da ustvarijo in izvajajo na tisoče programov in izberejo najučinkovitejšega za uporabo. Na primer, GP se lahko uporabi za ustvarjanje programa za risanje skice fotografije. Prva stvar, ki bi jo naredil zdravnik, je ustvaril niz programov, ki uporabljajo različne funkcije računalniškega risanja v naključnih kombinacijah. Nato bi GP zagnal vsak od teh programov po vrstnem redu in rezultate vsakega od njih poslal v slikovne datoteke.

Naslednji korak za GP je izbira najboljšega izmed teh programov iz nabora. Ta proces je na splošno najtežji del genetskega programiranja. V primeru programa za risanje bi GP uporabil programsko opremo za primerjavo slik, da bi ugotovil, katera od naključnih risb je najbolj podobna sliki, ki jo je programska oprema poskušala narisati. Od naključno ustvarjenih programov bi GP izbral nekaj prvih, ostale pa zavrgel. Postopek izbire je znan kot vrednotenje telesne pripravljenosti in se na splošno šteje za najtežji del genetskega programiranja.

Ko bo izbranih nekaj najboljših programov, jih bo GP uporabil kot osnovo za novo serijo programov. Vsaka nova serija se imenuje generacija. Dva načina ustvarjanja nove generacije sta mutacija in križanje. Mutacija deluje tako, da vzamete enega od obstoječih programov in ga naključno spremenite, upajmo, da na bolje. Crossover, imenovan tudi vzreja, deluje tako, da vzame dva najboljša programa in združi njune elemente za ustvarjanje novih programov.

Po izdelavi nove serije programov GP ponovi postopek njihovega izvajanja in vrednotenja, nato pa ponovi postopke izbire, izločanja in generiranja. Splošni zdravniki pogosto vodijo na stotine generacij, preden najdejo en sam program z zadovoljivim rezultatom. Kljub tej omejitvi je genetsko programiranje običajen način reševanja nekaterih vrst težkih računalniških težav, vključno z robotskim inženiringom in problemi umetne inteligence.