Introduktion till genetiska algoritmer CT3620 – Vetenskapsmetodik 2005-10-21 Ylva Degerfeldt [email protected] SAMMANFATTNING Denna rapport är tänkt som en introduktion till genetiska algoritmer. Först förklaras ämnet översiktligt, inklusive en kort historik. Sedan följer en mer ingående beskrivning av de olika ingående begreppen: Senare i rapporten tar jag också upp ett exempel: 8 damer-problemet, vilket kan lösas med hjälp av en genetisk algoritm. Slutligen kommer en liten diskussion där jag tar upp några fördelar med genetiska algoritmer samt lite om vilken typ av problem som de kan lösa. 1 Innehållsförteckning Inledning ..................................................................................................................... 3 Introduktion till genetiska algoritmer ........................................................................... 4 Utseende hos en generell genetisk algoritm ................................................................... 4 Ingående begrepp i en GA ................................................................................................. 5 Kromosom.......................................................................................................................... 5 Fitnessfunktion ................................................................................................................... 5 Selektionsmetoder .............................................................................................................. 6 Slumpmässig selektion................................................................................................... 6 Turneringsselektion........................................................................................................ 6 Rangbaserad selektion.................................................................................................... 6 Elitism ................................................................................................................................ 7 Crossover-metoder ............................................................................................................. 8 Single Point Crossover ................................................................................................... 8 Two Point Crossover...................................................................................................... 8 Uniform Crossover ......................................................................................................... 8 Mutation ............................................................................................................................. 9 Slumpmässig mutation ................................................................................................... 9 Inordermutation.............................................................................................................. 9 Permutationsmutation..................................................................................................... 9 Mutation med flyttalsrepresentation .............................................................................. 9 Ett exempel på ett problem: 8 damer-problemet .......................................................... 10 Kromosomrepresentation ................................................................................................. 10 Fitnessfunktion ................................................................................................................. 10 Selektionsmetod ............................................................................................................... 10 Crossover-metod .............................................................................................................. 10 Mutationsmetod................................................................................................................ 11 Elitism .............................................................................................................................. 11 Avslutande diskussion .............................................................................................. 11 Referenser................................................................................................................ 12 2 INLEDNING Genetiska algoritmer (G.A.) tillhör området artificiell intelligens och är det första evolutionary computing-paradigmet (algoritmer som bygger på evolutionsteorin) som utvecklades och användes. Den som utvecklade det var amerikanen John Henry Holland (född 1929), som var professor i psykologi, datavetenskap och elektroteknik. [Wikipedia] Han har skrivit ett antal böcker och en av de mest omtalade var just hans bok om genetiska algoritmer, Adaptation in Natural and Artificial Systems. Genetiska algoritmer är inspirerade av Darwins evolutionsteori [Obitko]. Detta innebär att man kan lösa ett problem genom att skapa en population av olika (mer eller mindre bra) lösningar, vilka kallas kromosomer eller individer. Kromosomerna består i sin tur av gener. Varje gen är en del av ett lösningsförslag och en kromosom ger en komplett potentiell lösning. Sedan låter man en ny generation lösningar utvecklas från den gamla genom att man väljer ut flera par av individer vilka får korsas med varandra så att de får en avkomma. Detta kallas crossover och precis som i naturen är det (oftast) bara de ”bästa” individerna som lyckas fortplanta sig. Hur ”bra” en individ är bestäms av något som kallas fitnessvärde och följaktligen har individer med bättre fitnessvärde en större chans att få para sig än individer med sämre. Fitnessvärdet räknas ut med hjälp av en fitnessfunktion, vilken är domän – och problemspecifik När en avkomma har skapats finns det också en chans att denna muteras, precis som i naturen. Detta innebär att det sker en genförändring hos individen. Denna kan antingen vara positiv och då leder den till att den förändrade genen med hög sannolikhet förs vidare genom generationerna, eller negativ, vilket innebär att sannolikheten för att genen ska föras vidare är väldigt låg. En positiv genförändring innebär ett bättre fitnessvärde och att kromosomen har större chans att bli vald för reproduktion. Man kan även säga att kromosomen i fråga kommer närmare den lösning som man är ute efter (om man vet hur denna ser ut). Det omvända förhållandet gäller för negativa genförändringar. Efter att mutation skett på vissa utvalda individer ersätts den gamla populationen med alla individer från den nya generationen och eventuellt får även några ”gamla” individer vara med i den nya populationen. De nya individerna får också fitnessvärden och så fortsätter urvalet och fortplantningen tills ett visst villkor är uppfyllt. Man kan inte alltid veta om algoritmen är nära att hitta lösningen, men för vissa problemtyper så kan man säga att om den bästa kromosomen förblir oförändrad genom ett stort antal generationer så är man nära. I vissa fall kan man bestämma att detta är villkoret för att algoritmen ska stoppas. Mer om stoppvillkor följer senare. 3 INTRODUKTION TILL GENETISKA ALGORITMER Utseende hos en generell genetisk algoritm Nedan följer pseudokod för en generell genetisk algoritm. Sedan kommer en översiktlig förklaring till koden och i nästa avsnitt mer ingående förklaringar på de olika delarna. Genetisk algoritm 1) Initiera startpopulationen P(0). 2) Sätt G = 0. 3) Gör tills stoppvillkoret har uppnåtts. a)Beräkna fitness för varje individ. b)Välj ut individer till föräldrapar, beroende av fitness. c)Skapa avkomma A(G) med hjälp av Crossover-funktion (med viss sannolikhet)och selektion. d)Mutera avkomma (med viss sannolikhet). e)Välj ut individer till ny population P(G + 1), från den gamla P(G) och alla A(G). f)Sätt G = G + 1. 4) Returnera den bästa lösningen (individen med bäst fitness). [Obitko] Startpopulationen P(0) tillhör generation 0 och brukar oftast slumpas fram. Detta innebär att de ingående kromosomerna får slumpmässiga utseenden och fitnessvärden. En kromosom består av gener och hur det kan se ut förklaras i nästa avsnitt. Variabeln G håller reda på vilken generation algoritmen har hunnit till. Stoppvillkoret kan vara antingen att det har dykt upp en tillräckligt bra lösning bland individerna (kromosomerna) i populationen, att det har skapats ett visst antal generationer, eller att den bästa individen, under ett visst antal generationsbyten, inte har förbättrats. Det sistnämnda villkoret används lättast tillsammans med Elitism, vilket innebär att man hela tiden kopierar den eller de bästa individerna (oförändrade) från en generation till nästa. På så vis riskerar man inte att förlora den bästa lösningen. Antalet föräldrapar man väljer ut är beroende av populationens storlek och hur man vill lösa problemet. Föräldrarna väljs genom olika Selektionsmetoder, vilka förklaras i nästa avsnitt. A(G) är avkomman som skapades av föräldrar tillhörande generation G. Denna avkomma skapas med hjälp av en crossover-funktion, vilken kombinerar gener från båda föräldrarna för att skapa en ny kromosom. Vilka olika typer av crossover-funktioner som finns förklaras i nästa avsnitt. När en ny population skapas tar man med alla ”barnen” och noll eller flera från föräldragenerationen, beroende på om man tillämpar elitism och vilken urvalsmetod man använder. I nästa avsnitt följer djupare förklaringar av de ingående delarna i en genetisk algoritm. 4 Ingående begrepp i en GA Kromosom Varje population består som tidigare nämnts av kromosomer. En kromosom representeras ofta av en binär sträng, där varje bit motsvarar en gen. (exempel i Figur 1.) Varje gen motsvarar en liten del av en potentiell lösning till problemet, fast det kan också vara så att alla generna tillsammans representerar ett heltal. Kromosom 1 110010100101 Kromosom 2 010101011000 Figur 1. Ett exempel på hur binära kromosomer kan se ut Kromosomernas längder kan, men behöver inte nödvändigtvis vara lika, beroende på vilket problem man försöker lösa. En kromosom kan också representeras av en sträng av heltal eller av flyttal. (Figur 2 visar ett exempel på en kromosom med flyttalsrepresentation.) Ett exempel på ett problem som kan lösas med hjälp av en G.A. med flyttalskromosomer: Att hitta maxvärdet hos en funktion, t.ex. f(w,x,y,z) = (wx – y) * z Figur 2 nedan visar hur en kromosom för detta problem kan se ut. Cellerna motsvarar gener och möjliga värden på w, x, y och z, i den ordningen (uppifrån). -1,567231 2,5 17,2397 3 Figur 2. Ett exempel på EN kromosom med flyttalsrepresentation (3 ingående gener) Fitnessfunktion Varje kromosoms värde, eller fitness, bestäms av en s.k. fitnessfunktion. Hur man väljer att denna ska se ut beror på vilken typ av problem det är man ska lösa. Det är mycket viktigt att man väljer en fitnessfunktion som verkligen modellerar problemet man ska lösa. [Engelbrecht2002] Vi återgår till exemplet om maxvärdet hos funktionen f(w,x,y,z) = (wx – y) * z. För detta problem kan fitnessfunktionen bli mycket enkel. Man räknar helt enkelt ut funktionens värde för varje kromosom. Då blir det naturligt så att kromosomer med högre fitness ger en bättre lösning än de med lägre. Det är dock tillåtet för en genetisk algoritm att ha en fitnessfunktion där lägre värden är bättre. 5 Selektionsmetoder Selektion innebär urval, vilket man behöver göra när man ska välja ut föräldrar och när man ska välja vilken kromosom som ska muteras. Selektionsmetod innebär sättet man gör urvalet på. Här följer en beskrivning av några olika selektionsmetoder: Slumpmässig selektion Detta är egentligen ingen lämplig selektionsmetod för en genetisk algoritm eftersom denna metod väljer föräldrar helt slumpmässigt, utan att ta hänsyn till kromosomernas fitness. Och en av grundidéerna med genetiska algoritmer är att individernas chans att få föröka sig ska vara större för individer med bättre fitness. Turneringsselektion Denna form av urval innebär att man slumpmässigt väljer ut x individer, vilka sedan får ”turnera mot varandra”. Detta medför i praktiken att den individ som har bäst fitness av dessa blir vald. Man brukar göra en turnering per förälder som ska väljas ut och det är möjligt för samma individ att bli vald flera gånger. En individ kan alltså bli ”både pappa och mamma” till sin avkomma, men om detta ska vara tillåtet eller inte är upp till programmeraren. Rangbaserad selektion Denna urvalsmetod bygger på att man rangordnar alla fitnessvärden enligt följande metod. Den kromosom som har sämst fitness får värdet 1 och den näst sämsta värdet 2 o.s.v. Därefter använder man proportionell selektion (se sid. 7) på dessa värden istället för på fitnessvärdena. Ett exempel på när detta kan vara bra är om man har en kromosom vars fitnessvärde är extremt mycket högre än alla andras. Chansen är då stor att det nästan bara blir den kromosomen som blir vald hela tiden. Rangordningen gör dock att skillnaderna mellan fitnessvärdena inte längre är så stora, eftersom den nämnda bästa kromosomen nu har ett värde som bara ligger 1 ifrån den näst bästas värde. Urvalet blir på så vis oberoende av den ursprungliga fitnessen. [Obitko] 6 Proportionell selektion Denna urvalsoperator kallas även rouletthjulsselektion och innebär att de individer som har bättre fitnessvärde har proportionellt större chans att bli valda. Tanken här är att man har ett rouletthjul där varje kromosom har sin sektion, vilkens storlek är proportionell mot kromosomens fitness. Sedan tänker man sig att man kastar en kula i rouletthjulet och den kromosom vars sektion kulan stannar på blir vald. Figur 3 visar tydligt att den kromosom som har bäst fitness och därmed störst roulettsektion, har lättast att bli vald. Kromosom 1 Kromosom 2 Kromosom 3 Kromosom 4 Kromosom 5 Figur 3. Ett exempel på rouletthjulsprincipen med fem kromosomer med olika fitnessvärden Elitism Som tidigare nämnts innebär elitism att man hela tiden sparar den eller de bästa kromosomerna. Detta innebär att dessa kopieras från en generation till nästa, vilket kan göra att algoritmen snabbare konvergerar mot lösningar som matchar det man är ute efter. Men å andra sidan kan elitismen göra att algoritmen fastnar i ett lokalt maximum (eller minimum) och aldrig hittar den bästa lösningen. Dock används elitism ofta i genetiska algoritmer, så det måste uppfattas som mer positivt än negativt. 7 Crossover-metoder Crossover innebär som tidigare nämnts att två kromosomer korsas med varandra och skapar en avkomma. Någon form av crossover brukar nästan alltid genomföras i en genetisk algoritm, på de utvalda föräldrarna. Det brukar dock finnas en liten sannolikhet att ingen crossover genomförs, vilket då innebär att kromosomerna kopieras som de är till nästa generation. Det finns olika typer av crossover-metoder och nedan presenteras några av dem: Single Point Crossover En slumpmässig genposition på kromosomsträngen väljs ut och delar in föräldrakromosomerna i två halvor. Sedan får det ena barnet en kopia av den ena förälderns första halva, följd av den andra förälderns andra halva. För det andra barnet blir det tvärtom. Figur 4 visar hur det kan gå till för binära kromosomer. 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 Figur 4. Ett exempel på Single Point Crossover mellan binära kromosomer Two Point Crossover Denna crossover-metod fungerar som Single Point Crossover förutom att det är runt två punkter man ”byter plats på gener”. Uniform Crossover Den här crossover-metoden leder till större variationer hos avkomman, eftersom den inte har en speciell crossover-punkt utan flera, vilka bestäms slumpmässigt. 8 Mutation Om man endast använder crossover när man skapar nya kromosomer, finns det en risk att man missar några bra lösningar på grund av att det var svårt att kombinera ihop dessa från endast de gener som finns i nuvarande population. Man kan också säga att algoritmen utforskar för lite. En lösning på detta är mutation. Detta innebär att vissa gener hos vissa kromosomer (som nyligen har skapats) väljs ut för att förändras (muteras) på något sätt. Mutation är bra på så vis att den får algoritmen att utforska mer och ger en större variation på kromosomerna. Men för mycket mutation är dock inte bra heller. Då blir algoritmen slumpmässig på grund av allt för många förändringar av gener. Det är alltså bäst att ha en ganska låg sannolikhet för att kromosomer ska muteras. Men forskning har visat att om man startar en genetisk algoritm med en hög mutationssannolikhet, som sedan minskar exponentiellt med antalet generationer, så får man en säkrare och snabbare algoritm. [Engelbrecht2002] Man kan också säga att det ofta är bättre att mutera individer med dålig fitness än de vars fitness är bra, eftersom man inte vill riskera att försämra de ”bästa” individerna. Mutation är också viktig när initialpopulationen saknar en viktig bit av lösningen. [Luger2002] Det finns olika mutationsmetoder. Nedan följer en beskrivning av några av dem: Slumpmässig mutation Denna mutationsmetod gäller binärt representerade kromosomer och fungerar så att gener slumpmässigt väljs ut för mutation. Själva mutationen består av att man inverterar det valda värdet (1 blir 0 och tvärtom). Inordermutation Denna mutationsmetod gäller också binärt representerade kromosomer och fungerar som slumpmässig mutation förutom att de gener som muteras befinner sig inom ett område som avgränsas av två punkter. Dessa punkter bestäms slumpmässigt. Permutationsmutation Denna typ av mutation kan man använda till permutationsproblem. D.v.s. problem där det gäller att kombinera ihop vissa saker i rätt ordning. Varje kromosom i ett sådant problem består av olika heltal och mutationen görs genom att man väljer ut två heltal som får byta plats med varandra. Mutation med flyttalsrepresentation När man representerar en kromosom med en mängd olika flyttal, så brukar mutationen göras lite annorlunda: Man väljer ut några olika gener från kromosomen och muterar dessa genom att addera eller subtrahera ett litet flyttal från genens värde. 9 Ett exempel på ett problem: 8 damer-problemet Detta problem är välkänt och passar bra för att lösas med en genetisk algoritm. Beskrivning: Man har en vanlig schackspelplan (8 x 8 rutor) och åtta damer, vilka får röra sig enligt vanliga schackregler. Problemet är hur man ska placera ut dessa damer så att ingen av dem attackerar någon annan. [Russel/Norvig] Figur 5 visar ett (misslyckat) försök till en lösning på detta. D D D D D D D D Figur 5. Ett exempel på 8 damer-problemet. Färgmarkeringarna visar vilka damer som blir attackerade av någon annan. Kromosomrepresentation I detta problem utgör varje kromosom ett sätt att placera ut alla åtta damerna på schackbrädet. Eftersom en av reglerna man måste följa är att ingen dam får stå i samma kolumn som en annan, brukar man göra så att varje dam står i en egen kolumn. Sedan kan man låta varje gen representeras av vilken rad som varje dam står på. Figur 6 visar ett exempel på en sådan kromosom (och motsvarar Figur 5). 1 3 6 2 4 8 5 7 Figur 6. Kromosomen som motsvarar damuppställningen i Figur 5. Fitnessfunktion En tänkbar fitnessfunktion för detta problem kan vara en funktion som räknar ut hur många damer som inte blir attackerade av, eller attackerar, någon annan. Detta medför att algoritmen kan ha som stoppvillkor att minst en kromosom med fitness 8 har skapats. Selektionsmetod Jag har valt rangbaserad selektion, för att inte riskera att en kromosom dominerar över de andra. Crossover-metod Jag har valt Single Point Crossover för att det är en enkel metod som passar för problemet. 10 Mutationsmetod För detta problem har jag valt att använda en domänspecifik mutation. Jag sätter en låg sannolikhet för mutation för alla kromosomer och för varje utvald kromosom gör jag följande: Jag tar en slumpvis vald position på kromosomsträngen och slumpar fram ett nytt värde, mellan 1 – 8, på dess gen. Elitism Jag föredrar att använda elitism för det här problemet eftersom det oftast medför en positiv effekt och jag tror att algoritmen hittar en lösning snabbare med hjälp av detta. AVSLUTANDE DISKUSSION I denna rapport har jag försökt ta upp de grundläggande begreppen som hör till ämnet genetiska algoritmer. Sist skulle jag vilja ta upp några fördelar med genetiska algoritmer: Man kan säga att genetiska algoritmer till stor del har sin styrka i Crossover-metoden. Det beror på dess förmåga att kombinera stora block av gener som har utvecklats oberoende av varandra, för att skapa en ny lösning vilken med stor sannolikhet är bättre än dess ”förfäder”. En genetisk algoritm passar bra för problem där sökrymden är alltför stor för att kunna gås igenom i sin helhet. Den hittar oftast en bra lösning, men det är inte säkert att den är optimal. Algoritmen är ofta tidskrävande också. I praktiken har genetiska algoritmer haft en bred påverkan på lösningen av optimeringsproblem som t.ex. layoutproblem av kretskort och schemaläggning. [Russel/Norvig2003] Men det går ännu inte att peka ut något område där genetiska algoritmer utan tvekan är den bästa lösningen. Framtiden får utvisa hur det blir med den frågan. 11 REFERENSER [Engelbrecht2002] Andries P. Engelbrecht, “Computational intelligence – An introduction“, sidorna 123-154, 2002. [Luger2002] George F Luger, “ARTIFICIAL INTELLIGENCE – Structures and Strategies for Complex Problem Solving”, 4:e upplagan, sidorna 469-481, 2002. [Russel/Norvig] Stuart Russel och Peter Norvig, “Artificial Intelligence – A Modern Approach”, 2:a utgåvan, sidorna 116-119, 2003. Referenser från Internet: [Obitko] Obitko, Marek. ”GENETIC ALGORITMS”. Skriven på Czech Technical University, handledare: Assoc. Professor Pavel Slavík <http://cs.felk.cvut.cz/~xobitko/ga/> (11 okt 2005) [Wikipedia] Elektroniskt uppslagsverk, http://en.wikipedia.org/wiki/John_Henry_Holland/ (10 okt 2005) [Yen] Yen, Gory G, School of Electrical and Computer Engineering Intelligent Systems and Control Laboratory, http://www.okstate.edu/elecengr/faculty/yen/5773-lecture-06.pdf (11 okt 2005) Lästips Den ovan nämnda länken [Obitko] är en mycket bra sida för den som vill lära sig mer om genetiska algoritmer på ett bra och pedagogiskt sätt. Sidan innehåller också körningsexempel, så man får se hur en G.A. arbetar. 12