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