Genetische Algorithmen
Lokale Suche mit Methoden, die der biologischen Evolution abgeschaut bzw. nachempfunden sind.
Lokale Suche mit Methoden, die der biologischen Evolution abgeschaut bzw. nachempfunden sind.
Lokale Suchverfahren: Nur das Ergebnis zählt!
Evolutionäre Algorithmen sind lokale Suchverfahren, wobei gleichzeitig an mehreren Stellen im Problemraum gesucht wird. Sie bedienen sich Mechanismen aus der Evolution: Es gibt eine Population von Individuen, die jedes das Problem kodieren ("vollständige Zustandsbeschreibung") und damit im Laufe der Suche zu einer möglichen Lösung werden können.
Quelle: Photo by Johannes Plenio on Unsplash.com (Unsplash License)
Wie funktioniert's?
Zutaten:
Mechanismen ("Operatoren"):
Jedes Individuum kodiert ein Spielfeld mit einer konkreten Anordnung aller Königinnen => Vollständige Zustandsbeschreibung.
Dabei korrespondiert der Index in das Array des Individuums mit der jeweiligen Spalte des Spielfelds. Die Zahl an einer Arrayposition gibt dann an, in welcher Zeile in dieser Spalte eine Königin ist.
Crossover: Die ausgewählten Individuen werden an der selben Stelle aufgetrennt und die Hälften verkreuzt zu zwei neuen Individuen zusammengesetzt. Es entstehen zwei neue Anordnungen der Königinnen (zwei neue Spielfelder).
Genetische Algorithmen (GA)
Evolutionsstrategien (ES)
Evolutionäre Programmierung (EP)
Hinweis: Häufig finden sich Mischformen, beispielsweise GA mit reellwertigen Parametern
Hinweis: Im Folgenden werden Genetische Algorithmen (GA) betrachtet. Sie finden jeweils Hinweise auf die Gestaltung der Operatoren bei ES.
Lokale Suchverfahren: Nur das Ergebnis zählt!
Lokale Suchverfahren: Nur das Ergebnis zählt!
Evolutionäre Algorithmen sind lokale Suchverfahren, wobei gleichzeitig an mehreren Stellen im Problemraum gesucht wird. Sie bedienen sich Mechanismen aus der Evolution: Es gibt eine Population von Individuen, die jedes das Problem kodieren ("vollständige Zustandsbeschreibung") und damit im Laufe der Suche zu einer möglichen Lösung werden können.
Die Individuen werden mit Hilfe einer Fitnessfunktion bewertet, wie gut sie bereits an das Problem angepasst sind (bzw. wie sehr sie bereits der gesuchten Lösung entsprechen). Über eine fitnessproportionale Selektion werden Individuen ausgewählt, aus denen mittels Rekombination (auch "Crossover" genannt) neue Individuen mit Eigenschaften der Eltern erzeugt werden. Über eine Mutation werden dann noch Elemente der neuen Individuen leicht verändert, bevor diese zur neuen Population werden ...
Durch das Anwenden von Rekombination und Mutation springt man im Problemraum umher. Auch wenn als Basis die fitteren (angepassteren) Individuen dienen, kann es wie bei allen lokalen Suchverfahren vorkommen, dass sich der Algorithmus in lokalen Minima (bzw. lokalen Maxima, je nach Richtung der Optimierung) festfrisst.
Binäre Lösungsrepräsentation (Bitstring): $\mathbf{g} = (g_1, \dots, g_m)\in \{ 0,1\}^m$
Alle relevanten Aspekte des Problems müssen in die Codierung einfließen!
Bei ES hat man einen Vektor mit reellen Zahlen, wobei jeder Eintrag einen Parameter des Problems darstellt. Eine Dekodierungsfunktion benötigt man entsprechend nicht.
Bei der Erzeugung der Startpopulation werden die Individuen zufällig (mit zufälligen Werten) initialisiert.
Fitnessfunktion $\Phi$ ordnet jedem Individuum $\mathbf{g}_i$ eine reelle Zahl zu: $$\Phi(\mathbf{g}_i) = F(\Gamma(\mathbf{g}_i)) - w\cdot\sum_j(Z_j(\Gamma(\mathbf{g}_i)))^2$$
Die Wahl einer guten Fitnessfunktion ist oft eine Herausforderung, aber dennoch wichtig, da damit die Suche gesteuert wird!
Fitnessproportionale Selektion (Roulette Wheel Selection): Auswahlwahrscheinlichkeit für Individuum $\mathbf{g}_k$: $$p_{sel}(\mathbf{g}_k) = \frac{\Phi(\mathbf{g}_k)}{\sum_j \Phi(\mathbf{g}_j)}$$ => Voraussetzung: positive Fitnesswerte
Turnier-Selektion (Tournament Selection):
Hinweis: Es gibt noch viele weitere Selektionsmechanismen. Die vorgestellten sind in der Praxis am gebräuchlichsten.
Über die Selektion wird der sogenannte "Selektionsdruck" aufgebaut: Wie gut muss ein Individuum sein (im Vergleich zu den restlichen Individuen in der Population), damit es eine Chance zur Reproduktion erhält? Dürfen sich nur die "Guten" fortpflanzen, oder erhalten auch die "Schlechten" eine gewisse Chance?
Da jedes Individuum einen Punkt im Suchraum darstellt, beeinflusst die Wahl der Selektion die Geschwindigkeit der Suche, begünstigt u.U. aber auch ein eventuelles Festfahren in lokalen Minima. Dies kann beispielsweise geschehen, wenn immer nur die "Guten" selektiert werden, aber die "Guten" der Population sich in der Nähe eines lokalen Minimums befinden. Dann werden auch die Nachfolger sich wieder dort aufhalten.
Festlegung der Crossover-Wahrscheinlichkeit $p_{cross}$ (typisch: $p_{cross} \ge 0.6$)
Selektiere Eltern $\mathbf{g}_a$ und $\mathbf{g}_b$ gleichverteilt aus Matingpool
Zufallsexperiment:
mit $1-p_{cross}$: Kinder identisch zu Eltern (kein Crossover)
mit $p_{cross}$: Crossover mit $\mathbf{g}_a$ und $\mathbf{g}_b$
=> Trenne Eltern an gleicher Stelle auf, vertausche Bestandteile
Gehe zu Schritt 1, bis insg. $\mu$ Nachkommen
Anmerkung: Die Eltern werden jeweils in die Ausgangsmenge zurückgelegt.
Mit einer kleinen Wahrscheinlichkeit sind die Kinder also identisch zu den Eltern. Dies ist im Sinne der lokalen Suche wichtig, um bereits erreichte gute Positionen im Suchraum nicht zu verlieren: Es könnte sein, dass die Nachfolger alle schlechter sind ...
Varianten: $N$-Punkt-Crossover, Shuffle-Crossover
Bei ES wird parameterweise gekreuzt. Dabei gibt es verschiedene Möglichkeiten: Übernahme eines Parameters von einem Elternteil, Verrechnen (beispielsweise Mitteln) der Werte beider Eltern, ... Bei ES heißt "Crossover" deshalb oft "Rekombination".
Mutationswahrscheinlichkeit $p_{mut}$ (typische Werte: $p_{mut} = 0.01$ oder $p_{mut} = 0.001$)
Für alle Individuen:
Mutiere jedes Gen eines Individuums mit $p_{mut}$:
$$ g_i^{(t+1)} = \left\{ \begin{array}{ll} \neg g_i^{(t)} & \mbox{ falls } \chi_i \le p_{mut}\\[5pt] \phantom{\neg} g_i^{(t)} & \mbox{ sonst } \end{array} \right. $$=>$\chi_i$ gleichverteilte Zufallsvariable (Intervall $[0,1]$), für jedes Bit $g_i$ neu bestimmen
Anmerkung: Die optimale Mutationsrate $p_{mut}^*$ ist von Länge $m$ des Bitstrings abhängig; annäherbar durch $p_{mut}^* \approx 1/m$.
Die beim Crossover erstellten Nachfolger liegen im Suchraum in der Nähe der Eltern. Durch die Mutationsrate bestimmt man, ob und wie weit sich ein Kind entfernen kann. Dies entspricht dem Bild des "Schüttelns" der Zustandslandschaft.
Bei ES unterscheidet man Mutationswahrscheinlichkeit und Mutationsrate. Es wird parameterweise mutiert.
Vorsicht: Es handelt sich um Zufallsexperimente. Wenn man nicht nur direkt nach einer Lösung sucht, sondern beispielsweise Parametereinstellungen oder die Wahl der Fitnessfunktion für ein Problem vergleichen will, muss man jeweils mehrere Experimente mit der selben Einstellung machen und Kenngrößen berechnen.
Geschwindigkeit: AES Average Evaluations to a Solution $$ \mbox{AES } = \frac{\sum\limits_{i \in \mbox{erfolgreiche Läufe}} \mbox{Generationen von Lauf } i}{\mbox{Anzahl der erfolgreichen Läufe}} $$
Die AES liegt im Intervall $[0, maxGen]$.
Lösungswahrscheinlichkeit: SR Success Rate $$ \mbox{SR } = \frac{\mbox{Anzahl der erfolgreichen Läufe}}{\mbox{Anzahl aller Läufe}} $$
Die SR liegt im Intervall $[0, 1]$.
Stochastischer Algorithmus! Ausreichend Wiederholungen durchführen und mitteln!
Hinweis: Die Parameter müssen problemabhängig gewählt werden. Zu hohe Werte für $\mu$ und $\lambda$ führen dazu, dass man bei kleinen Problemen mit hoher Wahrscheinlichkeit bereits am Anfang eine Lösung "würfelt", also gar kein GA nutzt. Wenn dies allerdings nicht passiert, sorgt eine hohe Populationsgröße dafür, dass jeder Schritt sehr lange dauert. Die Abbruchgrenze ist ebenfalls mit Augenmaß zu wählen: Ein zu kleiner Wert sorgt für zu frühen Abbruch (keine Lösung!), ein zu hoher Wert sorgt beim Festfressen des Algorithmus für eine unnötige weitere "Suche" ...
Lokale Suchverfahren: Nur das Ergebnis zählt!
Sudoku
Ein $9 \times 9$-Sudoku-Rätsel soll mit einem GA gelöst werden.
Geben Sie für dieses Problem jeweils eine geeignete Kodierung der Individuen, passende Operatoren (Crossover, Mutation) und eine geeignete Fitnessfunktion an, damit das Problem mit einem GA gelöst werden kann. Begründen Sie Ihre Wahl!
Was würden Sie noch benötigen, um das Probleme mit Simulated Annealing lösen zu können?
Travelling Salesman Problem
Das Travelling Salesman Problem für 10 Städte, d.h. das Finden der kürzesten Route zwischen 10 Städten, soll mit einem GA gelöst werden.
Geben Sie für dieses Problem jeweils eine geeignete Kodierung der Individuen, passende Operatoren (Crossover, Mutation) und eine geeignete Fitnessfunktion an, damit das Problem mit einem GA gelöst werden kann. Begründen Sie Ihre Wahl!
Was würden Sie noch benötigen, um das Probleme mit Simulated Annealing lösen zu können?