Linköpings Universitet Intutionen för datavetenskap Artificiell Intelligens HKGBB0 HT-2003, oktober Genetiska Algoritmer Som problemlösning Anna Skoglund annsk334@student.liu.se 0
Abstract Genetiska algoritmer är en metod som syftar till att hitta bättre lösningar på svåra problem. Metoden bygger på Darwins evolutionsprincip om att de de individer som är bäst anpassade till omgivningen överlever och reproducerar sig, medan övriga dör ut. GA bland andra system är alltså en artificiell variant av evolution, där det som förändras är olika former av datastrukturer istället för naturliga organismer. En initialt slumpad population med individer som representar olika lösningar på ett problem, utvärderas men hjälp av en utvärderingsfunktion. De individer som är bäst lämpade selekteras för att skapa avkomma, vilken sedan muteras för att få en genetisk spridning i den nya bättre populationen. Algoritmen söker alltså själv efter lösningar, utan att nya indata krävs. Även i stora sökrymder fungerar GA bra utan att fastna i lokala extrempunkter i funktionens sökrymd. Arbetet syftar i huvudsak till att beskriva GA:s funktion, samt beskriva metoden som problemlösning med ett par exempel. 0
Innehåll Inledning 1 Darwins evolutionsprincip - från amöbor till människor 1 Den Artificiella Evolutionens historia 1 Genetiska Algoritmer 2 Biologiska begrepp 3 Kodning av kromosomer 3 Sökrymden 4 Den grundläggande genetiska algoritmen 4 Operatorer i GA 5 Selektion 7 Exempel på genetisk algoritm - TSP 8 Jämförelse med andra sökalgoritmer 10 Tillämpningsområden 10 Design av energieffektiva byggnader 10 Övriga tillämpningsområden 12 Diskussion 13 Källförteckning 14 Litteratur 14 Internet 14 Bildreferens 14 0
Inledning Darwins evolutionsprincip - från amöbor till människor Redan de gamla grekerna, som Anaximander och Empedokles, antog att människan utvecklats från lägre stående djur i något slags urval. Men det var först på 1800-talet som teorin fick sitt genomslag i och med Charles Darwins utveckling, genom en presentation av det naturliga urvalet som en förklarande mekanim till utvecklingsläran. Evolutionsteorin beskriver hur alla jordens arter har utvecklats från enklare encelliga organismer till komplexa varelser, från amöbor till människor. Teorin bygger på att arvsanlag förs vidare från förälder till barn i en population inom vilken det alltid finns en viss variation av egenskaper. De indivder som har arvsanlag som gör dem bättre anpassade för att klara sig i sin omgivning än andra individer, ger dem eller dess avkomma högre överlevnad, varför dessa arvsanlag kommer att föras vidare. Med andra ord kommer de individer som är bäst anpassade till omgivningen överleva och reproducera sig, medan övriga dör ut, varpå gynnsamma arvsanlag sprids i populationen, en process vilken kallas selektion genom naturligt urval. Att allt växt- och djurliv har uppkommit på detta och att utvecklingen fram till oss människor bygger på evolution och slump är närmast en otroligt fashinerande effekt. Den Artificiella Evolutionens historia Redan i vaggan av AI, fanns tankarna om att den enkla process som naturens biologiska evolution bygger på, även borde fungera för maskinevolution (genetiska algoritmer). Tidiga experiment baserades på den korrekta slutsatsen att man genom att på lämpligt sätt utföra mutationer på ett maskinkodsprogram, borde kunna generara ett program med ett bra utförarande för vilken enkel uppgift som helst. Dock gjordes knappt några framsteg trots tusentals timmar av CPU-tid, vilket i huvudsak kan sägas berodde på bristfälliga representationer. Evolutionära Algoritmer Fram till i dag har metoden utvecklats med bättre representationer på ett framgångsrikt sätt. Evolutionära algoritmer är en form av stochastiska sökmetoder som imiterar naturens biologiska evolution. Med dessa metoder har man lyckats simulera Darwins principer för det naturliga urvalet på datorer. Inom Evolutionära Algoritmer, som är samlingsnamnet för de olika evolutionära metoderna, har olika huvudskolor utvecklats under de senaste 30 åren. Genetiska algoritmer, utvecklades i huvudsak i USA av J.H Holland på 1960-talet. Genetisk programmering utvecklades av Koza, Evolutionära strategier utvecklades av I. Rechenberg och H. P. Schwefel, samt Evolutionär programmering av Fogel. Var och en av metoderna bygger på sin egen approach, men är alltså alla inspirerade av samma principer enligt naturens evolution. 1
Genetiska Algoritmer Genetiska algoritmer, syftar till att hitta bättre lösningar på svåra problem, och istället för att en människa programmerar datorn, modifierar programmen sig själva genom dessa algoritmer. GA bland andra system är alltså en artificiell variant av evolution, där det som förändras är olika former av datastrukturer istället för naturliga organismer. De egenskaper man framförallt tagit fasta på när man skapat en artificiell variant av processen, är att evolution ger adaption, d.v.s att evolutionen ger varje art en lämplig "överlevnadsdesign" (t.ex. ett kamouflerande färgmönster hos en art som har nytta av att inte synas alltför väl), att evolution verkar på en population, inom vilken det alltid finns en viss variation av egenskaper, och att evolution uppstår genom samverkan mellan ett fåtal "enkla" processer : Reproduktion, innebär att arvsanlag förs vidare från föräldrar till avkomma. De egenskaper en viss individ har utgör till stor del en kombination av de egenskaper dess föräldrar besitter. Genetisk variation: Inom en population av individer finns en viss egenskapsvariation, det uppstår dessutom alltid ett visst antal mutationer, dvs. slumpmässiga förändringar i den överförda arvsmassan vid reproduktion som helt enkelt beror på fel vid kopieringen av DNA:t. Konkurrens & urval : Det finns begränsade resurser i ett ekosystem, vilket medför att organismerna måste konkurrera sinsemellan för att överleva. Generellt sett får de individer som är bäst anpassade till sin omgivning den största mängden avkomma, de sägs ha högst fitness. Det är här Darwins tes om att de bäst anpassade individerna är de som överlever. I Genetiska Algoritmer används dessa principer för att evolvera lösningar på olika problem. Tanken är att om upprepandet av enkla processer på en population av organismer kan leda till adaption, så borde upprepandet av artificiella motsvarigheter till dessa processer på en population av, t.ex. datorprogram kunna leda till evolution av väl adapterade program. 2
Biologiska begrepp Alla celler innehåller en uppsättning kromosomer. Varje kromosom är en lång tråd DNA, en DNA-molekyl på vilken ett antal gener sitter. Varje gen är i sin tur en sekvens av baspar (par av nukleotider) som representerar ett protein. De exakta kombinationerna av gener som finns i arvsmassan avgör vilka protein cellerna kan framställa, vilket bestämmer cellernas egenskaper. En gen är samma sak som arvsanlag, man kan säga att varje gen kodar en viss egenskap, som t.ex. ögonfärg. Bildreferens se källförteckning De beteckningar som används för genetiska algoritmer, är desamma som används inom genetiken, de kan dock ha annorlunda betydelser. I naturen är det skillnad på genotyp som är själva genuppsättningen, och fenotyp som är resultatet av samverkan mellan genotypen och miljön. Genotypen motsvaras i GA av lösningen i kodad form, varpå populationen med de kodade lösningarna kallas genotyp-population. Varje genotyp (kodad lösning) kan översättas till motsvarande lösning i avkodad'' form, då den kallas för en fenotyp, vars populationen därmed kallas fenotyp-population. Vanligtvis skiljer man dock ej på genotypen och fenotypen inom genetiska algoritmer. Genomet är hela genuppsättningen och Locus är själva positionen i strängen. Kodning av kromosomer Även i genetiska algoritmer kodas alltså information i "kromosomer", och istället för naturliga organismer är det datastrukturer som förändras utifrån de spelregler som styr den biologiska evolutionen. Kromosomer är strängar av gener, och en gen består i enkla genetiska algoritmer av ett tecken. De enkla varianterna är vidare haploida, d.v.s. de har inte parvis ordnade kromosomer som t.ex. människan, utan endast ensamma strängar. Exempel på strukturer är binära strängar, finita tillståndsautomater eller datorprogram. En kromosom, d.v.s. en individ, ska på något sätt innehålla information för en lösning som den ska representera. 3
Binära strängar Det vanligaste kodningssättet är binära strängar, på grund av sin relativt enkla representarion. Strängen består alltså av 1:or och 0:or, där varje bit kan representera en egenskap (en gen) hos lösningen. Två individer kan därmed se ut som nedan. Individ 1 10101010 Individ 2 11110000 Permutation I permutationskodning, består varje kromosom av en sträng med tal som representerar en position i en sekvens. Kodningen används i planeringsproblem som t.ex. Travelling Salesman Problem. Individ 1 1 5 3 2 6 4 7 9 8 Individ 2 8 5 6 7 2 3 1 4 9 Det finns dock många sätt att koda, vad som är lämpligast beror i huvudsak på hur problemet ser ut. Övriga metoder är t.ex. värde-kodning, där varje kromosom är en sekvens av värden. Värden kan vara reella tal, bokstäver eller något objekt. Även trädstrukturer kan användas som kodning, då varje kromosom är ett träd av ett antal objekt, som t.ex. funktioner eller kommandon i ett programspråk. Träd-struktur-kodning används inom genetisk programmering, för att evolvera program eller andra strukturer. Sökrymden Vid problemlösning, letar man oftast efter den bästa lösningen. Varje punkt i sökrymden representerar en möjlig lösning. Att leta efter en lösning är ofta samma sak som att leta efter extrema värden av en funktion definierad över sökrymden, d.v.s. minimum eller maximum. Vanligtvis är endast ett fåtal punkter kända i sökrymden, men i processen för GA, genereras hela tiden nya möjliga lösningar. Den grundläggande genetiska algoritmen Algoritmen startar med en population av kromosomer (genotyper) som initialt har slumpats fram. Dessa kromosomer representerar ett antal lösningar, som sedan utvärderas med hjälp av en utvärderingsfunktion genom att gå igenom varje individ efter lämplighet som lösning på det aktuella problemet. De individer som är bäst lämpade, d.v.s. som har fått högst lämplighetsvärde, kombineras för att skapa nya individer vilka sedan muteras för att generera en ny population. När den nya populationen är komplett ersätts den gamla. Nya generationer genereras på detta sätt tills det att en individ, d.v.s. en lösning uppfyller ett kriterium, eller till dess att körningen avbryts. Nedan följer algoritmen, varefter stegen i sig förklaras ytterligare. 4
1. [Start] Generera en slumpmässig population med n kromosomer. (Lämlpliga lösningar för problemet) 2. [Fitness] Evaluera lämpligheten för varje kromosom i populationen. 3. [New population] Skapa en ny population genom att upprepa följande steg till dess att populationen är komplett. 1. [Selection] Selektera två förälderkromosomer från populationen enligt dess lämplighet. 2. [Crossover] Korsa förälderkromosomerna med en viss sannolikhet för att skapa ny avkomma (barn). Om ingen crossover genomförs kommer avkomman att bli en exakt kopia av föräldrarna 3. [Mutation] Mutera avkomman med en viss sannolikhet på varje locus, d.v.s. position i kromosomen. 4. [Accepting] Placera den nya avkomman i den nya populationen 4. [Replace] Använd den nya genererade populationen för en ny körning av algoritmen. 5. [Test] Om slutvillkoret är uppfyllt, stop, och returnera den bästa lösningen I den aktuella populationen. 6. [Loop] Gå till steg 2 Operatorer i GA För att kunna skapa nya bättre generationer krävs operatorer för reproduktion, motsvarande den sexuella förökningen i den biologiska världen, samt för den genetiska variationen. De två vanligaste operatorerna för GA är crossover och mutation, och de är även de två viktigaste principerna. Utan crossover kommer nya populationen bara att bli så bra som den bästa individen, medan mutation i sin tur genom sin slumpmässiga förändring av avkomman kan skapa bättre förutsättningar för individen, vilket även genom ökningen av den genetiska spridningen av populationen, ökar chansen att hitta den globala extrempunkten. Algoritmens prestation beror alltså till stor del på hur dessa operatorer är utförda, och vilka operatorer som lämpar sig bäst beror på hur problemet ser ut. Hur Crossover Förökningen görs genom att två individer byter alla gener efter en viss slumpvis utvald position i individen, s.k. överkorsning (crossover). Crossover skiljer sig beroende på kodningsstrukturen (binär-, permutation-, värde-, eller trädkodning). De exempel som visas nedan grundar sig på binär kodning. I det algoritmexempel som följer efter stegbeskrivningen, beskrivs även crossover vid permuationskodning. 5
Enpunkt crossover Vid enpunktscrossover väljs en punkt i strängen slumpmässigt ut. Därefter får avkomman ärva den första delen fram till punkten av den första föräldern, medan den andra delen tas från den andra föräldern. En sådan överkorsning vid punkt fyra skulle då ge följande avkomma. Föräldrar Avkomma Individ 1 1010/1010 Æ 1010/0000 Individ 2 1111/0000 Æ 1111/1010 Tvåpunkts crossover Tvåpunkts-överkorsning bygger på samma princip, där avkomma 1, får första delen av strängen från förälder1, andra delen från förälder 2 och den sista delen från förälder 1, och vice versa för avkomma 2. Nedan visas en överkorsning vi punkterna två och fyra. Föräldrar Avkomma Individ 1 10/10/1010 Æ 10/11/0000 Individ 2 11/11/0000 Æ 11/10/1010 Övriga metoder Bland övriga metoder för överkorsning finns Uniform crossover, där bitar slumpvis kopieras från den första eller den andra föräldern, eller Aritmetisk crossover, där aritmetiska operationer genomförs för att skapa avkomma. Mutation Efter att överkorsningen är genomförd sker mutation på avkomman. Varje lokation (locus) är utsatt för en slumpmässig mutation med en liten oberoende sannolikhet, oftast i storleksordningen 1 promille. Om det blir en mutation förändrar man den delen hos individen. För en binär sträng skulle det kunna se som följer då mutation sker på punkt två. 1010101010 Æ 1110101010 Helt enkelt att en 0:a byts ut mot en 1:a. Genom att använda mutation ökar sannolikheten för att hitta den globala maxpunkten, eftersom detta innebär att den genetiska spridningen i populationen ökar. Dock ska man undvika att mutera för ofta, då detta kan leda till att algoritmen aldrig hittar något stabilt maxvärde eftersom de hela tiden måste kompensera för mutationerna som ju oftast gör individerna sämre varför den låga sannolikheten på 1 promille är vanlig. 6
Selektion För att kunna representera den konkurrens och det urval som sker enligt Darwins tes att de bäst anpassade individerna är de som överlever, krävs en utvärderingsfunktion på vilken urvalet kan grundas. Selektionen innebär att individer väljs ut ur populationen för förökning, och principen för detta urval kan variera. Två av de vanligare metoderna är roulette-hjul-selektion och rangordnings-selektion. För att kunna genomföra utvärderingen avkodas först varje genotyp i generation n, och genererar motsvarande fenotyp. Fenotypen/genotypen tilldelas sedan sitt lämplighetsvärde, och ju mer anpassad individen är efter satt kriterium, desto större är chansen att den väljs ut för förökning. Roulette-hjul-selektion I proportionell selektion, eller roulettehjulsselektion som det ibland kallas, är sannolikheten att en individ ska få para sig direkt proportionell mot hur bra individen är. Först beräknas summan av alla individers lämpligheten, för att sedan slumpa fram ett värde fram mellan 0 och denna siffra. Man går sedan igenom individ för individ och summerar deras lämplighet, och när summan är lika med det framslumade värdet, returneras den individ man kommit till. Varje individ kan följaktligen ses som en tårtbit på ett roulettehjul, och när kulan snurrar i hjulet, är chansen störst att den stannar vid de individer med störst lämplighet, eftersom ju högre lämplighet individen har, desto större är dess område. Denna metod har dock problem när skillnaden är stor mellan lämplighetsvärdena. Om t.ex. den bästa individen har ett lämlighetsvärde motsvarande 90% av summan av alla värden, innebär detta att övriga individer har väldigt liten chans att väljas. Rangordnings-selektion För att komma ifrån svagheterna med den proportionella selektionen, kan istället rangordnings-selektion användas. Denna metod innebär att man först rangordnar populationen varefter varje individ tilldelas sitt lämplighetsvärde. Den sämsta individen kommer att få värdet 1, den näst sämsta 2 o.s.v. och den bästa individen kommer att få lämplighetsvärdet n, (antalet individer i populationen). På detta sätt kommer alla individer att ha en chans att väljas, då skillnaden mellan dess värden blir avsevärt mindre. Elitism När en ny population genereras genom överkorsning och mutation, finns det ingen garanti för att den bästa individen kommer att leva vidare. Detta innebär risken att den nya populationen kan bli sämre än den gamla. För att förhindra detta använder man sig av elitism, vilket är en metod som innebär att man kopierar den bästa individen (eller några av de bästa individerna). På så sätt förbättrar man algoritmens prestation avsevärt eftersom man behåller de bästa lösningarna. 7
Exempel på genetisk algoritm - TSP Handelsresandeproblemet Det finns städer och givna avstånd mellan dem, men försäljaren vill inte resa mer än nödvändigt. Uppgiften är att hitta en sekvens av städer med minimal resväg. Eftersom antalet möjliga resvägar för N städer skulle innebära N! beräkningar, skulle antalet möjliga resvägar för 30 städer innebära 30! d.v.s. 2.65 *10 32 adderingar (summan av delsträckorna för varje resväg). Anta att man gör en miljard summeringar per sekund, då skulle det ta 8,000,000,000,000,000 år att hitta lösningen. Genom att endast addera ytterligare stad, skulle antalet adderingar öka genom en faktor av 31, vilket uppenbarligen blir omöjligt att lösa. En genetisk algoritm kan användas för att hitta lösningen på mycket kortare tid. Även om den troligtvis inte hittar den bästa lösningen, kan den hitta en lösning nära den optimala på mindre än en minut, med rätt utformning. I detta problem används Permutations-kodning p.g.a. ordningsstrukturen. Varje tal representerar en stad, och kromosomerna beskriver ordningen för städerna i vilken försäljaren ska besöka dem. Exemplet illustreras i liten skala med enklast möjliga operatorer för att ge överblick. 1. Kodning Individ 1 1 2 3 4 5 Individ 2 2 3 5 4 1 2. Enpunkts crossover vid punkt 2 Den första individen kopieras fram till den slumpmässigt valda punkten. Men eftersom strängen ej är binär, innebär det risk för kopiering av likadana tal om crossover sker på tidigare illustrerat sätt. Detta kan man lösa genom att den andra individen scannas av, och om talet ännu ej finns hos avkomman, adderas det. Föräldrar Avkomma Individ 1 1 2/3 4 5 1 2/3 5 4 Individ 2 2 3 5 4 1 Samma sak sker alltså för att få fram den andra avkomman Föräldrar Avkomma Individ 1 1 2 3 4 5 Individ 2 2 3/5 4 1 2 3/1 4 5 8
3. Mutation Mutation kan sedan ske genom att två tal slumpmässigt väljs ut för att kastas om i sin position. Avkomma 1 2 3 5 4 Æ Muterad avkomma 1 5 3 2 4 Denna individ motsvarar alltså följande resväg: 1 3 2 4 5 Vi söker nu en minimal väg i en komplett graf, d.v.s. alla noder är kopplade till varandra, med n antal noder. 1. En population men n antal individer som representerar olika resvägar mellan städerna slumpas fram. 2. Lämplighetsfunktionen går igenom alla individerna för att ge dem ett värde. Denna funktion är i handelsresandens problem relativt enkel, det är helt enkelt den totala geometriska resvägen. Således betyder ett lågt lämplighetsvärde att en individ är bra. 3. En ny population skapas genom att selektera de bästa individerna. I detta fallet är sannolikheten omvänt proportionell mot lämplighetsvärdet-värdet. Genomför crossover samt mutation, för att sedan lägga till individen till den nya populationen. Detta görs tills det att den nya populationen innehåller n individer. 4. Evaluera den nya populationen genom att gå till steg 2. Loopen körs alltså tills ett satt kriterium är nått (t.ex. ett visst antal genererade populationer, eller viss förbättring av den bästa lösningen). 9
Jämförelse med andra sökalgoritmer Svårigheten med sökning när det gäller problem med en hög förgreningsfaktor är alltså att det tar lång tid för beräkningarna. Det finns dock likheter mellan GA och informerad sökning, heurestiken i sökningen motsvaras av lämplighetsfunktionen i GA, det är på denna punkt som det avgörs hur programmet ska fortsätta. I sökning är det den nod med lägst kostnad som ska expanderas, medan lämplighetsfunktionen i GA avgör hur hur stor sannolikhet en individ har att överleva till nästa generation. GA innehåller alltså ett slumpmoment som inte finns i sökning. Enligt David Coley (1999) är det alltid möjligt att med hjälp av tillräcklig information om sökrymden, och med rätt heurestik skapa en specifik sökmetod som fungerar bättre än genetiska algoritmer. Men det ligger mycket arbete bakom en sådan process, det måste för varje nytt problem definieras operatorer, start- och måltillstånd, samt heurestik som kan vara svår att komma fram till. Här skiljer sig Genetiska Algoritmer avsevärt på så sätt att den grundläggande algoritmen ser likadan ut för en mängd problem, det enda som skiljer är utvärderingsfunktionen, vilket gör att den är lätt att implementera. Tillämpningsområden Design av energieffektiva byggnader Under designprocessen, ligger det ett oerhört stort värde i att reducera energiåtgången för en byggnad. En viss reducering av energiförbrukningen kan uppnås med relativt enkla individuella mätningar, men när det gäller högre nivåer av effektivitet, krävs samanhängande applikationer av mätningar som tillsammans optimerar effektiviteten av det kompletta byggnadssystemet. Detta gör designen till ett optimaliseringsproblem med flera komponenter, vilket arkitekten kan känna sig dåligt utrustad för, varför detta blir ett allvarligt hinder i avanceringen av högeffektiva designer. Traditionellt utgår arkitekten i designen av en byggnad från estetiken, genom att först rita ett hus för att i efterhand beräkna energieffektiviteten. Om energiåtgången är för hög justeras arkitekturer för att att få ett bättre värde. Detta leder till mycket efterarbete då många justeringar omberäkningar kan krävas för att uppnå ett resultat till belåtenhet. Risken är även stor att designen med denna metod resulterar i stora energiförluster, som att byggnaden till exempel drar mer ström än nödvändigt för att värmas upp. Genom att applicera genetiska algoritmer på detta problem, kan man istället genom evolution låta datorn hitta den design som är mest effektiv ur energisynpunkt. Problemet med detta är dock att designen av en optimalt energieffektiv byggnad sällan går ihop med den estetiska designen. De flesta traditionella optimaliseringstekniker som skulle kunna appliceras på problemet, är begränsade på så sätt att endast ett resultat uppnås, och på grund av svårigheten att ta hänsyn till faktorer som estetik i optimaliseringsprocessen, blir resultatet i dessa fall oftast oacceptabelt. Traditionella metoder har även svårigheter att navigera genom sökrymder med lokala extremer, vilket det är troligt att finnas många av i 10
ett sådant problem. Genom att använda GA på problemet kan man istället ta fram ett antal byggnader som ligger nära den optimala lösningen. Givet det antal individuella attribut som kombineras för att skapa en byggnad, ger detta otroligt många möjliga designer. I sitt arbete kring detta, beskriver Coley (2002) ett förslag av en kombination av en modell för byggnadens värmekarakteristik och en genetisk algoritm för att utforska byggnadsrymden. Med hjälp av energisimulatorn Excalibur har energiförutsägningar gjorts för individuella byggnader över ett helt år. Dels för att se hur de klarar sig i olika väder, men även för att ta hänsyn till solstyrkan från olika riktningar. Modellen bygger på att ett större mängd parametrar klumpas ihop, och i detta fall bildar fem stycken helt okända och sinsemellan olinjära variabler. Denna förenkling av varialber sammanfattas till en okänd generell parameter. GA skall sedan komma fram med förslag baserat på dessa deskriptiva parametrar. Fördelen med denna förenklade modell är snabbheten som medger att många simuleringar av konstruktioner kan prövas med relativt enkel maskinvara. Dessa variabler räknas ut från husets konstruktion, och innefattar information om hur bra huset lagrar värme samt hur snabbt det förlorar värme. För att huset ska bli så energieffektivt som möjligt, vill man hitta en balans mellan att absorbera solvärme snabbt och samtidigt inte förlora den absorberade värmen så fort. Naturligtvis måste man när man skapar eller manipulerar individerna ta hänsyn till vilka dimensioner avde olika delarna som finns på marknaden. Eftersom man vill få fram flera designer är det viktigt att behålla en genetisk spridning i populationen, d.v.s. man vill utöver den globala maxpunkten även hitta de olika lokala maxpunkterna. För att lösa detta använder man dels selektion och mutation. Men för att förstärka dessa metoder och ytterligare minska konvergering och öka sannolikheten för att även få med lokala maxpunkter i sökrymden, kan man även t.ex. förbjuda två individer i en populaiton att vara identiska. Programmet för att utveckla designen för dessa byggnader består av följande delar: 1. Skapa en initial slumpad population med N individer, där varje individ motsvarar en design. 2. Räkna ut de fem variablerna för varje individ 3. Räkna ut den årliga energiförbrukningen för varje design i populationen. 4. Använd GA för att skapa nya designer genom selektion, rekombination och mutation 5. Upprepa punkt 2 till 5 tills ett slutkriterium är nått. 6. Filtrera från de bästa individera ut de byggnader som stämmer överens med en estetiskt tilltalande design. Med hjälp av genetiska algoritmer erbjuds arkitekten ett urval av optimerade, kompletta byggnadspaket, från vilka ett urval kan göras. 11
Övriga tillämpningsområden I nuläget finns en mängd användningsområden för genetiska algoritmer, från bild processering inom medicin till modellering av rörnätverk. Intresset växer också inom byggnadsbranchen (Coley, 2002). Här följer ett urval av de användningsområden som finns i dag. Ickelinjära dynamiska system förutsägningar, data analyser Robotik Utveckling av LISP-program (genetisk programmering) Design av neurala nätverk, både vad gäller arkitektur och vikter Strategi-planering Sekvens-schema-läggning Bildbehandling Biokemi (modell bl.a. immunsystem, ekosystem och evolutionen) Beräkning av banor för rymdfarkoster m.m. 12
Diskussion Det faktum att genetiska algoritmer bygger på evolutionsprincipen är en oerhört spännande tanke i sig. Att männsikan med hjälp av samma principer som hon själv har kommit till på, kan lösa problem i sin omgivning. Och att man i sin tur genom att endast sätta begränsningarna, kan låta datorn utveckla lösningarna är verkligt lockande. Man möter också en stor optimism inom området vilken är svårt att säga om den beror på metodens verkliga prestationer, eller tilltron till den princip som metoden bygger på. Den stora fördelen med Genetiska Algorimter är dess parallellism. Genetiska algoritmer går igenom sökrymden med fler individer, detta gör att GA utsätts för en mindre risk än andra algoritmer att hamna fastna i en lokal extrem (max- eller minpunkt). Algoritmerna är även enkla att implementera, endast utvärderingsfunktionen behöver skrivas om för att lösa ett nytt problem. Dock kan svårigheten för vissa komplexa problem ligga just i att välja och implementera kodningen och utvärderings-funktionen. En annan nackdel med Genetiska Algoritmer kan vara dess beräkningstid. GA kan vara långsammare än andra metoder. Men med tanke på att beräkningen kan avslutas när så önskas, behöver den längre körningen inte vara ett stort problem. Men detta är även ett till synes resurskrävande problem som borde förbättras med snabbare datorer med mer minne. GA är självinducerande på så sätt att den själv skapar nya data för att hitta den bästa lösningen, varför den kan jämföras med induktiv inlärningsmetod. Trots att metoderna för algoritmerna är relativt enkla, har man lyckats lösa väldigt komplexa problem, och att det dessutom rör sig om så vitt skilda domäner som biokemi och byggnadsbranchen gör metoden mycket attraktiv. Mycket arbete kvarstår dock för att identifiera de förutsättningar under vilka gentiska algoritmer presterar bra, men sannolikheten för att metoden skall fortsätta att utvecklas upplevs dock som förhållandevis stor, efter att ha fått en inblick i området, och än så länge är optimismen inte motbevisad. 13
Källförteckning Litteratur Low-energy design: combining computer-based optimisation and human judgement, David A. Coley, Stefan Schukat, 2002 An Introduction to Genetic Algorithms for scientists and Engineers, David A. Coley, University of Exeter, World Scientific Publishing, 1999 Internet hitchhikers guide to genetic algorithms: http://surf.de.uu.net/encore/www/ 03-10-22 http://www.ida.his.se/~bjorne/ga/sid0.html 03-10-22 http://cs.felk.cvut.cz/~xobitko/ga/ 03-10-22 http://www.susning.nu/evolution 03-10-22 http://susning.nu/genetiska_algoritmer 03-10-22 Bildreferens http://cs.felk.cvut.cz/~xobitko/ga/ 03-10-22 http://www.ida.his.se/~bjorne/ga/sid0.html 03-10-22 14