Studienarbeit Evolutionäre Algorithmen Grundlagen, Anwendung und Visualisierung Dr. rer. nat. Harald Sack Institut für Informatik Sommersemester 2004 Universität Jena Verlegt von Hannes Schrödter Matrikelnummer 39583 April – September 2004 1 Aufgabenstellung Evolutionäre Algorithmen (EA) dienen bereits seit vielen Jahren als bewährte Strategie zur Optimierung schwieriger Problemstellungen. Der Anwendungsbereich reicht vom Problem des Handlungsreisenden über das Job-Scheduling-Problem, Stundenplanerstellung, Schaltkreisentwürfe und -verfikationen bis hin zur intelligenten Robotersteuerung. In dieser Arbeit sollen die Grundlagen der Evolutionären Algorithmen verdeutlicht, sowie ihre aktuellen Einsatzgebiete recherchiert und dargestellt werden. EA sollen mit konkurrierenden Verfahren (Heuristiken, Simulated Annealing, etc.) verglichen und bewertet werden. Die Implementierung eines EA mit einem Java-Applet ist Bestandteil der Arbeit, wobei der Schwerpunkt auf der anschaulichen Visualisierung der Arbeitsweise des EA liegt. 2 Inhaltverzeichnis Seite I. Einleitung 5 II. Grundlagen 6 II.1. Optimierung II.1.1. Das Problem der Optimierung …………………………...……... 6 6 II.2. Das Mutation- Selektions- Verfahren II.2.1. Das Verfahren ……………………………………...…………… II.2.2. Das Travelling Salesman Problem (TSP) ……………....……….. II.2.3. Varianten zum Mutations-Selektions-Verfahren (MSV).……..… 9 9 10 10 II.3. Genetische Algorithmen II.3.1. Das biologische Vorbild ………………………………………… II.3.2. Die Abgrenzung zum MSV …………………………………….. II.3.3. Der Algorithmus ………………………………………………... II.3.4. Genetische Operationen …………………………………………. II.3.4.1 Auswahlverfahren ……………………………………… II.3.4.1.1. Das Roulette-Auswahl-Verfahren …………… II.3.4.1.2.Auswahl durch Zufallszahlen ………………... II.3.4.1.3. Lineares Ranking …………………………….. II.3.4.1.4. Die (N,µ)-Selektion ………………………...... II.3.4.2 Rekombination ……………………………………….… II.3.4.2.1. Ein-Punkt-Rekombination …………………… II.3.4.2.2. Zwei-Punkt-Rekombination …………………. II.3.4.2.3.Gleichmäßige Rekombination ………………... II.3.4.2.4. Intermediäre Rekombination ………………… II.3.4.2.5. PMX-Rekombination ………………………... II.3.4.3. Mutation ……………………………………………….. II.3.4.4.Inversion ………………………………………………... II.3.5. Diploidie und Dominanz ………………………………………… II.3.6. Konvergenzsätze ………………………………………………… II.3.7. Hybride Verfahren ...……………………………………………. 13 13 13 14 16 16 16 17 17 18 18 18 18 18 19 19 19 19 20 20 22 II.4 Evolutionsstrategien 23 II.4.1. Das Verfahren …………………………………………..……….. 23 II.4.2 .Mehrfache Zielsetzung (Vektor-Optimierung) …………..……… 24 II. 5 Neuronale Netze II.5.1 Vorwärts gerichtete einstufige Netze ……………………..…….. II.5.1.1 Das Neuron ……………………………………..……... II.5.1.2 Einstufige neuronale Netze ……………………..…….. II.5.1.3 Lernen durch Optimieren ………………………..…….. 26 26 26 26 27 3 III. Beispielprogramm 28 III.1. Sinn und Zweck des Programms 28 III.2. Das Optimierungsproblem 28 III.3. Womit ist es geschrieben? 28 III.4. Umsetzung als evolutionärer Algorithmus 28 III.5. Bedienung 30 III.6. Verbesserungen 33 IV. Zusammenfassung und Überblick 35 A Glossar 36 B Wichtige Internetadressen 37 C Abkürzungen und Akronyme 38 Literaturverzeichnis 39 Index 40 4 I. Einleitung Die Natur kann leicht als riesiges Optimierungsverfahren angesehen werden. In der uns umgebenden Welt der Physik wählt zum Beispiel das Licht unter allen möglichen stets diejenige Lichtbahn, mit welcher das Ziel in minimaler Zeit erreicht werden kann. Dies ist als Fermat’sches Prinzip bekannt. In der Mechanik erfolgen Bewegungen von Massen unter Bedingungen von Extremprinzipien. In der Biologie hat die Evolution die Individuen, welche ihren Artgenossen in Eigenschaften und Beschaffenheit überlegen waren, also die „optimalsten“, selektiert. Auch die Menschheit sieht sich ständig Optimierungsproblemen gegenüber gestellt. Diese erstrecken sich über Bereiche der Ökonomie, also Produktionsstrategien etc. , über technische Aufgabenstellungen bis hin zum persönlichen Bereich, zum Beispiel bei sportlichen Wettkämpfen und Spielen. Im Gegensatz zur Natur, die die optimalen Lösungen offenbar einfach zu kennen scheint, muss der Mensch diese berechnen. Er arbeitet dazu konstruktiv an bestmöglichen Verfahren. Die Mathematik bietet hierzu zahlreiche Ansatzmöglichkeiten. Allerdings haben diese ein begrenztes Anwendungsspektrum. Das Optimieren von Stundenplänen, Maschinenauslegungen, Routenplanung usw. sind so nicht lösbar. Die Aufgaben sind, beispielsweise aufgrund von vielen Restriktionen, nicht in einer Lösungsgleichung auszudrücken, sie passen in kein mathematisches Kalkül. Ein weiterer Grund für die Nichtlösbarkeit entsteht, wenn sich die Bestimmung eines Extremas einer solchen Gleichung als NP-vollständiges Problem herausstellt. Die aus diesen Gedanken entstandene Idee besteht darin, zu versuchen, die in der Natur gegebenen Optimierungsverfahren auf die für uns unlösbaren Probleme anzuwenden. Ein solches Verfahren ist die Optimierung mit evolutionären Algorithmen, welche sich an der Evolutionsbiologie orientiert. In dieser Arbeit werden zunächst die Grundbegriffe und Basisverfahren der evolutionären Algorithmen vorgesellt werden. Nachdem das Problem der Optimierung genauer erläutert wird, werden immer komplexere und leistungsfähigere Verfahren und die dazugehörigen Begriffe und Operationen erklärt. Das Hauptaugenmerk der Arbeit liegt auf der Entwicklung und Vorstellung eines Anwendungsprogramms. In diesem wird eines der vorgestellten Verfahren auf ein erdachtes Optimierungsproblem angewandt. Wichtig soll dabei sein, dass die Arbeitsweise unter verschiedenen Eingabebedingungen schrittweise visualisiert wird. 5 II. Grundlagen II.1 Optimierung II.1.1. Das Problem der Optimierung Die wohl einfachste Übertragung eines Beispiels aus der Praxis für eine n-dimensionale Optimierung ist die Suche nach Extrema einer reellwertigen, mindestens zweimal stetigdifferenzierbaren Funktion f(x). Erweitert man die Suche auf eine Funktion f (x,y) , so liegt statt einer Kurve eine Fläche im dreidimensionalen Koordinatensystem vor (Abb.1). Während sich hier die Extrema als Bergspitzen und Taltiefpunkte vorstellen lassen, versagt bei einer Funktion mit n Variablen jede bildliche Vorstellung. Selbst für diese Funktionen existieren wohldefinierte Algorithmen zum Auffinden der Maxima und Minima, solange sie in die Klasse der mindestens zweimal stetig-differenzierbaren Funktionen passen. Abbildung 1: Fläche im dreidimensionalen Koordinatensystem ([Ki94]) Die meisten anwendungsorientierten Optimierungen gehören nicht in diese Klasse oder die entstehenden Lösungssysteme sind zu komplex. - Beispiele dafür sind: Anordnung von Schaltelementen in Schaltkreisen: Auslastung von Maschinen: Lagerhaltung: Minimale Kosten Minimale Leistungswege Minimale Belegungszeiten 6 Geldanlage: Pipelines: Optimale Rendite Maximale Transportleistung bzw. minimale Energietransportkosten All diese Probleme werden durch Parameter beschrieben und man sucht nach den speziellen Parameterwerten, für die eine Bewertungsfunktion, auch Fitness genannt, ein Minimum oder Maximum annimmt. - Allgemeine Formulierung: Gegeben sind endlich oder unendlich viele Zustände Zi . Jeder einzelne Zustand ist durch Parameter Z i ( p1... pn ) ∈ ℜ definiert. Die Menge aller Zustände heißt Suchraum. Jedem Zustand ist eine reelle Zahl, die Bewertung des Zustandes, zugeordnet. Die entstehende Funktion f heißt Fitness, für S den Suchraum und R die Menge der reellen Zahlen, gilt: f:S→ ℜ Gesucht ist ein Zustand, für den die Fitness den maximalen Wert annimmt, das heißt: Z mit f ( Z ( p1... pn )) → max Es werden nun kurz einige klassische Optimierungsverfahren vorgestellt. - Extremwertberechnung über Ableitungen: Die Fitness ist eine zweimal-differenzierbare Funktion. Nullstellen der ersten Ableitung liefern die Lagepunkte der Extrema und die zweite Ableitung enthält die Informationen, ob ein Maximum oder Minimum vorliegt. - Suchmethode: Liegen nur endlich viele Zustände vor, kann man durch systematisches Durchsuchen des Suchraums das Maximum der Fitness finden. - Gradientenmethode (Methode des steilen Anstiegs): Die Fitness-Funktion muss differenzierbar sein. Da der Gradient einer Funktion als Vektor die Richtung des steilsten Anstiegs angibt, kann man in einem Iterationsverfahren, von einem Startpunkt ausgehend, einen neuen Punkt suchen, so dass die vektorielle Differenz zwischen den Punkten die Richtung des Gradienten besitzt. Das Iterationsverfahren konvergiert gegen das nächstgelegene lokale Maximum. - Simplexmethode: Ist die Fitness-Funktion linear und liegen lineare Nebenbedingungen vor, bildet der Suchraum einen n-dimensionalen Simplex (n = 2 : ein Vieleck). Einer der Eckpunkte ist der Lagepunkt des Maximums. Das Simplexverfahren ermöglicht unter Einsatz des Austauschverfahrens das systematische Absuchen der Eckpunkte auf Qualität. 7 Abbildung2: Eine für klassische Optimierungsverfahren ungeeignete Kurve Probleme ergeben sich dadurch, dass die Fitness zumeist eine für die klassischen Verfahren unlösbare Form hat (vgl. Abb.2). Verstärkt wird das Problem oft durch eventuell geforderte Nebenbedingungen, welche Zustände ausschließen (unerlaubte Gebiete in unserer Landschaft). Bei chaotischen Funktionen stellt es sich oft als äußerst schwierig heraus unter den lokalen das globale Extremum ausfindig zu machen, das heißt unter allen Bergen den höchsten finden. Wenn wir nun noch den Schritt zu Optimierungen mit mehreren Kriterien, also mit mehreren Zielfunktionen (Maximaler Gewinn bei minimaler Leistung), machen, erreichen wir die Grenzen der klassischen Verfahren schnell. Da man dies erkannte und auch Probleme, für die es keinen Ansatz für eine algorithmisch deterministische Lösung gab, lösen wollte, lassen sich speziell bei der betrieblichen Durchführung (Personal- über Materialplanung,...)verschiedene Realisierungsphasen ausmachen: Stufe 1: Man verfährt nach eingespielten Regeln, die sich bewährt haben, aber in keiner Weise Optimalität garantieren. Stufe 2: Neben den Hilfsmitteln der Stufe 1 benutzt man zusätzlich Listen und ausgearbeitete Strukturpläne. Stufe 3: Statt der Listen benutzt man Datenbanken. Stufe 4: Rechnergestützte Optimierung bilden die Basis für Realisierungen. Dies garantiert optimale Durchführung. Da die analytische Vorgabe zwar ein deterministisches Vorgehen erlaubt, dabei aber die Anwendungen einschränkt, wird zunehmend anstatt dessen die Potenz von Rechnern genutzt. Dabei wird im Wesentlichen, unter der Kontrolle von solchen Regeln, die der Evolution abgeschaut wurden, so lange an dem Problem „herumprobiert“, bis ein Maximum gefunden wurde. Die unter diesem Gesichtspunkt entwickelten Verfahren werden in den folgenden Abschnitten erklärt. 8 II.2 Das Mutation- Selektions- Verfahren II.2.1. Das Verfahren Die einfachste Form eines an evolutionären Prinzipien orientierten Verfahrens ist das Mutations-Selektions-Verfahren (MSV) ([Rec73]). - Die meisten Optimierungsaufgaben lassen sich in folgender Form ausdrücken: Gegeben ist eine Menge M, bestehend aus Vektoren. Gesucht ist der Vektor, für den eine vorgegebene Funktion f, definiert auf M, ein Maximum annimmt. f:M→R - Das Lösungsverfahren genügt der folgenden Grundregel: Man gehe aus von einem Startvektor v und verändere diesen mit Hilfe von Zufallszahlen. Ist die zu maximierende Funktion f für den neuen Vektor größer, ersetze man v durch diesen, anderenfalls vergesse man ihn. Dies wiederhole man mehrfach. Obwohl man mit diesem Verfahren oft nur lokale und nicht absolute Maxima anstrebt, finden sich genügend Anwendungen. Der Grund dafür liegt darin, dass für viele nichtlineare Probleme keine alternativen Lösungsansätze existieren und die Codierung des Verfahrens, aufgrund von einfachen Programmschleifen, unkompliziert ist. Wir formulieren nun das Problem ausführlicher : - Es sei M eine Menge von n-dimensionalen Vektoren mit reellen oder ganzzahligen Koordinaten, dass heißt M = {x | x = ( x1...xn ), xi ∈ ℜ}. Es sei f eine Funktion, die M in die Menge der reellen Zahlen überführt, also f : M → ℜ - f(x) heißt Fitness-Funktion und x ein Chromosom - Gesucht ist x ∈ M , so dass f(x) maximal ist. Grundlagen des Verfahrens ist die schrittweise Veränderung des Chromosoms x und die schrittweise Überprüfung, ob die Fitness F(x) sich bei dieser Veränderung vergrößert oder verkleinert. Die auf Zufallsprozessen basierende Veränderung nennen wir Mutation. Diese können verschiedenartig durchgeführt werden: - Mutation 1: x є M enthält reelle Koordinaten. Verändere alle Koordinaten von x um einen kleinen Wert. - Mutation 2: x є M enthält reelle Koordinaten. Verändere nur eine Koordinate um einen kleinen Wert. - Mutation 3: x є M enthält reelle Koordinaten. Jede Koordinate wird um r verändert, wobei r aus einer Wahrscheinlichkeitsverteilung ermittelt wird. Eine günstige Methode ist die Folgende: Man verändere die zu mutierende Größe x zu x’ = x + z ⋅ d , wobei z eine Zufallszahl mit − 1 ≤ z = 1 ist und d ein beliebige Zahl (z.B.0,5), welche die Mutation zusätzlicher gröber oder feiner ablaufen lassen kann. Damit unsere Programme nicht in einer Endlosschleife laufen, müssen wir ein Abbruchkriterium festlegen. Ist die Soll-Fitness bekannt , so können wir abbrechen, wenn dieser Wert bis auf eine vorgegebene Genauigkeit erreicht wird. Ist sie nicht bekannt, so stoppt man bei einer 9 Maximaliterationszahl oder wenn keine wesentlichen Veränderungen der Fitness mehr erreichbar sind. Für viele Anwendungen existieren Nebenbedingungen, wie zum Beispiel die optimale Lagerhaltung bei Produktionsplänen. Die Existenz solcher Nebenbedingungen bedeutet für das Verfahren, dass bei der Mutation nur Chromosomen neu entstehen dürfen, die diesen Nebenbedingungen genügen. Es muss also nach jeder Mutation das neue Element auf Einhaltung der Nebenbedingungen geprüft werden. Dadurch ergibt sich folgende Darstellung für unseren Algorithmus: (1) Wähle ein Anfangschromosom x є M, welches alle Nebenbedingungen erfüllt. (2) Verändere das Chromosom x zu x’ (Mutation). (3) Prüfe, ob x’ alle Nebenbedingungen erfüllt, falls nicht, fahre fort bei (2). (4) Falls die Fitness des neuen Chromosoms sich verbessert hat, ersetze das alte Chromosom durch das neue. (5) Fahre fort bei (2), falls das Abbruchkriterium nicht erfüllt ist. II.2.2. Das Travelling Salesman Problem (TSP) Das TSP (Problem des Handlungsreisenden) gilt als Standardproblem für NP-vollständige Optimierung. Ein NP-vollständiges Problem ist ein Problem, für dessen Lösung kein Algorithmus existiert, dessen Laufzeit bei Eingabe eines Strings S der Länge n durch ein Polynom p(n) in n beschränkt ist. Die Aufgabe besteht darin, N Städte zu besuchen und dabei die kürzest mögliche Route zu benutzen. Würde man einfach die Länge aller ½ ⋅ ( N − 1)! Routen berechnen und dann die kürzeste wählen, so würde bei N =20 und einer Route pro Sekunde das Alter des Universums nicht ausreichen, um die Rechnung zu Ende führen zu können. Es existieren Lösungsansätze für bis zu 3000 Stationen. Diese sind oft Mischungen von analytischen und numerischen Methoden oder sie basieren auf neuronalen Netzen (vgl. z.B. [Ki92]). Auch selektive Verfahren sind einsetzbar. Dazu werden die N Städte von 1 bis N durchnummeriert und eine beliebige Permutation der Zahlen aufgeschrieben. Jede Permutation bestimmt über die Reihenfolge der Städte eine Route und bildet ein Chromosom für ein Mutationsverfahren. Ordnet man jeder Route R über die Funktion f(R) ihre Länge zu, so kann man mit F(R) = - f(R) eine dazugehörige Fitness definieren. Wenn (xi, yi) die Koordinaten einer Stadt darstellen, ist die Fitness durch Formel1: F = ∑ [( xi − xi +1 ) 2 + ( yi − yi +1 ) 2 ] gegeben. i Lediglich die Modulierung der Mutation ist noch zu regeln. Hierbei genügt es nicht eine Zahl der Permutation per Zufall zu ändern, da sonst Städte in unserer Route gelöscht werden könnten. Der einfachste Ansatz wäre es, einfach zwei Städte in der Route zu vertauschen. Auf weitere, effektivere Methoden wird im nächsten Kapitel eingegangen. II.2.3. Varianten zum Mutations-Selektions-Verfahren Sehen wir uns die durch Formel 1 gegebene Fitnessfunktion genauer an, so stellen wir fest, dass diese mehrere lokale Extrema besitzen kann. Da sich bei den bisher betrachteten Verfah10 ren grundsätzlich das Chromosom mit der höheren Fitness durchsetzt, bleiben wir an ein solches lokales Extremum gebunden. Das heißt, wir haben eine gute aber möglicherweise nicht optimale Lösung, ein lokales statt einem globalen Maximum. Auch beim TSP suchen wir die absolut kürzeste Route. Will man diesen Nachteil des Verfahrens ausgleichen, muss man solche lokale Maxima wieder verlassen können. Dazu existieren mehrere Ansätze, die man im Wesentlichen den zwei folgenden Grundsätzen zuordnen kann: - Eine Verschlechterung der Fitness ist mit einer gewissen, allerdings sehr kleinen, Wahrscheinlichkeit möglich (Simulated Annealing). - Eine Verschlechterung der Fitness ist stets möglich, aber höchstens bis zu einem maximalen Betrag (Threshold Accepting): Im Folgenden werden diese Verfahren erläutert. Simulated Annealing (Simuliertes Kühlen) Kühlt man flüssige Metallverbindungen in ihren festen Aggregatzustand ab, dann verläuft dieser Vorgang so, dass die Gesamtenergie minimal wird. Erreicht man dabei lokale Energieminima, so hat die Kristallstruktur mögliche Verunreinigungen. Lediglich das absolute Minimum garantiert eine reine Struktur. Der Begriff „Simulated Annealing“ stammt von der Simulation eines solchen Kühlvorgangs auf einem Rechner. Dabei ergab sich durch langsames Abkühlen eine hohe Wahrscheinlichkeit, das absolute Energieminimum zu finden. Der Physiker Scott Kirkpatrick übertrug 1982 die Methode des Kühlens auf allgemeine Optimierungsprobleme. Dabei entsprach die Energie der zu minimierenden Zielfunktion. Hopfield wandte die Methode auf die nach ihm benannten neuronalen Netze an ([Ho82],[Ki92]). Als Ausgangspunkt schreiben wir das uns bekannte MSV wie folgt um: (1) Wähle ein Anfangschromosom x є M. (2) Verändere das Chromosom x zu x’. (3) Berechne r = F(x’) – F(x). (4) Falls r>0, wähle x’, andernfalls x. (5) Fahre fort bei (2) Um nun auch Chromosomen mit niedriger Fitness eine Überlebenschance einzuräumen, verändern wir den Punkt (4) : (4) Wähle mit der Wahrscheinlichkeit p(r) x’ als neues Chromosom. Die Wahrscheinlichkeit muss nun so gewählt werden, dass Chromosomen mit kleiner Fitness nur sehr selten zugelassen werden. Daher muss p(r) für negative r (F(x’) < F(x)) klein und für positive r groß sein. Mit der Wahrscheinlichkeit 1 p(r ) = 1 + exp(−r / T ) ist dies gegeben. T ist eine beliebige positive Zahl. Man stellt fest, dass der Grenzwert von lim 1 p(r ) = ist, also alle Chromosomen gleichwahrscheinlich wären. p(r) bei T →∞ 2 Des Weiteren wird die Wahrscheinlichkeit, und damit die Überlebenschance „schwächerer“ Chromosomen, mit sinkendem T kleiner. Mathematisch bedeutet dies, dass, wenn man die 11 Konstante T schnell senkt, sich das System zu schnell auf ein Extremum einpendelt. Senkt man T langsam, hat man die Chance, das absolute Extremum zu finden. Baut man dieses Wissen in den oben beschriebenen Algorithmus ein, so erhalten wir folgenden, für die praktische Programmierung direkt anwendbaren Algorithmus: (1) Wähle ein Anfangschromosom x є M. (2) Verändere das Chromosom x zu x’. (3) Berechne r = F(x’) – F(x). 1 (4) Berechne die Wahrscheinlichkeit p(r ) = 1 + exp(−r / T ) (5) Wähle eine Zufallszahl z mit 0 ≤ z ≤ 1. Ist z ≤ p dann wähle x’; anderenfalls x als (neues) Chromosom. (6) Verkleinere (Temperatur) T. (7) Falls Abbruchkriterium nicht erreicht ist, fahre fort bei (2). Threshold Accepting Dieses Verfahren wurde von G. Dueck, T. Scheuer und H.M. Wallmeier in [DSW93] beschrieben. Im Gegensatz zum Simulated Annealing erlaubt man das Verlassen lokaler Maxima nicht über Wahrscheinlichkeiten, sondern über eine Toleranzschwelle. Das heißt, die Fitness des neuen Chromosoms kann schlechter als die von x sein, allerdings nicht schlechter als F(x) – T, wobei T eine Toleranzschwelle (threshold) ist. Um es anfangs wieder leichter zu machen, lokale Minima zu verlassen, beginnt man mit einem relativ großen T, welches permanent verkleinert wird, bis es den Wert 0 erreicht. Der Algorithmus Threshold Accepting lautet wie folgt: (1) Wähle ein Anfangschromosom x є M. (2) Verändere das Chromosom x zu x’. (3) Berechne r = F(x) - T. (4) Ist F(x’) ≥ r, wähle x’, andernfalls wähle x als (neues) Chromosom. (5) Verkleinere T. (6) Falls Abbruchkriterium nicht erreicht ist, fahre fort bei (2). Die Sintflut-Methode Diese Variante des MSV wird von den oben genannten Autoren wie das Threshold Accepting in [DSW93] beschrieben, allerdings muss hier die Fitness eines „schwächeren“ Chromosoms mindestens gleich einem Akzeptanzwert T sein, also F(x) ≥ T. Aus dem selben Grund, aus dem wir T in den oberen zwei Methoden permanent verkleinerten, muss hier nun T erhöht werden. Stellen wir uns T als Höhe des Wasserstandes in unserer Berglandschaft vor, dann kann der Wanderer, der die höchste Bergspitze sucht und nicht ins Wasser darf, im Laufe des Verfahrens immer seltener Berge über Täler verlassen und endet schließlich auf der Spitze einer Insel. Der Algorithmus Sintflut-Methode lautet wie folgt: (1) Wähle ein Anfangschromosom x є M sowie eine Zahl T. (2) Verändere das Chromosom x zu x’. (3) Berechne F(x’). (4) Ist F(x’) > T, wähle x’, andernfalls wähle x als (neues) Chromosom. (5) Vergrößere T um das Inkrement є. (6) Falls Abbruchkriterium nicht erreicht ist, fahre fort bei (2). 12 II.3. Genetische Algorithmen II.3.1. Das biologische Vorbild Die biologische Genetik, insbesondere aber die Evolutionstheorie, diente als Vorbild für die Entwicklung der genetischen Algorithmen. Bekanntlich sind die Informationen über Struktur und Fähigkeiten eines biologischen Individuums in den Chromosomen codiert. Diese bestehen aus Desoxyribonukleinsäure (DNA). Die Moleküle, die in einer Kette zu einem Chromosom aufgereiht sind, entsprechen in der Informatik jeweils einem String über einem Alphabet mit vier Zeichen (Adenin(A), Thymin(T), Cytosin (C), Guanin (G)). Die in Erbversuchen erfassbaren Erbeinheiten (Blütenfarbe usw.) bezeichnet man als Gene.1865 erforschte Johann Gregor Mendel seine Vererbungsgesetze, welche er durch Kreuzungsversuche an Erbsen erhielt und in denen er die Vererbung der durch Gene charakterisierten Eigenschaften beschreibt. Durch weitere Kreuzungsversuche fand T. H. Morgan Vererbungsgesetze, die nur dadurch erklärbar sind, dass bei der Fortpflanzung ein Bruch von zwei homologen Chromosomen erfolgt und die Bruchstellen sich dann über Kreuz verknüpfen. Des weiteren kommt es in der Natur durch Mutation zu Veränderungen von Chromosomteilen. Durch sie entstanden zum Beispiel verschiedene Rassen und Haustiere. 1859 veröffentlichte Charles Darwin seine Selektionstheorie. Darwin beobachtete und konstatierte die folgenden Sachverhalte: - Die Lebewesen erzeugen mehr Nachkommen, als zum Erhalt der Rasse notwendig wäre, aber nicht alle können überleben. - Die Nachkommen eines Elternpaares variieren in ihren Eigenschaften und Fähigkeiten. - Jene Lebewesen, deren Eigenschaften zum Futtererwerb, zur Ausnutzung des Lebensraumes und zur Paarung am günstigsten entwickelt sind, überleben und verdrängen die anderen. Dies führt zu einer Selektion der am besten an ihre Umwelt angepassten Lebewesen. Diese natürliche Auslese führt über Generationen zu einer Umbildung der Arten. Selektion und damit Evolution funktionieren, wenn die folgenden Voraussetzungen gegeben sind. - Es gibt eine Population von Individuen. - Die Individuen einer Population variieren in ihren Eigenschaften. - Die Fähigkeit zum Überleben (Fitness) hängt von diesen Eigenschaften ab. - Die Individuen einer Population besitzen die Fähigkeit der Reproduktion: Obwohl die Evolutionsstrategie die Wirklichkeit auf ein Modell reduziert, ist sie eine leistungsfähige Erklärung der Entstehung der Arten. Bei den evolutionären Algorithmen versucht die Evolution so auf dem Computer zu simulieren, dass theoretische Konstrukte evolutionsanalog entstehen. II.3.2. Die Abgrenzung zum MSV Die wesentliche Erweiterung gegenüber den Selektionsverfahren ist die Einführung einer Population von Individuen, die genetischen Operationen ausgesetzt werden, bevor eine Reproduktion und damit eine Selektion erfolgt. Die damit verbundene Erhöhung der Komplexität des Verfahrens, die sich in Rechenzeit und Programmieraufwand niederschlägt, garantiert eine wesentliche höhere Wahrscheinlichkeit, das globale Optimum der Fitness aufzufinden. In unserem Landschaftsmodell wäre zum Beispiel eine ganze Population von Wanderern unterwegs. 13 Weitere Vorteile bietet die genetische Operation der Rekombination, da im Sinne der Fitness wertvolle Strings möglicherweise Teilstrings enthalten, die einen höheren Fitnesswert begründen. Die Mutationsrate wird bei den „Genetischen Algorithmen“ (GA) im Allgemeinen sehr gering gehalten, da durch sie wertvolle Strings schnell verloren gehen können. Da bei der Reproduktion auch Individuen mit hoher Fitness „vergessen“ werden können, ist es erneut möglich, lokale Maxima zu verlassen. II.3.3. Der Algorithmus Es existieren verschiedene Varianten, die unter den Begriff „Genetische Algorithmen“ fallen. Im Folgenden wird eine Grundform beschrieben, auf die Varianten später eingegangen. Gegeben sei eine Menge M. Die Elemente von M bezeichnen wir als Individuen, Strings oder Chromosomen. Jedes Individuum sei eine Folge der Binärwerte 0 und 1. (z.B. 0101010), also M = {(b1...bs )}| bi ∈ {0,1}. Alle Strings besitzen die Länge s. Die Menge M bezeichnen wir als Suchraum. Eine Fitness-Funktion f ordne jedem Element aus M eine Reelle Zahl zu, also f : M → R Gesucht ist das Individuum, für welches f(r) optimal wird. Sucht man ein Minimum, lässt sich durch die Subtraktion f(x) = - f(x), das Problem in die Suche nach einem Maximum umwandeln. Über Zufallszahlen produzieren wir N Individuen und fassen diese zu einer Menge P zusammen. P heißt Population, genauer: Anfangspopulation. Wir betrachten nun die einfachsten Formen genetischer Operationen, durch die die Individuen einer Population verändert werden. - Mutation: Man wählt über Zufallszahlen ein Individuum der Population aus. Sodann bestimmt man über eine weitere Zufallszahl eine Position (Bit) im Individuum und ändere 1 in 0 bzw. 0 in 1. - Rekombination: Ab einer Position werden zwei Individuen miteinander gekreuzt. Die zu rekombinierenden Individuen werden per Zufall ausgewählt, wobei Individuen mit höherer Fitness bei der Auswahl bevorzugt werden. Individuen mit hoher Fitness sollten überleben und in der neuen Generation vorkommen. Dies bewirkt die Reproduktion. - Reproduktion: Auf Grund der Fitness wird ein Individuum qualifiziert, in die nächste Generation übernommen zu werden, bzw. der neuen Population hinzugefügt zu werden. Das Konzept der GA basiert darauf, dass in einem Iterationsverfahren bei jedem Schritt mindestens eine der genetischen Operationen ausgeführt wird. Dies geschieht nach einem Wahrscheinlichkeitsprinzip, auf welches später noch genauer eingegangen wird. Die neu entstandenen Individuen werden zu einer neuen Population (Generation) zusammengefasst. Da die Reproduktion Individuen mit guter Fitness bevorzugt, verbessern sich die Populationen von Generation zu Generation, sowie die Durchschnittsfitness. Die Grundform des Algorithmus lautet: (1) Wähle eine Anfangspopulation. (2) Ermittle aus der Population durch genetische Operationen neue Individuen. Fasse diese zu einer neuen Population (Generation) zusammen. 14 Wie bereits erwähnt, erfolgt die Auswahl der in Schritt (2) erfolgenden genetischen Operation probabilistisch. Jeder Operation wird eine Wahrscheinlichkeit (Rate) zugeordnet und zwar Rekombination: Wahrscheinlichkeit p(C) (C=Crossover) (Rekombinationrate) Mutation: Wahrscheinlichkeit p(M) (Mutationsrate) Reproduktion: Wahrscheinlichkeit p(R) (Reproduktionsrate) Es ist p(C) + p(M) + p(R) = 1. Die Grundform des Algorithmus kann wie folgt ergänzt werden: (1) Wähle eine Anfangspopulation P mit N Individuen und definiere P’ als die leere Menge. (2) Berechne für alle Individuen von P die Fitness. (3) Führe eine der folgenden Operationen aus: Rekombination (mit Wahrscheinlichkeit p(C)) Mutation ( mit Wahrscheinlichkeit p(M) Reproduktion ( mit Wahrscheinlichkeit p(R) (Es ist p(C) + p(M) + p(R) = 1.) (4) Füge die neuen bzw. ausgewählten Individuen zur neuen Population P’ hinzu. (5) Ist die Zahl der neuen Individuen kleiner als N, fahre fort bei (3), andernfalls bei (6) (6) Die neugewonnenen Individuen bilden eine neue Population P’. Prüfe Abbruchkriterium. falls es nicht erfüllt ist, setze P= P’ und fahre fort bei (2). (Setze P’ = leere Menge) (7) Ermittle das Individuum mit der höchsten Fitness als Lösung. Die Wahl der Raten ist zwar meist anwendungsbezogen, es stellten sich jedoch allgemeine Abbildung 3: Grundstruktur des Algorithmus 15 Erfahrungsregeln (heuristische Regeln) heraus (vgl [Go89]): - Die Populationsgröße liegt meist zwischen 50 und einigen hundert. - Die Rekombinationsrate sollte größer als 0,5 sein (meist 0,6) - Die Mutationsrate sollte klein sein. Dabei empfiehlt sich bei einer Populationsgröße von N : p(M) ≤ 1/N. Die Abbildung 3 zeigt den Rechenverlauf der Grundstruktur des Algorithmus grafisch: Wie man in der Abbildung gut erkennen kann, handelt es sich um einen hochparallelen Algorithmus, so dass eine Implementierung auf Parallelrechnern sinnvoll erscheint. II.3.4. Genetische Operationen In diesem Abschnitt sollen die uns schon bekannten Operationen in ihren Eigenschaften und Varianten erklärt und weitere Operationen eingeführt werden. II.3.4.1. Auswahlverfahren Die an der Fitness orientierten Auswahlverfahren müssen bestimmen, welche Individuen zu verändern sind und sicherstellen, dass prinzipiell alle Individuen, auch die mit niedriger Fitness, gewählt werden können, diese aber nur mit niedriger Wahrscheinlichkeit. Derartige Auswahlverfahren werden im Folgenden erläutert. II.3.4.1.1. Das Roulette-Auswahl-Verfahren Bei der Roulette-Auswahl haben grundsätzlich Individuen mit hoher Fitness eine hohe Auswahlwahrscheinlichkeit. Die Methode orientiert sich dabei an der Zahlenermittlung beim Roulettespiel. Es sei n die Zahl der Individuen in einer Population und 1 ≤ j ≤ N eine Zahl j. Zudem sei f(j) = f(x(j)), die Fitness des Individuums Nr. j in der Population. Dann definieren wir die totale Fitness durch k F (k ) = ∑ f ( j ) j =i Offenbar ist F(k) abhängig von k, wobei k eine natürliche Zahl zwischen 1 und N ist. Man produziere eine Zufallszahl z zwischen 1 und F(N) (Summe aller Fitnesswerte der Population). Sodann wähle man das Individuum p mit der Bedingung F(p-1) ≤ z < F(p). Das Individuum p gilt dann als ausgewählt. Abbildung 4 zeigt eine grafische Veranschaulichung des Verfahrens. Die Flächen der Sektoren entsprechen den Fitness-Werten der Individuen (1,2,3,4). Eine auf der Kreisperipherie rotierende Kugel fällt in einen Sektor mit der Nummer j und hat damit Individuum j ausgewählt. 16 Abbildung 4: Roulette-Auswahl-Verfahren II.3.4.1.2 Auswahl durch Zufallszahlen Bei diesem Verfahren ermittelt man über gleichverteilte Zufallszahlen zwei Individuen und wähle das Individuum aus, welches die höhere Fitness besitzt. Das Verfahren tendiert wiederum zu besseren Fitness-Werten, wobei auch Individuen die auf die Gesamtpopulation gesehen schlechtere Fitness-Werte haben, ausgewählt werden können Da zu Beginn einer Iteration nicht alle Fitness-Werte berechnet werden müssen, sondern nur die der gewählten zwei Individuen, bringt das Verfahren bei großen Populationen eine deutliche Rechenzeitersparnis. II.3.4.1.3 Lineares Ranking i −1 )/ N N −1 eine Wahrscheinlichkeitsdichte in der Form der Abbildung 5. Für Max + Min = 2 ist pi = ( Max − ( Max − Min) ⋅ (i=1,2,… N) Abbildung 5: lineares Ranking k Ist F (k ) = ∑ pi (i ) die Verteilungsfunktion, so stellt die folgende Vorschrift eine i =1 fitnessorientierte Auswahl dar: 17 (1) Sortiere die Individuen der Population nach Fitness-Werten in absteigender Folge. (2) Wähle eine Zufallszahl 0 ≤ z ≤ 1 und ermittle die Zahl j, für die F(j-1) ≤ z < F(j). (3) das Individuum Nr. j gilt als ausgewählt. Dieses Verfahren bevorzugt ebenfalls Individuen mit hoher Fitness. II.3.4.1.4. Die (N,µ)-Selektion Bei diesem Verfahren werden grundsätzlich nur die µ besten Individuen aus der Population mit dem Umfang N zur Auswahl zugelassen. Aus den µ besten Strings wird mit der Wahrscheinlichkeit p = 1 / µ ein String ausgesucht. Die Realisierung des Verfahrens sieht wie folgt aus. (1) Sortiere die Individuen der Population nach Fitness-Werten in absteigender Folge. (2) Suche eine Zufallszahl z zwischen 1 und µ. (3) Das Individuum Nr. z gilt als ausgewählt. Im Vergleich zu den vorigen Selektionsverfahren haben hier Individuen mit niedriger Fitness keine Überlebenschance. Man spricht von hohem Selektionsdruck. Dies hat eine frühe Konvergenz des Verfahrens zur Folge und bringt das Problem mit sich, dass man sich schnell auf ein lokales Maximum, was nicht global sein muss, festlegt. II.3.4.2. Rekombination Im Folgenden werden verschiedene Varianten der Rekombination vorgestellt. II.3.4.2.1. Ein-Punkt-Rekombination Über eines der vorgestellten Auswahlverfahren werden zwei Individuen als Elternpaar ausgewählt. Nun wird eine natürliche Zufallszahl z, die kleiner oder gleich der Dimension der Vektoren ist, gewählt und die Koordinaten ab dieser Nr. z bis zum Vektorende vertauscht. Die neuen Vektoren heißen Nachkommen (off-springs). Beispiel. z = 4 Eltern 011011 Nachkommen 011100 100100 100011 II.3.4.2.2. Zwei-Punkt-Rekombination Statt einer werden zwei Zufallszahl x und y bestimmt und eine Überkreuzung zwischen x und y durchgeführt. Beispiel. x = 3, y = 4 Eltern 011011 Nachkommen 010111 100100 101000 II.3.4.2.3.Gleichmäßige Rekombination (Uniform Crossover) Bei dieser Rekombination wird über Zufallszahlen ein Hilfsvektor (Template) produziert. 18 Die Eltern vertauschen die über einem Element des Hilfsvektors stehende Spalte genau dann, wenn der Template-Vektor eine 0 besitzt ([Sy89]). Beispiel: Eltern 1: 0110011010100 Eltern 2: 1011100010110 Template. 1001011001110 Nachkommen 1: Nachkommen 2: 0010111010100 1111000010110 II.3.4.2.4. Intermediäre Rekombination Diese Art der Rekombination ist nur für Chromosomen geeignet, deren Elemente reelle Zahlen sind. Die Nachkommen werden dabei genau aus dem Mittel der Eltern gebildet. Beispiel: Eltern 1: -2,2 5,0 2,5 Eltern 2: 2,2 10,0 7,5 Nachkommen: 0,0 7,5 5,0 II.3.4.2.5. PMX-Rekombination Dieses Verfahren benutzt man für Anwendungen, bei denen die Elemente (Gene) nicht mehrfach vorkommen dürfen, wie zum Beispiel beim schon erwähnten TSP- Problem. Wenden wir auf die folgenden zwei Routen eine Zwei-Punkt-Rekombination (mit x = 4, y = 6) an, so stellen wir fest, dass in ihren Nachkommen Städte mehrfach auftauchen. Eltern 142 376 958 Nachkommen 142 619 958 375 619 248 375 376 248 Um diesen Nachteil zu reorganisieren, vertauscht man in jedem der beiden Strings die Zahlen, die bei der Rekombination bereits vertauscht wurden, also 6↔3, 1↔7, 9↔6, wenn die Zahlen außerhalb der Markierung stehen und insgesamt doppelt vorkommen. Nachkommen 742 619 358 915 376 248 Man setzt also jeden, sich aus der Zwei-Punkt-Rekombination ergebenden, Tausch als allgemeine Tauschregel für die Stellen außerhalb des Rekombinationsteil ein. Diese Art der Rekombination bezeichnet man als PMX-Crossover (Partially matched Crossover). II.3.4.3. Mutation Man ermittle zwei Zufallszahlen i und 1 ≤ i ≤ N und 1 ≤ j ≤ p bei einer Population aus N Individuen mit p Bits. Man ermittle und verändere das Bit Nr. j im Individuum Nr. i. Wie bereits erwähnt, ist die Mutationsrate sehr klein, da durch Mutationen schnell sinnvolle Informationen verloren gehen könnten. Dennoch ist sie zum Verlassen lokaler Extrema unverzichtbar. II.3.4.4. Inversion Dieser Operator heißt Inversion, weil er die Reihenfolge der Bits umkehrt. 19 Es werden über Zufallszahlen zwei Zahlen k < n ausgewählt und in einem beliebigen Chromosom alle Elemente zwischen k und n umgekehrt. II.3.5. Diploidie und Dominanz Im Laufe der Evolution setzte sich bei den meisten Pflanzen, praktisch allen Tieren, sowie beim Menschen ein doppelter Chromosomensatz (Diploidie) durch. Diese führt möglicherweise zu mehr Konsistenz und Stabilität im Erhalt der Populationen. Sind die Eigenschaften doppelt ausgelegt, kann nur eine der beiden phänomenologisch in Erscheinung treten. Diese nennt man „dominant“ und jene, die nur im Hintergrund bleiben, sich also nicht durchsetzen, bezeichnet man als „rezessiv“. Um diese Vorgabe der Natur algorithmisch umzusetzen, wird jedes Individuum einer Population durch zwei Strings (Chromosomen) charakterisiert. Weiterhin wird festgelegt, welche Bits als dominant und welche als rezessiv zu betrachten sind. Dabei kann man zum Beispiel einen String als dominant und den anderen als rezessiv erklären. Bei der Rekombination erfolgt dann von Zeit zu Zeit der Informationsaustausch. In anderen Arbeiten wurde für jedes Bit einzeln festgelegt, welches der beiden Bits dominant sein soll. II.3.6 Konvergenzsätze J. H. Holland, der Vater der genetischen Algorithmen, formuliert einige Konvergenzsätze. Diese und einige notwendige Definitionen sollen im Folgenden nur aufgezeigt und nicht genauer erläutert werden. - Allgemeine Konvergenzsätze: Satz 1: Voraussetzung : Behauptung: Erklärung: Folgerung: p = Population mit n Elementen. N = Teilmenge von P. f(N) = mittlere Fitness aller Elemente aus N. f(P) = mittlere Fitness aller Elemente aus P1. Die Wahrscheinlichkeit, dass ein Element aus N in der nächsten Generation enthalten ist (überlebt), ist bei der Roulette-Auswahl P = f(N) / f(P) Mengen von Individuen mit hoher Fitness haben gute Chancen, sich in der nächsten Generation wieder zu finden. Das zeigt die Auswahl der besseren Individuen beim Generationswechsel. Negativ ist aber anzumerken, dass sich dieser Satz lediglich auf die Rouletteselektion bezieht und weder Mutation noch Rekombination berücksichtigt. Als Folgerung daraus ergibt sich zum einen, dass die Wahrscheinlichkeit der Anzahl der Elemente von N in der nächsten Generation f (N ) n' = ⋅n f ( P) ist und zum anderen, dass die Zahl der Elemente mit hoher Fitness im Laufe der Generationsbildung steigt. 20 Satz 2: Die Wahrscheinlichkeit, dass das globale Maximum der Fitness erreicht wird, hat im Grenzwert für g → ∞ den Wert 1 (g = Zahl der Generationen). Dieser Satz hat aber lediglich theoretische Bedeutung, weil - Konvergenzsätze für Schemata: Definition 1: (1) Ein Schema ist eine Folge, bestehend aus den Gliedern 0, 1 oder * (* sind Platzhalter für 0 und 1 um Individuenmengen ausdrücken zu können) (2) Ein Element eines Schemas entsteht, wenn man jedes * durch 0 oder 1 ersetzt. (3) O(H) ist die Zahl der Einsen und Nullen eines Schemas H und heißt „Ordnung des Schemas H“. (4) δ(H) ist die Differenz zwischen der Position des letzten Gliedes, welches 0 oder 1 ist, und der Position des ersten Gliedes dieser Art und heißt „Länge des Schemas“. Definition 2: (1) Es sei n(P) die Zahl der Individuen einer Population P und f(i) die Fitness des Elementes Nr. i in der Population P. (2) f ( P) := ∑ f (i) / n( P) heißt „mittlere Fitness der Population i∈P (3) Es sei n(H) die Zahl der Individuen eines Schemas. (4) f ( H ) := ∑ f (i ) / n( H ) heißt „mittlere Fitness des Schemas H“. i∈H Satz 3: Es sei n(H,t) die Zahl der Individuen des Schemas H zur Generation t. Dann gilt, falls nur probabilistische Reproduktionen (Roulette-Auswahl) erfolgen: n( H , t + 1) = n( H , t ) ⋅ f ( H ) / f ( P ) Hier wird der Blick auf das Vererbungspotential eines Schemas gerichtet. Es ergibt sich, dass die mittlere Fitness f(H) über Vermehrung oder Aussterben eines Schemas entscheidet. Erklärung: Ist nämlich f(H) größer als die mittlere Fitness f(P) der Population, vermehren sich die Elemente von H, andernfalls sterben sie ab. Selbst wenn sich nur ein Element eines Schemas in einer Population befindet und dieses eine überdurchschnittliche Fitness besitzt, wird es sich vermehren. Die Anteile des übergeordneten Schemas wachsen. Allerdings liegt hier die idealisierte Annahme zugrunde, dass nur Reproduktion, nicht aber Mutation und Rekombination erfolgen. Satz 4: Es sei n(H,t) die Zahl der Individuen des Schemas H zur Generation t. Zudem sei: f(H) : mittlere Fitness des Schemas H f(P) : mittlere Fitness der Population P δ(H) : Länge des Schemas s : Länge der Populationsindividuen p(R) : Rekombinationsrate Es erfolgen nur Reproduktionen und Rekombinationen. Dann gilt: n( H , t + 1) ≥ n( H , t ) ⋅ f ( H ) / f ( P ) ⋅ (1 − p ( R ) ⋅ δ ( H ) /( s − 1)) (Die Zahlen n(H,t) sind als Erwartungswerte zu verstehen.) 21 Erklärung: Dieser Satz beschreibt die Vergrößerung eines Schemas. Voraussetzung dafür ist, dass die mittlere Fitness des Schemas größer ist als die mittlere Fitness der Population. Dies ist notwendig, nicht hinreichend. Daher gehen noch p(R) und δ(H) ein. Satz 5: Es sei n(H,t) die Zahl der Individuen des Schemas H zur Generation t. Zudem sei: f(H) : mittlere Fitness des Schemas H f(P) : mittlere Fitness der Population P δ(H) : Länge des Schemas O(H) : Ordnung des Schemas s : Länge der Populationsindividuen p(R) : Rekombinationsrate p(M) : Mutationsrate Dann gilt : n( H , t + 1) ≥ n ( H , t ) ⋅ f ( H ) / f ( P ) ⋅ (1 − p ( R ) ⋅ δ ( H ) /( s − 1) − p ( M ) ⋅ o( H )) (Die Zahlen n(H,t) sind als Erwartungswerte zu verstehen.) Erklärung: Satz 5 berücksichtigt die genetischen Operatoren Mutation, Rekombination und Reproduktion (Roulette). Ein Schema H vergrößert sich in einer Population, wenn folgende Vorausetzungen erfüllt sind: - f(H) > f(P) - δ(H) klein - O(H) klein Folgerung: Schemata mit hoher Fitness pflanzen sich daher mit überproportionaler Geschwindigkeit fort und bilden somit eine Art Rasse, die sich besonders schnell vermehrt. II.3.7. Hybride Verfahren Genetische Algorithmen haben den Nachteil, dass keine Garantie der Konvergenz existiert. Die Populationen bewegen sich zwar auf fitnessinteressante Gebiete des Suchraums zu, müssen dabei allerdings nicht die relevanten Extrema auffinden. Deshalb bezeichnet man genetische Algorithmen als „weiche“ Verfahren. Andererseits existieren viele Anwendungen konventioneller Iterationsverfahren, für die man ihre Konvergenz für günstige Startwerte nachweisen kann. Der Nachteil hierbei liegt darin, dass die Startwerte nicht zu weit von der zu findenden Lösung entfernt sein dürfen. Dies führt uns zu der Idee, beide Verfahren miteinander zu verbinden. Man könnte zum Beispiel über einige Generationen eines genetischen Algorithmus einen guten Startwert für ein Iterationsverfahren sichern oder die Verfahren abwechselnd auf ein Problem anwenden. Iterationsverfahren sind im Allgemeinen konstruktiv, indem logische einsehbare Konstrukte algorithmisch eine Verbesserung der Individuen herbeiführen. Es gibt Anwendungen, bei denen dieser konstruktive Anteil als Operator definiert und codiert werden kann. Er wird dann als Operator in einem genetischen Algorithmus eingesetzt. So kann man zum Beispiel für das TSP zusätzlich zu den genetischen einen konstruktiven Operator definieren, der von einer Stadt ausgehend die Nachbarstadt auswählt, deren Entfernung am kürzesten ist ([GG85]). Es hat sich herausgestellt, dass man mit diesem Verfahren bei bestimmten Anwendungen erstaunliche Rechenzeitersparnisse gewinnt. Sie sind oftmals besser als ihre reinen Ausgangsverfahren und scheinen die Konvergenz zu sichern. 22 II.4 Evolutionsstrategien Die Evolutionsstrategie (ES) ist ein weiteres Beispiel für ein Optimierungsverfahren, welches sich an den Prinzipien der biologischen Evolution orientiert. Die genetischen Operationen und die Kreierung neuer Generationen sind im Prinzip ähnlich der der genetischen Algorithmen, lediglich die algorithmische Implementierung unterscheidet sich. Trotz der Ähnlichkeiten war die Entwicklung der Evolutionsstrategien ein eigenständiges Forschungsprojekt. Sie wurden bereits zu Beginn der siebziger Jahre an der TU Berlin von Ingo Rechenberg und später Hans Paul angedacht und später von diesem weiterentwickelt ([Rec73],[Sch81]). Erst 1990 kam es zu Kontakten zwischen den GA-Forschern der USA und ES-Forschern aus Deutschland. Im nun Folgenden genügt es, nur die von den genetischen Algorithmen prinzipiell abweichenden Eigenschaften zu erklären. II.4.1 Das Verfahren Die Basisbegriffe sind die gleichen wie bei den GA: Population, Fitness-Funktion, Mutation, Rekombination, Selektion, usw. Bei den genetischen Operationen ist die Mutation nicht mehr nur Hintergrund-, sondern Hauptoperator. -Population: Eine Population besteht aus N Individuen, wobei jedes Individuum ein reellwertiger Vektor ist. Die Anfangspopulation wird über reelwertige Zufallszahlen gewonnen, die Restriktionen genügen. Es werden zusätzlich zu den Systemparametern noch Strategieparameter eingesetzt, deren Bedeutung noch erklärt wird. - Mutationen: Es werden alle Vektorkoordinaten gleichzeitig verändert, indem normalverteilte Zufallsgrößen aus N(0, δ ) (Erwartungswert 0, Varianz δ ²) addiert werden. Ist xi eine Vektorkoordinate, erfolgt die Mutationsänderung durch : xi neu = xialt + δ i neu ⋅ zi wobei zi eine normalverteilte Zufallszahl aus N(0,1) und δ i die Standardabweichung für die i-te Koordinate ist. Die Werte δ i werden dabei aus der Vorschrift δ ineu = δ ialt ⋅ exp(τ 0 + z0 ) ⋅ exp(τ 1 + z1 ) = δ i ⋅ exp( N ,τ 0 )) + exp( N (0,τ 1 )) gewonnen, wobei zo und z1 normalverteilte Zufallszahlen aus N(0,1) sind und man die Faktoren τo, τ1 als Anpassungsfaktoren bezeichnen könnte . Für diese Faktoren setze man: τ 0 = α 0 / (2 ⋅ N ) (Anpassung des Individuums) τ 1 = α1 / 2 ⋅ N (Anpassung pro Koordinate) (N = Populationsgröße, α0, α1 Konstanten, N , α 0 , α1 ∈ ℜ ) Wie wir sehen, muss die Standardabweichung ∂i bei jedem Mutationsschritt nicht nur neu berechnet, sondern auch für zukünftige Mutationen gespeichert werden. Dies rea- 23 lisiert man, indem man für jedes Individuum an den Vektor x noch den Vektor ∂ anhängt. Ein Vektor der Population hat also die Dimension 2N und die Struktur: x1 x2 … xN ∂1 ∂2 … ∂N . Die X-Koordinaten nennt man Objektvariablen und die ∂-Koordinaten Strategievariablen. Das Mitführen der Strategievariablen hat sich als effizienzsteigernd herausgestellt ([SBK93]), eine konkrete Begründung dafür fehlt allerdings. - Rekombination Obwohl die Mutation der Hauptoperator ist, ist die Rekombination für die Selbstadaption der Strategieparameter unverzichtbar. Man unterscheidet zwischen intermediärer und diskreter Rekombination. Die intermediäre Rekombination produziert Nachkommen durch Mittlung der Komponenten von zufällig ausgewählten Eltern (empfohlen für Strategieparameter). Bei der diskreten Rekombination werden die Vektorkomponenten zufällig von den Eltern übernommen (empfohlen für Objektvariablen). - Selektion Evolutionsstrategien selektieren nicht wie die GA über von Fitness abhängige Überlebenswahrscheinlichkeiten, sondern über ein einfaches deterministisches Konzept, die µbesten Nachkommen überleben. Dazu existieren zwei Selektionsansätze: (µ,Γ)-Konzept: µ Eltern produzieren Γ Nachkommen, von denen µ überleben. (µ+Γ)-Konzept: µ Eltern produzieren Γ Nachkommen. Von den µ+Γ Individuen überleben die µ besten. H. P. Schwefen empfiehlt hierzu ein Verhältnis µ/Γ = 1/7. II.4.2 Mehrfache Zielsetzung (Vektor-Optimierung) Die obige Evolutionsstrategie wurde von H. P. Schwefel und seinen Mitarbeitern auf mehrere Zielfunktionen erweitert. Am Vorbild der Natur wird ein diploider Chromosomensatz mitgeführt mit dominanter und rezessiver Erbinformation. Abbildung 6: diploider Chromosomensatz 24 Die Abbildung zeigt, dass jedes Individuum der Population durch zwei Vektoren (Chromosomen) charakterisiert wird. Die Vektoren bestehen wie gehabt aus Objekt- und Strategieparametern. Der Vektor (x1,∂1) heißt dominant und der Vektor (x2,∂2) rezessiv. Die Fitness des Individuums ergibt sich aus der Berechnung der Fitness der einzelnen Vektoren f(x1) und f(x2) wie folgt: F ( x1 ) = α ⋅ f ( x1 ) ⋅ (1 − α ) ⋅ f ( x2 ) Damit die dominante Eigenschaft durchsetzungsfähiger ist, ist α > ½. Die Operationen der so strukturierten Individuen sind wie folgt definiert: - Mutation: Wie bei der ES, für die rezessiven Vektoren wird zusätzlich mutiert - Rekombination: Wie bei der ES, die rezessiven Vektoren werden zusätzlich rekombiniert. Mit der Wahrscheinlichkeit p = 0,33 werden rezessive und dominante Eigenschaften vertauscht. - Selektion: Der Vektor der Zielfunktion sei gegeben durch die Vektorkomponente Fj (x1), wobei x1 der Vektor der dominanten Information ist. Über Wahrscheinlichkeitsvektoren wird ermittelt, welche Komponente zur Selektion herangezogen wird. Diese Komponente ergibt dann die Fitness des Individuums im aktuellen Iterationsschritt. Die schlechtesten Individuen werden gelöscht. 25 II. 5. Neuronale Netze Neuronale Netze ermöglichen die Darstellung unscharfer nichtlinearer Zuordnungen, welche mit herkömmlichen Programmiersprachen und Algorithmen nur schwer oder gar nicht beschreibbar sind. Dieses verfahren orientiert sich an der Vorlage des Gehirns und dessen Fähigkeit Abbildungen zu lernen. Im Abschnitt 5.1 wird die grobe Funktionsweise vorwärts gerichteter einstufiger Netze erklärt. II.5.1. Vorwärts gerichtete einstufige Netze II.5.1.1. Das Neuron Wenn wir Neuronale Netze mit der Arbeitsweise des Gehirns vergleichen, sollten wir uns zunächst einige Grunddetails der Gehirnfunktionen ansehen. Das Gehirn ist ein gigantisches Parallelverarbeitungssystem, in dem die Prozessoren Nervenzellen sind. Diese Zellen, die Neuronen, kumulieren Spannungen, die von anderen Neuronen elektrochemisch an sie weitergeleitet werden und geben, falls die kumulierte Spannung einen Schwellenwert übersteigt, selber Spannung an nachgeschaltete Neuronen ab. Die folgende Abbildung beschreibt die Funktion eines Neurons durch ein mathematisches Modell. Abbildung 7: Funktion eines Neuron Die Eingabespannungen e1, e2. e3 werden durch Zahlen charakterisiert und mit den Gewichten w1, w2, w3 multipliziert, bevor sie das Neuron erreichen. Dies entspricht dem Hemmen oder Verstärken durch die Synapsen. Ist die gewichtete Summe aller Eingangswerte größer als ein Schwellwert Θ, so wird der Output a vom Wert 0 auf 1 gesetzt. II.5.1.2. Einstufige neuronale Netze Formalisiert man das mathematische Modell, dann ist x = ∑ wj ּ ej – Θ der Wert für die gewichtete Summe aller Eingangswerte und F(x) = 0 falls x ≤ Θ und 1 falls x > Θ die Transferfunktion. Der Output a ist definiert durch: a = f(∑ wj ּ ej – Θ). So können wir zum Beispiel mit a = f ( −3 ⋅ 1 + 2 ⋅ e1 + 2 ⋅ e2 ) die Und-Funktion der Bool’schen Algebra darstellen: Eingabe: e1 e2 Ausgabe: a 0 0 0 1 0 0 0 1 0 1 1 1 26 Betrachtet man Netzstrukturen mit mehren Ausgabemöglichkeiten, verallgemeinert sich die Formel für die Ausgabewerte zu: a j = F (∑ w jk ⋅ ek − v) . k II.5.1.3. Lernen durch Optimieren Wir stellen uns die Frage, wie man ein Netz findet, welches eine bestimmte Mustererkennung durchführen kann. Dabei ist die Netztopologie durch die Dimension von Ein- und Ausgabevektoren vorgegeben. Lediglich die Gewichtung und der Schwellwert Θ sind unbekannt. Besitzt das Netz n unbekannte Größen dieser Art, lassen sich diese zu einem n-dimensionalen Vektor in einem n-dimensionalen Raum zusammenfassen. Gesucht ist der Vektor des Raumes, für den das Netz korrekt arbeitet, für den also der Fehler ф = ∑ (ai – zi )² den Wert 0 hat. ai sind hierbei die aktuellen Ausgabewerte und zi die gewünschten Zielwerte. Damit haben wir eine typische Optimierungsaufgabe: Suche Gewichte und den Schwellwert Θ so, dass der globale Fehler ф ein Minimum (Null) annimmt. Aufgrund der Komplexität der Gleichungen kommen nur iterative Optimierungsverfahren in Frage. Zur Lösung nutzt man Varianten des Gradientenverfahrens: Dazu bilde man folgende Abbildung: so dass gilt: δφ = Γ(i, j ) und setzt ∆ ф ≈ δф, ∆ w ≈ wij , δwij ∆φ = Γ(i, j ) ⋅ ∆wij Wählt man nun in einem Iterationsschritt: wijneu = wijalt + ∆wij ∆wij = −Γ(i, j ) die Gewichtskorrektur ∆ wij = - Γ(i,j) dann ist ∆ φ = − Γ (i , j ) 2 π 0 woraus folgt, dass ф kleiner wird und sich dem Minimum nähert. 27 III. Beispielprogramm Programmbeschreibung „Visuale Auslastung“ III.1. Sinn und Zweck des Programms Sinn und Zweck des Programms ist es, für ein erdachtes Optimierungsproblem einen evolutionären Algorithmus zu entwickeln und über dessen Visualisierung in einem Java-Applet seine Arbeitweise zu veranschaulichen. III.2. Das Optimierungsproblem In diesem Programm wird ein evolutionärer Algorithmus auf ein betriebswirtschaftliches Problem angewandt. Das simulierte Grundproblem ist folgendes: Eine Maschine läuft zwischen einer und 24 Stunden am Tag. Sie kann zwischen einem und acht verschiedenen Produkten herstellen. Dazu wird festgelegt, welche Menge von diesem Produkt von der Maschine in einer Stunde hergestellt werden kann. Die Produktion kann nun an verschiedene Bedingungen geknüpft werden. Es kann für jedes Produkt festgelegt werden, welche Mindestmenge pro Tag erforderlich ist. Die Aufgabe des Programms ist es, eine optimale Produktverteilung zu finden. Optimal heißt hier, eine möglichst große Gesamtproduktion zu erzielen. III.3. Womit ist es geschrieben? Das Programm ist als Java Applet implementiert wurden. Es basiert auf der Java 2 SDK, SE v 1.4.2_04 Plattform. Zu den vordefinierten Standarderweiterungen java.lang, java.applet, java.util, java.awt wurde die Standarderweiterung javax.swing sehr häufig hinzugezogen. Ein null Layout wurde verwendet, dazu wurde das Pakets com.borland.jbcl.layout zusätzlich importiert. Zum Editieren des Hauptalgorithmus wurde NetBeans IDE 3.6 verwendet. Zum späteren Editieren der Visualisierung und des Designs gab die Trail Version von JBuilder X mehr Möglichkeiten. III.4. Umsetzung als evolutionärer Algorithmus Zur Realisierung der Aufgabe wurden einige in der Ausarbeitung der Grundlagen verdeutlichte Prinzipien der genetischen Algorithmen verwendet. Zunächst musste das gestellte Optimierungsproblem in die genetischen Grundbegriffe übersetzt werden, um auf diese später genetische Operationen anwenden zu können: Sei eine Tagesproduktverteilung ein Individuum, welches durch ein Array, dessen Länge der Produktanzahl entspricht, in seiner Struktur und seinen „Fähigkeiten“ eindeutig beschrieben ist. Jedes Element dieses Arrays steht für ein Chromosom des Individuums. Das n’te Chromosom trägt die Information der Herstellungsdauer des n’ten Produktes. Hierbei ist zu beachten, dass es unmöglich ist, dass die Summen aller Chromosomen, und somit die Herstellungsdauer aller Produkte, die festgelegte Tagesarbeitszeit der Maschine überschreitet. 28 Um eine spätere Selektierung zu ermöglichen, ist es notwendig, für jedes Individuum eine chromosomabhängige Nutzenfunktion (Fitness) zu definieren, welche besseren Individuen eine größere Überlebenswahrscheinlichkeit sichert. Über die Multiplikation der Chromosomen mit der entsprechenden Produktion pro Stunde ist eine solche über die Gesamtproduktion leicht festgelegt. Um die Durchsetzung der Restriktionen zu sichern, wird jeder Verstoß mit einer deutlichen Minderung der Fitness bestraft. Dies erfolgt über eine bedingte Subtraktion. Man ist nun in der Lage, Populationen von Individuen zu erzeugen und verschiedene genetische Operationen anzuwenden, also das eigentliche Optimierungsverfahren zu starten. Aus fünf zufällig erzeugten Individuen oben beschriebener Art erzeugen wir eine erste Population. Mit Hilfe der Zwei - Punkt - Rekombination auf das erste und zweite Individuum, erschaffen wir ein sechstes und siebentes Individuum dieser Population. Ein durch zufällige Mutation erzeugtes achtes und neuntes Individuum vergrößern die Population. Aus den neun Individuen der Population werden unter Verwendung einer (9,5) – Selektion die fünf besten Individuen, das heißt diejenigen mit den höchsten Fitnesswerten, als neue Anfangspopulation ausgewählt und die vier schlechtesten (schwächsten) verworfen. Die fünf Ausgewählten setzen sich in ihrer Umbebung durch, während die anderen vier beim gewählten Selektionsverfahren, aufgrund der niedrigen Fitnesswerte, keine Überlebenschance haben. Die Ausgangssituation ist jetzt erneut gegeben und das Verfahren wird auf die neue Eingabe analog angewandt. Damit dieses Verfahren terminiert, ist eine Abbruchbedingung notwendig. Verbessert sich die Fitness des stärksten Individuums der aktuellen Population über 100 Verfahrenschritte nicht mehr, so ist diese erfüllt. Man kann davon ausgehen, ein zumindest lokales Maximum erreicht zu haben und das Verfahren wird beendet. 29 III.5. Bedienung: Im nun Folgenden wird die Bedienung des Applets anhand eines fortlaufenden Beispiels erklärt: Das Applet startet mit einem Eingabefenster (Abb.8), in welchem alle oben genannten Eingabeparameter über Schieberegler genau einzustellen sind. Das Programm verhindert dabei Einstellungen für Produkte, die die eingestellte Produktanzahl überschreitet. Abbildung 8:Applet - Eingabefenster Ist die Eingabe auf die Wünsche des Nutzers eingestellt, gelangt man über den OK-Button zur eigentlichen Visualisierung des Algorithmus (Abb.9). Abbildung 9: Applet – Visualisierung1 30 Im oberen Abschnitt werden zunächst die gegebenen Größen erneut dargestellt, im mittleren Teil zwei Kreisdiagramme, welche die prozentuale Stundenverteilung verdeutlichen sollen, angedeutet und im unteren Teil ein, schon auf Produktanzahl und Maximalstunden (weiße Rechtecke) angepasstes, Balkendiagramm platziert. Der Nutzer hat nun die Möglichkeit das Führungsindividuum der Ausgangpopulation festzulegen. Als Führungsindividuum wird das Individuum einer Population bezeichnet, welches die höchste Fitness besitzt. Mit dem Button „mutieren“ erzeugt er dazu ein, mit Hilfe eines Zufallsgenerators entstehendes, Individuum und mit dem Button „gleichverteilen“ eine höchst mögliche Gleichverteilung der Arbeitzeit auf die verschiedenen Produkte (Abb.10). Abbildung 10: links „mutieren“ , rechts „gleichverteilen“ Mit dem Erzeugen eines ersten Individuums wird dieses unmittelbar visualisiert. Das linke Kreisdiagramm für „vorher“ (1) wird gezeichnet, eine „Gesamtproduktion Vorher“ (2) ausgegeben und die entsprechenden schwarzen Balken in das Balkendiagramm (3) eingetragen. Wird die Möglichkeit der Voreinstellung des ersten Individuums nicht genutzt, so erzeugt das Programm dieses beim ersten Start-Drücken unter Verwendung eines Zufallsgenerators selbst. Abbildung 11: Programmablauf 1 31 Am unteren Appletrand wird der Nutzer aufgefordert eine Schrittweite zu wählen, das heißt wie viele Evolutionsschritte das Programm intern verarbeiten soll, bis es das, sich bis zu diesem Schritt durchgesetzte, Führungsindividuum visualisiert und eine erneute Wahl der Schrittweite möglich ist. Mit Betätigung des Start- Buttons wird die eingestellte Schrittweite umgesetzt. Abbildung 11 zeigt das Erklärungsbeispiel nach dem ersten Evolutionsschritt. In der aktuellen Version ist der Evolutionsschritt links neben der Choice-Box zur Schrittweiteneinstellung als Generation ergänzt wurden. Wichtig ist der Button zwischen den Kreisdiagrammen. Dieser Zähler wird inkrementiert, wenn die Fitness des Führungsindividuums der aktuellen Population gleich der im vorangegangenen Evolutionsschritt ist. Ist sie größer, so wird der Zähler auf Null gesetzt. Diese zwei Bedingungen sind ausreichend, da das Verfahren die Existenz eines im Vergleich zum vergangenen Evolutionsschritt schwächeren Führungsindividuums nicht zulässt. Dieser Zähler sichert das oben angesprochene Abbruchkriterium. Die folgenden Abbildungen, zusammengefasst als Abbildung 12, zeigen Ausschnitte des Beispielprogrammverlaufes bis hin zum Finden der, für die Eingabe, optimalen Lösung. Eine stetige Verbesserung der Führungsindividuen ist zu sehen. Während der Algorithmus anfangs, hier bis in Abbildung 12.3, schnell stärkere Führungsindividuen findet, zeigt Abbildung 12.4, das die Führungsindividuen mit besseren Fitnesswerten länger überleben. So setzt sich das Führungsindividuum mit dem Gesamtproduktionsmaximum von 1310 Einheiten, bereits über 31 Evolutionsschritte durch. 12.1 12.2 12.3 12.4 32 12.5 12.6 12.7 Abbildung 12: Programmablauf 2-8 Die im nächsten Evolutionsschritt erreichten 1340 Einheiten (Abb. 12.5) halten sich über 100 Schritte (Zwischenschritt Abb. 12.6) und bilden damit ein Endergebnis. Diese Lösung stellt w, in diesem Fall ein globales Maximum, dar. Für die Produkte 2,4 und 5, mit niedriger Produktion, werden lediglich soviel Produkte hergestellt werden, dass die Mindestproduktansprüche, mit dazu minimal notwendigem Produktionsaufwand, gesichert sind. Die restlichen Arbeitstunden werden dem Produkt 1 (hier auch Produkt 3 möglich) zu Verfügung gestellt. III.6. Verbesserungen Im Vergleich zu den anderen Selektionsverfahren haben bei der gewählten (9,5) – Selektion Individuen mit niedriger Fitness keine Überlebenschance. Man spricht von hohem Selektionsdruck. Dies hat eine frühe Konvergenz des Verfahrens zur Folge und bringt das Problem mit sich, dass man sich schnell auf ein lokales Maximum, was nicht global sein muss, festlegt. Die Wahl eines komplizierteren Verfahrens, welches einen geringeren Selektionsdruck ausübt, hätte einen zu großen Zeitaufwand zur Folge und würde die Anschaulichkeit der Arbeitweise des Algorithmus, auf die das Augenmerk lag, kaum verbessern. Eine wichtige Optimierung wäre es, wenn das Programm bei groß gewählter Schrittweite jeden einzelnen Schritt mit einer geringen Zeitverzögerung visualisieren würde. Das Programm sollte also, wenn die Schrittweite zehn ausgewählt ist, beim Drücken des Start-Button die zehn Einzelschritte im Verlauf anzeigen und nach dem zehnten dann anhalten. 33 In denen für die Schrittweite stehenden For-Schleifen, wird in jedem Schritt die Methode aufgerufen, die die Visualisierung veranlasst und letztlich im letzten For-Schritt auch funktioniert. Java hat scheinbar die Eigenschaft, trotz klaren repaint-Befehlen in jedem Schritt, Schleifenergebnisse fertig zu berechen, und dann nur das Endergebnis auszugeben. Außerdem, erscheint ohne für mich ersichtlichen Grund der zuletzt gedrückte Button unter der Choice-Box zur Schrittweiteneinstellung, wenn man diese benutzt hat. Schicken sie bitte Erklärungen und Begründungen an folgende E-Mail Adresse [email protected]. 34 IV. Zusammenfassung und Ausblick Zusammenfassend ist zu sagen, dass die Abschnitt II vorgestellten Grundlagen als einfache Wissenssammlung zu sehen ist. Sie stellt eine ausführliche Einleitung zur Thematik der Evolutionären Algorithmen dar und erklärt, unter Verwendung der wesentlichen Definitionen, was man unter ihnen versteht und wie man sie anwendet. Des Weiteren werden Verfahren verglichen und von klassischen Optimierungsverfahren abgegrenzt. Die hierzu notwendigen Informationen stammen vorwiegend aus dem Buch „Optimierung mit genetischen und selektiven Algorithmen“ von W. Kinnebrock [Ki94]. Im Verlauf der Internetrecherche (zusammengefasst in Gliederungspunkt B) taucht das Thema der EA vor allem als Vorlesung der Bioinformatik auf. In dieser Fachrichtung sind die EA andauernder Bestandteil von Forschung und Lehre. Unter der Kategorie allgemeine Informationen findet man dazu einige Skripte oder Folien verschiedener Hochschulen. Unter den speziellen Informationen befinden sich zusätzlich einige Verweise auf Arbeiten zu Teilgebieten der EA. In den theoretischen Ausarbeitungen wurden zwar etliche Einsatzgebiete angesprochen, es war aber schwierig, genauere Ausführungen zu finden. Dennoch wird unter speziellen Anwendungen auf einige Diplomarbeiten verwiesen. Auf der Internetseite http://www.aic.nrl.navy.mil/galist/ (The Genetic Algorithms Archive) findet man eine Vielzahl von Beispielprogrammen, die mit dem in dieser Arbeit vergleichbar sind. Für den Hauptbestandteil der Arbeit, die Implementierung eines Java-Applet, wurde ein Optimierungsproblem gewählt, zu welcher im Internet keine vergleichbare Anwendung zu finden sind. Bei der Auswahl eines mit einem EA umzusetzenden Problems bestand das Hauptproblem darin, die Eingabeparameter in Individuen umzuformen und eine von ihnen abhängige Fitnessfunktion festzulegen. Sind die Individuen und die Fitnessfunktion definiert, kann man die verschiedenen Verfahren problemlos anwenden. Bei der Implementierung kostete die Visualisierung der Arbeitsweise am meisten Zeit und etwa das zehnfach an Quellcodeumfang des eigentlichen EA. Obwohl die Komplexität das Programm noch ausgebaut werden müsste, um eine praktisch (betriebswirtschaftliche) Anwendung zu ermöglichen, erfüllt es den gewünschten Zweck. Es wird gezeigt, dass EA auf ein sehr breites Spektrum von Optimierungsproblemen anwendbar sind. Die gedachte Aufgabe kann gelöst werden. Es ist deutlich zu erkennen, dass mit jedem Arbeitsschritt des EA die Lösung näher an ein Extrema gebracht wird. Das in der Theorie Erdachte wird sichtbar gemacht. Da für die nahe Zukunft nicht zu erwarten ist, dass sich die mögliche Rechenleistung expotenziell erhöht, werden NP-vollständige Probleme praktisch nicht berechenbar bleiben. Die EA bieten einen Ansatz, sich mit Hilfe von relativ einfachen Verfahren (Quellcode bei der Implementierung) den Lösungen solcher Probleme zu nähern oder sie sogar zu lösen. Mit der Komplexität der Optimierungen wächst allerdings auch die Konvergenzdauer der EAn. Das heißt, dass der benötigte Zeitaufwand, zum Finden einen Extremums, die Algorithmen, mit den heute zu Verfügung stehenden Mittel unbrauchbar macht. Aus diesem Grund ist es notwendig die Verfahren, in Bezug auf das unbedingte und schnelle Finden des globalen Extremum, zu verbessern und Techniken zu entwickelt, welche die Rechenarbeit auf mehrere Computer verteilen und somit die Parallelisierbarkeit der EA nutzen. Da ein EA dennoch eine von wenigen Möglichkeiten darstellt ein NP-vollständiges Problem praktisch zu bearbeiten und da die Notwendigkeit zur Optimierung in vielen Lebensbereichen offensichtlich ist, sollten sie als Optimierungsverfahren in Betracht gezogen und verbessert werden. 35 A Glossar Abbruchkriterium: Bedingungen, unter denen der Evolutionsprozess im EA terminiert Chromosom: Satz der Gene eines Individuums Evolution: (lateinisch evolvere: entwickeln)Mit Evolution ist hier speziell die Entwicklungsgeschichte der Natur gemeint. Evolutionärer Algorithmus (EA): Sammelbegriff für alle Varianten von (probabilistischen) Optimierungs- und Verbesserungsalgorithmen, die der Darwinschen Evolution nachempfunden sind Evolutionsstrategie(ES): Variante der EA, die i.d.R. in der natürlichen Problemrepräsentation evolviert (keine Genotyp-Phänotyp-Abbildung für Objektparameter). Fitness: Bewertung des Individuums bzgl. seiner Reproduktionstauglichkeit. Selektion im EA erfolgt auf der Basis der Fitness, welche über die Fitnessfunktion bestimmt wird. Fitnessfunktion: auch Güte-, Qualitäts- oder Zielfunktion, zu optimierende Funktion, die von den Objektparametern (auch Suchraumparameter, phänotypische Parameter) abhängt. Sie stellt die Implementierung des zu lösenden Problems dar. Generation: (natürliche) Zeiteinheit im EA, eine Iteration des EA, vollständiger Zyklus, der die Bildung und Evaluierung (Fitnessbestimmung) eines oder mehrerer neuer Individuen umfasst. Genetische Programmierung (GP): Variante der EA, die mit Genomen variabler Länge arbeitet und zum Evolvieren symbolischer Informationen dient. Genetischer Algorithmus (GA): Variante der EA, der i.d.R. in Analogie zum biologischen DNA-Alphabet auf Zeichenketten, insbesondere Bitketten konstanter Länge, operiert Genotyp: bei EA mit Genotyp-Phänotyp Abbildung; die Repräsentation, auf der die Rekombinations- und Mutationsoperatoren arbeiten. Individuum: Träger der genetischen Information (Chromosom); wird charakterisiert durch seinen Zustand im Suchraum und seine Fitness (Zielfunktion) Mutation: Variationsoperator, der die Information eines elterlichen Genoms gemäß einer vorgegebenen Wahrscheinlichkeitsverteilung zufällig abändert NP-vollständiges Problem: ist ein Problem, für dessen Lösung kein Algorithmus existiert, dessen Laufzeit bei Eingabe eines Strings S der Länge n durch ein Polynom p(n) in n beschränkt ist. Phänotyp: Ausprägung der Eigenschaften, die durch den Genotyp des Individuums codiert sind. Population: Gruppe von Individuen mit gleichartiger oder ähnlicher Genomstruktur, die die Anwendung von genetischen Operatoren erlaubt Rekombination: Variationsoperator, der die genetische Information zweier oder mehrerer Elternindividuen mischt und ein oder mehrere Individuen, die sogenannten Rekombinanten, produziert. Reproduktion: Auf Grund einer hohen Fitness wird ein Individuum qualifiziert, in die nächste Generation übernommen, bzw. der neuen Population hinzugefügt zu werden. Selektion: notwendiger Operator im EA, der abhängig von der Fitness, bzw. der aktuellen Zielfunktionswerte, über die Reproduktion der Individuen entscheidet. Travelling Salesman Problem: (dt. Problem des Handlungsreisenden) Es modelliert die Frage, wie man möglichst schnell oder billig mehrere Orte hintereinander besuchen kann und wieder zum Ausgangsort zurückkehrt. 36 B Wichtige Internetadressen Allgemeine Informationen: http://www.icm-mannheim.org/vorlesungen/Bioinformatik/web/folien.shtml Vorlesung Bioinformatik: Evolutionäre Algorithmen http://www-li5.ti.uni-mannheim.de/~hesser/EA/Ws0203/EAScript1.pdf Vorlesung Evolutionäre Algorithmen http://ls11-www.cs.uni-dortmund.de/people/beyer/EA-terminologie/term.html Evolutionäre Algorithmen: Begriffe und Definitionen http://www.iid.de/bioinfo/bioinfo5.html Bioinformatik: Problemlösungen für die Wissensgesellschaft http://alphard.ethz.ch/hafner/Vorles/Optim/EvolutionsStrategien_ES_.htm Evolutions-Strategien http://www.fh-meschede.de/public/willms/ea/erfahr.html Evolutionäre Algorithmen: Chancen für die praxisorientierte Optimierung http://www.el-tec.de/lecture/040512block2.pdf Evolutionäre Technologie http://www.kibitz.de/ibp/evo.htm Evolutionäre Algorithmen - Biologisches Vorbild für technische und betriebswirtschaftliche Optimierungsprobleme Spezielle Informationen: http://lrb.cs.uni-dortmund.de/~hildebra/GACI1-gr.html künstliche neurale Netze http://ls2-www.cs.uni-dortmund.de/~storch/documents/DiplomArbeit.pdf Rekombination bei konstanter Populationsgröße http://eldorado.unidortmund.de:8080/FB4/sfb531/reiheCI38;internal&action=buildframes.action Evolutionäre Algorithmen: Optimierung in der Simulation http://www.hrz.uni-dortmund.de/computerPostille/Dezember1994/parallel.htm Parallele Evolutionäre Algorithmen http://www.et.fh-muenster.de/research/reports/fbr95/tb_ga2.htm Implementation Genetischer Algorithmen auf einem transputerbasierten Parallelrechner Spezielle Anwendungen: http://www.aic.nrl.navy.mil/galist/ ( für diese Arbeit wichtigste Adresse) The Genetic Algorithms Archive http://www.tu-chemnitz.de/etit/ema/forschung/pdf/Lauer_00.pdf Evolutionäre Algorithmen zur Optimierung von Antriebsregelungen http://www-ra.informatik.uni-tuebingen.de/mitarb/streiche/welcome.html Dynamische Algorithmen, Evolutionäre Algorithmen im Asset-Managment-bereich http://www.pelops.de/pdf/2002/evolutionaere_algorithmen_in_der_fahrzeugentwicklung .pdf Evolutionäre Algorithmen in der Fahrzeugentwicklung 37 C EA TSP MSV DNA GA GP PMX ES Abkürzungen und Akronyme Evolutionäre Algorithmen Travelling Salesman Problem Mutations-Selektions-Verfahren Desoxyribonukleinsäure Genetischer Algorithmus Genetische Programmierung Partial Matched Crossover Evolutionsstrategie 38 Literatur [DSW93] G. Dueck, T. Scheuer, H.M. Wallmeier: ToleranzSchwelle und Sintflut: neue Ideen zur Optimierung. Spektrum der Wissenschaft, März 1993. [GGR+85] Grefenstette, Gopal, Rosmaita, Van Gucht: Genetic algorithms for the travelling salesman problem. Proc. of the International Conference on Genetics a. Appl. 1995. [Go89] D.E. Goldberg: Genetic Algorithms in Search, Optimization, and Machine Learning, New York, Sidney: Addison Wesley, 1989. [Ho82] J.J. Hopfield: Neural networks and physical systems with emergent collective computational abilities. Proc. of the Nat. Academy of Sciences 79, Washington, 1982. [Ki92] W. Kinnebrock: Neuronale Netze. München, Wien: Oldenbourg Verlag, 1992. [Ki94] W. Kinnebrock: Optimierung mit genetischen und selektiven Algorithmen, München, Wien: Oldenbourg Verlag, 1994. [Rec73] I. Rechenberg: Evolutionsstrategie: Optimierung technischer Systeme nach Prinzipien der biologischen Evolution. Stuttgart, Frommann Holzboog Verlag, 1973. [SBK93] H.P. Schwefel, T. Bäck, F. Kursawe: Naturanaloge Verfahren. Grundlagen und praktischer Einsatz in der Optimierung. Tutorium Universität Dortmund, 1993. [Sch81] H.P. Schwefel: Numerical Optimization of Computer Models. Chinchester: Wiley, 1981. [Sy89] G. Syswerda: Uniform crossover in genetic algorithms. In: Proc. of the third International Conf. on Genetic Algorithms. Morgan Kaufmann Publishers, 1989. 39 Index Abbruchkriterium Anfangspopulation Auswahl durch Zufallszahlen Auswahlverfahren Beispielprogramm biologisches Vorbild Chromosomen Diploidie und Dominanz Ein-Punkt-Rekombination Erwartungswert Evolutionäre Algorithmen Evolutionsbiologie Evolutionsstrategie Evolutionstheorie Extremwertberechnung Fitness Gene Genotyp Generation Genetische Algorithmen Genetische Operationen Gewichtung Gleichmäßige Rekombination Gradientenmethode Heuristische Regeln Hilfsvektor (Template) Hybride Verfahren Individuum Intermediäre Rekombination Iterationsverfahren Inversion Klassische Optimierungsverfahren Konvergenzsätze Lineares Ranking Mutation Mutation- Selektions- Verfahren Mutationsrate Nebenbedingungen Neuronale Netze Optimierung Permutation Phänotyp PMX-Crossover PMX-Rekombination Population Rekombination Reproduktion 9 14 17 16 28 13 9 20 18 23 2, 28 5 23 13 7 7, 10, 11, 13, 14, 15, 16, 17, 18, 20, 21,22, 28 19 24 14 13, 28 16 26 18 7 16 18 21 13 19 14 19 7 20 17 9, 10, 13, 14, 15, 19, 21, 23, 25, 29 9, 10,13 14,16, 22 8,10 26 6, 8 10 24 19 19 13, 21, 23 14, 15, 16, 18, 20, 21, 22, 24, 25, 29 13, 14, 15, 21, 22 40 Roulette-Auswahl-Verfahren Schwellwert Selektion Selektionsdruck Simulated Annealing Simplexmethode Sintflut-Methode Standardabweichung Suchmethode Synapsen Threshold Accepting Toleranzschwelle Travelling Salesman Problem (TSP) Überlebenschance Varianz Wahrscheinlichkeitsdicht Zufallsgröße Zwei-Punkt-Rekombination (N,µ)-Selektion 16, 21 26 13, 18, 19, 24, 25, 29 18 11 7 12 23 7 26 12 12 10 11, 28 23 17 23 18 18 41