Evolutionsstrategien

Ähnliche Dokumente
Adaptive Systeme. Prof. Dr.-Ing. Heinz-Georg Fehn Prof. Dr. rer. nat. Nikolaus Wulff

Adaptive Systeme. Prof. Dr.-Ing. Heinz-Georg Fehn Prof. Dr. rer. nat. Nikolaus Wulff

Evolutionsstrategien

Evolution und Algorithmen

Optimale Produktliniengestaltung mit Genetischen Algorithmen

Populationsbasierte Suche. Evolutionäre Algorithmen (1)

Genetische Algorithmen

Bewertung von Optimierungs- und Zuverlässigkeitsalgorithmen für die virtuelle Produktauslegung

Linsenberechnung mit Evolutionsstrategien

1. Evolutionsstrategien. 2. Genetische Algorithmen. Evolutionsstrategie / Genetischer Algorithmus. Dr. Markus Olhofer markus.olhofer(at)honda-ri.

10. Vorlesung Stochastische Optimierung

Synthese durch Rechner-Optimierung

InformatiCup 2009 EvolutionConsole

Genetische und Evolutionäre Algorithmen (Vol. 1)

Survival of the Fittest Optimierung mittels Genetischer Algorithmen

Mathematische Werkzeuge R. Neubecker, WS 2016 / 2017

12. Vorlesung Stochastische Optimierung

WS 2009/10. Diskrete Strukturen

Seminar Gewöhnliche Differentialgleichungen

Betriebliche Optimierung

Optimierung. Optimierung. Vorlesung 2 Optimierung ohne Nebenbedingungen Gradientenverfahren Thomas Brox, Fabian Kuhn

Statistik I für Betriebswirte Vorlesung 4

Genetische Algorithmen

Zufallsvariablen [random variable]

Mathematische Grundlagen der dynamischen Simulation

b) Nennen Sie vier hinreichende Bedingungen für Evolution. b) Anzahl fortlaufender Einsen von rechts. c) Sind in a) oder b) Plateaus enthalten?

Studienberechtigungsprüfung Mathematik VHS Floridsdorf

Mathematische Werkzeuge R. Neubecker, WS 2018 / 2019 Optimierung Lagrange-Funktionen, Karush-Kuhn-Tucker-Bedingungen

Genetische Algorithmen von der Evolution lernen

Anwendung genetischer Algorithmen zur Lösung des n Dame Problems und zur Optimierung von Autoprofilen

EVOLUTION STRATEGIES DANIELA SCHACHERER SEMINAR: IST KÜNSTLICHE INTELLIGENZ GEFÄHRLICH? SOMMERSEMESTER 2017

Mehrdimensionale Verteilungen und Korrelation

1 Einleitung Definitionen, Begriffe Grundsätzliche Vorgehensweise... 3

Nichtlineare Gleichungssysteme

Optimierung für Nichtmathematiker

Softwareprojektpraktikum Maschinelle Übersetzung

Bayesianische Netzwerke - Lernen und Inferenz

Kodierung Genetische Algorithmen und Simulated Annealing

Mathematik für Naturwissenschaftler II

Lösung von Optimierungsproblemen mit Monte Carlo Methoden

Optimierung und Simulation

Physik der sozio-ökonomischen Systeme mit dem Computer. 7. Vorlesung

2.3.4 Drehungen in drei Dimensionen

5 Eigenwerte und die Jordansche Normalform

TECHNISCHE UNIVERSITÄT MÜNCHEN Fakultät für Mathematik. Grundlagen der Nichtlinearen Optimierung. Klausur zur Vorlesung WS 2008/09

Einführung in die Methoden der Künstlichen Intelligenz. Evolutionäre Algorithmen

Euklidische Distanzmatrizen. Andrei Grecu

Hauptseminar Repräsentationen für Optimierungsalgorithmen

Teil VIII. Zentraler Grenzwertsatz und Vertrauensintervalle. Woche 6: Zentraler Grenzwertsatz und Vertrauensintervalle. Lernziele. Typische Situation

Serie 12: Eigenwerte und Eigenvektoren

Das Gradientenverfahren

Mathematische Grundlagen für die Vorlesung. Differentialgeometrie

Genetische Algorithmen. Uwe Reichel IPS, LMU München 8. Juli 2008

Von der Mikro- zur Makroevolution... (2)

b) Nennen Sie vier hinreichende Bedingungen für Evolution. b) Anzahl fortlaufender Einsen von rechts. c) Sind in a) oder b) Plateaus enthalten?

Newton-Verfahren zur gleichungsbeschränkten Optimierung. 1 Gleichungsbeschränkte Optimierungsprobleme

Numerisches Programmieren, Übungen

5 Randwertprobleme. y = f(t, y, y ) für t J, (5.2a) y(t 0 ) = y 0, y(t) = y T (5.2b) zu gegebener Funktion f und Werten y 0, y T.

Evolutionäre (Genetische) Algorithmen

6 Symmetrische Matrizen und quadratische Formen

4.1. Vektorräume und lineare Abbildungen

Wir wollen nun die Behauptung beweisen, dass die Laufzeit von SELECT linear ist, also dass T (n) = O(n) gilt.

Kapitel 13. Evolutionäre Spieltheorie. Einleitung. Evolutionäre Biologie. Übersicht 2. Alternative: Biologische Evolutionstheorie

Einführung in die Methoden der Künstlichen Intelligenz. Evolutionäre Algorithmen

9 Differentialrechnung für Funktionen in n Variablen

Kapitel 13. Evolutionäre Spieltheorie. Einleitung. Evolutionäre Biologie. Übersicht 2. Alternative: Biologische Evolutionstheorie

1 Fraktale Eigenschaften der Koch-Kurve

Universität Potsdam Institut für Informatik Lehrstuhl Maschinelles Lernen. Clusteranalyse. Tobias Scheffer Thomas Vanck

Iterative Verfahren, Splittingmethoden

Künstliche Intelligenz

Mathematik für Anwender I. Klausur

Hausdorff-Maß und Hausdorff-Dimension. Jens Krüger

Vortrag 20: Kurze Vektoren in Gittern

Differentiation und Taylorentwicklung. Thomas Fehm

Transkript:

Evolutionsstrategien Seminar Evolutionary Algorithms SS 2010 Cornelius Diekmann Lehrstuhl Robotics and Embedded Systems Veranstalter: Dipl.-Inf. Frank Sehnke Fakultät für Informatik Technische Universität München Email: diekmann@in.tum.de 27. April 2010 I. EINLEITUNG Die Idee der Evolution, dass sich durch Weitergabe und Mutation von genetischen Merkmalen und durch natürliche Selektion komplexe Lebewesen entwickeln konnten, ist heutzutage wissenschaftlich unumstritten. Es stellt sich nun die Frage, ob sich dieses biologische Phänomen mathematisch modellieren lässt und somit auch in anderen Bereichen als der Biologie anwenden lässt. Durch heutige Rechenkapazitäten, die sich an nahezu jedem Arbeitsplatz finden lassen, könnten so die Mechanismen der Evolution die sich über Milliarden von Jahren entwickelt haben genutzt werden, um Probleme innerhalb kürzester Zeit zu lösen. Die Idee ist es, die Evolutionstheorie als mathematisches Optimierungsproblem auszuformulieren, um so komplexe Probleme zu lösen. II. GRUNDIDEE Evolutionsstrategien sind heuristische Optimierungsverfahren und gehören zu den Evolutionären Algorithmen. [1] Die Idee ist, dass man einen Vektor von n Variablen hat, welche einen möglichst optimalen Wert annehmen sollen. Es handelt sich hierbei um ein iteratives Verfahren, wobei der Grenzwert der Iteration in den meisten Fällen die optimale Lösung darstellt. Evolutionsstrategien basieren auf dem Prinzip der starken Kausalität: Ähnliche Ursachen haben ähnliche Wirkungen wie es [2] kurz und bündig formuliert. Auf dieser Grundlage lässt sich das Optimierungsproblem bildlich nun wie folgt darstellen: Die n zu optimierenden Variablen werden als n-dimensionales stetiges Qualitätsgebirge betrachtet, wobei der höchste Gipfel das Optimum ist. Wir setzen sogenannte Eltern als Repräsentanten einer möglichen Lösung darin aus. Danach erzeugen wir Nachfahren aus ihnen, indem wir einen Elter leicht abgeändert kopieren (Mutation) und wählen die besten Nachfahren als Eltern der nächsten Generation aus. Dies entspricht sozusagen dem virtuellen Bergsteigen. Dieser Prozess wird wiederholt, bis einer der Nachkommen den Gipfel erklommen hat. III. ABSCHÄTZUNG DER DAUER Schon vor Beginn der Iteration lässt sich abschätzen, wie viele Generationen in Etwa benötigt werden, um beliebig nahe an das Optimum zu kommen. Die Abschätzung der Generationenzahl γ lässt sich wie folgt berechnen: γ = 4n ln c 2 µ,λ ( 1 ɛ 6 wobei c µ,λ den sogenannten Fortschrittsbeiwert darstellt und ɛ die maximal erlaubte relative Abweichung vom Optimum. c µ,λ hängt von der Elternzahl µ und der Nachkommenzahl λ ab und liegt im Allgemeinen zwischen 1 und 3. [2] A. Algorithmus ) IV. EVOLUTIONSSTRATEGIEN Der generelle Ablauf einer Evolutionsstrategie lässt sich wie folgt beschreiben: 0) Initialisierung: Erzeuge Startwerte bzw. Eltern zufällig 1) Selektion: Wähle die fittesten Individuen als Eltern der aktuellen Generation aus

2) Rekombination und Mutation: erzeuge aus den Eltern mutierte Nachfahren 3) Bewertung: Berechne die Qualität der Nachfahren und markiere sie als potentielle Eltern der neuen Generation 4) solange Abbruchbedingung nicht erfüllt: gehe zu 1 B. Terminologie (µ +, λ) ist die allgemeine Darstellung einfacher Evolutionsstrategien. Sie bedeutet, dass µ Eltern λ Nachkommen erzeugen. Dabei wird der Elter für jeden Nachkommen zufällig gewählt und von ihm eine mutierte Kopie erstellt. Es wird die Qualität oder Fitness der Nachkommen ermittelt. Bei einer + -Strategie werden die µ fittesten Kandidaten aus den Elten und den Nachkommen gewählt, welche die Eltern für die nächste Runde bestimmen. Bei einer, -Strategie werden nur die µ fittesten Nachkommen gewählt. (µ +, λ)-msr ist eine Erweiterung der einfachen Evolutionsstrategien, MSR steht für Mutations- Schrittweiten-Regelung und besagt, dass die Nachkommen die Schrittweite δ ihrer Eltern übernehmen und dabei δ zusätzlich noch um einen zufälligen Faktor mutiert wird. Die Schrittweite besagt, wie stark die n Variablen der Eltern verändert werden, um einen Nachkommen zu erzeugen. [µ +, λ (µ +, λ)] bezeichnet eine geschachtelte Evolutionsstrategie in der µ Elternpopulationen λ Kindgenerationen erzeugen. Jede dieser Generationen verfolgt isoliert von den anderen Populationen eine (µ +, λ) Strategie. Eine (µ/ρ +, λ) Strategie beinhaltet einen Mischungsmechanismus bei dem ein Nachkomme entsteht, indem ρ Eltern gemischt werden, um genau einem Nachkommen zu erzeugen. Hierbei handelt es sich im eine diskrete Mischung, bei der für jede der n Variablen durch Zufall entschieden wird, aus welchem der ρ Eltern der Wert entnommen wird. Bei einer (µ/ρ +, λ) Strategie wird eine kontinuierliche Mischung verwendet, bei der alle Werte der Eltern gemittelt werden, um einen Nachkommen zu erzeugen. (2/2, λ) entspricht also der sexuellen Fortpflanzung. Bei einer [µ +, λ (µ +, λ) γ ] werden die λ Populationen für γ Generationen isoliert. Es entsteht die allgemeine Schreibweise einer [µ /ρ +, λ (µ/ρ +, λ) γ ] γ Evolutionsstrategie. C. Schrittweite Fortschrittsgeschwindigkeit und Mutationsschrittweite hängen eng zusammen. Es existiert nur ein schmaler Bereich, in dem abhängig von der Mutation ein nennenswerter Fortschritt zu finden ist. Dieser Bereich wird Evolutionsfenster genannt. Abbildung 1 stellt diesen Bereich grafisch dar. Der hellblaue Bereich ist das Evolutionsfenster, links davon ist die Mutation so gering, dass kein nennenswerter Fortschritt erzielt werden kann, rechts ist die Mutation so groß, dass wir sozusagen über das Ziel hinausgeschossen sind. Abbildung 1. Evolutionsfenster, Quelle [3] Durch eine Evolutionsstrategie mit Mutations- Schrittweiten-Regelung lässt sich die Fortschrittsgeschwindigkeit automatisch anpassen. Allerdings kann es auch manchmal nötig sein, dass Nachkommen mit zusätzlich erhöhter Schrittweite erzeugt werden müssen, denn eine Evolutionsstrategie verfolgt stets nur die lokal beste Strategie, kennt die globale Strategie jedoch nicht. Durch vergrößerte Schrittweiten kann die Strategie eine Art globale Weitsicht entwickeln. D. Qualitätsfunktion Durch eine Qualitätsfunktion lässt sich das anfangs erwähnte n-dimensionale Qualitätsgebirge modellieren, um so die Qualität bzw. Fitness der Nachkommen zu bewerten.

Die Idee ist ähnlich der Taylorreihe: Eine Funktion ist durch ein Polynom und das Restglied darstellbar, nach der starker Kausalität und, da wir uns nur im Evolutionsfenster befinden, kann die Entwicklung aber nach dem quadratischem Glied bereits abgebrochen werden. Somit ergibt sich nach [2] die Qualitätsfunktion Q = Q 0 + n c k y k k=1 n d k yk 2 k=1 mit c k beliebig, d k beliebig aber größer als 0. y k sind die rechtwinkligen Achsen um den Elter, wobei das Koordinatensystem mit der Hauptachsentransformation gedreht wurde. Die Summen sind also ähnlich der Länge des Vektors der zu optimierenden n Variablen. Beispielsweise bilden c k 0 und d k = const eine Kreiskuppe. Die Qualität der Nachkommen kann allerdings auch durch eine Computersimulation ermittelt werden. So kann zum Beispiel ein Problem optimiert werden, für das es mathematisch keine explizite Darstellung gibt und die Qualität jedes Prüflings numerisch abgeschätzt werden muss. Allerdings sollte die numerische Simulation dabei nur von einem Vektor von Fließkommazahlen als Parameter abhängen. Um nicht-reellwertige Probleme zu optimieren, ist eine Mapping-Funktion in die Reellen Zahlen nötig [4]. E. Mutation und Rekombination Evolutionsstrategien versuchen biologische Prozesse zu kopieren. Sowohl bei der Rekombinationsstrategie der diskreten, als auch bei der kontinuierlichen Mischung, ist die Idee, dass mehrere Eltern einem Nachfahren ihre genetischen Merkmale mitgeben. Dabei bedeutet beispielsweise die Schreibweise (2/2, λ), dass der Nachfahre genau die Hälfte seiner Merkmale von jedem Elter erhalten hat. Durch die Rekombination wird sichergestellt, dass sich der Varibalenvektor der Nachfahren zwischen dem seiner Eltern befindet und somit der Abstand der Nachfahren zu den Eltern kleiner ist, als der Abstand der Eltern zueinander. Es gibt noch weitere Rekombinationsstrategien wie das Flat Crossover, Discrete N-Point Crossover,... welche in [4] beschrieben werden. Mutation wird als der wichtigste Bestandteil einer Evolutionsstrategie betrachtet. Erst durch die sinnvolle Adaption der sogenannten Strategieparameter 1 wird aus der Nachahmung der Evolution eine Evolutionsstrategie. Bei der konstanten oder auch standard Mutation wie sie in [4] beschrieben wird, wird keine Schrittweitenanpassung vorgenommen. Es wird nur eine Zufallszahl aus einem konstanten Intervall auf den Variablenvektor addiert. Da hierbei keine Strategieparameter zum Einsatz kommen, handelt es sich genau genommen nur um eine Art evolutionäres Optimierungsverfahren aber keine Evolutionsstrategie. Die 1/5-Erfolgsregel wie Prof. Rechenberg in [5] beschreibt besagt, dass etwa jede fünfte Mutation eine Verbesserung gegenüber den Eltern darstellen sollte. Ist dies nicht der Fall, sollte die Schrittweite geändert werden. Diese Regel leitet sich ab, indem einmal die Qualitätsfunktion mit einer Kugel approximiert wurde und einmal mit einem Korridor. Um die maximale Fortschrittsgeschwindigkeit zu erreichen, ergaben sich aus beiden Modellen der Mittelwert 1/5. Bei einer (µ +, λ)-msr-strategie mit globaler Mutation wird eine Schrittweite für den gesamten Variablenvektor verwendet. Dabei ist diese eine Schrittweite der einzige Strategieparameter. Die Nachkommen werden also in einem kreisförmigen Raum um den Elter platziert. Hingegen wird bei einer (µ +, λ)-msr-strategie mit lokaler Mutation für jede Dimension des Problems eine eigene Schrittweite mitgespeichert. Es existieren also n Strategieparameter und die Nachfahren werden in einem ellipsenförmigen Raum 2 um den Elter platziert. Bei einer geschachtelten Evolutionsstrategie kann es oft sinnvoll sein, durch lokale Mutation der inneren Strategie (auf Individuenebene) ein lokales Maximum zu suchen und durch globale Mutation der gesamten Populationen das globale Maximum zu suchen. So kann zum Beispiel in einem gutwilligen Gebirge mit vielen Gipfeln operiert werden. Die Individuen erklimmen dabei jeweils ihr lokales 1 von denen die Schrittweite aufgrund des Modells des Evolutionsfensters als der Wichtigste erscheint 2 bzw. einem ellipsoidförmigen Raum für n > 2

on the impact of σ on the offspring of a given individual. Global Mutation Local Mutation Corralated Mutation Abbildung 2. Mutationen im Vergleich. Quelle: [4] Maximum, durch Mutation gesamter Populationen kann das globale Maximum gesucht werden. Die korrelierte Mutation ist eine Erweiterung der lokalen Mutation bei der zusätzlich die Schrittweiten in Beziehung zueinander gesetzt werden. Es existieren genau n(n 1) Winkel zwischen den n 2 Koordinatenachsen der n-dimensionalen Problemstellung. Diese Winkel werden als zusätzliche Strategieparameter genutzt um den ellipsenförmigen Raum um den Elter, in dem die Nachkommen erzeugt werden, ideal zum Problem auszurichten. Die korrelierte Mutation wird von Hildebrand in [6] als Mutationsart mit der größten Fähigkeit zur Anpassung an das Optimierproblem beschrieben. Abbildung 2 zeigt die lokale, globale und korrelierte Mutation im Vergleich. Es lässt sich gut erkennen, wie sich die Ellipse der korrelierten Mutation wie ein direkter Pfad in Richtung Gipfel entwickelt. Des Weiteren existiert unter Anderem noch die Covarianz Matrix Adapatation (CMA) welche den Rahmen dieses Papers sprengen würde. F. Codebeispiel Unter der Annahme, dass die Definitionen in Abbildung 3 bereits existieren, soll nun eine einfache (5, 20)-MSR Evolutionsstrategie mit globaler Mutation am Rechner getestet werden. Als Qualitätsfunktion soll hier Q = n x k n x 2 k gewählt k=1 k=1 werden, welche ihr Maximum bei x k = 0, 5 erreicht. Abbildung 4 zeigt die Simulationsdurchführung. In den meisten Testläufen lag der absolute Fehler 3 in der Größenordnung 0, 003. Die Ausführungszeit der Simulation auf einem AMD Athlon X2 5200+ lag bei unter einer Sekunde. Abbildung 5 zeigt die Umsetzung der Evolutionsstrategie. Wenn man nun den Code wie in Abbildung 6 (Anhang) in eine Evolutionsstrategie mit lokaler Mutation ändert, wächst der absolute Fehler rasant auf die Größenordnung 171, 877 an. Das arithmetische Mittel des Ergebnisvektors ist in den meisten Komponenten nahe am Optimum 0, 5, jedoch weichen einige Komponenten sehr stark davon ab. Damit der absolute Fehler auf eine Größenordnung von 0, 0135 verkleinert werden kann, sind über 5000 Generationen und eine Ausführungszeit von mehr als zwei Sekunden nötig. Der absolute Fehler verringert sich auf 3, 2562e 7, wenn zusätzlich noch eine diskrete Mischung, wie in Abbildung 7 (Anhang), verwendet wird. Wenn die Problemstellung auf 3000 Dimensionen erhöht wird, liegt die benötigte Rechenzeit der einfachen (5, 20)-MSR Strategie mit globaler Mutation für 5000 Generationen bereits bei über zwei Minuten. Das Ergebnis ist mit einem absoluten Fehler von ca. 29643 kaum verwertbar. Bei der erweiterten Strategie mit lokaler Mutation und diskreter Mischung lag die Ausführungszeit bereits bei über drei Minuten und der Fehler explodierte auf 5.18173e + 12. Dies zeigt, wie sehr das Ergebnis von der richtigen Evolutionsstrategie abhängt und wie viel Rechenzeit für vernünftige Ergebnisse im hochdimensionalen Raum nötig wäre. 3 absoluter Fehler: n 1 k=0 x k 0.5

/ / d i e zu o p t i m i e r e n d e n V a r i b a l e n werden im Typ V a r i a b l e s g e s p e i c h e r t t y p e d e f QVector<double> V a r i a b l e s ; / / g l e i c h v e r t e i l t e [ 0, 1 ) Z u f a l l s z a h l # d e f i n e RAND 0 1 ( r and ( ) / s t a t i c c a s t <double >( RAND MAX+1 ) ) / / n o r m a l v e r t e i l t e ( 0, 1 / s q r t ( x. s i z e ) ) Z u f a l l s z a h l # d e f i n e RAND 0 X ( s q r t ( 2 l o g (1 RAND 0 1 ) / l e n g t h ) s i n ( 6. 2 8 3 2 RAND 0 1 ) ) / / e i n e s i m p l e my lambda E v o l u t i o n s s t r a t e g i e mit dem m e h r d i m e n s i n a l e n Vektor x a l s Anfangswerte QVector<V a r i a b l e s > s i m p l e e v o s t r a t ( i n t my, i n t lambda, QVector<V a r i a b l e s > x, i n t g e n e r a t i o n s ) ; / / Die F u n k t i o n um d i e Q u a l i t a e t d e r V a r i a b l e n zu bestimmen double q u a l i t y ( V a r i a b l e s x ) ; / / k o n t i n u i e r l i c h e Mischung a l l e r V a r i b a l e n, zu E i n e r durch das a r i t h m e t i s c h e M i t t e l V a r i a b l e s a r i t h a v e r a g e ( QVector<V a r i a b l e s > x ) ; Abbildung 3. C++ mit Qt Bibliothek: defs.h # i n c l u d e h e a d e r. cpp i n t main ( i n t argc, char a rgv [ ] ) { Q C o r e A p p l i c a t i o n a ( argc, argv ) ; / / i n i t i a l i s i e r e Pseudo Randomgeneartor mit Sekunden s e i t M i t t e r n a c h t QTime m i d n i g h t ( 0, 0, 0) ; s r a n d ( m i d n i g h t. secsto ( QTime : : c u r r e n t T i m e ( ) ) ) ; p r i n t f ( Beginn d e r E v o l u t i o n ) ; / / e r z e u g e 30 d i m e n s i o n a l e T e s t v e k t o r e n mit dem S t a r t w e r t 42 QVector<V a r i a b l e s > i n i t i a l v a l u e s ( 5 ) ; i n i t i a l v a l u e s. f i l l ( V a r i a b l e s ( 3 0, 42) ) ; / / wende e i n e ( 5, 2 0 ) E v o l u t i o n s s t r a t e g i e mit 500 G e n e r a t i o n e n an QVector<V a r i a b l e s > o u t p u t = s i m p l e e v o s t r a t ( 5, 20, i n i t i a l v a l u e s, 500) ; qdebug ( ) << a r i t h a v e r a g e ( o u t p u t ) ; return a. exec ( ) ; Abbildung 4. C++ mit Qt Bibliothek: main.cpp V. PROBLEME Ein generelles Problem bei Evolutionsstrategien stellt der sogenannte Fluch der Dimensionen dar. Im n-dimensionalen Raum ist die Wahrscheinlichkeit, dass ein Nachkomme besser wird als sein Elter, sehr gering und stark von der Mutationsschrittweite abhängig. Allerdings existiert laut [1] kein exaktes Verfahren um die richtige Schrittweite zu wählen. Des Weiteren wird im hochdimensionalen Raum sehr viel Rechenzeit benötigt. Bei Evolutionsstrategien handelt es sich grundsätzlich um lokale Verfahren, die einer Gradientenstrategie gleichen. Hinsichtlich Konvergenzgeschwindigkeit und ob der errechnete Grenzwert das globale Optimum darstellt, lassen sich oft keine Aussagen treffen. Bei der Implementierung werden viele normalverteilte Zufallszahlen benötigt. Die Standardbibliotheken gängiger Programmiersprachen verfügen oft jedoch nicht über Pseudozufallszahlengeneratoren

QVector<V a r i a b l e s > s i m p l e e v o s t r a t ( i n t my, i n t lambda, QVector<V a r i a b l e s > x, i n t g e n e r a t i o n s ) { a s s e r t ( x. s i z e ( ) == my) ; / / Laenge des V a r i a b l e n v e k t o r s i n t l e n g t h = x [ 0 ]. s i z e ( ) ; / / X: zu o p t i m i e r e n d e V a r i a b l e n / / n Nachkomme / / e E l t e r n / / b B e s t e n V a r i a b l e s X n ( l e n g t h ) ; QVector<V a r i a b l e s > X e (my, V a r i a b l e s ( l e n g t h ) ), X b (my, V a r i a b l e s ( l e n g t h ) ) ; / / S : S c h r i t t w e i t e n, Q: Q u a l i t a e t double S n, Q n ; QVector<double> S e (my), S b (my), Q b (my) ; / / A: S c h r i t t w e i t e n a n p a s s u n g double A( 1. 3 ) ; X e = x ; S e. f i l l (A) ; f o r ( i n t g = 0 ; g < g e n e r a t i o n s ; ++g ) { / / Erzeugung d e r Nachfahren Q b. f i l l ( DBL MAX) ; f o r ( i n t i = 0 ; i < lambda ; ++ i ) { / / Erzeugung e i n e s N a c h f o l g e r s i n t e l t e r = ( i n t ) (my RAND 0 1 ) ; S n = S e [ e l t e r ] pow (A, 2 f l o o r ( RAND 0 1 + 0. 5 ) 1) ; f o r ( i n t j = 0 ; j < l e n g t h ; ++ j ) { X n [ j ] = X e [ e l t e r ] [ j ] + S n RAND 0 X ; / / E r m i t t l u n g des momentan s c h l e c h t e s t e n N a c h f o l g e r s double w o r s t = Q b [ 0 ] ; i n t w o r s t i n d e x = 0 ; f o r ( i n t j = 0 ; j < Q b. s i z e ( ) ; ++ j ) { i f ( Q b [ j ] < w o r s t ) { w o r s t i n d e x = j ; w o r s t = Q b [ j ] ; Q n = q u a l i t y ( X n ) ; i f ( Q n > w o r s t ) { / / Den s c h l e c h t e s t e n N a c h f o l g e r mit dem a k t u e l l e n e r s e t z t e n S b [ w o r s t i n d e x ] = S n ; Q b [ w o r s t i n d e x ] = Q n ; X b [ w o r s t i n d e x ] = X n ; / / Die b e s t e n Nachfahren werden d i e neuen E l t e r n X e = X b ; S e = S b ; return X e ; Abbildung 5. C++ mit Qt Bibliothek: simple evo strat.cpp

ausreichender Güte oder leiden unter Effizienzproblemen. VI. ZUSAMMENFASSUNG UND AUSBLICK Wir haben die grundlegenden Ideen der Evolutionsstrategien theoretisch kennengelernt und an einem Beispiel praktisch getestet. Es zeigt sich, dass Evolutionsstrategien ein mächtiges Werkzeug sein können, um im hochdimensionalen Raum zu Optimieren. Allerdings zeigt sich auch, wie sehr das Ergebnis mit der verwendeten Strategie und den unterschiedlichen Parametern schwanken kann. Ein Gefühl des Evolutionsstrategen um den passenden Algorithmus für das entsprechende Problem zu wählen, ist also stets von Nöten. LITERATUR [1] wikipedia, Evolutionsstrategie, 03 2010. [Online]. Available: http://de.wikipedia.org/wiki/evolutionsstrategie [2] I. Rechenberg, Evolutionsstrategie 94. frommann-holzboog, 1994. [3] Prof. Dr. Ingo Rechenberg, Das Evolutionsfenster, 03 2010. [Online]. Available: http://www.bionik.tu-berlin.de/ institut/s2evfen.html [4] F. Streichert and H. Ulmer, JavaEvA - a java framework for evolutionary algorithms, Centre for Bioinformatics Tübingen, University of Tübingen, Technical Report WSI-2005-06, 2005. [Online]. Available: http://w210.ub.uni-tuebingen.de/dbt/ volltexte/2005/1702/ [5] I. Rechenberg, Evolutionsstrategie. Optimierung technischer Systeme nach Prinzipien der biologischen Evolution. frommannholzboog, 1973. [6] L. Hildebrand, Schiefe-Ein Ansatz zur Erweiterung von Evolutionsstrategien um gerichtete Mutation, Universit ät Dortmund, Forschungsbericht, vol. 639, 1997.

VII. ANHANG

QVector<V a r i a b l e s > s i m p l e e v o s t r a t ( i n t my, i n t lambda, QVector<V a r i a b l e s > x, i n t g e n e r a t i o n s ) { a s s e r t ( x. s i z e ( ) == my) ; / / Laenge des V a r i a b l e n v e k t o r s i n t l e n g t h = x [ 0 ]. s i z e ( ) ; / / X: zu o p t i m i e r e n d e V a r i a b l e n / / n Nachkomme / / e E l t e r n / / b B e s t e n V a r i a b l e s X n ( l e n g t h ) ; QVector<V a r i a b l e s > X e (my, V a r i a b l e s ( l e n g t h ) ), X b (my, V a r i a b l e s ( l e n g t h ) ) ; / / A: S c h r i t t w e i t e n a n p a s s u n g double A( 1. 3 ) ; / / S : S c h r i t t w e i t e n, Q: Q u a l i t a e t QVector<double> S n ( l e n g t h ) ; double Q n ; QVector< QVector<double> > S e (my, QVector<double >( l e n g t h, A) ), S b (my, QVector<double >( l e n g t h ) ) ; QVector<double> Q b (my) ; / / S e b e r e i t s mit A v o r b e l e g t X e = x ; f o r ( i n t g = 0 ; g < g e n e r a t i o n s ; ++g ) { / / Erzeugung d e r Nachfahren Q b. f i l l ( DBL MAX) ; f o r ( i n t i = 0 ; i < lambda ; ++ i ) { / / Erzeugung e i n e s N a c h f o l g e r s i n t e l t e r = ( i n t ) (my RAND 0 1 ) ; f o r ( i n t j = 0 ; j < l e n g t h ; ++ j ) { / / S c h r i t t w e i t e n double s a n p = pow (A, 2 f l o o r ( RAND 0 1 + 0. 5 ) 1) ; S n [ j ] = S e [ e l t e r ] [ j ] s a n p ; f o r ( i n t j = 0 ; j < l e n g t h ; ++ j ) { / / V a r i a b l e n X n [ j ] = X e [ e l t e r ] [ j ] + S n [ j ] RAND 0 X ; / / E r m i t t l u n g des momentan s c h l e c h t e s t e n N a c h f o l g e r s double w o r s t = Q b [ 0 ] ; i n t w o r s t i n d e x = 0 ; f o r ( i n t j = 0 ; j < Q b. s i z e ( ) ; ++ j ) { i f ( Q b [ j ] < w o r s t ) { w o r s t i n d e x = j ; w o r s t = Q b [ j ] ; Q n = q u a l i t y ( X n ) ; i f ( Q n > w o r s t ) { / / Den s c h l e c h t e s t e n N a c h f o l g e r mit dem a k t u e l l e n e r s e t z t e n S b [ w o r s t i n d e x ] = S n ; Q b [ w o r s t i n d e x ] = Q n ; X b [ w o r s t i n d e x ] = X n ; / / Die b e s t e n Nachfahren werden d i e neuen E l t e r n X e = X b ; S e = S b ; return X e ; Abbildung 6. C++ mit Qt Bibliothek: simple evo strat lokalemsr.cpp

QVector<V a r i a b l e s > s i m p l e e v o s t r a t ( i n t my, i n t lambda, QVector<V a r i a b l e s > x, i n t g e n e r a t i o n s ) { a s s e r t ( x. s i z e ( ) == my) ; / / Laenge des V a r i a b l e n v e k t o r s i n t l e n g t h = x [ 0 ]. s i z e ( ) ; / / X: zu o p t i m i e r e n d e V a r i a b l e n / / n Nachkomme / / e E l t e r n / / b B e s t e n V a r i a b l e s X n ( l e n g t h ) ; QVector<V a r i a b l e s > X e (my, V a r i a b l e s ( l e n g t h ) ), X b (my, V a r i a b l e s ( l e n g t h ) ) ; / / A: S c h r i t t w e i t e n a n p a s s u n g double A( 1. 3 ) ; / / S : S c h r i t t w e i t e n, Q: Q u a l i t a e t QVector<double> S n ( l e n g t h ) ; double Q n ; QVector< QVector<double> > S e (my, QVector<double >( l e n g t h, A) ), S b (my, QVector<double >( l e n g t h ) ) ; QVector<double> Q b (my) ; / / S e b e r e i t s mit A v o r b e l e g t X e = x ; f o r ( i n t g = 0 ; g < g e n e r a t i o n s ; ++g ) { / / Erzeugung d e r Nachfahren Q b. f i l l ( DBL MAX) ; f o r ( i n t i = 0 ; i < lambda ; ++ i ) { / / Erzeugung e i n e s N a c h f o l g e r s f o r ( i n t j = 0 ; j < l e n g t h ; ++ j ) { i n t e l t e r = ( i n t ) (my RAND 0 1 ) ; / / S c h r i t t w e i t e n double s a n p = pow (A, 2 f l o o r ( RAND 0 1 + 0. 5 ) 1) ; S n [ j ] = S e [ e l t e r ] [ j ] s a n p ; / / V a r i a b l e n X n [ j ] = X e [ e l t e r ] [ j ] + S n [ j ] RAND 0 X ; / / E r m i t t l u n g des momentan s c h l e c h t e s t e n N a c h f o l g e r s double w o r s t = Q b [ 0 ] ; i n t w o r s t i n d e x = 0 ; f o r ( i n t j = 0 ; j < Q b. s i z e ( ) ; ++ j ) { i f ( Q b [ j ] < w o r s t ) { w o r s t i n d e x = j ; w o r s t = Q b [ j ] ; Q n = q u a l i t y ( X n ) ; i f ( Q n > w o r s t ) { / / Den s c h l e c h t e s t e n N a c h f o l g e r mit dem a k t u e l l e n e r s e t z t e n S b [ w o r s t i n d e x ] = S n ; Q b [ w o r s t i n d e x ] = Q n ; X b [ w o r s t i n d e x ] = X n ; / / Die b e s t e n Nachfahren werden d i e neuen E l t e r n X e = X b ; S e = S b ; return X e ; Abbildung 7. C++ mit Qt Bibliothek: simple evo strat lokalemsr diskretemischung.cpp