Föreläsning 980303 Evolutionary computing Vad ska hända idag? Kort översikt över området Genetiska algoritmer • • • • Huvudalgoritmen Exempelproblem Organismrepresentation Fitnessevaluering Vad är evolutionary computing? Grundstommen: • Population av individer och/eller lösningar • Fitness funktion som kan jämföra individer • Urvalsoperator - selection operator • Mutation • Rekombination för att skapa nya individer Title: /tmp/x f ig-f ig027364 Creator: f ig2dev Preview : This EPS picture w as not saved w ith a preview included in it. Comment: This EPS picture w ill print to a Post Script print er, but not to ot her ty pes of printers . Notationer som används Individ, kromosom, sträng Genotyp Gen Allele Population Fitness Genetiska operatorer Urvalstryck Genetisk drift Generation Historia 1957 använder biologen Fraser en dator för att simulera evolution. 1958 experimenterar Bremmermann med simulerad evoultion över binära genotyper och studerar mutation noga. 1962 publicerar Bremmermann resultat som använder simulerad evolution där han diskuterar konvergens i förtid och förespråkar mutation framför ”parning”. 1962 publicerar Holland en artikel om adaptiva system (grunden till genetiska algoritmer) 1963 börjar Rechenberg och Schwefel att samarbeta med fllygplansvingarna (grunden till evolutionära strategier) 1966 publicerar Fogel son bok om simulerad evolution (grunden till evolutionell programmering) 1985 Hålls första konferensen som inriktar sig mot GA samtidigt som teorier om genetisk programmering börjar växa fram. Genetiska algoritmer (GA) Holland och hans studenter spred metoden vidare under 80-talet. Genetisk programmering är en speciell variant av GA och är den metod som kanske är mest ”inne” nu. Title: /t mp/x f ig-f ig027364 Creat or: f ig2dev Prev iew : This EPS pict ure w as not s av ed w ith a preview inc luded in it. Comment: This EPS pict ure w ill print to a Pos tSc ript printer, but not to other ty pes of printers. Evolutionella strategier Rechenberg, 60-talet Flygplansvinge Avviker eftersom urvalet görs efter det att ny avkomma skapats. Title: /t mp/x f ig-f ig027364 Creat or: f ig2dev Prev iew : This EPS pict ure w as not s av ed w ith a preview inc luded in it. Comment: This EPS pict ure w ill print to a Pos tSc ript printer, but not to other ty pes of printers. Evolutionell programmering Fogel, 60-talet Saknar en kombineringsoperator, dvs ingen avkomma skapas. Ny population uppstår genom mutering. Title: /t mp/x f ig-f ig027364 Creat or: f ig2dev Prev iew : This EPS pict ure w as not s av ed w ith a preview inc luded in it. Comment: This EPS pict ure w ill print to a Pos tSc ript printer, but not to other ty pes of printers. Den genetiska algoritmen Välj lämplig representation av individerna och hitta en passande objekt funktion. Skapa en startpopulation. Beräkna fitnessvärdet för alla individer. Stanna om termineringsvillkoret är uppfyllt. Skapa nya individer mha urval, kombineringsstrategier tillsammans med genetiska operatorer. Ta bort gamla individer ur populationen Beräkna fitnessvärdet för de nya individerna och stoppa in dem i populationen. Gå till steg 4. Jämförelse med andra optimeringsmetoder: GA bearbetar en kodad representation och söker i representationens rymd i stället för originaldomänen. GA använder global information från hela sökrymden eftersom den använder en population av lösningar istället för en punkt. Sökningen sker med stokastiska operatorer istället för deterministiska. Den enda informationen som GA behöver är objektfunktionen. Behöver inte derivator t.ex. Vilka typer av problem kan GAs lösa? Funktionsoptimering • Traditionell forskning störst inom detta område Bildbehandling • Jämka bilder tagna vid olika tillfällen • ”Fantombilder” Kombinatoriska problem • Knapsack problemet, Traveling salesperson Designuppgifter • Ofta en blandning av optimering och kombinering Maskininlärning • Klassifierare Exempel 1 - Funktionsoptimering f ( x) sin( x) cos(3x) 2 1.5 1 0.5 0 -0.5 x* 2.043600 -1 -1.5 -2 f ( x* ) 1.878707 0 1 2 3 4 5 6 7 Exempel 2 - ”Ryggsäcksproblemet” Wt Profit 3 103 4 104 28 128 43 143 47 147 50 150 58 158 59 159 97 197 153 253 Wt Profit 154 254 159 259 176 276 228 328 263 363 277 377 280 380 287 287 304 404 309 409 Wt Profit 314 414 321 421 368 468 372 472 380 480 397 497 400 500 427 527 470 570 484 584 Wt Profit 500 600 508 608 554 654 641 741 649 749 673 773 700 800 737 837 746 846 749 849 Wt 775 782 820 878 882 882 888 917 930 961 Profit 875 882 920 978 982 982 988 1017 1030 1061 Finns begränsning på hur tung ryggsäcken kan vara (11042 viktenheter). Ska fyllas så mycket som möjligt • Maximera vinsten • Bara ett objekt av varje typ Representation av organismer Alla parametrar i en genetisk algoritm måste kodas till en sträng. Alla individer i en population har samma storlek (antal tecken) och alla bitarna i strängen har värden från samma alfabet. Största delen av teorin som finns är utvecklad för binära strängar (dvs alfabetet är {0, 1}). Andra kodningar kräver andra typer av genetiska operatorer. Nackdelar med binärkodning ”Olagliga individer” (illegal individuals) Hammingklyftan (Hammingcliff) Hammingklyftan kan undvikas med hjälp av Graykodning A = 110 B = 111 F = 011 E = 010 G = 000 H = 001 C = 100 D = 101 f(A) = 0 f(B) = 30 f(C) = 14 f(D) = 0 f(E) = 22 f(F) = 0 f(G) = 28 f(H) = 26 Punkterna A, F och D klättrar mot B Punkterna E, C och H klättrar mot G Ursprungsproblem: 110 010 111 011 A= 101 Omvandling: E = 011 g0 = b0 gi = bi bi-1 för i = 1..n 000 001 100 Graykodat: G = 000 B = 100 F = 010 H = 001 Tex (110)b = (101)g C = 110 101 D = 111 Hammingrum (alla grannoder skiljer sig bara en bit): C = 110 F = 010 G = 000 B = 100 D = 111 E = 011 H = 001 A = 101 f(A) = 0 f(B) = 30 f(C) = 14 f(D) = 0 f(E) = 22 f(F) = 0 f(G) = 28 f(H) = 26 D klättrar mot E E klättrar mot H F och H klättrar mot G C, G och A klättrar mot B Representation för våra exempel Optimeringsproblemet: • Binärkodning, 10 bitar • 3 för heltal och 7 för decimaltal • Noggrannheten i svaret beroende av antalet bitar Knapsack-problemet • 50 bitar (en för varje typ av objekt) • 1 om i ryggsäcken annars 0 • Problem med övervikten ej löst! Initiering av populationen Kan vara slumpmässig eller icke-slumpmässig Viktiga faktorer att tänka på: • Genetisk mångfald • ”Jämna” evalueringsvärden. – Om man har outliers så kan dessa ta över populationen (prematur konvergens) Slumpmässig initiering: ”Vanlig” slumpmässig ger en likformigt fördelad startpopulation • Lätt att implementera • Liten risk för prematur konvergens Utökad slumpmässig initiering • För varje individ i populationen slumpas ett givet antal fram och den bästa av dessa väljs Icke-slumpmässig initiering: Används när man har specifik kunskap om problemet. Man kan till exempel • lägga till redan kända ”bra” individer – individerna kan ta över populationen om de är för bra i relation till de andra • vikta slumpfunktionen så att en viss del av sökrymden blir mer representerad – man måste se till att mångfalden finns kvar • ta fram intressanta punkter med hjälp av någon algoritm som man sedan utgår ifrån – algoritmen som används kanske missar globala optima pga att de söker sig till vissa delar av sökområdet Fitnessevaluering Fitnessvärdet talar om hur ”bra” en individ är • Bör ge högre värden till de individer som representerar ”bra” lösningar. • Får inte vara allt för stora variationer för att kunna behålla genetisk spridning. Används vid urval av de som ska skapa nästa generation Bygger ofta på objektfunktionen Fitnessvärdet måste vara positivt • Eftersom urvalsprocessen baserar sig på sannolikheter proportionellt mot fitnessvärdet Raw fitness Om objektfunktionen F är icke-negativ så kan man använda den direkt. f(x) = F(x) Annars definieras raw fitness på följande sätt: F ( x) Cmin if f ( x) 0 Cmin abs(min( F ( x)) F(x) Cmin 0 otherwise Stora variationer i populationen medför att de bästa favoriseras så att de kan ta över Om skillnaderna är för små sker urvalet i princip slumpmässigt Normalisering av fitnessvärden Windowing f f min if f f min m f m otherwise ' Linear normalisation f1 M M (i 1)d if M-(i-1 )d m fi m otherwise Linear scaling ' avg ' max f f af b ' f f avg Cf avg Windowing & Linear norm 200 - raw fitness 180 .. Windowing m = 10 160 -. 140 Linear normalisation m = 1, M = 100, d = 20 -- Linear scaling a = 0.1, b = 50 f '(x) 120 100 80 60 40 20 0 1 2 3 4 x 5 6 7 Normalisering av fitnessvärden Sigma truncation f ( f avg c ) if f ( f avg c ) 0 f 0 otherwise ' Power law scaling (k nära 1) f f ' k Windowing & Linear norm 350 300 - raw fitness 250 .. Sigma truncation c = 2.3 -. Power law scaling k = 0.9 f '(x) 200 150 100 50 0 1 2 3 4 x 5 6 7 Illegala individer Kan uppkomma vid slumpmässig initiering och/eller vid skapandet av den nya generationen. Några sätt att lösa problemet: • Ta bort de illegala och skapa nya tills rätt antal lagliga skapats. + Lätt att implementera. – Olagliga individer kan innehålla genetiskt material som är bra. – Kan finnas väldigt många illegala individer i en sökrymd vilket gör att denna metod blir ineffektiv. Fler sätt att lösa problemet: Reparera individen så att den blir laglig. Straffunktioner (penalty functions) • Vanligaste alternativet • f’=f+p eller f’=p(f) • Om straffet för högt: – GA kommer att ägna stor tid åt att evaluera olagliga individer – Första lagliga individen kommer antagligen att ta över hela populationen • Om straffet för lågt – GA kan komma att hitta en lösning som är en olaglig individ. Mer om straffunktioner: • Låt straffunktionen stå för hur dålig individen är och f = c - p, c konstant. • Straffunktioner som uppskattar i vilken omfattning villkoren överskridits är bättre än de som bara kolla antal villkor. • Kan skapas utifrån ”the expected completion cost”. Dvs hur mycket skulle det kosta att göra individen laglig. Knapsack-problemet • Om vikten för stor dra av en konstant gånger övervikten. f = f - c(w - M)