Genetische Algorithmen - BFH-TI Staff
Genetische Algorithmen - BFH-TI Staff
Genetische Algorithmen - BFH-TI Staff
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
B<strong>TI</strong>7311P INFORMA<strong>TI</strong>K SEMINAR<br />
<strong>Genetische</strong> <strong>Algorithmen</strong><br />
Informatik Seminar<br />
Mathias Fuhrer<br />
22.05.2013<br />
Dieses Dokument beschreibt angelehnt an der natürlichen Evolution die Ideen und Konzepte der<br />
<strong>Genetische</strong>n <strong>Algorithmen</strong>. Es liefert zudem einen kurzen Einblick in die Reproduktion der Natur. Nach<br />
dem Aufzeigen der Struktur eines <strong>Genetische</strong>n Algorithmus wird konkret auf verschiedene<br />
Implementationsmöglichkeiten der Darstellung und der einzelnen Operationen von <strong>Genetische</strong>n<br />
<strong>Algorithmen</strong> eingegangen. Zum Abschluss werden noch einige Anwendungsgebiete, sowie die Vor- und<br />
Nachteile von <strong>Genetische</strong>n <strong>Algorithmen</strong> aufgezeigt.
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Inhaltsverzeichnis<br />
Einleitung ................................................................................................................................................. 3<br />
Reproduktion in der Natur ...................................................................................................................... 4<br />
Der genetische Code ........................................................................................................................... 4<br />
Reproduktion ....................................................................................................................................... 4<br />
Selektion .......................................................................................................................................... 5<br />
Kreuzung .......................................................................................................................................... 5<br />
Mutation .......................................................................................................................................... 5<br />
Simpler <strong>Genetische</strong>r Algorithmus ........................................................................................................... 7<br />
Pseudocode ......................................................................................................................................... 8<br />
Implementation ....................................................................................................................................... 9<br />
Grundbegriffe und ihre Bedeutung ..................................................................................................... 9<br />
<strong>Genetische</strong> Darstellung ....................................................................................................................... 9<br />
Fitness-Funktion ................................................................................................................................ 10<br />
Selektion ............................................................................................................................................ 11<br />
Roulette Wheel Selection Method ................................................................................................ 11<br />
Kreuzung ............................................................................................................................................ 12<br />
Mehrpunktekreuzung (Multi-point Crossover) ............................................................................. 12<br />
Einheitliche Kreuzung (Uniform Crossover) .................................................................................. 12<br />
Mutation ............................................................................................................................................ 13<br />
Wiedereinfügen ................................................................................................................................. 13<br />
Beendung eines <strong>Genetische</strong>n Algorithmus ....................................................................................... 13<br />
Anwendungsgebiete .............................................................................................................................. 14<br />
Vorteile .............................................................................................................................................. 14<br />
Nachteile ........................................................................................................................................... 14<br />
Fazit ................................................................................................................................................... 15<br />
Referenzen ............................................................................................................................................ 16<br />
Mathias Fuhrer 2
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Einleitung<br />
<strong>Genetische</strong> <strong>Algorithmen</strong> sind Verfahren, die zur Lösung von komplexen Optimierungsaufgaben<br />
eingesetzt werden. <strong>Genetische</strong> <strong>Algorithmen</strong> sind ein Teil der Evolutionären <strong>Algorithmen</strong>, einem schnell<br />
wachsendem Gebiet der Künstlichen Intelligenz. Wie der Name schon erahnen lässt, sind sie inspiriert<br />
von der Evolutionstheorie von Darwin. Denn die Evolution in der Natur hat sehr gute Ergebnisse für<br />
Anpassungs- bzw. Optimierungsprobleme geliefert.<br />
Die Idee vom evolutionären Rechnen wurde als erstes 1960 von I. Rechenberg in seiner Arbeit<br />
Evolutionsstrategie vorgestellt. Seine Idee wurde dann von weiteren Forschern entwickelt und<br />
erweitert. Die <strong>Genetische</strong>n <strong>Algorithmen</strong> im speziellen sind von John Holland erfunden und von ihm,<br />
seiner Studenten und Kollegen entwickelt worden. Das führte zu Hollands Buch Adaption in Natural<br />
and Artificial Systems aus dem Jahre 1975.<br />
1992 entwickelte John Koza Programme mit <strong>Genetische</strong> <strong>Algorithmen</strong>, um bestimmte Aufgaben zu<br />
lösen. Diese Methode nannte er fortan <strong>Genetische</strong> Programmierung und wird häufig auch als Synonym<br />
für <strong>Genetische</strong> <strong>Algorithmen</strong> verwendet.<br />
Mathias Fuhrer 3
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Reproduktion in der Natur<br />
Zum Erklären der Ausdrücke und Operationen der <strong>Genetische</strong>n <strong>Algorithmen</strong> beginnen wir mit einem<br />
kurzen Exkurs über die natürlichen Reproduktionsmechanismen. Für den Biologen würde dieses<br />
Kapitel nur die halbe Wahrheit beinhalten, aber zum Verstehen der Ideen hinter den <strong>Genetische</strong>n<br />
<strong>Algorithmen</strong> wird es reichen.<br />
Der genetische Code<br />
Alle lebenden Organismen bestehen aus Zellen. In jeder Zelle ist dasselbe Set von Chromosomen<br />
vorhanden. Ein Chromosom sind Stränge von DNS (Desoxyribonukleinsäure Abbildung 1) und dienen<br />
als Programm für den Aufbau und Weiterentwicklung des ganzen Organismus.<br />
Abbildung 1: DNS (Desoxyribonukleinsäure). Das Alphabet beinhaltet Adenin (A), Thymin (T), Guanin (G) und Cytosin (C).<br />
Chromosomen bestehen aus Genen, Blöcke von DNS. Jedes Gen verschlüsselt ein bestimmtes Protein.<br />
Grundsätzlich kann gesagt werden, dass jedes Gen eine Eigenschaft, wie zum Beispiel die Augenfarbe<br />
beschreibt. Mögliche Werte (bspw. blau, grün, braun) dieser Eigenschaft werden Allele genannt.<br />
Zudem hat jedes Gen seine eigene Position im Chromosom. Diese Position wird Locus genannt.<br />
Chromosom<br />
Abbildung 2: Ein Chromosom aus Genen<br />
Die Anzahl Gene ist schon bei ganz kleinen Individuen enorm gross:<br />
Bakterie: 5 x 10 6<br />
Fliege: 165 x 10 6<br />
Mensch: 3 x 10 9<br />
Gen<br />
Reproduktion<br />
Viele Individuen mit unterschiedlichem, aber ähnlichem genetischem Code werden als Population<br />
zusammengefasst und bilden einen genetischen Pool. Ein wichtiges Ziel einer solchen Population ist<br />
das Überleben in einer sich ändernden Umgebung. Das führt dazu, dass die genetische Information<br />
während der Suche nach der besten Überlebensfähigkeit stark variieren muss. Die Natur hat für diese<br />
Mathias Fuhrer 4
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Aufgabe das sehr effektive Prinzip der genetischen Reproduktion gefunden. Folgende Schritte sind<br />
dafür nötig:<br />
Selektion<br />
Nicht alle Individuen können sich selbst reproduzieren. Viele sterben bevor sie erwachsen werden und<br />
sich fortpflanzen können. Andere sind ausgeschlossen weil sie krank sind oder zum Beispiel im Kampf<br />
ums Weibchen verlieren. Die allgemeine Fähigkeit sich erfolgreich fortzupflanzen wird als Fitness jedes<br />
einzelnen beschrieben. Aus verschiedenen Gründen der Selektion werden nur die fittesten Individuen<br />
am Reproduktionsprozess teilnehmen.<br />
Kreuzung<br />
Nach der Befruchtung der Weibchen durch die Männchen wird der genetische Code der beiden<br />
Individuen durch den Kreuzungsprozess vermischt. Teile der männlichen genetischen Information<br />
werden mit Teilen der weiblichen verbunden. Es gibt viele verschiedenen Möglichkeiten wie diese<br />
dann gebildet werden.<br />
Eltern<br />
Kreuzung<br />
Tiefe Kreuzung<br />
Hohe Kreuzung<br />
Kinder<br />
Abbildung 3: Nach dem Selektionsprozess und Befruchtung des Weibchens durch das Männchen werden die beiden<br />
genetischen Codes durch Kreuzung gemischt.<br />
Als Resultat dieses Prozesses haben die Kinder dann neu Kombinationen von Genen. Die Kreuzung ist<br />
ähnlich einem Suchalgorithmus zum Finden von neuen Lebensformen. Diese ist aber nicht einfach<br />
Zufällig. Effizienterweise werden historische Informationen genutzt, um auf neue Suchpunkte mit<br />
erwarteten Verbesserung der Leistung zu spekulieren.<br />
Mutation<br />
Wenn nur die Kreuzung neue Kombinationen ergäbe, so würden alle Individuen nur eine<br />
Neugestaltung der Gene aus der Population ergeben. Neue Information kann nur durch Mutation in<br />
die Population gelangen. Kosmische Strahlung, chemische Substanzen, Fehler in der Verknüpfung der<br />
Mathias Fuhrer 5
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
DNS oder andere Effekte können aus Versehen ein oder mehre Gene im Chromosom ändern. Nichts<br />
desto trotz sind Mutationen selten und meistens haben sie einen zerstörerischen Einfluss auf die<br />
Individuen.<br />
Vorher<br />
Zerstörung<br />
Nachher<br />
Mutation<br />
Abbildung 4: Eine Entstellung (bspw. durch Kosmische Strahlung, chemische Substanzen, Fehler in der Verknüpfung der DNS)<br />
ändern den Inhalt einen Chromosms.<br />
Mathias Fuhrer 6
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Simpler <strong>Genetische</strong>r Algorithmus<br />
Für den Einsatz von <strong>Genetische</strong>n <strong>Algorithmen</strong> müssen in der Regel folgende Voraussetzungen erfüllt<br />
werden:<br />
<br />
<br />
<br />
<br />
Eine Population die aus mehreren Individuen beseht<br />
Die Existenz so genannter genetischer Operatoren<br />
Eine Fitnessfunktion, die für jedes Individuum einen Funktionswert – die Fitness – festlegt<br />
Nach mehreren Änderungen ergibt sich eine neue Population<br />
Ausgehend von diesen Voraussetzungen beginnt dann ein <strong>Genetische</strong>r Algorithmus mit einer<br />
Anfangspopulation unterschiedlicher Individuen. Diese Individuen können in unterschiedlicher<br />
Codierung (siehe<br />
<strong>Genetische</strong> Darstellung) vorliegen. Durch die entsprechenden genetischen Operatoren werden diese<br />
Individuen so verändert, dass eine neue Population entsteht. Dabei werden in die neue Population<br />
überwiegend die Individuen mit der besten Fitness übernommen, so dass die potentiellen<br />
Lösungskandidaten von Generation zu Generation besser werden. Auf diese Weise nähert sich der<br />
Genetisch Algorithmus Schritt für Schritt der Lösung des Optimierungsproblems.<br />
Die Grundstruktur der meisten <strong>Genetische</strong>n <strong>Algorithmen</strong> ist in ihrem Aufbau sehr ähnlich und kann in<br />
folgender Weise charakterisiert werden:<br />
1. Generieren einer zufälligen Population von n Chromosomen (passende Lösungen für das<br />
Problem)<br />
2. Evaluieren der Fitness f(x) jedes Chromosoms x aus der Population.<br />
3. Erstellen einer neuen Population mit dem Wiederholen der folgenden Schritte bis die<br />
Population komplett ist:<br />
a. Selektieren von zwei Eltern-Chromosoms aus der Population gemäss deren Fitness (je<br />
besser die Fitness umso grösser die Chance ausgewählt zu werden)<br />
b. Mit einer gegebenen Kreuzungs-Wahrscheinlichkeit die Eltern kreuzen zum Formen<br />
eines neuen Kindes. Wenn keine Kreuzung vorgenommen wird, entspricht das Kind<br />
genau einer Kopie des Elternteils.<br />
c. Mit einer gegebenen Mutations-Wahrscheinlichkeit mutieren des Kindes an einer<br />
zufälligen Stelle im Chromosom.<br />
d. Wiedereinfügen des Kindes in der Population.<br />
4. Benutzen der neuen generierten Population für einen weiteren Lauf des Algorithmus ab dem<br />
zweiten Schritt.<br />
Auf der nächsten Seite ist der Gentische Algorithmus noch abgekürzt als Pseudocode in Englisch<br />
angegeben.<br />
Mathias Fuhrer 7
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Pseudocode<br />
Function Genetic-Algorithm(population, Fitness-Fn) returns individual<br />
inputs:<br />
repeat<br />
population, a set of individuals<br />
Fitness-Fn, a function that measures the fitness of an individual<br />
new-population ← empty set<br />
loop for i from 1 to Size(population) do<br />
x ← Random-Selection(population, Fitness-Fn)<br />
y ← Random-Selection(population, Fitness-Fn)<br />
child ← Reproduce(x, y)<br />
if (small random probability) then child ← Mutate(child)<br />
add child to new-population<br />
population ← new-population<br />
until some individual is fit enough, or enough time has elapsed<br />
return the best individual in population according to Fitness-Fn<br />
Mathias Fuhrer 8
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Implementation<br />
In den folgenden Unterkapiteln werden einige Möglichkeiten zum Implementieren der nötigen Schritte<br />
eines <strong>Genetische</strong>n Algorithmus beschrieben. Welche Implementation gewählt werden soll, ist immer<br />
abhängig vom Problem und es gibt nicht generell ein richtigen oder falschen Weg.<br />
Grundbegriffe und ihre Bedeutung<br />
Hier nochmals kurz die Begriffe aus der Biologie und Informatik:<br />
Begriff Biologie Informatik<br />
Individuum Lebewesen Lösungskandidat<br />
Chromosom DNS-Histon-Protein-Strang Zeichenkette<br />
legt den „Bauplan“ bzw. (einen Teil der) Eigenschaften eines Individuums in<br />
kodierter Form fest<br />
meist mehrere Chromosomen je<br />
Individuum<br />
meist nur ein Chromosom je Individuum<br />
Gen Teilstück eines Chromosoms ein Zeichen<br />
Grundlegende Einheit der Vererbung, die eine (Teil-)Eigenschaft eines<br />
Individuums festlegt<br />
Allel Ausprägung eines Gens Wert eines Zeichens<br />
Je Chromosom gibt es nur eine Ausprägung eines Genes<br />
Locus Ort eines Gens Position eines Zeichens (Index)<br />
in einem Chromosom gibt es an jedem Ort nur genau ein Gen<br />
Population Menge von Lebewesen Familie / Multimenge von<br />
Chromosomen<br />
Fitness<br />
Tauglichkeit / Angepasstheit eines<br />
Lebewesens<br />
Güte / Tauglichkeit eines<br />
Lösungskandidaten<br />
bestimmte Überlebens- und Fortpflanzungschancen<br />
<strong>Genetische</strong> Darstellung<br />
Individuen bzw. deren Chromosomen werden als Zeichenketten über ein Alphabet so dargestellt, dass<br />
jede Entscheidungsvariable (Eigenschaft) eindeutig als ein Gen abgebildet wird. In den <strong>Genetische</strong>n<br />
<strong>Algorithmen</strong> wird am häufigsten das binäre Alphabet {0, 1} verwendet. Andere Darstellungen wie<br />
ternäre, ganzzahlige oder reell wertige können natürlich auch verwendet werden. Zum Beispiel kann<br />
ein Problem mit zwei Variablen x 1 und x 2 auf ein Chromosom (wie in Abbildung 5) in binären Worten<br />
abgebildet werden. Der Wert x 1 ist mit 10 Bits und der Wert x 2 mit 15 Bits codiert.<br />
Abbildung 5: Beispiel einer Implementation von zwei Variablen x 1 und x 2 als binäre Worte.<br />
Mathias Fuhrer 9
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Ein Binärcode kann in seiner arithmetischen Codierung wie oben dargestellt werden. Das kann aber zu<br />
Problemen bzw. unterschiedlich Starken Veränderungen durch Kreuzung und Mutation führen, denn<br />
für zwei benachbarte Werte wie 3 (011) und 4 (100) müssen mehrere Bits geändert werden um vom<br />
einen Wert auf den anderen zu kommen. Die Hamming-Distanz zwischen zwei werten a und b ist gleich<br />
der Anzahl Einsen in a XOR b. Für einen Binärcode ist sie grösser eins. Der Gray-Code schafft diesem<br />
Problem Abhilfe. Mit seiner Hamming-Distanz von eins ermöglicht er eine Leistungssteigerung für<br />
<strong>Genetische</strong> <strong>Algorithmen</strong>.<br />
Abbildung 6: Beispiel eines 3-Bit Binärcode verglichen mit dem Grey-Code.<br />
Die Umformung zwischen Binärcode und Grey-Code ist zusätzlich sehr einfach und hier in einem<br />
kleinen C++ Codebeispiel dargestellt:<br />
unsigned int binary_to_gray( unsigned int& binval )<br />
{<br />
}<br />
return binval ^ ( binval >> 1 );<br />
unsigned int grey_to_binary( unsigned int& greyval )<br />
{<br />
}<br />
unsigned int binary;<br />
binary = 0;<br />
while ( greyval != 0 )<br />
{<br />
}<br />
binary ^= greyval;<br />
greyval >>= 1;<br />
return binary;<br />
Das schlussendliche binäre Chromosom wird durch zusammenhängen allen einzeln codierten Genen<br />
hintereinander erstellt. Das Chromosom kann auch aus Fliesskommapunkte konstruiert werden. Dies<br />
erschwert aber die Implementation der Kreuzung und Mutation erheblich.<br />
Fitness-Funktion<br />
Nach dem entschlüsseln der Chromosom Darstellung zurück in die Entscheidungsvariablen ist es<br />
möglich die Leistung bzw. Fitness jedes Individuums der Population herauszufinden. Dabei kann mit<br />
Hilfe einer Funktion die Leistung bezogen auf den Problembereich charakterisiert werden. In der Natur<br />
würde das die Fähigkeit zum Überleben im in seiner Umgebung zeigen.<br />
Mathias Fuhrer 10
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Die Fitness-Funktion wird als Messwerkzeug für diese Aufgabe verwendet. In einem<br />
Minimierungsproblem ist dann das fitteste Individuum das mit dem kleinsten numerischen Resultat<br />
aus der Fitness-Funktion. Gerade umgekehrt ist es bei einem Maximierungsproblem.<br />
Selektion<br />
Selektion ist der Prozess zum Bestimmen der Häufigkeit, dass ein bestimmtes Individuum für die<br />
Reproduktion gewählt wird und somit die Anzahl dessen Nachkommen bestimmt.<br />
Der wesentliche Teil des Selektionsprozesses ist das stochastische wählen der Eltern einer Generation.<br />
Es ist wichtig, dass die fitteren Individuen eine grössere Chance haben zu überleben als die<br />
schwächeren. Das wiederspiegelt die Natur, in der im Normalfall die fitteren Individuen auch die<br />
grössere Wahrscheinlichkeit zum Fortpflanzen haben. Aber auch die schwächeren Individuen müssen<br />
eine Möglichkeit haben sich einzubringen. In der Natur hat sich gezeigt, dass auch diese für die Zukunft<br />
wichtige Teile in ihrem genetischen Code mitbringen.<br />
Roulette Wheel Selection Method<br />
Eines der einfachsten Selektionsverfahren ist das roulette wheel selection-Verfahren, auch stockastic<br />
sampling with replacement (SSR) genannt. Dabei handelt es sich um einen stochastischen Algorithmus<br />
mit folgender Technik:<br />
1. Das Individuum wird als ein fortlaufendes Segment einer Linie betrachtet. Die Länge des<br />
Segments bildet dabei die Grösse der Fitness ab.<br />
2. Eine zufällige Zahl wird innerhalb der Linie generiert und das Individuum, mit dem Segment<br />
das den Wert abdeckt, wird selektiert.<br />
3. Dieser Ablauf wird wiederholt bis die gewünschte Anzahl Eltern gewählt ist.<br />
Diese Technik ist analog zu derer des Rouletterads. Jedes Stück des Rads ist proportional zur Grösse<br />
der Fitness wie in der Abbildung 7 zu sehen ist.<br />
Abbildung 7: Roulette Wheel Selection.<br />
Die Implementation einer Rouletterad-Selektion ist ziemlich einfach. Begonnen wird mit einem Array,<br />
welches alle Fitness-Werte von jedem Individuum an einer gegebenen Position durch seien Index<br />
enthält. Zum Beispiel für einen kleinen Bestand von 9 Individuen:<br />
Als nächstes wird die kumulierte Summe der Fitness-Werte berechnet.<br />
Mathias Fuhrer 11
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Weiter werden alle Werte durch die Summe aller Fitness-Werte dividiert. Dabei wird der Inhalt des<br />
Arrays normalisiert.<br />
Zum Schluss wird mit einem Zufallsgenerator eine Nummer zwischen 0 und 1 generiert. Der Index des<br />
entsprechenden Individuums kann in O (log n) Zeit mit einer binären Such-Algorithmus gefunden<br />
werden. Ist in unserem Beispiel der Wert 0.612 generiert, so ist der entsprechende Index 5:<br />
In der klassischen roulette wheel selection-Methode wird die Segmentgrösse und<br />
Selektionswahrscheinlichkeit während des Prozesses nicht verändert. Stochastic sampling with partial<br />
replacement (SSPR) erweitert SSR um das Verkleinern der Segmente. Jedes Mal wenn ein Individuum<br />
selektiert ist, wird die Grösse des Segments um einen konstanten Wert verkleinert. Wird die Grösse<br />
eines Segments negativ, so wird sie auf 0 gesetzt.<br />
Kreuzung<br />
Der wichtigste Operator zum Erstellen von neuen Chromosomen in den <strong>Genetische</strong>n <strong>Algorithmen</strong> ist<br />
die Kreuzung. Wie in der Natur produziert die Kreuzung neue Individuen aus dem genetischen Material<br />
von beiden Eltern. Die einfachsten Arten der Kreuzung werden hier kurz beschrieben.<br />
Mehrpunktekreuzung (Multi-point Crossover)<br />
Bei der Mehrfachkreuzung werden für eine bestimmte Anzahl von Kreuzungspositionen m zufällig die<br />
Kreuzpunkte k i = {1, 2, 3, …, l-1} mit l für die Länge des Chromosoms bestimmt und dann ohne Duplikat<br />
aufsteigend sortiert. Danach werden die Bits zwischen den fortlaufenden Kreuzpunkte zwischen den<br />
Eltern vertauscht. Dabei entstehen zwei neue Nachkommen. Besser verständlich wird dies mit der<br />
Abbildung 8.<br />
Abbildung 8: Mehrfachkreuzung mit m = 4.<br />
Die Idee hinter der Mehrfachkreuzung ist wie bei den meisten Variationen der Kreuzung, dass die für<br />
die Fitness sehr essentiellen Gene nicht unbedingt neben einander liegen. Weiter wird durch die<br />
teilende Natur der Mehrfachkreuzung zu Beginn der Suchraum eher vergrössert und liefert somit<br />
weniger schnell ein hoch fittes Individuum. Dafür wird die ganze Suche robuster und das Resultat ist<br />
breiter abgestützt.<br />
Einheitliche Kreuzung (Uniform Crossover)<br />
Einzel- und Mehrkreuzpunktkreuzung definieren die Kreuzpunkte zwischen einigen Loci (Mehrzahl von<br />
Locus). Die einheitliche Kreuzung generalisiert das Schema und macht jeden Locus zum potentiellen<br />
Kreuzungspunkt. Es wird zufällig eine Kreuzungsmaske mit derselben Länge des Chromosoms erstellt<br />
Mathias Fuhrer 12
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
und die Gleichheit der Bits der Masken bestimmt, von welchem Elternteil das Gen für einen<br />
Nachkommen übernommen werden soll. Als Beispiel zwei Eltern, Kreuzungsmaske und die<br />
resultierenden Kindern:<br />
Hier ist der erste Nachkomme O1 durch die Bits von P1 erstellt, wenn diese auf der Kreuzungsmaske<br />
eine 1 aufweisen und durch P2 bei einer 0. Der Nachkomme O2 ist mit der inversen Maske, durch<br />
wechseln von P1 und P2 erstellt worden.<br />
Mutation<br />
In der natürlichen Evolution ist die Mutation ein Zufallsprozess, der ein Teil oder ein ganzes Gen mit<br />
irgendeinem anderen ersetzt. Dabei entsteht eine neue Chromosomstruktur. In <strong>Genetische</strong>n<br />
<strong>Algorithmen</strong> wird die Mutation zufällig mit einer sehr kleinen Wahrscheinlichkeit (typischerweise<br />
zwischen 0.001 und 0.01) angewendet. Im Normalfall handelt es sich dabei um einen<br />
Hintergrundoperator, der vor allem eine Garantie liefert, dass die Wahrscheinlichkeit zum Finden<br />
eines gegebenen Chromosoms nie 0 sein kann. Weiter kann auch gutes genetisches Material, das durch<br />
die Selektion und Kreuzung weggefallen ist, wiederbelebt werden.<br />
Original String<br />
Mutationspunkt<br />
Mutierter String<br />
Abbildung 9: Binäre Mutation.<br />
Wiedereinfügen<br />
Die neue Population, die durch Selektion und Rekombination erstellt wurde, kann weniger Individuen<br />
enthalten als die vorherige. Diese Differenz wird Generationenlücke genannt. Um die ursprüngliche<br />
Grösse wieder zu erlangen, müssen die neuen Individuen wieder in die alte Population eingefügt<br />
werden. Ähnlich ist es auch wenn nicht alle neuen Individuen verwendet werden oder zu viele erstellt<br />
wurden. In diesen Fällen muss ein Wiedereinfügungsschema erstellt werden, das bestimmt welche<br />
Individuen in die neue Population gelangen.<br />
Dabei scheint es, als wäre die beste Strategie das Ersetzten der Schwächsten in der alten Population<br />
durch die neuen Individuen. Es wurde aber in etlichen Studien gezeigt, dass es keine signifikanten<br />
Unterschiede gibt, wenn die Individuen durch proportionale Selektion oder deterministisch durch die<br />
Fitness gegeben ersetzt werden. Es stellte sich aber heraus, dass das erfolgreichste Ersetzungsschema<br />
das Ersetzen der ältesten Mitglieder der Population ist.<br />
Beendung eines <strong>Genetische</strong>n Algorithmus<br />
Weil ein <strong>Genetische</strong>r Algorithmus eine stochastische Suchmethode ist, ist es schwer ein formal<br />
spezifiziertes Erfüllungskriterium zu definieren. Wenn die Fitness einer Population über mehrere<br />
Generationen mehr oder weniger unverändert bleibt, kann von einem guten Resultat ausgegangen<br />
werden. Häufig wird auch eine bestimmte Anzahl von Generationen, die erstellt werden sollen,<br />
vorgegeben und dann mit dem fittesten Individuum gegen das Problem getestet. Ist es nicht<br />
befriedigend, muss der <strong>Genetische</strong> Algorithmus nochmals gestartet oder abgeändert werden.<br />
Mathias Fuhrer 13
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Anwendungsgebiete<br />
Grundsätzlich können <strong>Genetische</strong> <strong>Algorithmen</strong> in allen Bereichen eingesetzt werden, in denen<br />
numerische Lösungen von Optimierungsproblemen gesucht werden.<br />
Beispiele für Optimierungsprobleme:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Parameteroptimierung<br />
z.B. Krümmung von Rohren für minimalen Wiederstand<br />
Allgemein: Finden eines Parametersatzes, so dass einen gegeben reellwertige Funktion ein<br />
(möglichst globales) Optimum annimmt.<br />
Packprobleme<br />
z.B. Füllen eines Rucksacks mit maximalem Wert oder Packen möglichst weniger Kisten mit<br />
gegebenen Gütern<br />
Wegeprobleme<br />
z.B. Problem des Handlungsreisenden<br />
Reihenfolge von anzufahrenden Zielen, Fahrtroutenoptimierung , Verlegen von Leiterbahnen<br />
auf Platinen und in Schaltkreisen<br />
Anordnungsprobleme<br />
z.B. Steinerproblem (facility allocation problem): Positionierung von Verteilerknoten z.B. in<br />
einem Telefonnetz<br />
Planungsprobleme<br />
z.B. Ablaufplane (Scheduling), Arbeitsplane, Operationenfolgen (auch z.B. zur Optimierung in<br />
Compilern | Umordnung der Befehle)<br />
Strategieprobleme<br />
z.B. Gefangenendilemma und andere Modelle der Spieltheorie, Verhaltensmodellierung von<br />
Akteuren im Wirtschaftsleben<br />
biologische Modellbildung<br />
z.B. Netspinner (regelbasiertes Modell, das beschreibt, wie eine Spinne ihr Netz baut;<br />
Parameter werden durch einen genetischen Algorithmus optimiert und mit Beobachtungen<br />
verglichen; liefert recht gutes Modell)<br />
Vorteile<br />
<strong>Genetische</strong> <strong>Algorithmen</strong> bringen den Vorteil, dass wenig Problemwissen nötig ist um ans Ziel zu<br />
kommen. Weiter können sie auch für diskontinuierliche Probleme verwendet werden. Denn die<br />
natürliche Evolution ist eigentlich ein Anpassungs- und kein Optimierungsproblem.<br />
<strong>Genetische</strong> <strong>Algorithmen</strong> bieten eine parallele Suche in einer Population von möglichen Lösungen,<br />
sodass immer mehrere potentielle Lösungen gefunden werden.<br />
<strong>Genetische</strong> <strong>Algorithmen</strong> ermöglichen die Behandlung von Problemen, bei denen traditionelle<br />
Optimierungsverfahren aufgrund von Nichtlinearitäten, Diskontinuitäten und Multimodalität<br />
versagen.<br />
Nachteile<br />
<strong>Genetische</strong> <strong>Algorithmen</strong> bieten im Allgemeinen keine Garantie, das globale Optimum in vernünftiger<br />
Zeit zu finden und sie haben oft sehr grossen Rechenzeitbedarf.<br />
Mathias Fuhrer 14
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Fazit<br />
Trotz aller Vorteile sind <strong>Genetische</strong> <strong>Algorithmen</strong> eher die schlechtere Wahl für Probleme, für die es<br />
spezielle Optimierungsverfahren gibt, da diese in der Regel effizienter arbeiten. So sind zum Beispiel<br />
Newton-Raphson-Methoden, die Gradienten bei der Optimierung verwenden, bei der Suche lokaler<br />
Minima um ein Vielfaches schneller als <strong>Genetische</strong> <strong>Algorithmen</strong>. Die fehlende Anwendung von<br />
Problemwissen wird also durch eine potentiell sehr lange Laufzeit erkauft.<br />
Mathias Fuhrer 15
<strong>Genetische</strong> <strong>Algorithmen</strong> 22. Mai 2013<br />
Referenzen<br />
Anrig, B. (2012). Computer Perception and Artificial Intelligence - Searching.<br />
Aslan, D. (Mai 2013). <strong>Genetische</strong> <strong>Algorithmen</strong>. Von www2.cs.uni-paderborn.de: http://www2.cs.unipaderborn.de/cs/ag-klbue/de/courses/ws04/ea/students/ga_report.pdf<br />
abgerufen<br />
Borgel, C. (Mai 2013). <strong>Genetische</strong> <strong>Algorithmen</strong>. Von www.borgelt.net:<br />
http://www.borgelt.net/slides/ga.pdf abgerufen<br />
Cattin, R. (2012). Module 7282 Advanced Computer Perception.<br />
Evolutionärer Algorithmus. (Mai 2013). Von Wikipedia:<br />
http://de.wikipedia.org/wiki/<strong>Genetische</strong>_<strong>Algorithmen</strong> abgerufen<br />
Genetic algorithm. (Mai 2013). Von Wikipedia: http://en.wikipedia.org/wiki/Genetic_algorithm<br />
abgerufen<br />
<strong>Genetische</strong>r Code. (Mai 2013). Von Wikipedia: http://de.wikipedia.org/wiki/<strong>Genetische</strong>r_Code<br />
abgerufen<br />
Mathias Fuhrer 16