Kapitel 13. Genetiska algoritmer

Relevanta dokument
Grundläggande Idéer Algoritmens komponenter Numerisk optimering Genetisk Programmering. Genetiska Algoritmer

Genetiska algoritmer. Henrik Hansson Rapport, CDT212 Mälardalens Högskola

Genetisk programmering i Othello

Regression med Genetiska Algoritmer

Symboler och abstrakta system

Genetiska Algoritmer. 10 mars 2014

HKGBB0, Artificiell intelligens

genetiska algoritmer

Genetiska algoritmer

Beräkningsvetenskap introduktion. Beräkningsvetenskap I

Genetiska Algoritmer

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

Beräkningsvetenskap introduktion. Beräkningsvetenskap I

Beräkningsvetenskap. Vad är beräkningsvetenskap? Vad är beräkningsvetenskap? Informationsteknologi. Informationsteknologi

Stokastisk geometri. Lennart Råde. Chalmers Tekniska Högskola och Göteborgs Universitet

Materiens Struktur. Lösningar

Föreläsninsanteckningar till föreläsning 3: Entropi

Mångfald inom en art. Genotyp. Genpool. Olika populationer. Fig En art definieras som

Mångfald inom en art. Genotyp. Genpool. Olika populationer. Fig En art definieras som

Approximation av funktioner

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

FK Elektromagnetism och vågor, Fysikum, Stockholms Universitet Tentamensskrivning, måndag 21 mars 2016, kl 9:00-14:00

Hjälpmedel: Det för kursen ociella formelbladet samt TeFyMa. 0 x < 0

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Övningshäfte 2: Induktion och rekursion

Tekniska beräkningar. Vad är tekn beräkningar? Vad är beräkningsvetenskap? Informationsteknologi. Informationsteknologi

Analys av medelvärden. Jenny Selander , plan 3, Norrbacka, ingång via den Samhällsmedicinska kliniken

Genetiska algoritmer. vem raggar på vem? Petter Bergqvist, kogvet 2

SF1905 Sannolikhetsteori och statistik: Lab 2 ht 2011

Kontrollera att följande punkter är uppfyllda innan rapporten lämnas in: Första sidan är ett försättsblad (laddas ned från kurshemsidan)

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

TANA17 Matematiska beräkningar med Matlab

Speciell användning av heltalsvariabler. Heltalsprogrammering. Antingen-eller-villkor: Exempel. Speciell användning av heltalsvariabler

Realism och anti-realism och andra problem

4-1 Hur lyder Schrödingerekvationen för en partikel som rör sig i det tredimensionella

Sammanfattning av föreläsning 11. Modellbygge & Simulering, TSRT62. Föreläsning 12. Simulering. Föreläsning 12. Numeriska metoder och Simulering

Föreläsning 8: Aritmetik och stora heltal

Faktorisering med hjälp av kvantberäkningar. Lars Engebretsen

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

a = a a a a a a ± ± ± ±500

Linjärprogramming. EG2205 Föreläsning 7, vårterminen 2015 Mikael Amelin

a n β n + a n 1 β n a 0 + a 1 β 1 + a 2 β , x = r β e ; 0.1 r < 1; e = heltal.

TANA81: Simuleringar med Matlab

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

Matematik. Kursprov, vårterminen Bedömningsanvisningar. för samtliga skriftliga provdelar

Matematik. Kursprov, vårterminen Bedömningsanvisningar. för samtliga skriftliga provdelar

7 november 2014 Sida 1 / 21

Föreläsning 5. Deduktion

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Kommer sig osäkerheten av att vår beskrivning av naturen är ofullständig, eller av att den fysiska verkligheten är genuint obestämd?

Instuderingsfrågor, Griffiths kapitel 4 7

MS-A409 Grundkurs i diskret matematik Appendix, del I

Första sidan är ett försättsblad (laddas ned från kurshemsidan) Alla frågor som nns i uppgiftstexten är besvarade

Experimentella metoder, FK3001. Datorövning: Finn ett samband

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Logik. Boolesk algebra. Logik. Operationer. Boolesk algebra

1, 2, 3, 4, 5, 6,...

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

Explorativ övning 11 GEOMETRI

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Evolution. Hur arter uppstår, lever och försvinner

Monte Carlo-metoder. Bild från Monte Carlo

Programmeringsuppgift Game of Life

Ekvivalensrelationer

Tentamen i matematisk statistik (9MA241/9MA341, STN2) kl 14 18

Evolution. Hur arter uppstår, lever och försvinner

Anders Logg. Människor och matematik läsebok för nyfikna 95

Innehåll. Förord Del 1 Inledning och Bakgrund. Del 2 Teorin om Allt en Ny modell: GET. GrundEnergiTeorin

DIGITALA TAL OCH BOOLESK ALGEBRA

GenJam En musikalisk genetisk algoritm?

Digital- och datorteknik

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Flervariabelanalys och Matlab Kapitel 3

AD-DA-omvandlare. Mätteknik. Ville Jalkanen. 1

Tentamen MVE301 Sannolikhet, statistik och risk

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

1 LP-problem på standardform och Simplexmetoden

Faktorisering med hjälp av kvantberäkningar. Lars Engebretsen

TAIU07 Matematiska beräkningar med Matlab

Lennart Carleson. KTH och Uppsala universitet

Kombinatorik. Kapitel 2. Allmänt kan sägas att inom kombinatoriken sysslar man huvudsakligen med beräkningar av

f(x + h) f(x) h f(x) f(x h) h

Bose-Einsteinkondensation. Lars Gislén, Malin Sjödahl, Patrik Sahlin

TATA42: Föreläsning 3 Restterm på Lagranges form

Iteration while-satsen

Induktion, mängder och bevis för Introduktionskursen på I

Algoritmer, datastrukturer och komplexitet

4.3. Programmering i MATLAB

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik

SF1901: Sannolikhetslära och statistik. Statistik: Intervallskattning (konfidensintervall)

Uppgift 1 (grundläggande konstruktioner)

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Matematik. Kursprov, vårterminen Bedömningsanvisningar. för samtliga skriftliga provdelar

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Ett urval D/A- och A/D-omvandlare

Transkript:

Kapitel 13. Genetiska algoritmer Som vi tidigare sett, är det i allmänhet svårt att finna det globala minimet för en funktion av många variabler. Det betyder också att det inte är lätt att hitta på en metod att finna den konfiguration som ger den lägsta energin för ett fysikaliskt system. Den genetiska algoritmen är en metod man kan använda för att försöka nå detta mål. Idén har lånats från den biologiska evolutionsprocessen, där mutationer och arvet från föräldrarna som överförs till den nya generationen spelar en viktig roll. Lämpligheten ( fitness ) används som test för välja ut en genetisk struktur för kromosomen, som får representera individen. Metoden infördes av J.H. Holland (1975) och har utvecklats vidare av Goldberg (1989). Många varianter av den genetiska algoritmen har kommit till på senare tid, och går under det allmännare namnet evolutionära algoritmer ( biologisk naturvetenskap ). En översikt av evolutionär beräkning och artificiell intelligens har skrivits av David Fogel 1. 1 David B. Fogel: Evolutionary computation, IEEE Press. 1995 Vetenskapliga beräkningar III, Tom Sundius 2008 1

Evolutionära beräkningar har en lång historia. Att evolution är en inlärningsprocess insåg man redan på 1930 talet. Den matematiska biologen Nils Barricelli experimenterade år 1953 med artificiellt liv på en dator i Princeton genom att placera tal i ett nät och flytta på dem enligt vissa regler. Hans experiment påminde mycket om Game of Life, som introducerades av den brittiska matematikern John Conway år 1970. Senare utvecklade Michael Conrad evolutionära algoritmer för att simulera evolution av ekosystem. Friedberg och Fogel introducerade också redan på 1960 talet metoder att simulera evolution för att åstadkomma artificiell intelligens. Istället för att koda konfigurationerna som kromosomer, är det möjligt att variera kodningssättet, så att programmet i praktiken kodar sig självt. Detta sätt att direkt manipulera eller alstra optimala program som baserar sig på evolutionsidén kallas för genetisk programmering, och uppfanns av Fogel redan år 1962. Här skall vi bara nöja oss med att ge en kort introduktion till genetiska algoritmer utan några programexempel. För Matlab finns ett verktyg för genetiska algoritmer (The Genetic Algorithm Toolbox for MATLAB, http://www.shef.ac.uk/acse/research/ecrg/gat.html). Vetenskapliga beräkningar III, Tom Sundius 2008 2

13.1. Kodning av genetiska algoritmer Vid konstruktionen av en genetisk algoritm försöker man följa en biologisk evolutionsprocess där man väljer den väg som leder till en optimal konfiguration av ett komplext system. Ett växelverkande flerkropparssystem kan man t.ex. bringa i jämvikt genom att överföra det till en konformation som representerar det globala minimet på potentialenergiytan. Det är alltså fråga om optimering, som kan beskrivas matematiskt så, att man uppsöker det globala minimet för en funktion av flera variabler g(r 1, r 2,..., r n ). Optimeringen kan också inkludera tvångsvillkor. Vi skall här nöja oss med att beskriva en binär version av den genetiska algoritmen, som följer en evolutionär process. Fördelen med en binär genetisk algoritm är att den är enkel, och uttrycker evolutionen med hjälp av binära kromosomer. I en binär algoritm, representeras varje variabelkonfiguration (r 1, r 2,..., r n ) av en binär sträng (talräcka). Denna räcka kan lagras i datorn som en heltalig talräcka, där varje element innehåller talet 1 eller 0, eller en räcka av logiska element, som innehåller en bit som är falsk (0) eller sann (1) (en gen ). Vetenskapliga beräkningar III, Tom Sundius 2008 3

En genetisk algoritm kan uppdelas på flera steg. Vi börjar med att konstruera en ursprungspopulation av konfigurationer, som kallas för en genpool. Sedan väljer man några medlemmar av den, som får vara föräldrar och ge upphov till avkomma. Sättet att blanda föräldrarnas gener kallas korsning (crossover på engelska), och anger hur de genetiska egenskaperna går i arv. För att alstra äkta avkomma, delas föräldrakromosomerna i segment som utbyts och kombineras så att det bildas nya kromosomer för avkomman. Därefter låter man en viss procent av bitarna i kromosomerna att undergå mutation. Under hela processen används lämpligheten (fitness på engelska) av varje konfiguration baserad på kostnaden (dvs den funktion som skall optimeras) g(r 1, r 2,..., r n ) som kriterium för att välja föräldrar och sortera kromosomerna för nästa generation i genpoolen. I de tre viktigaste operationerna i varje generation (dvs urval, korsning och mutation) ser man till att de bästa konfigurationerna med de lägsta kostnaderna alltid överlever (går vidare). Den ursprungliga populationen för genpoolen väljs vanligen slumpmässigt. En sorteringsmetod används för att klassificera kromosomerna enligt deras lämplighet. Vid initialiseringen av genpoolen är valet av populationens storlek viktigt. Även om varje konfiguration representeras av en bestämd kromosom, så kommer ett bra val av populationens storlek att leda till optimering av simuleringens konvergenshastighet. Om populationen är alltför liten, kommer det att ta mera tid att sampla hela det möjliga konfigurationsrummet, men om populationen är för stor, kommer det att ta längre tid att konstruera nya generationer. En annan viktig sak är kvaliteten av den ursprungliga genpoolen. Vetenskapliga beräkningar III, Tom Sundius 2008 4

Om vi använder alla konfigurationer som alstras slumpmässigt, så kommer kvaliteten av genpoolen att vara låg, och det leder till att konvergensen blir långsam. Istället konstruerar man vanligen mera kromosomer i början än vad som behövs för att få fler valmöjligheter. Om vi t.ex. strävar efter en population av n g kromosomer i genpoolen, så kan vi slumpmässigt alstra ett större antal kromosomer (t.ex. 2n g stycken), och därav välja de n g kromosomer som har den minsta kostnaden. Vi måste koda varje konfiguration i en kromosom och också beräkna den motsvarande kostnaden. Sedan vi beräknat kostnaderna för alla konfigurationer, rangordnar vi dem efter hur bra de är enligt ett sorteringsschema. Eftersom vi vill notera rangordningen och använda den för att numrera kromosomerna på nytt, så måste vi ge dem ett rankningsindex i sorteringsprocessen. Vi skall nu beskriva, hur en konfiguration kan kodas. Emedan vi vill simulera den genetiska processen så noggrant som möjligt, så måste vi konvertera varje konfiguration (r 1, r 2,..., r n ) till en kromosom. Vi antar att variablerna r i hör till intervallet [0, 1], dvs 0 r i 1 för i = 1, 2,..., n. Vi kan koda en godtycklig variabel inom intervallet [0, 1] som en binär sträng, där varje bit antingen har ett sant eller ett falskt värde. Om den k:te biten är sann, så ingår bråktalet 1/2 k i variabeln. Den kan då uttryckas i formen r i = y i1 2 + y i2 4 + y i3 8 +... = X j=1 y ij 2 j, där y ij är ett heltal som antingen är 0 eller 1. Vetenskapliga beräkningar III, Tom Sundius 2008 5

mx Vi kan avkorta den binära strängvariabeln vid en viss siffra m, vars värde beror på hur noggrant vi önskar y ij uttrycka r i, Vi får då (approximativt) r i 2. Om t.ex. r j i = 0.93, så får vi y i1 = y i2 = y i3 = 1 j=1 och y i4 = 0, och om r i = 0.6347, så har vi y i1 = y i3 = 1 och y i2 = y i4 = 0, om m = 4. Det största felet i r i som uppstår på detta sätt är ±1/2 m+1. Processen varigenom y ij alstras, kallas kodning och uttryckas genom formeln: y ij = int 2 4 2 j 1 r i Xj 1 k=1 3 5 (2 j k 1 y ik ), j = 2, 3,..., m Vi antar att int-operationen kommer att avrunda värdet som som står innanför klammeruttrycket till det närmaste heltalet (antingen 0 eller 1), för i = 1, 2,..., n. Observera, att y i1 = int[r i ]. Kodningen är en process, som uttrycker r i i form av en binär räcka där varje element innehåller en bit som är sann eller falsk, och motsvarar ett heltal 0 eller 1. Denna binära räcka y ij, j = 1, 2,..., m kallas för kromosomens i:te gen. Kromosomen är en binär representation för hela räckan (r 1, r 2,..., r n ). Vetenskapliga beräkningar III, Tom Sundius 2008 6

Den omvända proceduren är också nödvändig då vi vill använda konfigurationsinformationen vid beräkningen av kostnadsfunktionen eller skriva ut de slutliga konfigurationerna. För att avkoda en kromosom används den approximativa formeln för r i. Om vi t.ex. har en kromosom w = [1010111001...] och m = 10, så är den motsvarande variabelns värde r 1 1 2 + 1 2 + 1 3 2 + 1 5 2 + 1 6 2 + 1 0.6807. 7 210 Observera, att osäkerheten i r 1 bestäms här av valet av m, som beräknas ur ±1/2 m+1 ±0.0005 i detta fall. Avkodningen är lätt att programmera. Kodningsprceduren kan nu användas för att alstra en ursprungspopulation som sorteras med kostnadsfunktionen. Därpå kan vi klara av de tre viktigaste operationerna, urval, korsning och mutation. Vi måste kunna välja en bråkdel av kromosomerna från den givna genpoolen för att kunna överföra generna. Därigenom simuleras den naturliga reproduktionsprocessen. Enligt Darwin är det sannolikast att de kromosomer som överlever har den lägre kostnaden. Man har utvecklat olika metoder som följer denna princip för att välja föräldrarna. Enklast är att välja ut den bästa hälften av kromosomerna från hela populationen utgående från kostnaderna. Sedan kan man slumpmässigt välja det ena paret efter det andra från föräldrapoolen för att alstra avkomma. En annan möjlighet är att välja en kromosom från hela populationen med en sannolikhet som baserar sig på en tillordnad vikt antingen beroende på dess kostnadsrankning eller på den relativa kostnaden. Vetenskapliga beräkningar III, Tom Sundius 2008 7

Den populäraste metoden är att ordna turneringar, där två eller flere deltagare väljs slumpmässigt, och vinnaren är den som har den bästa (lägsta) kostnaden. Observera, att varje medlem av poolen får delta, men endast i en match. Hälften av kromosomerna i poolen (n r = n g /2) väljs till föräldrar utan fördubbling. Denna metod leder till att den bästa kromosomen stannar kvar, och den sämsta elimineras. Några andra turneringsmetoder tillåter fördubblingar. Man kan t.ex. få två kopior av den bästa kromosomen genom att låta varje kromosom delta i två matcher. Man brukar också blanda om indexen före matcherna, så att deltagarna väljs ut slumpmässigt med lika stor sannolikhet. Alstrandet av genpooler har hittills baserat sig på slumpmässigt valda bitar, och därefter har vissa gener utsetts till föräldrar. Nästa steg är att hitta på ett sätt att utforska kostnadsytan. Det finns två operationer i den genetiska algoritmen, som kan behandla hela variabelrummet. Den ena operationen kallas crossover (överkorsning), som efterliknar den naturliga reproduktionsprocesssen. Vi kan välja ett par föräldrar ur föräldrapoolen, dela varje föräldrakromosom i två segment vid en viss punkt, och sedan förena den ena förälderns högra segment med den andra förälderns vänstra segment, och tvärtom. På detta sätt alstras två nya kromosomer för avkomman. Om t.ex. de två föräldrakromosomerna är w 1 = {01101010} och w 2 = {10101101}, så är de två kromosomerna för avkomman w 3 = {01101101} och w 4 = {10101010}, om korsningspunkten väljs i mitten av kromosomerna. Vetenskapliga beräkningar III, Tom Sundius 2008 8

Överkorsning är ett av de effektivaste sätten att utforska kostnadsytan för alla de tänkbara konformationerna. Vi har beskrivit ett schema med endast en korsningspunkt, men det finns också andra metoder, där man använder flere delningspunkter. Observera, att vi har varje gång parat ihop två medlemmmar från föräldrapoolen för att alstra två ättlingar genom korsningsmetoden. Vi kan också välja föräldrarna på annat sätt från poolen. Sedan vi avslutat reproduktionen av n r = n g /2 ättlingar, måste vi ordna på nytt alla kromosomer, både föräldrar och avkomma, i ökande kostnadsordning. Detta är nödvändigt för att förbereda genpoolen för mutationer, som vi härnäst skall studera. Ett annat sätt att utforska kostnadsytan i den genetiska algoritmen är att använda mutationsprocessen. Detta sker genom slumpmässig omkastning av bitarna i slumpmässigt valda kromosomer, varvid man väljer ett slumptal, som anger positionen för den bit i kromosomen som skall bytas ut. Det finns två saker att beakta vid mutation. Den ena är hur stor del av bitarna i hela genpoolen som skall muteras i varje generation. Ofta väljer man omkring 1 % av bitarna slumpmässigt för mutation (0 1 och 1 0). Ju flere bitar som väljs, desto större blir fluktuationen. Men om en större bråkdel av bitarna muteras kan kostnadsytan utforskas snabbare, vilket kan betyda att den lägsta kostnaden förbigås i denna process. Därför måste man experimentera med olika mutationsprocenter för en given kostnadsfunktion för att kunna finna en kompromiss som tillåter oss att utforska kostnadsytan tillräckligt snabbt utan att förbigå den bästa kostnadskonfigurationen. Vetenskapliga beräkningar III, Tom Sundius 2008 9

En annan viktig sak är antalet konfigurationer, som vi önskar att skall vara opåverkade av mutation. I alla mutationsmetoder förblir den bästa kromosomen alltid oförändrad. Men vi kanske också vill låta några av de nästbästa kromosomerna vara oförändrade. Detta gör utforskningen av kostnadsytan långsammare vid mutation, men det ökar konvergenshastigheten, eftersom konfigurationerna redan kan innehålla en stor andel utmärkta gener i sina kromosomer. I praktiken måste vi experimentera för att finna den lämpligaste bråkdelen bitar som skall muteras i ett bestämt problem. Schematiskt skulle man kunna beskriva en genetisk algoritm på följande sätt: 1) Initialisera populationen {r i, i = 1, 2,..., n}. 2) Beräkna kostnadsfunktionens värden g(r 1, r 2,..., r n ). 3) Korsa två utvalda kromosomer: r i, r j r. 4) Mutera r r. 5) Beräkna kostnadsfunktionens värde g(r ) för den nya kromosomen. 6) Spara kromosomen r i den nya populationen. 7) Avsluta om lösningen är bra; upprepa annars proceduren. Vetenskapliga beräkningar III, Tom Sundius 2008 10

13.2. Thomsons problem Som en tillämpning skall vi studera Thomsons problem, som introducerades av J.J. Thomson år 1904 då han utvecklade sin plumpudding-modell för atomen. Problemet som gällde hur man kan finna grundtillståndet för ett antal klassiska elektroner på ytan av en sfär, kan också formuleras allmännare så att man söker den laddningskonfiguration som minimerar den elektrostatiska energin under ett antaget jämviktsvillkor. Man kan t.ex. visa att varje ledare i ett system bildar en ekvipotentialyta om laddningen på varje ledare är konstant och den totala elektrostatiska energin minimeras. Emellertid uppstår det problem om man försöker bestämma jämviktskonfigurationen för ett större antal diskreta laddningar, t.ex. den stabila geometrin för n c identiska punktladdningar på ytan av en enhetssfär (Thomsons problem). Problemet är komplext på grund av dess olinjära egenskaper och det stora antalet låga energinivåer. Exakta lösningar känner man endast i vissa fall. Vi kan t.ex. visa, att laddningarna kommer att täcka hela ytan likformigt då n c, och att vissa symmetriska konfigurationer leder till stabila konfigurationer för små värden av n c. För n c = 3 får man t.ex. en liksidig triangel, för n c = 4 en tetraeder, för n c = 8 ett sammantryckt kubiskt antiprisma etc. Ju större n c blir, desto svårare blir problemet. Då n c är 200, blir antalet lågtliggande energinivåer omkring 8000. Problemet anses fortfarande vara olöst för stora värden av n c. De bästa resultaten för n c 200 har erhållits med en genetisk algoritm 2. 2 J.R. Morris, D.M. Deaven, och K.M. Ho, Phys. Rev. B, 53 (1996) R1740. Vetenskapliga beräkningar III, Tom Sundius 2008 11

Matematiskt kan man uttrycka Thomsons problem så, att man söker efter den konfiguration som minimerar den elektrostatiska energin X U = q2 nc 1 4πɛ 0 r i r j, i>j=1 om laddningen q på varje partikel är konstant, ɛ 0 är den elektriska permittiviteten i vakuum, och r i är den i:te laddningens positionsvektor. Eftersom alla laddningarna begränsas till ytan av en sfär, så är r i = 1. För enkelhetens skull brukar man sätta q 2 /4πɛ 0 = 1. Om de kartesiska koordinaterna uttrycks i sfäriska koordinater, fås x i = sin θ i cos φ i y i = sin θ i cos φ i z i = cos θ i (r i = 1). I den genetiska algoritmen kommer givetvis kostnadsfunktionen att motsvaras av den elektrostatiska energin. Thomsonproblemet är intressant, eftersom antalet lågtliggande exciterade tillstånd växer exponentiellt med antalet laddningar. Å andra sidan vet vi att lösningen är den konfiguration, som sprider ut laddningarna så likformigt som möjligt, laddningarna försöker att undvika varandra så mycket som möjligt, men emedan de är begränsade till en ändlig yta leder det till en kompromiss. En Java applet för att lösa problemet med olika metoder finns här: http://physics.syr.edu/condensedmatter/thomson/thomsonapplet.htm Vetenskapliga beräkningar III, Tom Sundius 2008 12

Morris beskriver den genetiska algoritmen som användes i den nämnda artikeln på följande sätt. Utgående från ett litet antal initiala geometrier konstruerades ett antal strukturer, som härleder sina egenskaper från två av de ursprungliga geometrierna. Av denna population utvaldes de strukturer som hade de lägsta energierna (dvs de bästa strukturerna) och fick ersätta de ursprungliga geometrierna. Genom upprepning av denna procedur erhölls strukturer med lägre energi. I allmänhet kan man också använda andra sökkriterier som beaktas på så sätt, att man först konstruerar en lämplighetsfunktion, som avspeglar de olika kriterierna, och därpå optimerar denna funktion med en urvalsprincip. En av svårigheterna är att energiberäkningar tar tid, speciellt om man använder noggranna strukturmodeller. I stället för arbeta med genetiska sekvenser, vilket är ineffektivt då man vill studera strukturer, arbetade Morris direkt med själva strukturerna. En ny struktur genererades från två slumpmässigt valda hälfter av föräldrastrukturer, under antagandet att antalet partiklar bevarades. Varje struktur underkastades därpå relaxation. På detta sätt kunde man alstra nya strukturer som bevarade föräldrastrukturernas viktigaste egenskaper, och kunde ändå utforska olika lokala minimer på funktionsytan. Vid beräkningen alstrades först fyra slumpmässiga geometrier. Med hjälp av alla de möjliga paren av initialgeometrier konstruerades därpå 16 nya strukturer, och av dessa 20 strukturer valdes de fyra bästa kandidaterna ut under antagandet att ingen struktur får dominera hela populationen. På detta sätt kunde man finna strukturer ända upp till n c = 200. Liknande metoder har också använts på mera realistiska atommodeller, såsom Lennard-Jones potentialmodeller och atomkluster. Vetenskapliga beräkningar III, Tom Sundius 2008 13