Genetische Algorithmen

Werbung
Genetische Algorithmen
Ausarbeitung im Rahmen des Seminars
„Evolutionäre Algorithmen“
Prof. Dr. H. Kleine Büning / Oliver Kramer / Chuan-Kang Ting
Daniel Aslan
Inhaltsverzeichnis
1. EINFÜHRUNG
3
2. GRUNDBEGRIFFE
4
2.1 INDIVIDUUM
2.2 GEN
2.3 ALLEL
2.4 POPULATION
2.5 GENERATION
2.6 GENOTYP
2.7 PHÄNOTYP
2.8 FITNESS
4
4
4
4
4
5
5
5
3. ARBEITSWEISE VON GENETISCHEN ALGORITHMEN
5
4. CODIERUNG
7
4.1 BINÄR-CODIERUNG
4.2 GANZZAHL-CODIERUNG
4.3 REALZAHL-CODIERUNG
4.4 PERMUTATIONS-CODIERUNG
7
8
8
9
5. FITNESSFUNKTION
9
6. SELEKTION
10
7. REKOMBINATION
11
7.1 BINÄR-OPERATOREN
7.2 GANZZAHL-OPERATOREN
7.3 REALZAHL-OPERATOREN
11
12
13
8. MUTATION
15
8.1 BINÄR-OPERATOREN
8.2 GANZZAHL-OPERATOREN
8.3 REALZAHL-OPERATOREN
8.4 PERMUTATIONS-OPERATOREN
15
15
16
17
9. REPRODUKTION
18
10. REFERENZEN
19
Daniel Aslan
Genetische Algorithmen
2/19
1. Einführung
Genetische Algorithmen sind
Verfahren, die zur Lösung von
komplexen
Optimierungsaufgaben eingesetzt werden. Diese Verfahren beruhen auf Methoden und
Erkenntnissen der biologischen Genetik. Insbesondere die Evolutionstheorie diente als
Vorbild für die Entwicklung der Genetischen Algorithmen, da die Evolution in der Natur sehr
gute Ergebnisse geliefert haben.
Grundlegende Arbeit hat I. Rechenberg mit seinem 1960 erschienen Werk
„Evolutionsstrategie“ geleistet. Die Genetischen Algorithmen wurden von John Holland
erfunden und von ihm, seinen Studenten und Kollegen weiterentwickelt. 1975 erschien
„Adaption in Natural and Artificial Systems“.
Diese Ausarbeitung befasst sich in erster Linie mit den Grundlagen der Genetischen
Algorithmen. Dazu gehören unter anderem die verwendete Terminologie und Grundbegriffe.
Diese werden im Abschnitt 2 dieser Arbeit behandelt.
Der Abschnitt 3 dieser Arbeit beschäftigt sich mit der Grundstruktur und der Arbeitsweise der
Genetischen Algorithmen. Dort wird die Vorangehensweise Genetischer Algorithmen erklärt
und mittels eines Beispiels schematisch dargestellt werden.
In dem Abschnitt 4 wird auf die unterschiedliche Möglichkeit der Codierung von Genetischen
Algorithmen eingegangen und erläutert. Unter anderem wird auf die Problematik eingegangen
welche Codierung für welche Probleme sich eignet.
Die Fitnessfunktion der Genetischen Algorithmen wird im Abschnitt 5 dieser Arbeit
vorgestellt werden. Darauf folgend wird im Abschnitt 6 die Selektionsmechanismen
Genetischer Algorithmen untersucht.
In den letzen drei Abschnitten werden unter anderem die unterschiedlichen Rekombinationund Mutationsoperatoren bezüglich der gewählten Codierung im Einzelnen vorgestellt.
Schließlich wird kurz auf die Reproduktion neuer Populationen eingegangen und einige
Strategien davon erörtert.
Daniel Aslan
Genetische Algorithmen
3/19
2. Grundbegriffe
2.1 Individuum
In Zusammenhang mit Genetischen Algorithmen versteht man unter einem Individuum einen
möglichen Lösungskandidaten eines zu optimierenden Problems. Dabei besteht ein
Individuum in der Regel aus einer Zeichenkette der gewählten Repräsentationsform. Diese
können je nach gewählter Codierung als binäre, ganzzahlige oder reelle Vektoren einer fest
gegebenen Länge n dargestellt werden. Die Beschaffenheit des Individuums ist für das zu
optimierendes Problem von entscheidender Rolle und muss deshalb am Anfang eines jeden
Genetischen Algorithmus problemspezifisch ausgewählt werden.
2.2 Gen
Die einzelnen Stellen innerhalb der Zeichenkette eines Individuums werden in Anlehnung an
der Genetik als ein Gen bezeichnet. Sie enthalten die einzelnen Erbinformationen und somit
die Teileingenschaften eines Individuums. Das Individuum <1, 1, 0, 1, 0> der binär codierten
Form enthält somit fünf Gene, welche die Teileigenschaften dieses Individuums
charakterisieren.
2.3 Allel
Die konkrete Ausprägung eines Gens mit einem Wert wird in der Terminologie der
Genetischen Algorithmen oft als Allel bezeichnet. Bei binär codierten Individuen sind somit
nur Werte von 0 und 1 für die jeweiligen Allele möglich. Entsprechendes gilt für Individuen
anderer Codierungsformen. Somit kommen bei Ganzzahl- und Realzahl-Codierung alle
natürlichen Zahlen und reellen Zahlen des zulässigen Bereiches als Werte für die jeweiligen
Allele in betracht.
2.4 Population
Eine Population stellt die gesamt Menge aller potentiellen Lösungskandidaten für ein
Problem dar. Die Individuen einer Population teilen mehr oder weniger strukturell Ähnliche
Eigenschaften bezüglich eines Problems und haben in der Regel eine endliche Größe, die mit
Populationsgröße n bezeichnet wird. Genetische Algorithmen arbeiten stets auf einer ganzen
Population und nie mit einzelnen Individuen. Dabei wird durch Anwendung von genetischen
Operatoren Rekombination und Mutation versucht bessere Lösungskandidaten aus bereits
vorhandenen Lösungen zu erzeugen.
2.5 Generation
Mit Generation wird eine Population zu einem bestimmten Zeitpunkt innerhalb eines
Genetischen Algorithmus bezeichnet. Jeder Iterationsschritt innerhalb eines Genetischen
Algorithmus entspricht einer Generation mit der versucht wird die Qualität der Lösung zu
optimieren. Durch die sukzessive Anwendung von genetischen Operatoren wird in jedem
Schritt die alte Generation durch eine neue bessere Generation ersetzt und dient dadurch als
Ausgangspopulation für den nächsten Iterationsschritt des Genetischen Algorithmus.
Daniel Aslan
Genetische Algorithmen
4/19
2.6 Genotyp
Mit Genotyp bezeichnet man die codierte Form eines Individuums. Die gewählte
Repräsentationsform entscheidet über die Beschaffenheit des Genotyps und dadurch über die
Brauchbarkeit des Genotyps für das zu optimierendes Problem.
2.7 Phänotyp
Die decodierte Form eines Individuums wird des Öfteren in Anlehnung an die biologische
Sprache als Phänotyp bezeichnet. Der Phänotyp ist von der gewählten Codierungsmethode
unabhängig. In seiner Ausprägung stellt der Phänotyp in Genetischen Algorithmen für die
Optimierungsaufgabe maßgeblichen Wert eines Individuums dar.
2.8 Fitness
Die Fitness gibt die Güte und Tauglichkeit eines Lösungskandidaten bezüglich des zu
optimierenden Problems an. Es wird mittels der gewählten Fitnessfunktion für die jeweiligen
Individuen ermittelt und spielt eine entscheidende Rolle bei der Auswahl der Elternpaare für
die genetischen Opertoren und Reproduktion der neuen Generation.
3. Arbeitsweise von Genetischen Algorithmen
Für den Einsatz von Genetischen Algorithmen müssen in der Regel folgende
Voraussetzungen erfüllt wird:
•
•
•
•
Eine Population die aus mehreren Individuen besteht
Die Existenz so genannter genetischer Operatoren
Eine Fitnessfunktion, die für jedes Individuum einen Funktionswert – die Fitness –
festlegt
Nach mehreren Änderungen ergibt sich eine neue Population
Ausgehend von diesen Voraussetzungen fängt dann ein Genetischer Algorithmus mit einer
Anfangpopulation unterschiedlicher Individuen. Diese Individuen können in unterschiedlicher
Codierung, die in Abschnitt 4 angegeben sind, vorliegen. Durch die entsprechenden
genetischen Operatoren werden diese Individuen so verändert, dass eine neue Population
entsteht. Dabei werden in die neue Population überwiegend die Individuen mit der besten
Fitness übernommen, so dass die potentiellen Lösungskandidaten von Generation zu
Generation besser werden. Auf diese Weise nähert sich der Genetische Algorithmus von
Schritt zu Schritt zur Lösung des Optimierungsproblems.
Die Grundstruktur der meisten Genetischen Algorithmen ist in ihrem Aufbau sehr ähnlich und
kann in folgender Weise charakterisiert werden:
• Genetische Codierung der Individuen des zu optimierenden Problems vornehmen
1. Anfangspopulation erzeugen und die Individuen mit zufälligen Fitnesswerten
initialisieren Æ Generation 0
2. Wiederholung der Schritte 3-6 bis Abbruchkriterium erreicht ist
3. Berechnung der Fitness der einzelnen Individuen mit Hilfe der Fitnessfunktion
Daniel Aslan
Genetische Algorithmen
5/19
4. Selektion der Elternpaare und Erzeugung neuer Nachkommen durch Rekombination
5. Eventuelle Mutation der erzeugten Nachkommen
6. Reproduktion der neuen Population und Überprüfung der Abbruchbedingung
Den Genetischen Operatoren entsprechen die hervorgehobenen Unterfunktionen in dem
angegebenen Algorithmus. Je nach Problem und gewählter Codierung müssen sie
entsprechend angepasst und angewendet werden. Die unterschiedlichen Operatoren werden in
folgenden Abschnitten nähr erläutert werden.
Die folgende Abbildung gibt eine schematische Darstellung der Arbeitsweise eines
Genetischen Algorithmus anhand eines Beispiels an. Hierbei wurden die Binär-Codierung
und folgerichtig binäre Genetische Operatoren für das zu lösende Problem verwendet. Man
kann gut erkennen, dass bereits im ersten Iterationsschritt die gesuchte Lösung gut angenährt
wird.
Abb. 3.1
Daniel Aslan
Genetische Algorithmen
6/19
4. Codierung
Wie aus dem Abschnitt 3 dieser Ausarbeitung zu entnehmen ist, besteht die erste Stufe eines
jeden genetischen Algorithmus darin, für das zu lösende Problem eine geeignete genetische
Repräsentation für die jeweiligen Lösungskandidaten festzulegen. Im Wesentlichen umfasst
die Repräsentation die Definition des Genotyps und ihre entsprechende Zuordnung zu dem
dazugehörigen Phänotyp.
Die Auswahl der richtigen Repräsentation stellt bei der Konstruktion von guten genetischen
Algorithmen einen wichtigen und kritischen Entwicklungsschritt dar. Dabei können oft nur
über das Problemfeld vorhandene Kenntnisse und praktische Erfahrungen als nützliche
Entwicklungsmittel verwendet werden. In folgenden Unterabschnitten werden einige der
allgemein verwendeten Codierungsformen mit den entsprechenden Operatoren vorgestellt.
Hierbei sollte beachtet werden, dass sie nicht alle Problembereiche abdecken und nicht immer
die optimale Repräsentation für die jeweiligen Anwendungen darstellen können.
4.1 Binär-Codierung
Die einfachste und gängigste Codierungsform stellt die so genannte Standard-Binärcodierung
dar. Dabei besteht das Genotyp aus einer binär wertigen Zeichenkette der Festenlänge. Diese
Form ist die historisch älteste und meist verbreitete Repräsentation in Genetischen
Algorithmen.
Bei der Verwendung der Standard-Binärcodierung in Genetischen Algorithmen zeigen sich
grundsätzlich folgende nachteilige Charakteristiken auf: zum einen die sehr große
durchschnittliche Hamming-Distanz der Codierung und zum anderen die unterschiedliche
Wertigkeit der benachbarten Stellen.
Man versteht unter der Hamming-Distanz die Anzahl der Bits, die invertiert werden müssen,
um von einem benachbarten Codewort zu einem anderen zu gelangen. Dies beträgt
beispielsweise bei der Repräsentation der natürlichen Zahlen 15 und 16 (01111Æ10000) den
Abstand 5. Die Hamming-Distanz von benachbarten Stellen in der Standard-Binärcodierung
kann in großen zulässigen Zahlenbereichen sehr groß werden, wodurch die Konvergenz eines
Genetischen Algorithmus unnötig erschwert würde. Auf der anderen Seite könnte eine
zufällige Mutation zwei nicht benachbarte Zahlen in einander überführen und dadurch eine
wesentliche Verschlechterung oder Verbesserung des Phänotyps bewirken. Dies trifft
beispielsweise bei den natürlichen Zahlen 65 und 1 (100001Æ000001) zu, deren HammingDistanz 1 ist.
Die Probleme, die durch die unterschiedliche Wertigkeit der Stellen im Standard-Binärcode
auftreten, machen diese Repräsentationsform für Genetische Algorithmen ungeeignet. Die
Mutationsoperatoren welche bei einer Binärkette weiter vorne angewendet werden bewirken
eine größere Werteänderung des Phänotyps als die die weiter hinten sind. Dies führt zur einen
zusätzlichen Algorithmischenaufwand um das entstandene Ungleichgewicht auszugleichen. In
ähnlicherweise verhält es sich bei dem Crossover, dem wichtigstem Operator der Genetischen
Algorithmen. Der für den vorderen Teil zuständige Elternteil hätte einen größeren Einfluss
auf die Form des Phänotyps als der hintere Teil, was aber vermieden werden sollte. Somit
verletzt das Standard-Binärcode bei der Rekombination und Mutation das von Rechenberg
eingeführte Prinzip der strengen Kausalität, welches besagt, dass eine kleine Ursache auch nur
eine kleine Wirkung nach sich ziehen sollte.
Daniel Aslan
Genetische Algorithmen
7/19
Stattdessen verwendet man in Genetischen Algorithmen den so genannten Gray-Code. Es
zeichnet sich gegenüber dem Standard-Binärcode dadurch aus, dass der Hamming-Distanz
zwischen zwei benachbarten Codeworten stets Abstand 1 beträgt. Durch diese Eigenschaft
kann das Gray-Code die meisten Codierungsprobleme die bei Genetischen Algorithmen
auftreten zum teil lösen oder zumindest sehr deutlich reduzieren.
Die folgende Tabelle zeigt die binär Codierung der natürlichen Zahlen von 0 bis 7 in
Standard-Binärcode und Gray-Code. Außerdem soll an hand einer Beispielmutation die
unterschiedliche Wirkungsweise verdeutlicht werden.
Dezimal
0
1
2
3
4
5
6
7
Standard-Binärcode
000
001 (Hamming-Distanz = 1)
010 (Hamming-Distanz = 2)
011 (Hamming-Distanz = 1)
100 (Hamming-Distanz = 3)
101 (Hamming-Distanz = 1)
110 (Hamming-Distanz = 2)
111 (Hamming-Distanz = 1)
Gray-Code
000
001 (Hamming-Distanz = 1)
011 (Hamming-Distanz = 1)
010 (Hamming-Distanz = 1)
110 (Hamming-Distanz = 1)
111 (Hamming-Distanz = 1)
101 (Hamming-Distanz = 1)
100 (Hamming-Distanz = 1)
Durch die Anwendung einer Mutation an der vierten Stelle des Genotyps der natürlichen Zahl
105 ergeben sich folgende Phänotypen:
Standard-Binärcode: 1101001Æ1100001 (dezimal 97, ∆: 8)
Gray-Code:
1011101Æ1010101 (dezimal 102, ∆: 3)
4.2 Ganzzahl-Codierung
Die Binär-Codierung bietet nicht immer die optimale Repräsentationsform für
Problemklassen in denen der Genotyp unterschiedliche Werte aus einer Menge von
ganzzahligen Werten annehmen kann. Dies trifft beispielsweise bei Optimierungsaufgaben
zu, in denen für eine Menge von Variablen die optimalen Werte gesucht werden, welche nur
aus natürlichen Zahlen bestehen. Diese Werte können dabei unbeschränkt oder aber auch aus
einer endlichen Menge sein. In diesem Fall empfiehlt sich die Verwendung der GanzzahlCodierung statt der Binär-Codierung.
Beispiel: Falls in einem quadratischen Gitter alle möglichen Wege gesucht werden ist es
sinnvoll und empfehlenswert folgende Codierung zu verwenden: Die möglichen Richtungen
{Nord, Ost, West, Süd} durch eine endliche ganzzahlige Menge {0, 1, 2, 3} zu repräsentieren.
4.3 Realzahl-Codierung
Falls in einem Optimierungsproblem die zu repräsentierenden Werte eines
Lösungskandidaten aus einer kontinuierlichen statt einer diskreten Verteilung bestehen, wird
es notwendig sein die Werte der Lösungskandidaten als reelle Zahlen darzustellen. Angesicht
der Tatsache, dass die Darstellung der reellen Zahlen im Computersystemen beschränkt
möglich ist bedient man sich hier der Fliesskommazahlen als eine mögliche
Repräsentationsform. Dadurch ergibt sich folgende vektorielle Darstellung für ein Genotype
G mit k reellen Werten
Daniel Aslan
Genetische Algorithmen
8/19
G = x1 ,… , xk mit xi ∈
4.4 Permutations-Codierung
Die bisher vorgestellten Codierungsarten sind für die meisten Reihenfolgeprobleme
ungeeignet. Das liegt daran, dass die unterschiedlichen Gene der codierten
Lösungskandidaten dieselben Werte annehmen können und dadurch ungültige Permutationen
erzeugen können. Deshalb ist es einleuchtend für Reihenfolgeprobleme entsprechend
geeignete Repräsentationsform zu entwickeln, die in jeden Fall gewährleistet, dass jede
mögliche Stelle innerhalb eines Genotyps einmalig vorkommt.
Es gibt grundsätzlich zwei Problemklassen die durch Permutationen codiert werden. Die
erstere Klasse behandelt Reihenfolgeprobleme in denen bestimmte Ereignisse auftreten. Dazu
gehören unter anderem Auftragsplanungen und Produktionsprozesse. Beispielsweise kann es
bei einer 4-stufigen Produktionskette günstiger sein ein Produkt 1 vor den Produkten 2 und 3
und schließlich das Produkt 4 zu produzieren. Das würde für die Produktionsfolgen [1, 2, 3,
4] und [1, 3, 2, 4] einen besseren Fitnesswert ergeben als die Produktionsfolge [4, 3, 2, 1].
Die zweite Klasse der reihenfolgebasierten Probleme hängt von der so genannten
unmittelbaren Nachbarschaft (adjacency) ab. Typischer Vertreter dieser Klasse ist das
Handlungsreisendenproblem (TSP – traveling sales person problem). Die Aufgabe dieses
Problem besteht darin, dass ein Handelsreisender n Städte besucht und dabei die kürzest
mögliche Route auswählt. Der Suchbereich dieses Problems ist in der Regel sehr groß
nämlich bei n Städten (n-1)!. Für drei Städte A, B und C die von einem Handelsreisenden zu
besuchen sind ergeben sich folgende Repräsentationen der möglichen Routen in Form von
Permutationen der Zahlen 1, 2 und 3:
{ A, B, C} → {1, 2,3} , { A, C , B} → {1,3, 2}
{B, A, C} → {2,1,3} , {B, C , A} → {2,3,1}
{C , A, B} → {3,1, 2} , {C , B, A} → {3, 2,1}
5. Fitnessfunktion
Für jedes von einem Genetischen Algorithmus zu lösendes Problem ist es notwendig eine
Fitnessfunktion zu konstruieren. Ihre Aufgabe besteht darin die Brauchbarkeit eines
gegebenen Individuums bezüglich des zu optimierenden Problems zu messen und seine
Fortpflanzungschancen zu bewerten. Die gängigste Form ist dabei die so genannte
proportionale oder lineare Fitness
prop fit ( x) :=
Bx
Bgesamt
bei der die Bewertung des Individuums x in direkter Proportion zur Bewertung aller
Individuen steht.
Daniel Aslan
Genetische Algorithmen
9/19
Die Form der Fitnessfunktion ist sehr problemspezifisch und es existieren keine allgemeinen
Regeln für deren Konstruktion. Aus diesem Grund stellt die Definition einer geeigneten
Fitnessfunktion beim Entwurf eines Genetischen Algorithmus eine der größten
Schwierigkeiten dar.
6. Selektion
Die Selektion selbst bestimmt welche Individuen sich paaren dürfen, und erzeugt aus ihnen
die Menge der Nachkommen. Dafür werden ein Selektionsverfahren und ein
Auswahlverfahren verwendet. Das erste Verfahren bestimmt die erwartete Anzahl der Kopien
eines Individuums und entsprechend das Auswahlverfahren die tatsächliche Anzahl. Der
Unterschied zwischen erwarteter und tatsächlicher Anzahl wird dabei als „spread“
bezeichnet.
Die fitnessproportionale Selektion ist in Genetischen Algorithmen sehr verbreitet. Sie steht im
direkten Verhältnis zur Fitness eines Individuums und hat folgende Form
ps ( I i ) =
F ( Ii )
n
∑ F (I
j =1
wobei F die Fitnessfunktion und I i
Selektionswahrscheinlichkeit hier angegeben ist.
j
)
das
Individuum
ist
für
den
die
Einer der größten Nachteile dieses Verfahrens ist der verhältnismäßig niedrige
Selektionsdruck. Ist der Selektionsdruck sehr niedrig so konvergiert der Genetische
Algorithmus verhältnismäßig langsam. Die Rangbasierte Selektion kann in diesem Fall als
alternativ
Verfahren
eingesetzt
werden.
Bei
diesem
Verfahren
ist
die
Selektionswahrscheinlichkeit nicht mehr im direkten Verhältnis zur Fitness gesetzt.
Stattdessen werden die Individuen nach absteigendem Fitnesswert sortiert und
durchnummeriert. Dann wird die Rangzahl der Individuen im direkten Verhältnis zur
Selektionswahrscheinlichkeit gesetzt. Damit ist es möglich denn Selektionsdruck einzustellen.
Einer der gängigsten Auswahlverfahren ist das so genannte roulette-wheel-selection. Das
Prinzip dieses Verfahren entspricht dabei einem Glückrad, das in n Abschnitte unterteilt ist,
wobei n der Populationsgröße entspricht. Die Breite der Abschnitte ist von der
Selektionswahrscheinlichkeit der einzelnen Individuen abhängig und bestimmt die
Auswahlmöglichkeit der Individuen. Um die neue Elterngeneration zu erhalten wird nun nmal am Rad gedreht. Dieses Verfahren hat einen verhältnismäßig hohen spread, da die
Wahrscheinlichkeit das n identische Individuen gezogen werden sehr groß ist.
Nichtsdestotrotz wird es in vielen Genetischen Algorithmen eingesetzt.
Daniel Aslan
Genetische Algorithmen
10/19
7. Rekombination
Mit Rekombination - auch als Crossover bekannt - bezeichnet man den Vorgang aus zwei
oder mehr Elternpaaren neue Individuen zu erzeugen. Dieser Operator stellt den wichtigsten
Suchoperator für Genetische Algorithmen dar. Die neu erzeugten Nachkommen werden aus
den Informationen der gekreuzten Elternpaare systematisch zusammengesetzt. Die Kreuzung
selbst wird über eine Wahrscheinlichkeit pc gesteuert und bestimmt ob eine Kreuzung
stattfindet oder nur einfach Kopien der Elternpaare erzeugt werden. In der Praxis hat sich die
Wahrscheinlichkeit pc ≥ 0.6 als sinnvoll erwiesen, wodurch eine Kreuzung wahrscheinlicher
ist als keine. In folgenden Abschnitten werden die Vorgehensweisen der unterschiedlichen
Operatoren erläutert und anhand vorliegender Codierung unterschieden.
7.1 Binär-Operatoren
Es gibt grundsätzlich drei Varianten von Rekombinationsoperatoren für binär codierte
Probleme. Alle diese Operatoren gehen von zwei Kreuzungspaaren und erzeugen genau zwei
Nachkommen.
1-Punkt-Crossover:
Dieser Operator wählt am Anfang eine zufällige Kreuzungsstelle im Bereich von [ 0, l − 1] ,
wenn die Genotyplänge l beträgt. An diesem Kreuzungspunkt werden die beiden Elternpaare
aufgeteilt und vererben wechselweise ihre Informationen an die beiden Nachkommen. Dies
sieht man in Abbildung 7.1.1.
Abb. 7.1.1
n-Punkt-Crossover:
Dieser Operator stellt die verallgemeinerte Form des 1-Punkt-Crosover dar. Hier werden die
Kreuzungspaare in mehr als zwei Segmenten aufgeteilt. Die Nachkommen erhalten dann
alternierend die Segmente der gekreuzten Elternpaare. Bei zwei Kreuzungspunkten wie in der
Abb. 7.1.2 angegeben, ergibt sich folgende Transformation.
Daniel Aslan
Genetische Algorithmen
11/19
Abb. 7.1.2
Uniform Crossover:
Bei Uniform Crossover werden, im Gegensatz zu den beiden vorherigen Operatoren, die
Elternpaare nicht in Segmenten aufgeteilt. Stattdessen werden für alle Gene der Elternpaare
einzeln überprüft ob sie ausgetauscht werden oder nicht. Maßgeblich ist dabei eine
bitbezogene Wahrscheinlichkeit pi , die für alle Gene der Elternpaare aus dem Intervall [ 0,1)
zufällig bestimmt wird. Ist diese Wahrscheinlichkeit pi ≥ 0.5 dann findet ein Austausch der
Gene der beiden Elternpaare statt sonst wird der Wert des ersten Eltern übernommen. Der
zweite Nachkomme wird mit vertauschten Rollen der Elternpaare bestimmt (siehe Abbildung
7.1.3).
Abb. 7.1.3
7.2 Ganzzahl-Operatoren
Für Ganzzahl-Repräsentationen werden dieselben Operatoren verwendet wie im Falle der
Binär-Codierung. Deshalb wird es unterlassen hier sie explizit zu wiederholen.
Daniel Aslan
Genetische Algorithmen
12/19
7.3 Realzahl-Operatoren
Bei Realzahl-Operatoren gibt es zwei mögliche Vorangehensweisen mit denen die neuen
Nachkommen erzeugt werden können:
•
•
Im ersten Fall können dieselben Operatoren der Binär-Codierung eingesetzt werden,
nur mit dem Unterschied, dass die Allele aus reellen Zahlen bestehen statt binäre. Das
hat jedoch den Nachteil, dass nur durch die Mutationsoperatoren eine gewisse
Diversität
in
die
neue
Generation
hereingebracht
werden
kann.
Rekombinationsoperatoren dieser Art für Realzahl-Codierung sind in der Literatur als
Diskrete Rekombination bekannt und haben die Eigenschaft dass aus den Eltern x und
y erzeugter Nachkomme z nur Informationen hat die bereits in den Eltern vorkommen.
Das heißt alle Allele zi des Nachkommen haben entweder den Wert xi oder yi .
Die zweite Möglichkeit besteht darin ein Operator zu verwenden der in jedem Allel
des Nachkommens einen neuen Wert aus der Kombination der Elterngene erzeugt.
Das heißt die Allele des Nachkommens sind zi = α xi + (1 − α ) yi , wobei α eine
zufällige Zahl aus dem Intervall [ 0,1) ist. Auf diese Weise kann neues Genmaterial
gewonnen werden. Diese Operatoren werden auch als Arithmetische Rekombination
genannt.
In folgendem werden drei Arithmetische Rekombinationsoperatoren vorgestellt.
Einfache Rekombination:
Zunächst wird ein Kombinationspunkt k zufällig bestimmt. Danach wird der erste
Nachkomme dadurch bestimmt, dass die ersten k Gene des ersten Elters unverändert
übernommen werden und die restlichen Gene arithmetisch aus den beiden Eltern ermittelt
werden. Der zweite Nachkomme wird analog erzeugt jedoch mit vertauschten Elternrollen.
Abb. 7.3.1
Einfacharithmetische Rekombination:
Daniel Aslan
Genetische Algorithmen
13/19
Bei diesem Operator wird ebenfalls ein Kombinationspunkt k zufällig gewählt. An dieser
Stelle des ersten Nachkommens wird dann das arithmetische Mittel der beiden Elternpaare
gebildet. Die restlichen Gene werden von dem ersten Elter übernommen. Analog verfährt man
mit dem zweiten Nachkommen (siehe Abbildung 7.3.2).
Abb. 7.3.2
Ganzarithmetische Rekombination:
Das Vorgehen dieses Operators unterscheidet sich von den bisher vorgestellten Operatoren
darin, dass für alle Gene der Nachkommen neue Werte bestimmt werden. Die Bestimmung
dieser Werte geschieht ebenfalls durch die gewichtete Summe der Elterngene. Die Abbildung
7.3.3 verdeutlicht das Vorgehen dieses Verfahrens an einem konkreten Beispiel.
Abb. 7.3.3
Daniel Aslan
Genetische Algorithmen
14/19
8. Mutation
In Zusammenhang mit Genetischen Algorithmen versteht man unter der Mutation die Art und
Weise aus einem Elternteil ein neues Individuum durch zufällige Änderung zu erzeugen. Die
Änderung wird über die so genannte Mutationswahrscheinlichkeit pm (=Mutationsrate)
bestimmt. Die Mutation selbst spielt bei Genetischen Algorithmen eher die Rolle eines
Hintergrundoperators. Es dient dazu eine gewisse Inhomogenität und Divergenz in die
Population rein zubringen. Dadurch wird eine frühzeitige Konvergenz des Algorithmus
verhindert und somit der Selektionsdruck abgeschwächt. Außerdem ist die Mutation in der
Lage potentielle Lösungen zu finden die durch Rekombination alleine nicht erzeugt werden
können.
Die Form der Mutation hängt hauptsächlich von der gewählten Codierungsart ab. Aus diesem
Grund werden in folgenden Mutationsoperatoren bezüglich der verwendeten Codierung
unterschieden und einzeln vorgestellt.
8.1 Binär-Operatoren
Der am häufigsten verwendete Mutationsoperator für binär codierte Probleme ist das so
genannte bit-flipping. Am Anfang der Mutation werden für die n Gene eines Individuums
jeweils eine zufällige Zahl aus dem Intervall [ 0,1) bestimmt. Danach werden alle Gene des
Individuums deren zugeordnete Zufallszahl kleiner ist als die Mutationsrate pm invertiert.
Die Abbildung 8.1 illustriert dieses Verhalten anhand eines Beispiels. Man sieht dass die
Zufallszahlen der dritten, vierten und achten Stelle kleiner sind als die gewählte
Mutationsrate pm . Deshalb werden auch nur die Allele der entsprechenden Gene invertiert.
Abb. 8.1
8.2 Ganzzahl-Operatoren
Für die Mutation von Individuen die in Ganzzahl-Codierung vorliegen gibt es zwei Arten von
Operatoren. Beide Opertoren verändern die einzelnen Gene eines Individuums unabhängig
von den anderen gemäß einer benutzerdefinierten Mutationsrate pm .
Random Resetting:
Daniel Aslan
Genetische Algorithmen
15/19
Der „random resetting“ Operator stellt die verallgemeinerte Form des bit-flipping Operators
aus dem Abschnitt 8.1 dar. Dabei werden die Allele natürlicherweise nicht invertiert, sondern
durch Zahlen ersetzt die aus dem zulässigen Zahlenbereich zufällig bestimmt werden.
Abb. 8.2.1
Creep Mutation:
Dieser Operator wurde in erster Linie dafür entworfen um die ordnungsmäßige Relation der
Individuen soweit wie möglich beizubehalten. Dieses wird dadurch erreicht, in dem zu jeder
Stelle des Genotyps in Abhängigkeit der Mutationsrate pm eine kleine positive oder negative
Zahl dazu addiert. Die Änderungswerte werden für jede Stelle des Genotyps zufällig
bestimmt. Da diese aus einer symmetrischen Verteilung um den Nullpunkt entspringen,
bewirken sie nur sehr kleine Änderungen an dem Genotyp.
Abb. 8.2.2
8.3 Realzahl-Operatoren
Die bisher vorgestellten Mutationsverfahren sind in dieser Form für die meisten Probleme, die
in Realzahl-Codierung vorliegen, nicht anwendbar. Stattdessen ist es gebräuchlich die
einzelnen Gene eines Individuums durch zufällige Werte aus einem vorgegebenen Intervall
[U i , Li ] zu ersetzen. Hierfür existieren zwei Verfahren um diese Werte zu bestimmen:
Uniform Mutation und Nonuniform Mutation.
Uniform Mutation:
Daniel Aslan
Genetische Algorithmen
16/19
Bei diesem Operator werden die neuen Werte der Gene xi' des Genotyps
x1 ,… , xn
gleichmäßig aus dem dazugehörigen Intervall [U i , Li ] zufällig bestimmt. Damit ergibt sich für
Mutation folgende Transformationsvorschrift
x1 ,… , xn → x1' ,… , xn' , mit xi , xi' ∈ [ Li , U i ]
Nonuniform Mutation:
Die meist verwendete Form der Nonuniform Mutation für Realzahl-Codierung ähnelt in
ihrem Aufbau der Creep Mutation für Ganzzahl-Codierung. Die Änderungen des Genotyps
werden in einem sehr kleinen Rahmen gehalten. Das wird hauptsächlich dadurch erreicht, in
dem der Additionswert zufällig aus einer Gausverteilung bestimmt wird und gegebenenfalls
auf dem Intervall [U i , Li ] eingeschränkt wird. Die Gausverteilung garantiert, dass mindestens
zwei der drei Additionswerte innerhalb des vorgegebenen Intervalls liegen. Folgende
Transformation zeigt das Ergebnis dieser Mutation
x1 ,… , xn → x1 ± ∆1 ,… , xn ± ∆ n ,
mit xi , xi ± ∆ i ∈ [ Li , U i ] ∧ ∆ i aus einer Gaussverteilung
8.4 Permutations-Operatoren
Bei Permutations-Operatoren ist es nicht mehr möglich die einzelnen Gene eines Individuums
unabhängig von einander zu betrachten. Stattdessen müssen die Allele innerhalb eines
Genotyps vertauscht werden um gültige Mutationen zu erzeugen. Die Mutationsrate pm
entscheidet deshalb hier ob das gesamte Genotyp einer Mutation unterliegen soll oder nicht.
Die ersten drei Mutationsoperatoren, die in folgendem vorgestellt werden, eignen sich
besonders für Reihenfolgeprobleme, da sie die relative und absolute Position der Allele gut
erhalten.
Swap Mutation:
Als erstes werden zwei Positionen im Genotyp zufällig bestimmt. Dann werden die beiden
Werte der Gene an diesen Positionen im Genotyp gegeneinander ausgetauscht. Die Abbildung
8.4.1 zeigt eine solche Mutation. Hier werden die Werte der Gene an den Stellen zwei und
neun gegeneinander ausgetauscht.
Abb. 8.4.1
Insert Mutation:
Daniel Aslan
Genetische Algorithmen
17/19
Bei diesem Operator werden ebenfalls zwei Positionen im Genotyp zufällig bestimmt. Danach
wird das erste Allel an die unmittelbare Nachbarschaft des zweiten Allels angereiht und die
restlichen Allele werden entlang der eingefügten Position verschoben. Die folgende
Abbildung 8.4.2 demonstriert diesen Sachverhalt, wobei hier wiederum die Gene an den
Stellen zwei und neun ausgewählt wurden.
Abb. 8.4.2
Scramble Mutation:
Dieser Operator wählt zunächst eine unter Sequenz des Genotyps und führt auf diese Sequenz
eine zufällige Verteilung durch. In folgendem Beispiel wurde die Sequenz an der Stelle zwei
und fünf mutiert.
Abb. 8.4.3
9. Reproduktion
Als Reproduktion bezeichnet man den Vorgang aus den neu erzeugten Nachkommen und der
alten Elternindividuen eine neue Generation von Individuen zu bilden. Dafür gibt es zwei
bekannte Verfahren.
Das erste Verfahren – bekannt als general replacement – ersetzt alle alten Individuen durch
neue. Dies birgt jedoch den Nachteil in sich, dass potentiell gute Lösungen der alten
Generation verloren gehen können und damit auch die Qualität der Lösungsmenge sich
verschlechtern kann. Auf der anderen Seite verhindert die Verwendung dieses
Ersetzungsschemas eine frühzeitige Konvergenz des Genetischen Algorithmus und nutzt die
ganze Breite des möglichen Suchraums aus.
Das „steady-state“ Ersetzungsschema hingegen ersetzt nur wenige Individuen der alten
Generation durch neue. Das hat den Vorteil, dass gute Lösungen der alten Generation nicht
verloren gehen und somit die mittlere Güte der Gesamtpopulation erhalten bleibt. Welche der
Individuen ersetzt werden kann auf zwei Arten entschieden werden:
• Das Ersetzen des schlechtesten Individuum durch ein besseres
• Ersetzen eines zufällig gewählten Individuums
Die erstere Strategie ist der Zweiten vorzuziehen da in der Praxis damit bessere Ergebnisse
erzielt wurden.
Daniel Aslan
Genetische Algorithmen
18/19
10. Referenzen
•
•
•
•
•
•
Chap 3, Introduction to Evolutionary Computation (2003, A.E. Eiben and J.E.Smith)
An Overview of Genetic Algorithms: Part 1, Fundamental (1993, D. Beasley, D.R.
Bull, and.R. Martin)
Evolutionäre Algorithmen (2004, I. Gerdes, F. Klawonn, R. Kruse)
http://techni.tachemie.uni-leipzig.de/jsga/gakurz.html
http://fachpublikation.de/dokumente/01/19/
http://www.chevreux.org/diplom/node32.html
Daniel Aslan
Genetische Algorithmen
19/19
Herunterladen