Mikä on geneettinen ohjelmointi?

Geneettinen ohjelmointi on prosessi, jossa käytetään yhtä tietokoneohjelmaa toisen tietokoneohjelman kirjoittamiseen käyttäen evoluution algoritmipohjaisia ​​menetelmiä. Tätä prosessia verrataan usein lineaariseen ohjelmointiin, jossa ohjelmoija kirjoittaa tietokoneelle erityisiä ohjeita. LISP ja Scheme ovat yleisiä ohjelmointikieliä tämän tyyppisille töille korkean tason toimivuutensa ja joustavuutensa vuoksi. Käsitteellisestä samankaltaisuudestaan ​​biologiseen evoluutioon johtuen geneettistä ohjelmointia mainitaan usein esimerkkinä bioinspiraatiosta.

Geneettiset ohjelmat (GP) toimivat luomalla ja suorittamalla tuhansia ohjelmia ja valitsevat tehokkaimman käytettävän. Esimerkiksi GP: tä voidaan käyttää luomaan ohjelma valokuvan luonnoksen piirtämiseksi. Ensimmäinen asia, jonka GP tekisi, on luoda joukko ohjelmia, jotka käyttävät erilaisia ​​tietokoneen piirtotoimintoja satunnaisissa yhdistelmissä. Sitten yleislääkäri ajaisi jokaisen näistä ohjelmista järjestyksessä ja tuotti kunkin tulokset kuvatiedostoihin.

Seuraava askel yleislääkärille on valita paras näistä ohjelmista sarjasta. Tämä prosessi on yleensä vaikein osa geneettistä ohjelmointia. Piirustusohjelman tapauksessa yleislääkäri käytti kuvan vertailuohjelmistoa määrittääkseen, mikä satunnaisista piirustuksista oli eniten samanlainen kuin kuva, jonka ohjelmisto yritti piirtää. Satunnaisesti luotuista ohjelmista yleislääkäri valitsi useimmat ja hylkäsi loput. Valintaprosessi tunnetaan kuntoarviointina, ja sitä pidetään yleensä geneettisen ohjelmoinnin vaikeimpana osana.

Kun muutama suosituin ohjelma on valittu, yleislääkäri käyttää niitä uuden ohjelmaerän perustana. Jokaista uutta erää kutsutaan sukupolveksi. Kaksi tapaa luoda uusi sukupolvi ovat mutaatio ja crossover. Mutaatio toimii ottamalla yksi olemassa olevista ohjelmista ja tekemällä siihen satunnaisia ​​muutoksia, toivottavasti parempaan suuntaan. Crossover, jota kutsutaan myös jalostukseksi, toimii ottamalla kaksi huippuohjelmaa ja yhdistämällä niiden elementit uusien ohjelmien luomiseksi.

Uuden ohjelmaerän luomisen jälkeen yleislääkäri toistaa niiden suorittamis- ja arviointiprosessin ja toistaa sitten valinta-, poistamis- ja generointiprosessit. Yleislääkärit suorittavat usein satoja sukupolvia ennen kuin he löytävät yhden ohjelman, jolla on tyydyttävä tulos. Tästä rajoituksesta huolimatta geneettinen ohjelmointi on yleinen tapa ratkaista tietyntyyppisiä vaikeita laskentaongelmia, mukaan lukien robottitekniikka ja tekoälyongelmat.