Genetischer Algorithmus
Genetische Algorithmen (GA) sind Algorithmen, die eine Lösung zu einem nicht analytisch lösbaren Problem finden, indem sie "Lösungsvorschläge" solange verändern und miteinander kombinieren, bis einer dieser Vorschläge den gestellten Anforderungen entspricht.
Genauer sind GA heuristische Optimierungsverfahren und gehören zu den Evolutionären Algorithmen. Sie werden vor allem für Probleme eingesetzt, für die keine geschlossene Lösung vorliegt und stehen in Konkurrenz zu klassischen Suchstrategien wie dem A*-Algorithmus, der TABU-Suche oder dem Gradientenabstiegsverfahren.
Definition
Im Gegensatz zur Genetischen Programmierung ist das Verfahren der Genetischen Algorithmen recht unflexibel. Es werden im Normalfall lediglich die Parameter einer Gleichung, Formel oder eines in anderer Form vorgegebenen strukturierten Lösungsansatzes optimiert.
Die Grundidee ist, ähnlich der biologischen Evolution, eine Anzahl Lösungskandidaten (Individuen) zufällig zu erzeugen und diejenigen auszuwählen, die einem bestimmten Gütekriterium am besten entsprechen. Deren Eigenschaften (Parameterwerte) werden dann leicht verändert und miteinander kombiniert, um eine neue Lösungskandidaten (eine neue Generation) zu erzeugen.
Der typische GA umfasst die folgenden Schritte:
- Initialisierung: Erzeugen (engl. "generate") einer ausreichend großen Menge unterschiedlicher "Individuen" (Lösungskandidaten).
- Evaluation: Für jeden einzelnen Lösungskandidat wird anhand einer Zielfunktion (auch Fitness-Funktion genannt) ein Wert bestimmt.
- Selektion: Zufällige Auswahl von Lösungskandidaten aus der vorhandenen Lösungskandidatenmenge. Dabei werden Lösungskandidaten mit besseren Zielfunktionswerten mit einer höheren Wahrscheinlichkeit ausgewählt.
- Rekombination: die Genome verschiedener Individuen werden gemischt und aus den neuen Parametern eine neue Generation von Individuen erzeugt (Vermehrung)
- Mutation: Zufällige Veränderung der Wertekombinationen der Individuen der neuen Generation.
- Nach einem bestimmten Verfahren wird die Menge der neuen Individuen aus der Menge der alten Individuen und der Menge der mutierten Nachfolger der Gewinner der Menge der alten Individuen gebildet. Der Algorithmus wird anschließend ab Schritt 2 wiederholt, oder nach einem Abbruchkriterium beendet und der beste verfügbare Lösungskandidat als Lösung definiert.
Im Allgemeinen unterscheidet man zwei Typen von genetischen Algorithmen:
- die Evolutionsstrategie (ES) nach Ingo Rechenberg und Hans-Paul Schwefel und
- den Genetic Algorithm (GenA) nach John H. Holland und David E. Goldberg
Eine theoretische Untersuchung des Konvergenzverhaltens liefert der Schemasatz von John H. Holland.
Beispiele
Beispiel 1
"Festlegungen" eines konkreten genetischen Algorithmus':
- Sei eine Fitness-Funktion, die wie folgt definiert ist:
- Als Genom eines Individuums nehmen wir (hier) einfach die Variablen der Fitness-Funktion, also die Liste
- Ziel ist es, die Fitness-Funktion zu minimieren, also eine Eingabe zu finden, sodass die Funktion einen möglichst niedrigen Wert zurückliefert.
- Als Rekombination wählen wir ein einfaches Crossover mit 2 Eltern-Genomen, wobei die Eltern aus der alten Population zufällig gewählt werden:
- Wir wählen (zufällig) eine Position .
- Das Kind-Genom wird aus den beiden Eltern-Genomen zusammengesetzt, indem viele vordere Allele des Genoms des einen Elternteils und viele hintere Allele des Genoms des anderen Elternteils kopiert werden.
- Sind beispielsweise die Eltern-Genome und sowie , dann ist das Kind-Genom .
- Als Mutation wählen wir für jede Position im Genom eine einfache Addition an dieser Position um eine Zahl . Diese Mutation komme mit einer Wahrscheinlichkeit von 1% pro Generationswechsel und Position vor.
- Die Selektion sei wie folgt: Von der gemeinsamen Population von Eltern und Kindern werden die entsprechend der Fitness-Funktion besten ausgewählt, und zwar so viele, wie es Individuen in der ursprünglichen Eltern-Population gab.
- Startpopulation:
- Sie bestehen aus 50 Individuen.
- Jedes Individuum bekommt für jedes seiner Gene eine zufällige Zahl aus zugeordnet.
- Abbruchkriterium: Wir brechen das Berechnen der Generationenfolge ab, wenn sich über die letzten 10 Generationen der Durchschnitt der Fitness aller Individuen der jeweiligen Population nicht geändert hat.
- Ausgabe des genetischen Algorithmus ist das Genom eines besten Individuums in der letzten Population (die Population zu der Zeit, wann abgebrochen wurde).
Lässt man diesen genetischen Algorithmus laufen, so wird man nach etwa 70 Generationen ein Ergebnis haben, für das gilt: . Dieses Ergebnis ist in diesem konkreten Fall optimal. Man sieht, dass es viele gleichwertige Ergebnisse geben kann, so z.B. oder .
Literatur
- David E. Goldberg, Genetic Algorithms in Search, Optimization, and Machine Learning, Addison-Wesley, 1989, ISBN 0201157675
- Ingo Rechenberg, Evolutionsstrategie '94, Frommann Holzboog, 1994, ISBN 3772816428
Siehe auch
Weblinks
- http://math.hws.edu/xJava/GA/ Automatische Programmierung von Herbivoren in einer virtuellen Pflanzen-Umgebung
- Aktienprognosen mit Hilfe von genetischen Algorithmen
- http://lancet.mit.edu/ga/ Eine C++ Bibliothek mit Komponenten für Genetische Algorithmen mit vielen Beispielen
- http://jgap.sourceforge.net/ Freies Java Framework zur Implementierung genetischer Algorithmen
- Informationen zum Thema Genetische Algorithmen
- Freie Genetische Algorithmen Lernsoftware (Voraussetzung ist die kostenlose Runtime Toolbook!)