Co je to genetické programování?
Genetické programování je proces používání jednoho počítačového programu k psaní jiného počítačového programu pomocí metodiky založené na evolučním algoritmu. Tento proces je často porovnán s lineárním programováním, ve kterém programátor píše specifické pokyny pro počítač k provedení. LISP a schéma jsou nejběžnějšími programovacími jazyky pro tento typ práce díky jejich funkčnosti a flexibilitě s vysokou úrovní. V důsledku své koncepční podobnosti s biologickým vývojem je genetické programování často citováno jako příklad výpočetní techniky inspirované bio. Například GP by mohl být použit k vytvoření programu pro nakreslení náčrtu fotografie. První věc, kterou by GP udělal, je vytvořit sadu programů, které v náhodných kombinacích používají různé funkce počítačového kreslení. Poté by GP spustil každý z těchto programů v pořadí a vydal výsledky každého na obrazusoubory.
Dalším krokem pro GP je výběr nejlepších z těchto programů ze sady. Tento proces je obecně nejobtížnější součástí genetického programování. V případě programu kreslení by GP použil software pro srovnání obrázků k určení, které z náhodných výkresů bylo nejvíce podobné obrazu, který se software pokoušel nakreslit. Z náhodně generovaných programů by GP vybral první několik a zbytek zahodil. Proces výběru je známý jako hodnocení fitness 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 vytvoření nové generace jsou mutace a crossover. Mutace funguje tak, že vezme jeden ze stávajících programů a provádíte náhodné změny, snad pročím lépe. Crossover, také nazývaný šlechtění, pracuje tím, že vezme dva z nejvyšších programů a kombinuje jejich prvky k vytvoření nových programů.
Po vytvoření nové dávky programů GP opakuje proces jejich spuštění a hodnocení a poté opakuje procesy výběru, eliminace a generování. GPS bude často provozovat stovky generací, než najde jediný program s uspokojivým výsledkem. Navzdory tomuto omezení je genetické programování běžným způsobem vyřešit některé typy obtížných problémů s výpočtem, včetně problémů s robotickým inženýrstvím a umělé inteligencí.