200 likes | 330 Views
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
E N D
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čitmaximá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
i-tá pozice v chromozomu = sloupec populace ... ... . . . ... chromozomy ... ... ... ... 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
GALCOAlgorithm Step 1 Generate an initial population Step 2 Choose parents Step 3 Create offspring using the 2-point crossover Step 4 Insert 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 5 if (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
Pokrytí více extrémů Rozdělení populace po 50 000 iterací 24-18-19-19-20 Rozdělení populace po 500 000 iterací 26-16-22-17-19
GALCO - poznámky • Typ inkrementálního GA • Generuje nová řešení i po nalezení globálního optima • Pkřížení = 1.0 • Pmutace = 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
bity kódující parametry řešení 1/0 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
... 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 2.000.000 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)} 001 {(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 • Pomocí metody hill-climbing se najde lokální optimum • Neúplné schéma se doplní bity z tohoto lokálního optima • 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 • Inicializace počáteční poplace – uplný výčet schémat řádu k • 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 • 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=2k(lk) Př: l=30, k=3 n = 32 480 l=64, k=8 n 1012
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 = 18.931.200.960
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ů
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(PopSizelchrom)