Što je genetsko programiranje?

Genetsko programiranje je proces korištenja jednog računalnog programa za pisanje drugog računalnog programa koristeći metodologiju temeljenu na evolucijskom algoritmu. Ovaj se proces često uspoređuje s linearnim programiranjem, u kojem programer piše specifične upute koje računalo mora izvršiti. LISP i Scheme najčešći su programski jezici za ovu vrstu posla zbog svoje visoke razine funkcionalnosti i fleksibilnosti. Kao rezultat svoje konceptualne sličnosti s biološkom evolucijom, genetsko programiranje se često navodi kao primjer bio-inspiriranog računanja.

Genetski programi (GP) rade tako što generiraju i izvode tisuće programa i biraju najučinkovitiji za korištenje. Na primjer, GP se može koristiti za izradu programa za crtanje skice fotografije. Prva stvar koju bi liječnik opće prakse napravio je kreiranje skupa programa koji koriste različite funkcije računalnog crtanja u slučajnim kombinacijama. Zatim bi liječnik opće prakse pokrenuo svaki od ovih programa redom, izlazeći rezultate svakog u slikovne datoteke.

Sljedeći korak za liječnika opće prakse je odabir najboljeg od tih programa iz skupa. Ovaj proces je općenito najteži dio genetskog programiranja. U slučaju programa za crtanje, liječnik opće prakse bi koristio softver za usporedbu slika kako bi odredio koji je od nasumičnih crteža najsličniji slici koju je softver pokušavao nacrtati. Od nasumično generiranih programa, liječnik opće prakse bi odabrao nekoliko prvih, a odbacio ostale. Proces odabira poznat je kao procjena sposobnosti i općenito se smatra najtežim dijelom genetskog programiranja.

Nakon što je nekoliko najboljih programa odabrano, liječnik opće prakse će ih koristiti kao osnovu za novu seriju programa. Svaka nova serija naziva se generacijom. Dva načina stvaranja nove generacije su mutacija i križanje. Mutacija djeluje tako da uzme jedan od postojećih programa i napravi nasumične promjene na njemu, nadamo se na bolje. Crossover, koji se također naziva uzgojem, radi tako što uzima dva najbolja programa i kombinira njihove elemente za stvaranje novih programa.

Nakon kreiranja nove serije programa, GP ponavlja proces njihovog pokretanja i evaluacije, a zatim ponavlja procese odabira, eliminacije i generiranja. Liječnici opće prakse često će voditi stotine generacija prije nego što pronađu jedan program sa zadovoljavajućim rezultatom. Unatoč ovom ograničenju, genetsko programiranje uobičajen je način rješavanja nekih vrsta teških računalnih problema, uključujući robotsko inženjerstvo i probleme s umjetnom inteligencijom.