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