„Mutation (evolutionärer Algorithmus)“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[gesichtete Version][ungesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Änderungen, Ergänzungen und Fehlerkorrektuten siehe Diskussionseite
Zeile 1: Zeile 1:
Unter '''Mutation''' versteht man bei einem [[Evolutionärer Algorithmus|evolutionären Algorithmus]] (EA) die zufällige Änderung eines [[Genom (evolutionärer Algorithmus)|Genoms]]. Sie ist die Umsetzung der biologischen [[Mutation]] für EA. Eine solche Zuordnung von einem alten Genom (und eventuell [[Zufallszahl]]en) zu einem neuen Genom ist eine [[Funktion (Mathematik)|Funktion]] und heißt '''Mutations-Funktion'''. Jede ''Mutations-Funktion'' ist ein [[genetischer Operator]].
Unter '''Mutation''' versteht man bei einem [[Evolutionärer Algorithmus|evolutionären Algorithmus]] (EA) die zufällige Änderung eines [[Genom (evolutionärer Algorithmus)|Genoms]]. Sie ist die Umsetzung der biologischen [[Mutation]] für EA. Eine solche Zuordnung von einem alten Genom (und eventuell [[Zufallszahl]]en) zu einem neuen Genom ist eine [[Funktion (Mathematik)|Funktion]] und heißt '''Mutations-Funktion'''. Jede ''Mutations-Funktion'' ist ein [[genetischer Operator]].


Die Gesamtheit aller in einem EA zur Anwendung kommenden Mutationsoperatoren müssen folgenden Anforderungen genügen:
Eine Mutation sollte idealerweise nur kleine Änderungen hervorrufen, jedoch in der Summe so viel, dass die [[Individuum|Individuen]] über die Laufzeit eines evolutionären Algorithmus fast die gesamte [[Wertelandschaft]] abdecken, auf der optimiert werden soll. Am Anfang des Laufens eines EA ist es deswegen günstiger, größere Änderungen zuzulassen, während im fortgeschritteneren Stadium nur noch kleine Änderungen erlaubt sein sollten, um Individuen, die sich bereits nahe einem [[Optimum]] befinden, nicht von diesem Optimum wegzubringen.
# Kleine Änderungen müssen wahrscheinlicher sein als große.
# Jeder Punkt im [[Suchraum]] muss durch eine oder mehrere Mutationen erreichbar sein.
# Es darf keine Bevorzugung von Teilen oder Richtungen im Suchraum (keine ''Drift'') geben.


Am Anfang des Laufens eines EA ist es günstiger, größere Änderungen zuzulassen, während im fortgeschritteneren Stadium nur noch kleine Änderungen bevorzugt sein sollten, um Individuen, die sich bereits nahe einem [[Optimum]] befinden, nicht von diesem Optimum wegzubringen.
Ein evolutionärer Algorithmus mit einer '''globalen Mutationsrate''' (Anteil der Gesamtpopulation, die der Mutation unterzogen wird) von 0 wird sehr schlechte Ergebnisse liefern, da einmal durch [[Rekombination (evolutionärer Algorithmus)|Kreuzungsfunktionen]] aus der Population gefallene [[Allel]]e niemals wieder in die Population zurückkehren können und somit, falls sie ein Teil des [[Building Block]]s der global optimalen Lösung waren, zum Auffinden dieser fehlen. Ist die Mutationsrate hingegen zu hoch, werden Individuen nahe beim Optimum wieder von diesem weggedrängt und der Algorithmus kann nicht konvergieren.

Ein evolutionärer Algorithmus mit einer '''globalen Mutationsrate''' (Anteil der Gesamtpopulation, die der Mutation unterzogen wird) von 0 wird sehr schlechte Ergebnisse liefern, da einmal durch [[Rekombination (evolutionärer Algorithmus)|Kreuzungsfunktionen]] aus der Population gefallene [[Allel]]e niemals wieder in die Population zurückkehren können und somit, falls sie ein Teil ([[Schematheorem|Building Blocks]] bei [[Evolutionärer Algorithmus|klassischen genetischen Algorithmen]]) der global optimalen Lösung waren, zum Auffinden dieser fehlen. Ist die Mutationsrate hingegen zu hoch, werden Individuen nahe beim Optimum wieder von diesem weggedrängt und der Algorithmus kann schlechter konvergieren.


Bei Verwendung von für das Problem nicht gut geeigneten Kreuzungsfunktionen oder Problemrepräsentationen kann es zu '''ungewollten Mutationen''' bei der Kreuzung kommen. Dabei entsteht an manchen Stellen des Chromosoms eine Ausprägung des [[Allel]]s, die sich auf keinen der Elternindividuen zurückführen lassen, noch bevor es zum eigentlichen Mutationsschritt kommt.
Bei Verwendung von für das Problem nicht gut geeigneten Kreuzungsfunktionen oder Problemrepräsentationen kann es zu '''ungewollten Mutationen''' bei der Kreuzung kommen. Dabei entsteht an manchen Stellen des Chromosoms eine Ausprägung des [[Allel]]s, die sich auf keinen der Elternindividuen zurückführen lassen, noch bevor es zum eigentlichen Mutationsschritt kommt.
Zeile 10: Zeile 15:


== Mutation von binären Zahlen (Bitstrings) ==
== Mutation von binären Zahlen (Bitstrings) ==
Die Mutation von Bitstrings erfolgt durch Bit-Flips an zufälligen Stellen.
Die Mutation von Bitstrings der [[Evolutionärer Algorithmus|klassischen genetischen Algorithmen]] erfolgt durch Bit-Flips an zufälligen Stellen.


Beispiel:
Beispiel:
Zeile 26: Zeile 31:


Eine Variante der Mutation von binären Zahlen ist folgendes Verfahren:
Eine Variante der Mutation von binären Zahlen ist folgendes Verfahren:
* Wähle eine [[Stelle (Zahlensystem)|Stelle]] <math>i</math> der binären Zahl <math>Z_0</math>, wobei die niederwertigen Stellen mit einer exponentiell höheren Wahrscheinlichkeit ausgewählt werden als die höherwertigen.
* Wähle eine Stelle <math>i</math> der binären Zahl <math>Z_0</math>, wobei die niederwertigen Stellen mit einer exponentiell höheren Wahrscheinlichkeit ausgewählt werden als die höherwertigen.
* Invertiere das [[Bit]] an dieser Stelle der binären Zahl um: <math>Z_1 = Z_0 XOR 2^i</math>.
* Invertiere das [[Bit]] an dieser Stelle der binären Zahl um: <math>Z_1 = Z_0 XOR 2^i</math>.
* Die auf diese Weise neu entstandene Zahl <math>Z_1</math> ist das mutierte Genom.
* Die auf diese Weise neu entstandene Zahl <math>Z_1</math> ist das mutierte Genom.
Zeile 37: Zeile 42:


Eine falsche Wahl der Mutationswahrscheinlichkeiten kann dazu führen, dass immer nur niederwertigen Stellen modifiziert werden, sodass die Mutationen letztendlich gar keinen nennenswerten Einfluss auf die Individuen oder den von ihnen abhängige [[Fitness-Funktion]]s-Wert haben.
Eine falsche Wahl der Mutationswahrscheinlichkeiten kann dazu führen, dass immer nur niederwertigen Stellen modifiziert werden, sodass die Mutationen letztendlich gar keinen nennenswerten Einfluss auf die Individuen oder den von ihnen abhängige [[Fitness-Funktion]]s-Wert haben.

== Mutation reeller Zahlen ==
Viele EAs wie zum Beispiel die Evolutionsstrategie<ref>{{Literatur |Autor=Ingo Rechenberg |Titel=Evolutionsstrategie; Optimierung technischer Systeme nach Prinzipien der biologischen Evolution. |Verlag=Frommann-Holzboog |Ort=Stuttgart-Bad Cannstatt |Datum=1973 |ISBN=3-7728-0373-3 |Online= |Abruf=}}</ref><ref>{{Literatur |Autor=Hans-Paul Schwefel |Titel=Numerische Optimierung von Computor-Modellen mittels der Evolutionsstrategie : mit einer vergleichenden Einführung in die Hill-Climbing- und Zufallsstrategie |Auflage= |Verlag=Birkhäuser |Ort=Basel |Datum=1977 |ISBN=3-7643-0876-1 |Online= |Abruf=}}</ref> oder die reell-codierten genetischen Algorithmen<ref>{{Literatur |Autor=Larry J. Eshelman, J. David Schaffer |Titel=Real-Coded Genetic Algorithms and Interval-Schemata |Sammelwerk=Foundations of Genetic Algorithms |Band=2 |Verlag=Elsevier |Datum=1993 |ISBN=978-0-08-094832-4 |DOI=10.1016/b978-0-08-094832-4.50018-0 |Seiten=187–202 |Online=https://linkinghub.elsevier.com/retrieve/pii/B9780080948324500180 |Abruf=2022-01-15}}</ref><ref>{{Literatur |Autor=Cesary Janikow, Zbigniew Michalewicz |Titel=An Experimental Comparison of Binary and Floating Point Representations in Genetic Algorithms |Sammelwerk=Conf. Proc of the Fourth Int. Conf. on Genetic Algorithms (ICGA'91) |Datum=1991 |Seiten=31-36 |Online=http://www.cs.umsl.edu/~janikow/publications/1991/GAbin/text.pdf}}</ref> arbeiten mit reellen Zahlen anstelle von Bitstrings. Dies liegt in den guten Erfahrung begründet, die mit dieser Codierungsart gemacht wurden<ref>{{Literatur |Autor=Zbigniew Michalewicz |Titel=Genetic Algorithms + Data Structures = Evolution Programs |Auflage=Third, revised and Extended edition |Verlag=Springer |Ort=Berlin, Heidelberg |Datum=1996 |ISBN=978-3-662-03315-9 |Online= |Abruf=}}</ref><ref>{{Literatur |Autor=F. Herrera, M. Lozano, J.L. Verdegay |Titel=[No title found] |Sammelwerk=Artificial Intelligence Review |Band=12 |Nummer=4 |Datum=1998 |DOI=10.1023/A:1006504901164 |Seiten=265–319 |Online=http://link.springer.com/10.1023/A:1006504901164 |Abruf=2022-01-15}}</ref> und in der Theorie der [[Evolutionärer Algorithmus|virtuellen Alphabete]] von [[David E. Goldberg]].
[[Datei:Standard deviation diagram (decimal comma).svg|mini|Beispiel einer normalverteilten Zufallsgröße. Man beachte, dass sich die angegebenen Anteile der Teilbereiche auf Grund der Rundungen zu 99,8% und nicht zu 100% addieren.]]
Eine reelle <math>x'</math> Zahl kann mittels der [[Normalverteilung]] <math>N(0,\sigma)</math> mutiert werden, wobei eine normalverteilte Zufallszahl bei dieser Verteilung bekanntlich mit rund 99,7 % Wahrscheinlichkeit im Intervall <math>[-3 \cdot \sigma, +3 \cdot \sigma]</math> liegt. Der mutierte Wert ergibt sich dann folgendermaßen:<br>
<math>x' = x + N(0; \sigma)</math><br>
Bei praktischen Anwendungen sind die zu mutierenden Werte in der Regel begrenzt und es bietet sich an, die Schrittweite der Mutation <math>\sigma</math> so zu wählen, dass sie zum Werteintervall <math>[x_{min}, x_{max}]</math> einigermaßen passt, also z. B.:<br>
<math>\sigma = {{x_{max} - x_{min}} \over 6}</math><br>
Natürlich kann auch stattdessen vom kleineren Intervall zwischen dem aktuellen Wert von x und den Grenzen ausgegangen werden. Es wird aber in jedem Fall mit einer gewissen Wahrscheinlichkeit vorkommen, dass sich der neue Wert des Gens <math>x'</math> außerhalb des Wertebereichs befindet. In einem solchen Fall liegt eine Letalmutation vor, da die naheliegende Reparatur durch Verwendung der jeweils verletzten Grenze als neuen Wert des Gens zu einer Drift führen würde. Denn der Grenzwert würde dann mit der gesamten Wahrscheinlichkeit der Werte jenseits der Grenze des Wertebereichs ausgewählt werden. Im Bild ist dies z. B. der gesamte Bereich rechts von 1σ, wenn dies beispielhaft der Obergrenze des Wertebereichs des Gens entspräche. Das wäre immerhin eine Wahrscheinlichkeit von rund 15,8% nur für diesen einen Wert!

Die Evolutionsstrategie arbeitet mit reellen Zahlen und ebenfalls einer Mutation basierend auf der Normalverteilung. Die Schrittweiten sind dabei Bestandteil des Chromosoms und unterliegen zusammen mit den eigentlichen Entscheidungsvariablen der Evolution.


== Mutation von Permutationen ==
== Mutation von Permutationen ==
Zeile 50: Zeile 66:
|| <math>P_0 = \left( A,B,C,D,E,F,G \right)</math>
|| <math>P_0 = \left( A,B,C,D,E,F,G \right)</math>
|-
|-
| * Wähle eine Teil-Liste aus, also einen Start-Index <math>i</math> und einen End-Index <math>j</math> in <math>P_0</math>, die beide natürliche Zahlen zwischen 0 und <math>\left|P_0\right|</math> sind. Der Start-Index kann dabei auch nach dem End-Index kommen. Dann fängt die Teil-Liste einfach von vorne wieder an ([[periodische Randbedingung]]). Dies ist notwendig, damit die Permutationswahrscheinlichkeit im Genom überall gleich ist und nicht in der Mitte größer ist als an den Rändern.
| * Wähle eine Teil-Liste aus, also einen Start-Index <math>i</math> und einen End-Index <math>j</math> in <math>P_0</math>, die beide natürliche Zahlen zwischen 0 und <math>\left|P_0\right|-1</math> sind. Der Start-Index kann dabei auch nach dem End-Index kommen. Dann fängt die Teil-Liste einfach von vorne wieder an ([[periodische Randbedingung]]). Dies ist notwendig, damit die Permutationswahrscheinlichkeit im Genom überall gleich ist und nicht in der Mitte größer ist als an den Rändern.
|| <math>i = 5</math>, <math>j = 2</math>
|| <math>i = 5</math>, <math>j = 1</math>
|-
|-
| * Kopiere <math>P_0</math> nach <math>P_1</math> und rotiere die Teil-Liste nach rechts.
| * Kopiere <math>P_0</math> nach <math>P_1</math> und rotiere die Teil-Liste nach rechts.
Zeile 68: Zeile 84:
|| <math>P_0 = \left( A,B,C,D,E,F,G \right)</math>
|| <math>P_0 = \left( A,B,C,D,E,F,G \right)</math>
|-
|-
| * Wähle eine Teil-Liste aus, also einen Start-Index <math>i</math> und einen End-Index <math>j</math> in <math>P_0</math>, die beide natürliche Zahlen zwischen 0 und <math>\left|P_0\right|</math> sind. Der Start-Index kann dabei auch nach dem End-Index kommen. Dann fängt die Teil-Liste einfach von vorne wieder an ([[periodische Randbedingung]]). Dies ist notwendig, damit die Permutationswahrscheinlichkeit im Genom überall gleich ist und nicht in der Mitte größer ist als an den Rändern.
| * Wähle eine Teil-Liste aus, also einen Start-Index <math>i</math> und einen End-Index <math>j</math> in <math>P_0</math>, die beide natürliche Zahlen zwischen 0 und <math>\left|P_0\right|-1</math> sind. Der Start-Index kann dabei auch nach dem End-Index kommen. Dann fängt die Teil-Liste einfach von vorne wieder an ([[periodische Randbedingung]]). Dies ist notwendig, damit die Permutationswahrscheinlichkeit im Genom überall gleich ist und nicht in der Mitte größer ist als an den Rändern.
|| <math>i = 5</math>, <math>j = 2</math>
|| <math>i = 5</math>, <math>j = 1</math>
|-
|-
| * Kopiere <math>P_0</math> nach <math>P_1</math> und spiegele die Teil-Liste.
| * Kopiere <math>P_0</math> nach <math>P_1</math> und spiegele die Teil-Liste.
Zeile 79: Zeile 95:


Diese Variante ist geeignet zur Lösung vom [[Problem des Handlungsreisenden]], da hier die Änderung der Nachbarschaft minimal gehalten werden sollte und durch die Spiegelung einfach ein Teil-Weg in umgekehrter Reihenfolge gegangen wird.
Diese Variante ist geeignet zur Lösung vom [[Problem des Handlungsreisenden]], da hier die Änderung der Nachbarschaft minimal gehalten werden sollte und durch die Spiegelung einfach ein Teil-Weg in umgekehrter Reihenfolge gegangen wird.

== Einzelnachweise ==
<references />





Version vom 15. Januar 2022, 19:29 Uhr

Unter Mutation versteht man bei einem evolutionären Algorithmus (EA) die zufällige Änderung eines Genoms. Sie ist die Umsetzung der biologischen Mutation für EA. Eine solche Zuordnung von einem alten Genom (und eventuell Zufallszahlen) zu einem neuen Genom ist eine Funktion und heißt Mutations-Funktion. Jede Mutations-Funktion ist ein genetischer Operator.

Die Gesamtheit aller in einem EA zur Anwendung kommenden Mutationsoperatoren müssen folgenden Anforderungen genügen:

  1. Kleine Änderungen müssen wahrscheinlicher sein als große.
  2. Jeder Punkt im Suchraum muss durch eine oder mehrere Mutationen erreichbar sein.
  3. Es darf keine Bevorzugung von Teilen oder Richtungen im Suchraum (keine Drift) geben.

Am Anfang des Laufens eines EA ist es günstiger, größere Änderungen zuzulassen, während im fortgeschritteneren Stadium nur noch kleine Änderungen bevorzugt sein sollten, um Individuen, die sich bereits nahe einem Optimum befinden, nicht von diesem Optimum wegzubringen.

Ein evolutionärer Algorithmus mit einer globalen Mutationsrate (Anteil der Gesamtpopulation, die der Mutation unterzogen wird) von 0 wird sehr schlechte Ergebnisse liefern, da einmal durch Kreuzungsfunktionen aus der Population gefallene Allele niemals wieder in die Population zurückkehren können und somit, falls sie ein Teil (Building Blocks bei klassischen genetischen Algorithmen) der global optimalen Lösung waren, zum Auffinden dieser fehlen. Ist die Mutationsrate hingegen zu hoch, werden Individuen nahe beim Optimum wieder von diesem weggedrängt und der Algorithmus kann schlechter konvergieren.

Bei Verwendung von für das Problem nicht gut geeigneten Kreuzungsfunktionen oder Problemrepräsentationen kann es zu ungewollten Mutationen bei der Kreuzung kommen. Dabei entsteht an manchen Stellen des Chromosoms eine Ausprägung des Allels, die sich auf keinen der Elternindividuen zurückführen lassen, noch bevor es zum eigentlichen Mutationsschritt kommt.

Für unterschiedliche Genom-Typen eignen sich unterschiedliche Mutations-Typen unterschiedlich gut:

Mutation von binären Zahlen (Bitstrings)

Die Mutation von Bitstrings der klassischen genetischen Algorithmen erfolgt durch Bit-Flips an zufälligen Stellen.

Beispiel:

1 0 1 0 0 1 0
1 0 1 0 1 1 0

Die Wahrscheinlichkeit für eine Mutation eines Bits beträgt , wobei die Länge des Binärvektors ist. Dadurch wird im Schnitt eine Mutationsrate von 1 je Mutation und zur Mutation gewählten Individuum erreicht (siehe oben, globale Mutationsrate).

Bevorzugung der niederwertigeren Bit

Eine Variante der Mutation von binären Zahlen ist folgendes Verfahren:

  • Wähle eine Stelle der binären Zahl , wobei die niederwertigen Stellen mit einer exponentiell höheren Wahrscheinlichkeit ausgewählt werden als die höherwertigen.
  • Invertiere das Bit an dieser Stelle der binären Zahl um: .
  • Die auf diese Weise neu entstandene Zahl ist das mutierte Genom.

Ein Beispiel zur Veranschaulichung – eine Mutation einer 8-Bit-Zahl:

11001100 – die Zahl vor der Mutation
11000100 – danach (eine Mutation an der 4. Stelle)

Dieses Verfahren funktioniert auch bei Gleitkommazahlen, wenn diese als Zahl ohne Exponenten-Information geschrieben wird (also statt ).

Eine falsche Wahl der Mutationswahrscheinlichkeiten kann dazu führen, dass immer nur niederwertigen Stellen modifiziert werden, sodass die Mutationen letztendlich gar keinen nennenswerten Einfluss auf die Individuen oder den von ihnen abhängige Fitness-Funktions-Wert haben.

Mutation reeller Zahlen

Viele EAs wie zum Beispiel die Evolutionsstrategie[1][2] oder die reell-codierten genetischen Algorithmen[3][4] arbeiten mit reellen Zahlen anstelle von Bitstrings. Dies liegt in den guten Erfahrung begründet, die mit dieser Codierungsart gemacht wurden[5][6] und in der Theorie der virtuellen Alphabete von David E. Goldberg.

Beispiel einer normalverteilten Zufallsgröße. Man beachte, dass sich die angegebenen Anteile der Teilbereiche auf Grund der Rundungen zu 99,8% und nicht zu 100% addieren.

Eine reelle Zahl kann mittels der Normalverteilung mutiert werden, wobei eine normalverteilte Zufallszahl bei dieser Verteilung bekanntlich mit rund 99,7 % Wahrscheinlichkeit im Intervall liegt. Der mutierte Wert ergibt sich dann folgendermaßen:

Bei praktischen Anwendungen sind die zu mutierenden Werte in der Regel begrenzt und es bietet sich an, die Schrittweite der Mutation so zu wählen, dass sie zum Werteintervall einigermaßen passt, also z. B.:

Natürlich kann auch stattdessen vom kleineren Intervall zwischen dem aktuellen Wert von x und den Grenzen ausgegangen werden. Es wird aber in jedem Fall mit einer gewissen Wahrscheinlichkeit vorkommen, dass sich der neue Wert des Gens außerhalb des Wertebereichs befindet. In einem solchen Fall liegt eine Letalmutation vor, da die naheliegende Reparatur durch Verwendung der jeweils verletzten Grenze als neuen Wert des Gens zu einer Drift führen würde. Denn der Grenzwert würde dann mit der gesamten Wahrscheinlichkeit der Werte jenseits der Grenze des Wertebereichs ausgewählt werden. Im Bild ist dies z. B. der gesamte Bereich rechts von 1σ, wenn dies beispielhaft der Obergrenze des Wertebereichs des Gens entspräche. Das wäre immerhin eine Wahrscheinlichkeit von rund 15,8% nur für diesen einen Wert!

Die Evolutionsstrategie arbeitet mit reellen Zahlen und ebenfalls einer Mutation basierend auf der Normalverteilung. Die Schrittweiten sind dabei Bestandteil des Chromosoms und unterliegen zusammen mit den eigentlichen Entscheidungsvariablen der Evolution.

Mutation von Permutationen

Die Mutation von Permutationen ist spezielle für Genome ausgelegt, die selbst Permutationen einer Menge sind. Dabei werden Teile des Genoms verschoben oder gespiegelt.

Rotation nach rechts

Eine Variante von Mutation von Permutationen ist folgendes Verfahren:

Verfahren Beispiel
Gegeben ist eine Permutation,
* Wähle eine Teil-Liste aus, also einen Start-Index und einen End-Index in , die beide natürliche Zahlen zwischen 0 und sind. Der Start-Index kann dabei auch nach dem End-Index kommen. Dann fängt die Teil-Liste einfach von vorne wieder an (periodische Randbedingung). Dies ist notwendig, damit die Permutationswahrscheinlichkeit im Genom überall gleich ist und nicht in der Mitte größer ist als an den Rändern. ,
* Kopiere nach und rotiere die Teil-Liste nach rechts.
* ist dann das mutierte Genom.

Spiegelung

Eine weitere Variante von Mutation von Permutationen ist folgendes Verfahren:

Verfahren Beispiel
* Gegeben ist eine Permutation,
* Wähle eine Teil-Liste aus, also einen Start-Index und einen End-Index in , die beide natürliche Zahlen zwischen 0 und sind. Der Start-Index kann dabei auch nach dem End-Index kommen. Dann fängt die Teil-Liste einfach von vorne wieder an (periodische Randbedingung). Dies ist notwendig, damit die Permutationswahrscheinlichkeit im Genom überall gleich ist und nicht in der Mitte größer ist als an den Rändern. ,
* Kopiere nach und spiegele die Teil-Liste.
* ist dann das mutierte Genom.

Diese Variante ist geeignet zur Lösung vom Problem des Handlungsreisenden, da hier die Änderung der Nachbarschaft minimal gehalten werden sollte und durch die Spiegelung einfach ein Teil-Weg in umgekehrter Reihenfolge gegangen wird.

Einzelnachweise

  1. Ingo Rechenberg: Evolutionsstrategie; Optimierung technischer Systeme nach Prinzipien der biologischen Evolution. Frommann-Holzboog, Stuttgart-Bad Cannstatt 1973, ISBN 3-7728-0373-3.
  2. Hans-Paul Schwefel: Numerische Optimierung von Computor-Modellen mittels der Evolutionsstrategie : mit einer vergleichenden Einführung in die Hill-Climbing- und Zufallsstrategie. Birkhäuser, Basel 1977, ISBN 3-7643-0876-1.
  3. Larry J. Eshelman, J. David Schaffer: Real-Coded Genetic Algorithms and Interval-Schemata. In: Foundations of Genetic Algorithms. Band 2. Elsevier, 1993, ISBN 978-0-08-094832-4, S. 187–202, doi:10.1016/b978-0-08-094832-4.50018-0 (elsevier.com [abgerufen am 15. Januar 2022]).
  4. Cesary Janikow, Zbigniew Michalewicz: An Experimental Comparison of Binary and Floating Point Representations in Genetic Algorithms. In: Conf. Proc of the Fourth Int. Conf. on Genetic Algorithms (ICGA'91). 1991, S. 31–36 (umsl.edu [PDF]).
  5. Zbigniew Michalewicz: Genetic Algorithms + Data Structures = Evolution Programs. Third, revised and Extended edition Auflage. Springer, Berlin, Heidelberg 1996, ISBN 978-3-662-03315-9.
  6. F. Herrera, M. Lozano, J.L. Verdegay: [No title found]. In: Artificial Intelligence Review. Band 12, Nr. 4, 1998, S. 265–319, doi:10.1023/A:1006504901164 (springer.com [abgerufen am 15. Januar 2022]).