GA a predčasná konvergence Předčasná konvergence - výpočet konverguje příliš rychle k nějakému neoptimálnímu řešení Co způsobuje předčasnou konvergenci? –příliš velký selekční tlak - přílišné upřednostňování několika výjimečných jedinců na úkor zbytku populace –nedostatečná velikost populace - optimální velikost populace roste exponenciálně (!) s velikostí řešeného problému –obsah počáteční populace –špatně navržené genetické operátory - nutná rovnováha mezi prohledáváním (exploration) a zachováním důležitých stavebních bloků (exploration) –klamnost - nadprůměrná schémata pokrývající falešný extrém
Gentické algoritmy s omezenou konvergencí Genetic Algorithms with Limited Convergence (GALCO) Idea – neřešit, co dělat v případě, kdy nám už populace zkonvergovala ale naopak určit maximální povolenou míru konvergence a zajistit, že nebude během výpočtu překročena nepřipustit možnost, že by nějaký gen (stavební blok) zcela převládl v populaci
GALCO cont. Celkový genotyp populace – limit na konvergenci v rámci sloupců populace Jednotlivé geny mohou na dané pozici převládnout maximálně o hodnotu C – parametr konvergence i-tá pozice v chromozomu = sloupec populace chromozomy
GALCO Algorithm Step 1Generate an initial population Step 2Choose parents Step 3Create offspring using the 2-point crossover Step 4Insert the offspring into the population according to the following rule if(max(child1, child2) > max(parent1, parent2)) then replace both parents with the children else{ find(current_worst) replace_with_mask(child1, current_worst) find(current_worst) replace_with_mask(child2, current_worst) } Step 5if (not finished) then goto Step 2
Replace_with_mask operator for(i=0; i<chrom_length; i++){ change = child.genes[i] – current_worst.genes[i] if (PopSize/2 – C < conv[i] + change < PopSize/2 + C ) then{ conv[i] = conv[i] + change current_worst.genes[i] = child.genes[i] } Slučuje chromozomy potomka a nejhoršího jedince v populaci –Pokud na dané pozici nedojde k překročení povolené míry konvergence, tak se použije bit z potomka, jinak z nejhoršího jedince –Vektor conv [] – maska, určující, z kterého jedince bude daný bit použit
Výsledky experimentů na známých úlohách
Pokrytí více extrémů Rozdělení populace po iterací Rozdělení populace po iterací
GALCO - poznámky Typ inkrementálního GA Generuje nová řešení i po nalezení globálního optima P křížení = 1.0 P mutace = 0.0 Vystačí si s menšími velikostmi populace než klasický GA –důležité z hlediska efektivnosti výpočtu
Další přístupy Duální GA Messy GA Selective X-over
Duální Genetické Algoritmy Idea – zavedením redundance do genetického kódu se zvýší diversita populace Meta-gen připojen ke každému chromozomu Meta-gen řídí interpretaci chromozomu –0... přímá –1... Invertovaná v populaci mohou být 2 jedinci s totálně opačným genotypem ale se stejným fenotypem Operátor zrcadlení – invertuje celý chromozom bity kódující parametry řešení 1/01/0
Vazba stavebních bloků (linkage) Pevná – kompaktní stavební bloky Volná – roztroušené stavební bloky (snadno porušitelné)...
Messy Genetic Algorithms Idea – nešlechtit přímo celé chromozomy, namísto toho hledat slibná schémata (resp. stavební bloky) a postupně z nich budovat řetězce rostoucí délky Podobně jako v přírodě, kde vývoj začal od nejjednodušších forem života k vyšším a složitějším, které od nich přebíraly to dobré Od 1-buněčných organismů k Homo sapiens s genetickou výbavou kolem genů
Messy GA - representation Reprezentace - řetězce dvojic (jméno, hodnota) proměnné délky underspecification – nejsou definovány všechny bity bere se např. první hodnota zleva (first-come-first-served) overspecification – některý bit má v řetězci vícenásobnou definici na neúplné řetězce lze nahližet jako na schémata Přípustné řetězce pro 4-bitový problém: {(1, 0) (2, 0) (4, 1) (4, 0)} 00 1 {(1, 1) (3, 0) (4, 0) (2, 1) (4, 1) (3, 1)}
Výpočet fitness neúplného řetězce Průměrování –několikrát se náhodně doplní nespecifikované bity a vezme se průměrná fitness takto dolepených chromozomů –příliš evlký rozptyl nepřesné Competitive templates 1.Pomocí metody hill-climbing se najde lokální optimum 2.Neúplné schéma se doplní bity z tohoto lokálního optima 3.Pokud schéma vylepší lokální optimum, stává se toto schéma novým lokálním optimem
Funkční schéma Messy GA 1.Inicializace počáteční poplace – uplný výčet schémat řádu k 2.Primordinal fáze – naplnění populace slibnými schématy pouze selekce a kopírování jedinců v určitých intervalech půlení populace 3.Juxtapositional fáze – vzájemná rekombinace schémat selekce + cut & splice operátor {(2, 0) (3, 0) (1, 1) (4, 1) (6, 0)} {(2, 0) (3, 0) (1, 1)} {(4, 1) (6, 0)} {(3, 1) (2, 0) (1, 1)} + {(4, 1) (6, 0)} {(3, 1) (2, 0) (1, 1) (4, 1) (6, 0)}
Slabiny Messy GA Jak volit k ? –Velice konkrétní apriorní znalost o řešené úloze Inicializace počáteční populace a její proveditelnost –l... délka chromozomu –k... velikost minimálních (fundamentálních) schémat –velikost populace n=2 k ( l k ) Př:l=30, k=3 n = l=64, k=8 n 10 12
Pravděpodobnostně úplná inicializace Populace inicializována řetězci o délce k << l’< l –řetězce pokrývají mnoho schémat řádu k Odhad n’tak, že každé schéma řádu k bude v populaci Parazitující bity – poškozují dobrá schémata obsažená v delších řetězcích –building-block filtering – náhodné ořezávání bitů Př: Klamný problém l=150, k=5 –normálně by potřebovali n =
Selective X-over Idea – převzít od každého rodiče jen to dobré Dceřinný chromozom se buduje bit po bitu –výsledek je nezávislý na struktuře st. bloků (délce, řádu) U každého bitu se rozhodujeme podle pravidla: i-tý bit se vezme z toho rodiče, u kterého změna daného bitu způsobí menší zlepšení (nebo větší škody) než u rodiče druhého – rozhodujeme se na základě vyšetření okolí rodič. chromozomů
Selective X-over (cont.)
Poznámky k Selective X-over Klamné problémy + optimálně nastavený stavební blok již nemůže být rozbit – platí pouze u klamných problémů -špatně se nastavují opt. st. Bloky Obecně – pokud jsou nějaké interakce mezi bity, tak to už nemusí fungovat Mnoho výpočtů navíc – O(PopSize lchrom)