Genetiska algoritmer vem raggar på vem?, kogvet 2 petbe082@student.liu.se
petbe082@student.liu.se 2(13)
Jag har valt att skriva om genetiska algoritmer för att jag finner metoden ytterst intressant, att kunna med hjälp av en idé om livet självt kunna utveckla algoritmer eller program, det är en kittlande tanke. Jag har valt att skriva om hur olika urvalsmetoder i en algoritm kan påverka hur fort man når målet, vi kommer att se att det är en skillnad som kan vara betydlig. Anledning till att jag valt att göra som jag har gjort är att de genetiska algoritmer som jag hittills sett har haft ett snävt sätt att simulera evolution, jag vill bredda detta lite och applicera några av de naturliga fortplantningssätten för att se hur utvecklingen då fortgår. Darwins evolutionlära är en teori som beskriver arternas uppkomst och utveckling. Man förknippar ofta evolution med Charles Darwin och även om inte Darwin vart först med sådana idéer så är det han som blivit känd för eftervärlden för detta. (Fogel, 1995:31) Evolutionsteorin går i korthet ut på att de individer som har bäst överlevnadsförmåga är även de som kommer att fortplanta sig, och på detta sättet kommer de positiva egenskaperna att fortleva och de svaga att dö ut (URL:1). Detta leder till att de enskilda individerna blir starkare och att arten i sig blir starkare. Grunden för hela evolutionsteorin är att alla individer inte är lika. Att de har olika arvsanlag gör de har olika egenskaper och att de därmed har olika förutsättningar för att överleva. Vissa individer har egenskaper som är bättre anpassade för den miljö de lever och de kommer därmed att klara sig bättre och ha större chans att fortplanta sig. Dessa positiva egenskaper kommer att fortleva till deras avkomma och de kommer att ha större chans att fortleva. (URL:3) petbe082@student.liu.se 3(13)
Genetisk programmering tar Darwins idéer om att den bäst anpassade överlever och implementerar det på en beräkningsbar nivå. Styrkan hos genetiska algoritmer (GA) och dess släktingar kommer av det faktum att tekniken är robust och pålitlig och kan hantera problem i olika områden. Genetiska algoritmer kommer inte att hitta den mest optimala lösningen, men den kommer att hitta en lösning om det finns en lösning och den lösningen kommer att vara godtagbart snabb. Det finns tekniker för avgränsade områden som är både snabbare och mer precisa än genetiska algoritmer men de har även ett väldigt begränsat handlingsområde, och det är där de tekniker inte kan agera som genetiska algoritmer visar sin styrka. (Beasley m fl, 1993) De första spåren av evolution i datorn kan spåras tillbaka till slutet av 40-talet då Turing i sin uppsats Intelligent machines spekulerade om möjligheterna att låta automatgenerera datorprogram som skulle bestå av tiotusentals små bitar. Han gjorde även en direkt kopppling mellan dess program och sökning. Turing identifierade tre angreppssätt på hur sökning skulle kunna användas för att skapa dessa program varav en kallades genetical or evolutionary search. (Fogel, 1995:55) På 1950 och 60-talen kan man se flera forskare som oberoende av varandra studerade hur evolutionen kan nyttjas som optimeringverktyg för problem man stötte på. 1965 så presenterade Rechenberg något han kallade evolutionsstrategier, en metod där han optimerade värdena och formen för en vingprofil. Denna metod startade med endast två individer i en population, en förfader och en avkomma, där avkomman var en muterad version av förfadern. Korsning och populationer med många individer kom först senare i denna metod. Fogel, Owens och Walsh utvecklade något de kallade evolutionär programmering, en teknik där de jämförde lösningsförslag med ett slutmål och lät förslagen muteras för att sen börja om igen. Fältet kom att utvecklas då John Holland på 1960-talet uppfanns de genetiska petbe082@student.liu.se 4(13)
algoritmerna. Skillnaden mellan genetiska algoritmer och evolutionära strategier och programmering vad att Hollands mål inte var att designa algoritmer för att lösa specifika problem utan att på ett högre plan studera den anpassning som sker i naturen och utveckla sätt att som man kan importera dessa principer i en dator. I sin bok från 1975 Adaption in Natural and artificial systems presenterade Holland en genetisk algoritm som just var en abstraktion från naturen. Hollands algoritm är metod för hur "kromosomer" kan ärvas i en population och genom att nyttja naturligt urval i form av korsning, mutation och rekombination. Hollands bidrag med en populationsbaserad algoritm med nyss nämna urvalsmetoder var ett betydande bidrag till forskningen. Rechenbergs evoltionsstrategier, evolutionär programmering och genetiska algoritmer blev ryggraden i vad som kom att kallas evolutionär beräkning (evolutionary computation). Även ett antal biologer har nyttjat evolutionär beräkning för att göra kontrollerade experiment om hur evolutionen kan tänkas agera på riktigt. (Mitchell, 1996:2-) Idén med att låta maskiner lära sig genom simulerad evolution har blivit föreslagen många gånger. Cannon föreställde sig naturlig evolution som en lärprocess, väldigt lika i både utförande och konsekvens som det en individ genomgår följt av slumpvis trial-and-error. Även Turing såg sådana samband. Campbell sade t ex in all processes leading to expansions of knowledge, a blind-variation-and-selective-survivial process is involved. (Fogel, 1995:55) Genetisk programmering är en utökning den genetiska algoritm som Holland beskrev i sin bok Adaption in natural and artificial systems (Holland, 1975) I dagens forskning används ofta termen genetiska algoritmer för att beskriva något som ligger ganska långt från Hollands originalidé (Mitchell, 1996:3). Genetiska algoritmer används inom en mängd områden som Mitchell och Forrest nämner som exempel (1993): petbe082@student.liu.se 5(13)
Optimering, GA kan användas för optimeringsuppgifter, så som numeriska optimeringar som kombinatoriska optimeringar som t ex kretsdesign etc. Automatisk program, GA har använts för att utveckla program för specifika ändamål och för att designa beräkningsbara strukturer, t ex cellulär automata. Maskin och robotinlärning, GA har använts i många maskininslärningssituationer, t ex klassificering och förutsägelseuppgifter för ett dynamiskt system. GA har även använts för att designa neurala nätverk. Ekonomiska modeller, GA har använts för att modellera processer av innovation, utvecklingen av budstrategier och uppkomsten av ekonomiska marknader. Sociala system, GA har använts för att studera evolutionära aspekter av sociala system, så som utvecklingen av samarbete. Denna lista är inte uttömmande men ger en liten fingervisning om vilka områden som vi idag ser att GA används. Som vi ser så har arbetsfältet för GA breddats betydligt sen starten och intresset ökar ständigt. (Mitchell, 1996). Fogel (Fogel, 1995:73-74) beskrev en standardmall som de flest genetiska algoritmer är utformade efter. 1. Problemet måste definieras och varje lösning måste kunna bestämmas med en enskild funktion. 2. En population med slumpmässiga individer skapas intitalt. Varje individ är en möjlig lösning på problemet. 3. Alla individer utvärderas med hjälp av fitnessfunktionen från steg 1. 4. Med fitnessvärdet så ges varje individ en grad av möjlighet till reproduktion. petbe082@student.liu.se 6(13)
5. När alla individer utvärderats så sker en reproduktion, med de till buds stående tillvägagångssätten. De sämsta individerna dödas. 6. När en ny generation skapats så början hela processen om från steg 3. Denna process är sedan itererad över flera gånger, där varje iteration kallas för "generation". Efter flera generationer så har man en eller flera individer med ett högt fitnessvärde. (Mitchell, Forrester, 1993) Förståelsen för betydelsen av de genetiska operatorerna är idag relativt god. Mutation introducerar förändringar i populationen, rekombination flyttar om redan existerande kromsomer hos individerna och selektion plockar ut de individer som anses vara bäst (enligt fitnessfunktionen). Mutation och rekombination utforskar och utökar sökrymden medan selektionen utnyttjar den nyss utökade sökrymden. En god balans mellan dessa operatorer är således av yttersta vikt för att algoritmen ska bli lyckad. (Bäck, 1994) I genetiska algoritmer så har länge rekombination setts som det viktigaste sätter att förändra individer, detta det snabbt utforskar problemrymden. (Beasley m fl, 1993) Att välja rätt individer som ska få fortleva är av yttersta vikt. En vanlig selektionsmetod inom GA är något som kallas fitness-proportinate selection, där antalet gånger en enskild individ beräknas fortplanta sig är lika med dess fitnessvärde delat med fitnessgenomssnittet i populationen. Detta brukar biologer även kalla viability selection. (Mitchell, 1996:11). Sexuell reproduktion är det vanligaste sättet att reproducera sig bland däggdjur. I sexuell reproduktion så ska det ske ett urval av individer, i arter med två kön så spelar skönhetstävlingar en stor roll. Med petbe082@student.liu.se 7(13)
skönhetstävlingar menar jag att det ena könet visar upp sina positiva egenskaper för att övertyga det andra könet om att de är bäst lämpade att få redproducera sig, oftast är det hanarna som tävlar med varandra. I många arter har hanarna utvecklat vissa attribut som endast är till för dessa tävlingar, t ex vinkarkrabbans överdimensionerade klo. Klon har ingen funktion för krabbans överlevnad utan bara en symbol för att visa att krabban minsann är så stark att den kan slösa mycket energi på att bygga en helt meningslös klo. (Fogel, 1995:42) Korsning (eller crossover som det kallas) är när man tar två individer och låter vissa kromosomer byta plats med varandra, på så vis skapar man en avkomma av dessa individer som ärver egenskaper från sina föräldrar. Korsning appliceras inte på alla individer i en population utan endast på ett fåtal, de individer som inte korsas dupliceras helt enkelt. (Beasley m fl, 1993) Nu har jag inga kön alls i mitt experiment utan alla individer får ses som tvekönade där könet ej är bestämt. Det är hur dessa korsningar läggs upp och genomförs som jag ska studera lite närmare i kommande delar av rapporten. Rekombination (eller inversion som det kallas på engelska) är när en sträng kromosomer byter ordning eller helt skiftar riktning. (Mitchell, Forrest, 1993) Mutation är ändringar i en individ arvsmassa, i mitt fall i en individs egenskaper. Så mutationen verkar på en enskild individ och denna avkomma stoppas sedan in i populationen. I en population där det endast sker befruktning mellan två individer behövs mutation för att säkerställa utvecklingen. Annars skulle utvecklingen avstanna och alla individer skulle likriktas och inavel skulle ske. Detta i en liten population med få individer, en sådan population blir i regel sämre att stå emot petbe082@student.liu.se 8(13)
förändringar (t ex sjukdomar eller ändrade levnadsfördhållanden). (URL:3) Mutation appliceras på avkomma efter rekombination eller korsning och ändrar endast en liten del av kromosomerna i en begränsad utsträckning. (Beasley m fl, 1933) Fortplantning (som en delmängd av korsning) kan ske på två olika sätt, dels genom asexuell reproduktion, dels med sexuell reproduktion. Asexuell reproduktion är kloning och är enligt gängse evolutionär teori ett effektivare sätt att producera avkomma än sexuell. På detta sättet slipper honan föda hanar som ändå inte kan själv kan föda några barn, och kan därmed helt producera döttrar. Honan undviker även att hennes barns DNA ska blandas ut med någon annans och kanske försämras. Asexuella honor slipper även lägga tid och energi på att hitta en lämplig partner. Exempel på djur som tillämpar asexuell reproduktion är t ex bladlöss, björnbär och backlök. (URL:2) Kloning eller asexuell reproduktion är helt i linje med originaltanken med GA och kloning i detta fallet utökar domänen för GA. Med kloning så blir man helt beroende av mutation för att få en utveckling i populationen. Det finns även försök gjorda där kloning visat sig vara ett mycket bra sätt att lösa t ex Travelling salesman problem. (Chatterjee m fl, 1996) Kloning eller asexuell fortplantning är i princip en korsning utan korsning, där en individ får chansen att fortleva helt utan genetisk förändring (Beasley m fl, 1993). Jag har dock i mitt experiment valt att göra detta val explicit för att se hur detta går. I mitt experiment har jag valt att modifiera de urvalsmodeller som finns för genetiska algoritmer, de som jag har tittat på har varit helt inriktade på att hela tiden utgå från att de med bäst fitnessvärde ska para sig. Detta anser jag är ett lite snålt synsätt, det kan finnas situationer då andra matchningssätt kan vara mer petbe082@student.liu.se 9(13)
lämpade för att snabbare uppnå ett visst resultat. Jag har valt ut fyra sätt som man kan para ihop individer på och experimenterat med dessa:. Slumpat, individerna slumpas ihop till par, ingen hänsyn tas till fitness-värdet. Avelshingst, den bästa individen får para sig med flera individer.. Alpha-par, de två bästa individerna får para sig med varandra, de nästbästa får para sig med varandra osv.. Kloning, varje individ delar sig sig i barn som muterar sig. Jag har även valt ut två olika scenarior för dessa matchningssätt:. Egenskapsjakt, här så vill jag bara få en så snabb ökning av individernas egenskaper som möjligt.. Rumsorientering, här vill jag på snabbast möjligast sätt hitta vägen runt i ett rum. Egenskapsjakt är en ren kapplöpning med tiden om att utveckla så bra egenskaper som möjligt. Individerna har fyra egenskaper (strength, dexterity, resistance och intelligence) och fitnessfunktionen räknar bara ihop de här fyra egenskaperna, den individ som har det högsta värdet är helt enkelt bäst utvecklad. Rumsorientering är lite annorlunda till uppbyggnaden, här gäller det att ta sig runt ett rum och för varje ruta som individen går rätt ökar dess fitness med ett. De delar av en individ som är rätt muteras inte utan det är endast från det ställe där individen gick fel som muteras. Individens riktning har kännetecknats av en siffra mellan -1 och 1, där -1 varit vänster, 0 rakt fram och 1 höger. Mutationen har i egenskapsjakten varit en slump på +-2 på varje egenskap och i rumsorienteringen +1, när värdet blivit 2 så görs det om som att individen vänder sig om, och blir därmed -1. Mutationsgraden har varit 50% i bägge scenariorna. petbe082@student.liu.se 10(13)
Jag har valt att implementera mina experiment i PHP, detta då det är språk jag är mycket van vid och det är ett snabbt språk att utveckla då det är otypat etc. Då jag är en stark anhängare av NIH (Not Invented Here) och fri mjukvara har jag valt att bygga vidare på ett redan existerande arbete (URL:4). Detta är en PHP-klass där en grund för GA redan är utvecklad. För den mer kapplöpningsliknande egenskapsjakten så ser vi klart och tydligt att avelshingsten utvecklades bäst (ju högre poäng/staplar, desto bättre). Detta kan bero på hur själva experimentet är utformat, par med höga snittvärden kommer helt sonika att få avkomma med högre värden och så vidare. Man hade kunnat utforma testet på annat sätt, t ex att i vissa generationer säga att intelligence är mer värt än t ex strength, och i andra generationer något annat. Detta hade kunnat användas för att simulera olika former av kultur- eller samhällsskiftningar som ställer olika krav på olika generationer. I rumsorienteringen blir det inte lika viktigt att jaga höga siffror utan att utvecklas efter miljön mer och här lyckas klonen bäst av alla (ju lägre siffror/staplar desto bättre). Detta kan bero på att en bra DNA inte blandas ut med sämre DNA utan behålls intakt (dock muteras avkomman). petbe082@student.liu.se 11(13)
I resultaten så ser man ganska tydliga skillnader mellan de olika implementationerna. Detta har troligtvis att göra med att de löser helt olika problem och då bäst nyttjar olika selektionsmetoder på olika sätt. Jag tycker att genetiska algoritmer är ett mycket intressant ämne, att man nyttjar en teori om livets fortgång för att få program att skriva sig själva. Dock så känns det lite som brute-force på något sätt då det är väldigt lite eller ingen alls heurestik inblandad, algortimen använder ingen kunskap som den själv kan ta reda på utan kör bara på i samma bana hela tiden. Jag tycker att man borde kunna göra någon form metagenetiska algoritmer, algoritmer som kan dra någon sorts slutssats av problemet i fråga. Att kunna skapa någon form av domänspecifik kunskap vore inte helt fel. För säg att en dammsugarobot letar sig runt efter väggen i ett rum, kommer den in i ett annat rum så måste den göra om allt igen. Det borde finnas något sätt att att utnyttja att den faktiskt redan besökt ett rum, rum har ju faktiskt några saker som kännetecknar och binder samman dem. Idén för ett rum är samma oavsett om det är långt eller smalt. Jag tycker även att mutationen på något sätt borde kunna muteras, t ex är det dumt att mutera fram sådana individer/egenskaper som tidigare visat sig dö ut väldigt snabbt. T ex att evolutionen lär sig vad som funkar och därmed viktar mutationen. Att i mitt fall med egenskapsjakten så viktas " " till lägre chans att uppträda och att "+" viktas till högre chans. detta skulle påskynda evolutionen men skulle ändå inte leda den in i en återvändsgränd. För om världen ändras och det blir individer med så låg fitness som möjligt som överlever så kommer även mutationen att viktas om. Men i en ensidig eller likartad värld kommer lösningen att uppträda tidigare. Ceptilis avhandling hittade jag tyvärr nu på slutet och har inte kunnat läsa mer än det som finns tillgängligt på nätet, men den ser mycket intressant ut. Han nämner bland annat detta med kloning och hur bladlöss använder detta för att säkra sin fortlevnad. Se URL:2. petbe082@student.liu.se 12(13)
Fogel, David B. Evolutionary computation : toward a new philosophy of machine intelligence (1995) IEEE Press Mitchell, Melanie. An Introduction to Genetic Algorithms (1996) MIT Press Bäck, Thomas. Selective Pressure in Evolutionary Algorithms: A Characterization of Selection Mechanisms (1994) IEEE Beasley, David. Bull, R David. Martin, R Ralph. An overview of Genetic Algorithms (1993) Mitchell, Melanie. Forrest, Stephanie. Genetic algorithms and artifical life (1993) Chatterjee, Sangit. Carrera, Cecilia. Lynch, Lucy A. Genetic algorithms and traveling salesman problems. (1996) European Journal of Operational Research 93 (1996) 490-510 (URL:1) http://sv.wikipedia.org/wiki/det_naturliga_urvalet 2005/10/25 20:00 (URL:2) http://www.lub.lu.se/cgi-bin/show_diss.pl/sci_344.html Ceplitis, Alf. (2000) The balance between sex and asex: evolutionary genetic studies of reproductive variation in Allium vineale, Department of Genetic, Lund University (URL:3) http://sv.wikipedia.org/wiki/mutation 2005/10/24 18:00 (URL:4) http://www.phpclasses.org/browse/package/2567.html 2007/05/22 15:00 petbe082@student.liu.se 13(13)