Evoluční algoritmy I - poznámky Martin Všetička Knihy Goldberg: Generic algorithms, 89 John Holland - Adaptation in natural and artifical algorithms, 75 a 91. Holland položil základy genetickým algoritmům, napsal na evoluční algoritmy disertaci. Mellanie Mitchell: Introduction to Genetic algorithms 95 - obsahuje vše, co bude na přednáškách. Michalewicz: Genetic algorithms + Data structures = Evolutionary Programs, 3ed Úvod Evoluční algoritmy jsou algoritmy, které se inspirují přírodou a aplikují její mechanismy (selekce, křížení a mutace) na hledání (alespoň suboptimálního) řešení různých problémů. Nejčastěji jde o problémy optimalizačního charakteru. Nejsou to však pravé optimalizační algoritmy, je lepší se na ně dívat opravdu jako na pouhou simulaci přírody, která jako vedlejší produkt řeší nějakou optimalizační úlohu. Příklady použití evolučních algoritmů Hledání Hamiltonovské kružnice 1
Důležitým abstraktním pohledem na obecné řešení problémů je dívat se na hledání řešení jako na prohlédávání prostoru potenciálních řešení. Tento pohled na řešení problémů se v evolučních algoritmech objevuje velmi často. 1.1 Okénko do historie Zakladatelem genetiky se stal Gregor Mendel, brněnský mnich, který se zabýval křížením hrachu a důsledky, které to přenáší na potomstvo. Neznal však podstatu genetiky, pouze si všiml jisté zákonitosti. Charles Darvin byl britský přírodovědec a zakladatel evoluční biologie. Dostal grant od královny na cestu kolem světa, na Galapágách si všiml, že zde žijí zvířecí druhy, které se adaptovali ve svém životním prostředí. Sepsal knihu O původu druhů, ve které evoluční teorii opřel o proces, který nazval jako přírodní výběr. 1.1.1 Jean-Baptiste Lamarck Vědec, který se přel s Darwinem o tom, kdy se může měnit genetická informace jednotlivce. Tvrdil, že to může být po celou dobu života jednotlivce. Příklad Pokud rachitický člověk bude mít dítě s děvčetem, tak bude také rachitické, pokud se ale rachitický člověk vypracuje ve svalovce, tak dítě bude také svalovec. 1.1.2 John Holland Holland prisel s myslenkou, ze si vezme to podstatne s genetiky. Inspiroval se konceptem evoluce od Charlese Darwina a od Mendelovy genetiky. 2 No free lunch theorem The no free lunch theorem for search and optimization (Wolpert and Macready 1997) applies to finite spaces and algorithms that do not resample points. All 2
algorithms that search for an extremum of a cost function perform exactly the same when averaged over all possible cost functions. So, for any search/optimization algorithm, any elevated performance over one class of problems is exactly paid for in performance over another class. 3 Genetické algoritmy Jsou založené na pozorování přírody. Vezměme si například králíky a lišky. Pomalí králící nepřežijí, protože je liška dohoní. Čím je tedy králík rychlejší, tím má větší šanci, že přežije a tím pádem, že se i rozmnoží. Populace králíků, která přežije má šanci se rozmnožit. Množí se pomalí králíci s rychlými, rychlí s rychlími, pomalí s pomalými apod. Příroda navíc čas od času zasáhne a v genetickém materiálu se objeví mutace. Podstatné je, že ve výsledku bude následující generace v průměru rychlejší než minulá. U lišek probíhá to samé (jinak by již žádného králíka nedohonily). Genetické algoritmy využívájí princip nastíněný výše k řešení různých problémů. Evoluční proces určité populace jedinců (řešení problému) prohledává prostor řešení a přitom musí udržet v rovnováze dva navzájem konfliktní cíle: prohledat co nejširší prostor a zároveň využít současné nejlepší řešení k budoucímu zlepšení. Pomocí genetických algoritmů se řeší spousta praktických úloh, například úloha obchodního cestujícího (TSP), optimalizace databázových dotazů,... 3.1 Pojmy Jedinec (nebo také řetězec nebo chromozom) je jedno řešení problému (odpovídá jednomu králikovi z příběhu výše :-)). V genetickém algoritmu se jedná o pole bitů. Geny jsou jednotky, ze kterých je složen chromozom. Gen reprezentuje nějakou vlastnost objektu, například rychlost králíka, IQ králíka apod. U genetického algoritmu odpovídá gen jednomu bitu pole. Allela je konkrétní hodnota genu. U genetického algoritmu je to 1 nebo 0. 3
Genotyp je vektor genů 1 jednotlivce (víc informací). Fenotyp je konkrétní instance genotypu. Selekce TODO Křížení TODO Mutace TODO Míra mutace TODO Fitness funkce (také účelová funkce) je funkce, která pro daného jedince vrací reálné číslo, které udává, jak moc je jedinec dobrý. Z pohledu přírody jde tedy o číslo, které udává, jak moc je daný jedinec v prostředí adaptovaný. Podle fitness funkce se typicky řídí selekce (např. vyberu nejlepších n jedinců do další generace). Explorace je prohledávání prostoru řešení. Exploatace je využití slibných oblastí. prostoru řešení ke zlešení. Hillclimbing je příkladem exploatace. Jde o iterativní strategii pro prohledávání prostoru řešení využívající nejlepší současné řešení, aby našla v okolí tohoto řešení řešení ještě lepší. Tato strategie končí v lokálním nebo globálním maximu prostoru řešení. Protože jeden hillclimber by ve velkém prostoru řešení skončil s velkou pravděpodobností v lokálním maximu, tak se vysadí do prostoru řešení mnoho hillclimberů, čímž se zvýší pravděpodobnost, že nalezneme globální maximum. 3.2 Genetický algoritmus Klasické genetické algoritmy používají k reprezentaci jedinců binární řetězce pevné délky. (Binární) mutace je pak jednoduchá změna jednoho či více bitů na opačný. Přesněji máme danou nějakou pravděpodobnost (typicky malé číslo v řádu procent) s jakou se má změnit bit na opačný, generujeme tedy pro každý bit náhodné číslo z intervalu [0,1] a pokud je menší než stanová pravděpodobnost, pak změnu provedeme. Toto opakujeme pro všechny bity. 4
(Binární) křížení proběhne tak, že vezmeme dva jedince (dvě pole), rozdělíme je ve stejných místech a prohodíme ocásky, čímž vzniknou dva potomci. 3.3 Obecný genetický (i evoluční) algoritmus procedure Evolution_program begin t <- 0 5
initialize P(t) evaluate P(t) while (not termination-condition) do begin t <- t + 1 select P(t) from P(t-1) alter P(t) evaluate P(t) end end 3.4 Jednoduchý genetický algoritmus - Osnova algoritmu: - Prohledavaci metaheuristika - Generacni princip - Zakodovany problem v - Geneticke operatory - Reseni - Parametry si zakodujeme do binarniho retezce. [ ] - Ilustrace na problemu batohu: - v_1,..., v_n (veci davane do batohu), kapacita batohu C [0 0 1 0 1] <- dame do batohu v_3 a v_5 6
- Musime si udelat ohodnoceni, hantyrkou fitness funkce f: f(j) ~> \sum v_i (pokud nepresahnu C) - oo (staci i nula) (pokud presahnu sumou C) Pozn: Fitness funkci se take rika ucelova funkce. Pozn #2: Fitness funkce se obecne spocita velmi jednoduse, pouze projde zakodovany retezec. - P_0... nahodne K jedincu - P_i -> P_{i+1} - ohodnot P_i - pokud uz je nejaky jedinec dost dobry, tak skonci - jinak: - selekce - vybira ze stare populace jedince - vetsinou jednoduse tak, ze vybereme dva jedince a - roulette wheel selection: \sum_{i \in P} f_i = 1 Kazdou fitness dokazu preskalovat, tak aby jeji hodnoty byly v interval Pak f(i) odpovida pravdepodobnosti vyberu i. - krizeni - vybereme jedince x z populace P_i y P_i pak krizime jedince x, y a dostavame x a y. [oooooooooo] [----------] nekde udelam caru 7
[----ooooo] - mutace - vezmeme jedince a koukam na jednotlive bity zakodovani a s nejakou pravdepodobnosti u kazdeho bitu zmenim hodnotu na opacnou. - vloz x, y do P_{i+1} Pozn. pravdepodobnost krizeni je typicky velka: 0.5, 0.6 pst. mutace je vetsinou mala: setina, tisicina,... Inicializace bývá náhodný výběr jedinců, případně se mohou k inicializaci použít řešení, které získáme z nějaké heuristiky pro daný problém. Proč fungují genetické algoritmy TODO page 57 (Michalewitz) Genetické vs. evoluční algoritmy Genetické algoritmy jsou podtřídou evolučních algoritmů, jelikož evoluční algoritmy nemusí používat binární reprezentaci jedinců a operátory pro mutaci a křížení mohou být také jiné. 3.5 Teorie schémat Def: Schéma je slovo v abecedě {0, 1, }, které reprezentuje množinu (binárních) řetězců 1. Znak * je zástupný za hodnotu 1 nebo 0. Příklad: Schéma reprezentuje 2 5 řetězců (jedinců). Reprezentuje například jedince 10101. EPozorování: Existuje 3 m schémat délky m. EPozorování: Řetězec 1řetězec = jedinec délky m je reprezentován 2 m schématy. 8
Důkaz. Pro každý bit řetězce vyberu bud jeho hodnotu nebo použiju hvězdičku, tedy mám dvě volby na jeden bit, z toho plyne 2 m schémat. EPozorování: V populaci velikosti n je 2 m až n 2 m schémat, kde m značí délku řetězců. Důkaz. Jednomu řetězci odpovídá 2 m schémat. Horní odhad na počet schémat pro n řetězců je n 2 m. Def: Řád schématu S, značíme o(s), je počet nul a jedniček v zápisu schémata 2. Def: Definující délka schématu S, značíme d(s), vzdálenost mezi první a poslední pevnou pozicí 3. Příklad: d(1**10*) = 4 Def: Fitness schématu S, značíme F (S), je průměrná fitness všech řetězců v populaci. Věta: Krátká 4 nadprůměrná 5 s malým řádem schémata se v populaci během běhu genetického algoritmu exponenciálně množí 6. Poznámka: Líbí se nám naprůmění jedinci, protože jsou to kandidáti na dobré řešení. Malý řád nám vyhovuje proto, že neomezuje řešení. Malá délka je vhodná proto, aby kompaktní bloky zůstaly zachovány. A věta říká, že tací jedinci se množí exponenciálně. Důkaz. Označme si populace v jednotlivých generacích P (t), P (t + 1),.... Proměnná n označuje počet jedinců ve všech generacích a m označuje délku každého jedince. Důkaz je založen na rozebrání, co se děje s konkrétním schématem S při: selekci, křížení a mutaci. 2 Jednoduše nepočítáme hvězdičky 3 Pevná pozice značí 0 nebo 1. 4 Ve smyslu definující délky. 5 Mající fitness větší než průměrnou. 6 Bez příkras: Krátká schémata, která mají nadprůměrnou hodnotu fitness funkce a mají malý řád, se v populaci během práce Genetického algoritmu exponenciálně množí. 9
Označme si C(S, t) četnost schématu S v populaci P (t), tedy počet řetězců v populaci, které vyhovují schématu S. Důkaz je založen na postupném odhadování hodnoty C(S, t + 1), tedy sledujeme, jak se změní hodnota v další generaci. Selekce Řetězec v má pravděpodobnost vybrání: p S (v) = F (v)/f (t) (1) kde F (t) = F u P (t) (u). Hodnota p S (v) je jednoduše poměr fitness jedince v a součtu všech fitness. Tento poměr 7 je pravděpodobností výběru jedince jednoduše proto, že přesně takto funguje ruletová selekce. Schéma S má pravděpodobnost vybrání: p S (S) = F (S)/F (t) (2) Selekce jedince probíhá n-krát 8. Při každém výběru mám pro dané schéma S fixní pravděpodobnost p S (S), že jej vyberu. Pravděpodobnost vynásobím četností schématu S v současné populaci a dostanu četnost schématu S v následující populaci. Ve tvaru rovnice tedy: C(S, t + 1) = C(S, t) n p S (S) (3) Rovnice říká kolikanásobně se zvětší četnost schématu S. Rovnici můžeme přepsat takto: C(S, t + 1) = C(S, t) F průměrná (t) = F (t) n F (S) F průměrná (t) (4) (5) 7 Hodnota p S (v) je normalizovaná hodnota fitness funkce. 8 Z populace velikosti n musím opět vybrat n jedinců. 10
Křížení Mutace 4 Evoluční algoritmy TODO Pro jeden konkrétní problém je často možné vymyslet mnoho fitness funkcí, mnoho způsobů křížení, selekce ale i mutace. Nicméně společný základ evolučních algoritmů spočívá v tom, že v jednom kroku algoritmu provedádíme transformace populace a jedinci v evolučním procesu bojují o přežití. 4.1 Selekce 4.1.1 Ruleta (Roulette Wheel) Původní Hollandova selekce na populaci velikosti n fungovala takto: sum = f 1 + f 2 + + f n je součet hodnot fitness funkce všech jedinců v populaci. f i p i = má význam očekávaného počtu vybrání jedince do populace. U sum jedince s p i = 0.5 tedy očekáváme, že ho vybereme v polovině případů. 11
Algoritmus: /* Rucicka rulety; nahodne cislo z intervalu [0,1] */ ptr = Rand(); for (sum = i = 0; i < N; i++) for (sum += p(i,t); sum > ptr; ptr++) Select(i); Popis v jgapu: A basic implementation of NaturalSelector that models a roulette wheel. When a Chromosome is added, it gets a number of slots on the wheel equal to its fitness value. When the select method is invoked, the wheel is spun and the Chromosome occupying the spot on which it lands is 12
selected. Then the wheel is spun again and again until the requested number of Chromosomes have been selected. Since Chromosomes with higher fitness values get more slots on the wheel, there s a higher statistical probability that they ll be chosen, but it s not guaranteed. 4.1.2 Turnajová selekce Dva jedinci a, b jsou náhodně vybráni z populace, kde fitness(a) < fitness(b). Je zvoleno náhodně číslo r [0, 1]. Pokud r < k, kde k je nějaká předem zvolená konstanta z intervalu [0, 1] (např. 0.75), pak je puštěn do nové populace jedinec a, pokud podmínka neplatí, je puštěno b. 4.1.3 Selekce nejlepších Ze současné generace vybereme n nejlepších do další generace. V knihovně jgap se operátor nazývá BestChromosomesSelector. 4.1.4 Elitismus Elitismus funguje tak, že někteří jedinci mají zajištěno, že budou puštěni do další generace. Bývá to určité procento nejlepších jedinců v populaci (typicky 5% až nějakých 15%). Tito jedinci jsou tedy automaticky zkopírováni do nové populace. Nejsou tam však přesunuti, jinak by na těchto jedincích nemohly pracovat operátory křížení a mutace. Ukázalo se, že elitismus hodně pomáhá zlepšovat výkon genetických algoritmů. 4.2 Vězňovo dilema (The prisoner s dilemma) Je jednoduchá hra pro dva hráče. Alice a Bob jsou zatčeni pro spáchání společného zločinu a jsou drženi v oddělených celách. Mezi celami nelze nijak komunikovat. Alici je nabídnuta následující dohoda: Pokud se přizná a bude svědčit proti Bobovi, pak dostatne podmíněný trest se zkušební lhůtou a Bob půjde do vězení na 5 let. Nicméně pokud v tu samou dobu se Bob přizná 13
a bude souhlasit, že bude svědčit proti Alici, její svědectví bude zdiskreditováno a oba dostanou 4 roky za své svědectví. Alici je řečeno, že Bob dostal přesně tu samou dohodu. Bob a Alice ví, že pokud ani jeden z nich nebude svědčit proti tomu druhému, pak mohou být obviněni pouze na základě méně závažných obvinění a oba dostanou 2 roky vězení. Bob/Alice Nesvědčí Svědčí Nesvědčí 2,2 5,0 Svědčí 0,5 4,4 Měla by Alice zradit Boba a doufat v podmíněný trest a přitom riskovat čtyřletý žalář pokud zradí i Bob? Nebo by měla spolupracovat s Bobem (přestože nemohou komunikovat) a doufat, že bude také spolupracovat a tedy že oba dostanou pouze dva roky vězení a přitom riskovat, že Bob ji zradí a ona dostane 5 let? V tomto případě je lepší zradit. Pokud by se však hra hrála iterovaně, pak již mohou nastoupit různé strategie. Anatol Rapoport v soutěži v roce 1984 vyhrál s algoritmem TIT-FOR-TAT (oplácení). V prvním kroku algoritmus spolupracuje. V dalších krocích dělá to, co udělal protivník v minulém kole. Tedy oplací spolupraci nebo oplácí zradu. 5 Diferenciální evoluce PSO (Particle Swarm Optimality) = OHČ (Optimalizace Hejnem Častic) Turing... Von Neumann... sebereprodukovaci algoritmus; vymyslel teorii celluarnich automatu; Celulární automaty Conway s Game of Life Zivot reprodukci Thomas Ray (biolog) - byl fascinovan tim, ze v pameti to zije... 14
- udelal smrtaka, ktery obcas nejaky program zabil - programy mutovali - bojovalo se o strojovy cas - programy zacaly parazitovat (upravoval cizi program, tak aby kopiroval tohoto parazita) - po nejake se vyvinuli jedinci, kteri se byli schopni parazitismu branit. - system, ktery postupne vyvinul se jmenuje Tierra (alternativa http://en.wikipedia.org/wiki/avida) Brooks - hierarchicky relativni model Diferencialni evoluce Populace x_t = (x_1, \dots, x_n) \downarrow --- vyber kamaradu (vyberu nejlepsiho a 2 kamarady: a,b,c NEBO 3 kamarady(typic \downarrow x_{t+1} \leftarrow for i = 1 \dots n do (x_t)_i [Pokud mam krizit (dle nahodneh 6 Diferenciální evoluce (pokračování) 6.1 Evoluční data-mining Evolutionary data mining Michigan vs Pittsburgsky model - lisi se v tom, co povazuji za jedince v modelu - jedinec je jedno pravidlo (Michigan), resp. jedinec je mnozina pravidel 7 SAT a TSP Dnešním tématem jsou těžké kombinatorické úlohy. 7.1 SAT Na kódování problému se nám vyloženě hodí binární kódování, což je kódování, které máme rádi, protože operátory se na něm často vytvářejí velmi jednoduše - binární mutace, binární křížení. 15
U SATu je ovšem problém se zvolením fitness funkce. Jak fitness funkci zvolit? Můžeme počítat například počet splněných klauzulí, což je strategie, na kterou lze velmi snadno vymyslet protipříklady, kdy EV uvízne v lokálním maximu. Na druhou stranu problém je velmi těžký a nakonec o mnoho lepší fitness funkce nevymyslíme. Problém SATu je svou povahou podobný problému batohu. U tohoto problému máme informaci o naplnění, přesto může být nutné batoh vysypat a začít znovu. 7.2 TSP (úloha obchodního cestujícího) Oproti SATu je zde situace obrácená: fitness - velmi jednoduše, není s ní problém kódování - obtížné (nejpřirozenější je asi kódování pomocí permutací) Příklad: TSP má mnoho reálných využití, například vrtání plošných spojů, kde se snažíme, co nejvíce zkrátit dobu, kterou vrtačka stráví přesuny mezi danými body. Poznámka: Řešení, která jsou suboptimální, jsou často dostatečná. U příkladu s vrtačkami může být řešení, které je o deset procent horší než optimální stále ještě dostatečně dobré. Řešení, které budu mít za noc hotové je lepší než řešení, které bych získal až za rok, ale bylo by optimální. Poznámka: K TSP se vrátil jakýsi německý obchodní cestující, který napsal příručku pro obchodní cestující, kde byly popsáno, jak se má obchodní cestující chovat a také se zde zmiňuje hledání nejlepší trasy. 7.2.1 Kódování Město j je na pozici i vede hrana z i j. 1-2-4-3-8-5-9-6-7 <-- cesta 2 4 8 3 9 7 1 5 6 <-- zakodovaní 16
K čemu je to dobré? Souvislost se schématy. Je však nutno poznamenat, že ne každý kód je validní. 1. Alternující křížení [2] 3 [8] 7 [9] 1 [4] 5 [6] <-- vybiram liche 7 [5] 1 [6] 9 [2] 8 [4] 3 <-- vybiram sude Vznikne: nemůžeme sem dát 2 v 2 5 8 6 9 3 4 1 7 Podtržené číslice jsem musel vybrat náhodně, ale tak, aby nevznikl cyklus. 2. Uniformní křížení - to samé, co v křížení výše, jen beru políčka nad sebou. 3. Alternování podcest Vyberu náhodně podcestu náhodné délky z jednoho jedince Vyberu náhodně podcestu náhodné délky z druhého jedince 8 Zdroje Přednášky An Introduction to Genetic Algorithms Genetic Algorithms + Data Structures = Evolution Programs 17