Co je genetické programování?
Genetické programování je proces používání jednoho počítačového programu k napsání jiného počítačového programu pomocí evoluční metodiky založené na algoritmech. Tento proces je často porovnáván s lineárním programováním, ve kterém programátor píše konkrétní pokyny, které má počítač provést. LISP a Schéma jsou nejčastějšími programovacími jazyky pro tento typ práce, a to díky jejich vysoké funkčnosti a flexibilitě. V důsledku své koncepční podobnosti s biologickou evolucí je genetické programování často uváděno jako příklad biologicky inspirovaného počítače.
Genetické programy (GP) fungují tak, že vytvářejí a provozují tisíce programů a vybírají nejefektivnější použití. Například GP může být použit k vytvoření programu pro nakreslení náčrtu fotografie. První věc, kterou by GP udělal, je vytvoření sady programů, které používají různé funkce kreslení v náhodných kombinacích. Poté by GP spustil každý z těchto programů v pořadí a výsledky každého z nich přenesl do obrazových souborů.
Dalším krokem pro GP je výběr toho nejlepšího z těchto programů ze sady. Tento proces je obecně nejobtížnější součástí genetického programování. V případě kreslicího programu by GP použil software pro porovnání obrázků k určení, který z náhodných výkresů byl nejvíce podobný obrazu, který se software pokoušel kreslit. Z náhodně generovaných programů by GP vybral prvních několik a zbytek zahodil. Výběrový proces je znám jako hodnocení kondice a je obecně považován za nejobtížnější část genetického programování.
Jakmile bude vybráno několik nejlepších programů, GP je použije jako základ nové dávky programů. Každá nová dávka se nazývá generace. Dva způsoby, jak vytvořit novou generaci, jsou mutace a crossover. Mutace funguje tím, že vezme jeden z existujících programů a provede náhodné změny, doufejme, že k lepšímu. Crossover, nazývaný také šlechtění, funguje tak, že vezme dva z nejlepších programů a spojí je, aby vytvořil nové programy.
Po vytvoření nové šarže programů GP opakuje proces běhu a jejich vyhodnocení a poté opakuje procesy výběru, eliminace a generování. Praktičtí lékaři před spuštěním jediného programu s uspokojivým výsledkem často provozují stovky generací. Navzdory tomuto omezení je genetické programování běžným způsobem řešení některých typů obtížných počítačových problémů, včetně robotického inženýrství a problémů s umělou inteligencí.