Genetické algoritmy Lukáš Kábrt
Obsah: Úvod Historie Základní pojmy Principy genetických algoritmů Možnosti použití Související metody AI Příklad – problém obchodního cestujícího Příklad – umělý život Dotazy Zdroje
Úvod Aplikace Darwinovy evoluční teorie na informatiku „aneb vypěstujte si vlastní program“ Aplikace Darwinovy evoluční teorie na informatiku Hlavní myšlenka – vyhovující organismus lze získat přirozenou selekcí, křížením a mutacemi naše prostředí – prostor řešení
Historie 1960 - I. Rechenberg "Evolution strategies„ 1975 - John Holland "Adaption in Natural and Artificial Systems„ 1992 John Koza - „Genetic programming"
Základní pojmy Jedinec – nositel genetické informace Genom – genetický materiál určitého druhu Gen – řetězec nukleotidů kódující jednu vlastnost Genotyp – konkrétní „nastavení genů“ u jedince Chromozom – řetězec genů Fenotyp – jak se genotyp projevuje navenek (dominantní geny)
Algoritmus Vytvoř první populaci jedinců Ohodnoť jedince v populaci Vytvoř novou populaci Vyber rodiče některou metodou selekce Vytvoř nové jedince křížením a mutací Ohodnoť nové jedince Přidej potomky do populace Nahraď starou populaci novou Opakuj dokud nejsou splněny podmínky zadání
Reprezentace chromozomu Volba závisí na charakteru problému Binárně Permutace přirozených čísel Sekvence hodnot Stromová struktura
Binární reprezetace chromozomu Chromozom je reprezentován řadou 1 a 0 Velké množství možností s malým počtem genů Jednoduchá realizace Příklad použití – problém plného batohu 1 1
Reprezetace permutací čísel Každý gen reprezentuje pořadí v sekvenci Ideální pro úlohy řešící řazení Příklad – problém obchodního cestujícího 1 4 2 7 9 3 5 8 6 7 4 1 8 2 5 3 6 9
Posloupnost hodnot 1.54 2.95 4.92 1.32 4.07 A B F E D C G (back) Gen reprezentuje nějakou složitější hodnotu Přirozená reprezentace mnoha problémů Pro křížení jsou nutné speciální operátory 1.54 2.95 4.92 1.32 4.07 A B F E D C G (back) (left) (forward)
Stromová struktura Chromozom je stromová struktura obsahující ve svých uzlech a větvích nějaké objekty Příklady použití: Genetické programování Regresní analýza
Algoritmus Vytvoř první populaci jedinců Ohodnoť jedince v populaci Vytvoř novou populaci Vyber rodiče některou metodou selekce Vytvoř nové jedince křížením a mutací Ohodnoť nové jedince Přidej potomky do populace Nahraď starou populaci novou Opakuj dokud nejsou splněny podmínky zadání
Fitness funkce Určuje úspěšnost jedince Na výsledku závisí jakou měrou se jedinec projeví v následující generaci
Algoritmus Vytvoř první populaci jedinců Ohodnoť jedince v populaci Vytvoř novou populaci Vyber rodiče některou metodou selekce Vytvoř nové jedince křížením a mutací Ohodnoť nové jedince Přidej potomky do populace Nahraď starou populaci novou Opakuj dokud nejsou splněny podmínky zadání
Selekce Metody selekce Uplatnění Darwinovy teorie – „Nejlepší přežijí a stvoří potomky“ Metody selekce Ruletové kolo Rank Selection Turnaj Elitářství
Ruletové kolo (roulette wheel selection) Pravděpodobnost výběru jedince
Rank selection Obdoba ruletového kola – nepracujeme s hodnotami fitness funkcí ale s pořadovým číslem jedince Nejhoršímu jedinci přiřadíme 1, dalšímu 2, atd. … Pro problémy, kde je velký rozdíl hodnot fitness funkcí Pomalejší konvergence
Turnaj Náhodně vybraní jedinci z populace podstupují „souboj o přežití“ Vybrán je jedinec s lepším ohodnocením Výhody - jednoduchá implementace, zajišťuje rozmanitost i selekční tlak Nikdy nepostoupí nejhorší, pokud je k souboji vybrán nejlepší postupuje vždy
Elitářství Do další generace je zachováno beze změny několik nejlepších jedinců Zajišťuje zachování dosud nejlepších jedinců Může znatelně urychlit řešení
Algoritmus Vytvoř první populaci jedinců Ohodnoť jedince v populaci Vytvoř novou populaci Vyber rodiče některou metodou selekce Vytvoř nové jedince křížením a mutací Ohodnoť nové jedince Přidej potomky do populace Nahraď starou populaci novou Opakuj dokud nejsou splněny podmínky zadání
Křížení Metoda, jejímž použitím získáme nové jedince, kteří nebyli součástí předchozí populace Dle typu úlohy existuje několik typů operátorů křížení Crossover Edge recombination crossover A mnoho dalších … 1 1 1 1 1 1 1 1
Mutace 1 1 1 1 1 1 Náhodná změna vybraných genů jedince Rozšiřuje prohledávaný prostor o řešení, které nelze dosáhnou křížením Zabraňuje uváznutí v lokální maximu / minimu 1 1 1 1 1 1
Parametry genetických algoritmů Počet jedinců v generaci Pravděpodobnost křížení Pravděpodobnost mutace
Využití Optimalizační úlohy Úlohy, kde neznáme algoritmus řešení, nebo je tento algoritmus výpočetně příliš náročný Rozvrhování Automatické navrhování elmech. systémů Optimalizace rozmístění telekomunikačních zařízení Učení neuronových sítí Učení robotů Zkoumání a vývoj léků
Příbuzné obory Evolution strategies – Jedinci se mění pouze mutacemi; řešení problémů v oboru reálných hodnot Interactive genetic alogithms – místo fitness funkce zastává člověk Hybrid genetic algorithms – idea memů, které na rozdíl od genů mohou modifikovat sami sebe Genetické programování – u GA se vyvíjí parametry nějakého algoritmu, u GP se vývíjí samotný algoritmus
Příklad - problém obchodního cestujícího Úkol – navštívit všechna zadaná města a vrátit se zpět do výchozího bodu, tak aby cesta byla co nejkratší NP úplný problém – nalezení Hamiltonovi kružnice v grafu
Příklad – umělý život Svět obsahující rostliny a brouky, kde se brouci snaží „pojídat“ rostliny Svět je rozdělen na políčka, která mohou obsahovat brouka, rostlinu nebo mohou být prázdná Brouci mohou provést jednu z 4 akcí Posun o 1 pole dopředu Posun o 1 pole dozadu Otočení o 90° doprava Otočení o 90° doleva Brouci mají malou vnitřní paměť Brouci vidí jedno políčko dopředu Chování brouků je určeno genovou výbavou, předmětem, který vidí a stavem paměti
Dotazy
Zdroje Scienceworld (http://www.scienceworld.cz/) Wikipedia – the free encyklopedia (http://www.wikipedia.org) Introduction to the genetic algorithms (http://cs.felk.cvut.cz/~xobitko/ga/) Neuronové sítě a genetické algoritmy – Tomáš Pevný Genetické algoritmy a jejich aplikace Doc. Ing. Pavel Ošmera CSc. Artifical Life (http://math.hws.edu/xJava/GA/) Travelling salesman problem (http://www.codeguru.com/code/legacy/misc/TSPApp_exe.zip)