14.01.2014 Aufrufe

Genetische Algorithmen - BFH-TI Staff

Genetische Algorithmen - BFH-TI Staff

Genetische Algorithmen - BFH-TI Staff

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!