Co je to genetické programování? Hned na úvod: nejedná se o genetické inženýrství, modifikované organismy ani nic podobného, ale o využití evolučních mechanismů při tvorbě a optimalizaci kódu. V první řadě tedy stanovíte úkol, který m ...
Co je to genetické programování? Hned na úvod: nejedná se o genetické inženýrství, modifikované organismy ani nic podobného, ale o využití evolučních mechanismů při tvorbě a optimalizaci kódu.
V první řadě tedy stanovíte úkol, který musí váš program plnit. Podle dosažených výsledků se budou vaše programy dělit na více a méně úspěšné (a ty zdatnější "přežijí" do dalších pokusů). Až dosud nic překvapujícího, teď však přijde na řadu další princip uplatňující se v průběhu evoluce, kterým je rodičovství, vyvolávající rekombinaci genů — potomci nejsou se svými předky totožní.
Vezmeme kus kódu z jednoho programu a přidámě k němu jiný kód, tedy programy vlastně zkřížíme. Samozřejmě to nemůžeme udělat zcela nahodile, ale podle určitých pravidel, jejichž výsledkem bude např. spustitelnost programu. Aby křížení mělo rozumný smysl, musíme samozřejmě použít programy relativně podobné.
Kromě rozmnožování pak do systému zabudujeme další hnací motor vývoje, tedy náhodnou mutaci. Její výsledek bude s velkou pravděpodobností pro program smrtící (letální), nicméně pouze tímto způsobem můžeme dospět ke zcela nové funkci.
Podobně jako se organismy adaptují na přírodní prostředí, budou nakonec i vaše programy posléze přizpůsobeny vámi zadaným podmínkám. A stejně jako docházelo ke změnám těchto podmínek (ať už se jednalo o pozvolné klimatické změny, nebo o události kataklyzmatické), i vy můžete najednou změnit pravidla hry, a posunout tak celý systém zase o kousek dopředu.
Nenechte se mýlit tím, že genetické programování dnes působí ještě jako utopie. Existuje již celá řada projektů, třebaže se zatím spíše jedná o výzkum než o konkrétní praktické nasazení.
A jaké bude místo vývojáře v celém procesu? Stane se jakýmsi šlechitelem, jenž bude muset pokud možno přesně stanovit podmínky, podle nichž se kusy softwaru budou dělit na úspěšné a ty, které sítem přežití neprojdou. Měl by také umět rozpoznat, zda určitá funkce (třebaže v danou chvíli k ničemu nebo dokonce programu na škodu) by se nemohla naopak stát za jiných podmínek konkurenční výhodou.
Programování se tak posune na ještě vyšší stupeň abstrakce.
V průběhu miliard let uvařila pozemská evoluce z prapolévky organických látek neuvěřitelné věci. Pokud by se podařilo nastartovat podobný vývoj i v dnešní polévce softwarové, mohli bychom se také dostat ke zcela netušeným výsledkům.
Komentáře
Napsat vlastní komentář
Pro přidání příspěvku do diskuze se prosím přihlašte v pravém horním rohu, nebo se prosím nejprve registrujte.