4.5 Genetische Algorithmen
4.5 Genetische Algorithmen
4.5 Genetische Algorithmen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
126 Kapitel 4: Non-Standard-Optimierung<br />
Willkürlich legen wir fest:<br />
– Akzeptanz schlechterer Werte am Anfang der Iteration: ½ ½¼ ¿ ,<br />
– Akzeptanz schlechterer Werte am Ende der Iteration: ¼¼.<br />
Daraus errechnet man einen Wert von Ì ÑÜ ½¼¼¼¼ und von Ì ÑÒ ¼.<br />
Folgerung für Abkühlrate Ö (in Prozent):<br />
Da Ì ÑÒ von Ì ÑÜ aus in Æ ÑÜ Schritten exponentiell erreicht werden muss, ergibt<br />
sich aus<br />
Ì ÑÒ Ì ÑÜ<br />
Ö<br />
½¼¼<br />
Æ ÑÜ<br />
für die Rate Ö ¾±für Æ ÑÜ ½¼¼ und Ö ±für Æ ÑÜ ¾¼¼.<br />
(126.1)<br />
Im Beispiel kann also die Parametrierung auf Grund der Struktur der Zielfunktion<br />
in einem gewissen Rahmen problemangepasst durchgeführt werden. Eine allgemeine<br />
Vorgehensweise oder gar eine Parametrierungstheorie gibt es nicht.<br />
4.4.3 Übungen<br />
Übung 27 (Lösung Seite 181 )<br />
Bestimmen Sie mit Hilfe einer geeigneten MATLAB-Implementierung des Simulated<br />
Annealing Algorithmus eine Lösung der Minimierungsaufgabe<br />
unter den nichtlinearen Nebenbedingungen<br />
ÑÒ ´Ü ½Ü ¾ Ü ¿ µÜ ¾ ½ · Ü ¾ · Ü ¿ (126.2)<br />
Ü ½Ü ¾Ü ¿¾Ê<br />
½´Ü ½ Ü ¾ Ü ¿ µÜ ¾ ½ · ܾ ¾ ½¼<br />
¾´Ü ½ Ü ¾ Ü ¿ µÜ½ ·Ü ¾ · Ü ¿ ¼ (126.3)<br />
<strong>4.5</strong> <strong>Genetische</strong> <strong>Algorithmen</strong><br />
<strong>Genetische</strong> <strong>Algorithmen</strong> formalisieren den Prozess der natürlichen Evolution für<br />
die Anwendung auf mathematische Optimierungsaufgaben.<br />
Diese Klasse von <strong>Algorithmen</strong> gehört zu den so genannten Evolutionsstrategien.<br />
Das Prinzip dieser Heuristiken besteht darin, die natürliche Evolution als<br />
Optimierungsverfahren aufzufassen, bei dem eine Population von Individuen an<br />
Umweltbedingungen optimal angepasst wird.
<strong>4.5</strong> <strong>Genetische</strong> <strong>Algorithmen</strong> 127<br />
Die formalisierte Version, also das mathematische Verfahren, ahmt die verschiedenen<br />
Mechanismen der Evolution in Form von Operatoren auf Werten des zulässigen<br />
Suchraums (der Population) nach.<br />
Die Anpassung von Generation zu Generation (d.h. Iteration zu Iteration) erfolgt<br />
durch Änderung der Erbinformation, eine mathematische Codierung der Eigenschaften<br />
der Werte des Suchraums. Die Anpassung der Erbinformation erfolgt<br />
stochastisch durch Nachahmung des Selektionsprozesses, durch zufällige Vermischung<br />
der Information („Kreuzung“) und zufällige Änderung der Information<br />
(„Mutation“).<br />
Wie an dieser kurzen Einleitung schon zu erkennen ist, werden bei dieser <strong>Algorithmen</strong>klasse<br />
Begriffe aus der biologischen Evolution mit Begriffen aus der mathematischen<br />
Optimierung identifiziert.<br />
Die folgende Tabelle stellt zum besseren Verständnis der in den folgenden Abschnitten<br />
darzustellenden Theorie eine Auswahl dieser Begriffe gegenüber:<br />
Biologischer Begriff<br />
Population<br />
Individuum<br />
Fitness<br />
(Anpassung an die Umwelt)<br />
Mathematischer Begriff<br />
Gruppe von Elementen des zulässigen<br />
Suchraums <br />
Element des zulässigen Suchraums<br />
<br />
Wert der Zielfunktion (oder einer<br />
äquivalenten Funktion, der<br />
„Fitnessfunktion“)<br />
Umweltbedingungen Suchraumgrenzen, Restriktionen,<br />
Fitnessfunktion<br />
Erbinformation<br />
(Chromosom, Gen)<br />
Generation<br />
Selektion<br />
Codierung der Suchraumelemente<br />
(Binärcode, reelle Zahl,<br />
Vektor)<br />
Nummer der Iteration<br />
Auswahl von Suchraumelementen<br />
in jedem Iterationsschritt gemäß<br />
dem Wert der Fitnessfunktion<br />
(Zielfunktion)<br />
Fortsetzung auf der nächsten Seite
128 Kapitel 4: Non-Standard-Optimierung<br />
Biologischer Begriff<br />
Kreuzung<br />
Mathematischer Begriff<br />
stochastische Vermischung der<br />
Codierungsinformation der Elemente<br />
(Individuen) einer Wertegruppe<br />
(Population),<br />
Kreuzungsoperator<br />
Mutation stochastische Änderung der<br />
Codierungsinformation der<br />
Elemente (Individuen) einer<br />
Wertegruppe (Population),<br />
Mutationsoperator<br />
Anpassung Wert der Zielfunktion, Optimumsuche<br />
Bevor wir die Details des <strong>Genetische</strong>n Algorithmus beschreiben, sollen zunächst<br />
noch einmal die wesentlichen Grundzüge der Theorie der biologischen Evolution<br />
in Erinnerung gerufen werden.<br />
<strong>4.5</strong>.1 Mechanismen der natürlichen Evolution<br />
In den Abbildungen 4.11 bis 4.16 sind schematisch an Hand von Symbolen, die Individuen<br />
einer Population mit unterschiedlichen Eigenschaften repräsentieren sollen,<br />
die grundsätzlichen Vorgänge der natürlichen Evolution dargestellt.<br />
Wir gehen zunächst von einer Population von Individuen mit unterschiedlichen<br />
Merkmalen, hier symbolisiert durch geometrische Formen und Farben, aus (Abbildung<br />
4.11). Diese Individuen leben in einer gewissen Umwelt und sind den<br />
dadurch gegebenen Lebensbedingungen ausgesetzt. Die Lebensbedingungen erzeugen<br />
einen sogenannten Selektionsdruck, d.h. einige Individuen überleben die<br />
Umweltbedingungen nicht und sterben oder sind nicht fortpflanzungsfähig, andere<br />
Individuen sind gut angepasst und verbreiten ihre Erbanlagen (Abbildung 4.12).<br />
Dabei werden verschiedene Erbanlagen und damit Eigenschaften im Vermehrungsprozess<br />
durch Kreuzung mit Eigenschaften anderer (mehr oder weniger zufällig<br />
ausgewählter) Individuen verändert (Abbildung 4.13). Einig wenige Individuen<br />
erhalten dabei zufällig, etwa durch radioaktive Einstrahlung oder andere<br />
Umwelteinflüsse oder sporadisch auftretende Erbgutveränderungen neue Eigenschaften.<br />
Dieser (seltene) Prozess der zufälligen Änderung wird Mutation genannt<br />
(Abbildung 4.14).
<strong>4.5</strong> <strong>Genetische</strong> <strong>Algorithmen</strong> 129<br />
Abbildung 4.11: Population mit<br />
unterschiedlichen Merkmalen<br />
Abbildung 4.12: Selektionsdruck<br />
Abbildung 4.13: Kreuzung<br />
Abbildung 4.14: Mutation<br />
Abbildung 4.15: Erneuter Selektionsdruck<br />
Abbildung 4.16: (besser?) Angepasste<br />
Population<br />
Die neue Population findet sich dann wieder dem Selektionsdruck ausgesetzt (Abbildung<br />
4.15) und so fort. Oft erhält man durch diesen Prozess besser angepasste<br />
Populationen von Individuen (Abbildung 4.16).<br />
Zusammenfassend kann man also sagen, dass es sich bei der natürlichen Evolution<br />
um eine (iteratives) Optimierungsverfahren handelt, welches von drei zufallsbehafteten<br />
Basismechanismen angetrieben wird, nämlich Selektion, Kreuzung
130 Kapitel 4: Non-Standard-Optimierung<br />
und Mutation und immerwährend fortschreitet. Diese Basismechanismen werden<br />
in der mathematischen Formalisierung des Evolutionsprozesses zu so genannten<br />
stochastischen Operatoren und machen den Kern der <strong>Genetische</strong>n <strong>Algorithmen</strong><br />
aus.<br />
Der <strong>Genetische</strong> Code<br />
Für die Umsetzung dieser Mechanismen in einen brauchbaren mathematischen Algorithmus<br />
fehlt jedoch noch ein wichtiger Baustein, nämlich die Codierung des<br />
Problems. Es muss die Frage beantwortet werden, wie ein Optimierungsproblem<br />
in eine Form gebracht werden kann, die es erlaubt, genetische Operatoren hierauf<br />
anzuwenden.<br />
Es erscheint klug, zunächst einmal wieder nach der Lösung zu fragen, die die Natur<br />
für dieses Problem gefunden hat.<br />
Die Information über die Eigenschaften eines Individuums und somit die Fähigkeit,<br />
sich an seine Lebensbedingungen anzupassen, sind im genetischen Code festgehalten<br />
(Abbildung 4.17 bis 4.19).<br />
Abbildung 4.17:<br />
Chromosomaufbau<br />
Abbildung 4.19: Aminosäuren<br />
Gene¹ Aminosäuren ¹ Triplets ¹ 4-Basen-<br />
Alphabet<br />
Abbildung 4.18: Codon<br />
Die Natur bedient sich hierbei zur Informationscodierung eines Alphabets, bestehend<br />
aus den Basen Uracil, Cytosin, Adenin und Guanin, die j eweils in Dreierkombinationen,<br />
sogenannten Triplets zusammengefasst eine Aminosäure erzeugen.<br />
Diese wiederum formen Sequenzen auf der RNA („Wörter“) resp. der DNA.<br />
Zusammengefaltete DNA-Ketten wiederum respräsentieren die Gene und Chromosomen,<br />
die die komplexen Eigenschaften des Individuums festlegen. Wir kön-
<strong>4.5</strong> <strong>Genetische</strong> <strong>Algorithmen</strong> 131<br />
nen also im weitesten Sinne von einer Informationscodierung auf der Grundlage<br />
eines -buchstabigen Alphabets sprechen.<br />
<strong>4.5</strong>.2 Mathematische Formalisierung<br />
Diese Tatsache wird nun folgendermaßen für eine Formalisierung herangezogen.<br />
Codierung<br />
Statt eines -buchstabigen Alphabets wird ein binäres Alphabet verwendet. Auch<br />
bezüglich der Gene wird eine Vereinfachung durchgeführt. Triplets und Gene werden<br />
mit dem Zeichenumfang des binären Alphabets identifiziert. Ein „Gen“ im Sinne<br />
des <strong>Genetische</strong>n Algorithmus entspricht also der kleinsten Informationseinheit.<br />
Mit Hilfe der Gene wird die genetische Information in Binären Strings codiert. Die<br />
Binären Strings ersetzen die komplexeren natürlichen Chromosomen ebenso wie<br />
die sie tragenden Individuen, so dass im letzten Vereinfachungsschritt die Binären<br />
Strings als Individuen angesehen werden.<br />
Chromosom Gene U C A G<br />
À À<br />
¨<br />
¨<br />
À<br />
À<br />
¨<br />
¨<br />
À<br />
À ¨¨<br />
Triplets<br />
Vereinfachung<br />
Vereinfachung<br />
Vereinfachung<br />
<br />
©<br />
<br />
Binäre Strings Gene:¼ ½ <br />
Binäres Alphabet<br />
Der evolutionäre Optimierungsprozess wird somit folgendermaßen zu einer mathematischen<br />
Optimierungsaufgabe: die Zielfunktion, welche die Angepasstheit<br />
des Individuums an seine Umgebung repräsentiert und im Folgenden als emphD-<br />
Fitnessfunktion bezeichnet wird, muss auf Binärstrings 2 definiert werden (reelle<br />
Zahlen können zum Beispiel diskretisiert und über einen Binärcode des Index dargestellt<br />
werden). Der Suchraum muss entsprechend codiert werden. Wir betrachten<br />
also<br />
Í ¼ ½ Ò Ê (Fitnessfunktion). (131.1)<br />
2 Es gibt noch andere Codierungsmöglichkeiten, auf die im Rahmen dieses Skriptes nicht eingegangen<br />
werden soll. Insofern „müssen“ die Codierungen nicht unbedingt binär sein.
132 Kapitel 4: Non-Standard-Optimierung<br />
Gesucht ist dann<br />
Ü ¼ ¾ Í mit ´Ü ¼ µ ÑÜ<br />
ܾÍ<br />
gegebenenfalls unter Einhaltung von Nebenbedingungen.<br />
´Üµ (maximale „Fitness“) (132.1)<br />
Basismechanismen<br />
Der evolutionäre Optimierungsprozess wird dabei durch drei zufallsbehaftete<br />
Basismechanismen angetrieben:<br />
Selektion<br />
Kreuzung<br />
Mutation<br />
Diese Basismechanismen werden in der mathematischen Formalisierung des Evolutionsprozesses<br />
zu <strong>Genetische</strong>n <strong>Algorithmen</strong> zu stochastischen Operatoren.<br />
Stochastischer Operator<br />
(z.B. Roulette-Rad)<br />
Population<br />
¼ ½ ¼ ¼ ¼<br />
¼ ½ ¼ ¼ ½<br />
½ ½ ¼ ¼ ¼<br />
½ ½ ¼ ½ ½<br />
„Mating-Pool“<br />
½ ½ ¼ ½ ½<br />
½ ½ ¼ ½ ½<br />
½ ½ ¼ ¼ ¼<br />
¼ ½ ¼ ¼ ¼<br />
Abbildung 4.20: Fitnessproportionale Selektion<br />
Die stochastischen Operatoren Selektion, Kreuzung und Mutation werden mit Hilfe<br />
des Binärcodes in Anlehnung an die natürlichen Mechanismen realisiert.<br />
Die Selektion etwa kann entsprechend der Fitness (Wert der Zielfunktion) der Individuen<br />
erfolgen. Im Beispiel aus Abbildung 4.20 wird hierfür ein Roulette-Rad
<strong>4.5</strong> <strong>Genetische</strong> <strong>Algorithmen</strong> 133<br />
verwendet. In jedem Selektionschritt (der ebenfalls mit einer gewissen vorgegebenen<br />
Wahrscheinlichkeit vorgenommen werden kann) wird ein Individuum durch<br />
drehen des Rouletterades ausgewählt. Da Individuen mit hoher Fitness auf dem<br />
Rad einen proportional größeren Raum einnehmen, haben diese eine höhere Wahrscheinlichkeit<br />
ausgewählt zu werden und landen, ggf. mehrfach reproduziert, in<br />
einem Heirats-Pool (Mating-Pool).<br />
Die Individuen des Mating-Pools haben (wiederum mit einer gewissen Wahrscheinlichkeit)<br />
das Recht, sich zu kreuzen und ihre Gene auszutauschen. Dies kann<br />
bei binärer Codierung so erfolgen, dass die Binärstrings zweier Individuen an einer<br />
Stelle aufgeschnitten und vertauscht werden.<br />
„Mating-Pool“<br />
½ ½ ¼ ½ ½<br />
½ ½ ¼ ½ ½<br />
½ ½ ¼ ¼ ¼<br />
¼ ½ ¼ ¼ ¼<br />
Stochastischer Operator<br />
Kreuzung<br />
(mit Wahrscheinlichkeit Ô )<br />
½ ½ ¼ ½ ½<br />
½ ½ ¼ ½ ½<br />
½ ½ ¼ ¼ ¼<br />
¼ ½ ¼ ¼ ¼<br />
Population<br />
nach Kreuzung<br />
½ ½ ¼ ½ ½<br />
½ ½ ¼ ½ ½<br />
½ ½ ¼ ¼ ¼<br />
¼ ½ ¼ ¼ ¼<br />
Zum Abschluss wird die Mutation simuliert. Hierzu kann man mit einer gewissen,<br />
i.A. sehr kleinen Wahrscheinlichkeit die Bits der Binärstrings kippen.<br />
Stochastischer Operator<br />
Mutation<br />
(mit i.A. kleiner Wahrscheinlichkeit)<br />
½ ½ ¼ ½ ½<br />
½ ½ 0½ ½ ½<br />
½ ½ ¼ ¼ ¼<br />
0½ ½ ¼ ¼ ¼<br />
Man erhält, wie wir später sehen werden, durch diesen Prozess eine Population mit<br />
im Schnitt höherer Fitness und ggf. existiert auch ein fitteres Einzelindividuum.<br />
Der beschriebene Prozess wird dann, bis zum Erreichen eines noch zu definierenden<br />
Endekriteriums, in der beschriebenen Abfolge wiederholt.
134 Kapitel 4: Non-Standard-Optimierung<br />
Der <strong>Genetische</strong> Algorithmus<br />
Die generelle Struktur des <strong>Genetische</strong>n Algorithmus lässt sich nun wie folgt zusammenfassen:<br />
(a) Initialisiere<br />
Iterationszähler ¼,<br />
Startpopulation Ü ½ Ü Ò.<br />
(b) Stopp, falls Endekriterium erreicht ist (z.B. ÑÜ ), sonst weiter mit<br />
Schritt (c).<br />
(c) Bestimme die „Fitness“ (Zielfunktionswert) der Individuen der Population.<br />
Wähle mit dem Selektionsoperator (ggf. mehrfach) Individuen<br />
Ý Ò<br />
·½ für die Aufnahme in den „Mating-Pool“ aus.<br />
Ý ·½<br />
½<br />
(d) Erzeuge mit dem Kreuzungsoperator neue Individuen Þ ·½<br />
½<br />
Þ Ò ·½ .<br />
(e) Erzeuge mit dem Mutationsoperator daraus eine neue Population<br />
Ü ·½<br />
Ü ·½<br />
½<br />
Ò .<br />
(f) Fahre bei (b) fort.<br />
Der <strong>Genetische</strong> Algorithmus hat ähnliche Stärken und Schwächen wir der Simulated<br />
Annealing Algorithmus. Auch er ist durch den stochastischen Ansatz prinzipiell<br />
in der Lage aus suboptimalen Gebieten herauszufinden und selbst für sehr<br />
schwierige Zielfunktionen globale Optima oder Suboptima ähnlicher Qualität zu<br />
finden.<br />
Dagegen steht auch beim <strong>Genetische</strong>n Algorithmus die generelle Schwierigkeit der<br />
Parametrierung. Fragen, die zu beantworten sind, sind u.A.<br />
Wahl der Populationsgröße?<br />
Wahl der Anzahl der Iterationen (des Endekriteriums)?<br />
Wahl des Selektionsverfahrens?<br />
Wahl der Kreuzungswahrscheinlichkeit?<br />
Wahl der Mutationswahrscheinlichkeit ?<br />
Generell gibt es, ähnlich wie beim Simulated Annealing Algorithmus, für die Parametrierung<br />
keine geschlossene Theorie!<br />
Die Parameter müssen experimentell ermittelt werden oder man verlässt sich auf<br />
die durch zahlreiche Fallstudien ermittelten und in der Literatur veröffentlichten
<strong>4.5</strong> <strong>Genetische</strong> <strong>Algorithmen</strong> 135<br />
Erfahrungswerte [5]. So hat sich beispielsweise bei binären <strong>Genetische</strong>n <strong>Algorithmen</strong><br />
für die Wahl der Kreuzungswahrscheinlichkeit der Wert Ô ¼ eingebürgert.<br />
Für die Mutationswahrscheinlichkeit wird ein kleiner Wert zwischen Ô Ñ ¼¼<br />
und Ô Ñ ¼½ bevorzugt, da sich der Algorithmus für deutlich größere Werte wie<br />
ein reiner Monte-Carlo Algorithmus verhält.<br />
Für die Populationsgrößen haben sich ebenfalls kleinere Werte ( ½¼) in der Praxis<br />
als günstig erwiesen. Als Endekriterium gibt man meist eine Maximalzahl an<br />
Iterationen vor, die problemabhängig experimentell ermittelt werden sollte.<br />
Wir wollen die Funktionsweise des <strong>Genetische</strong>n Algorithmus wieder mit Hilfe von<br />
MATLAB an dem einfachen Beispiel 4.14 illustrieren, das wir schon beim Simulated<br />
Annealing Algorithmus betrachtet haben.<br />
4.16 Beispiel (<strong>Genetische</strong>n Algorithmus mit MATLAB)<br />
Maximiere<br />
´Üµ Ü ¾ ×Ҵܵ (135.1)<br />
im Intervall ½¼ ½¼℄.<br />
Zur Lösung dieser Aufgabe verwenden wir folgende MATLAB-Funktionen der Begleitsoftware:<br />
ga.m<br />
GA1D.m<br />
IlluGA1D.m<br />
Aufruf_IlluGA1D.m<br />
testfunktion1.m<br />
Die Datei ga.m entstammt einer inoffiziellen MATLAB-Toolbox für genetische <strong>Algorithmen</strong>,<br />
die an der North Carolina State University [5] entwickelt wurde und über das Internet zu<br />
beziehen ist.<br />
Die Datei GA1D.m implementiert den binären <strong>Genetische</strong>n Algorithmus für eine Funktion<br />
einer Variablen. Mit IlluGA1D.m kann der <strong>Genetische</strong> Algorithmus auf beliebige eindimensionale<br />
Funktionen angewandt werden. Mit dem Script-File Aufruf_IlluGA1D.m wird das<br />
Verfahren für die in testfunktion1.m implementierte Zielfunktion (135.1) angewandt und<br />
der Suchvorgang grafisch animiert.<br />
Die Animation bei Aufruf von<br />
Aufruf_IlluGA1D
136 Kapitel 4: Non-Standard-Optimierung<br />
80<br />
60<br />
(x 2 )*sin(x)<br />
Beispiel zum Verfahren <strong>Genetische</strong>r Algorithmus<br />
63.6288<br />
40<br />
20<br />
f(x)<br />
0<br />
−20<br />
−40<br />
−60<br />
8.0828<br />
−80<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
x<br />
Abbildung 4.21: Abschlussgrafik bei GA-Suche in Beispiel 4.16<br />
zeigt, wie fast der gesamte Suchraum durchforstet wird, bevor der Algorithmus gegen ein<br />
(Sub-)Optimum konvergiert.<br />
Abbildung 4.21 zeigt die Grafik bei Abschluss des Suche, bei der mit vier Individuen und<br />
folgender Parametrierung gearbeitet wurde:<br />
GAparams . maxPop = 100;<br />
% 100 Schritte (Parameter<br />
% für maxGenT)<br />
GAparams . termFN = ’maxGenT ’ ; % Terminierung nach endlich<br />
% vielen Schritten<br />
GAparams . selectFN = ’normGeoS ’ ; % Selektionsfunk. NormGeoSelect<br />
GAparams . selectOps = 0.08; % mit Parameter 0.08<br />
GAparams . xOverFNs = ’simpleX ’ ; % einfaches binäres Crossover<br />
GAparams . xOverOps = 0.6; % mit 0.6 Crossoverwahrscheinl.<br />
GAparams . mutFNs = ’binaryM ’ ; % Binäre Mutation<br />
GAparams . mutOps = 0.1; % mit Mutationswahrschein-<br />
% lichkeit 0.1<br />
startwerte = [ 3,2,4,9]; % Anfangspopulation festlegen<br />
<strong>4.5</strong>.3 Der Fundamentalsatz<br />
Im Beispiel 4.16 wurde gezeigt, dass der <strong>Genetische</strong> Algorithmus zu einer sinnvollen<br />
Lösung führen kann.
<strong>4.5</strong> <strong>Genetische</strong> <strong>Algorithmen</strong> 137<br />
Wir wollen nun etwas näher beleuchten, warum dies so ist und der formalisierte<br />
Mechanismus als Optimierungsverfahren geeignet ist. Es soll im Folgenden versucht<br />
werden, das zentrale Ergebnis, welches (eine partielle) Antwort auf diese<br />
Frage gibt, das so genannte Schema-Theorem, näher zu beleuchten.<br />
Das Schema-Theorem<br />
Der wesentliche Begriff für das Verständnis des Algorithmus ist der des Schemas.<br />
Unter einem Schema versteht man eine Menge von Binärstrings (Individuen), die<br />
durch eine gemeinsame fixierte Bitkombination gekennzeichnet sind. Abbildung<br />
4.22 zeigt ein Beispiel. Am besten kann diese Menge durch einen Hyperwürfel im<br />
Raum der Bitkombinationen gekennzeichnet werden. So entspricht in dem dargestellten<br />
Beispiel das Schema £½¼££einem ¿-dimensionalen Würfel und das Schema<br />
£½¼¼£ einem zweidimensionalen Rechteck im -dimensionalen Suchraum der Individuen.<br />
1 1 0 1 0<br />
1 1 0 1 1<br />
Beispiel:<br />
¼ ½ ¼ ¼ ¼<br />
¼ ½ ¼ ¼ ½<br />
¼ ½ ¼ ½ ¼<br />
1 1 0 0 0<br />
1 1 0 0 1<br />
¼ ½ ¼ ½ ½<br />
½ ½ ¼ ¼ ¼<br />
½ ½ ¼ ¼ ½<br />
0 1 0 0 0 0 1 0 0 1<br />
½ ½ ¼ ½ ¼<br />
½ ½ ¼ ½ ½<br />
Schemata:<br />
0 1 0 0 0 0 1 0 0 1<br />
Abbildung 4.22: Schema als Hyperfläche (-würfel) in ¼ ½℄ Ò<br />
£ ½ ¼ £ £<br />
£ ½ ¼ ¼ £<br />
Die Zusammenfassung der Individuen zu Schemata trägt der Funktionsweise <strong>Genetische</strong>r<br />
<strong>Algorithmen</strong> Rechnung. Die Herleitung der <strong>Algorithmen</strong> zeigt, dass es<br />
keinen Sinn macht, die Entwicklung einzelner Individuen zu verfolgen, sondern<br />
nur der ganzen Population.<br />
Die Population wiederum repräsentiert eine Vielzahl von Schemata, da ein Individuum<br />
einer Vielzahl von Schemata angehört. Im Idealfall stellt die Population<br />
einen Schätzer für die Verteilung der (fitten) Schemata dar. Statt also zu fragen, wie einzelne<br />
Individuen im Laufe der Evolution verändert werden, macht es mehr Sinn,
138 Kapitel 4: Non-Standard-Optimierung<br />
zu fragen, wie die <strong>Genetische</strong>n Operatoren die Schemata verändern bzw. wie ein<br />
Schema im Laufe der „Evolution“ (Iteration) durch die Populationen repräsentiert<br />
wird.<br />
Es soll nun die Wirkung der Operatoren auf ein Schema genauer betrachtet werden.<br />
Wie gezeigt wurde, wird bei der fitnessproportionalen Selektion ein Individuum<br />
mit einer Wahrscheinlichkeit<br />
<br />
Ô <br />
Æ ¡ <br />
(138.1)<br />
ausgewählt. Die Wahrscheinlichkeit, dass ein Individuum eines Schemas À ausgewählt<br />
wird, ergibt sich aus der Summe dieser Wahrscheinlichkeiten<br />
Ô´Àµ <br />
<br />
¾À<br />
½ ¡ ½ Æ<br />
Ô <br />
<br />
¾À<br />
<br />
¾À<br />
<br />
<br />
Æ ¡ <br />
(138.2)<br />
Damit ist die Anzahl der aus einer Population ausgewählten Schema-À-Individuen<br />
Å Å À<br />
Æ ¡ Ô´Àµ ½ <br />
<br />
¾À<br />
(138.3)<br />
Mit der Anzahl Å À der schon vorher zum Schema À gehörenden Individuen ergibt<br />
sich daraus<br />
Å Å ½ <br />
À<br />
<br />
Å À<br />
Å À¡ ½ <br />
¾À<br />
Å À ¡ À<br />
(138.4)<br />
so dass die Zahl ÅÀ Å ´Ò ·½µder aus der Ò-ten Generation in dem Mating-Pool<br />
selektierten Individuen gleich<br />
Å Å À ´Ò · ½µ Å À´Òµ ¡ À<br />
<br />
(138.5)<br />
ist, wobei À die relative Fitness der Schema-À-Individuen innerhalb der Population<br />
bezeichnet.<br />
Der Faktor<br />
À<br />
<br />
(138.6)<br />
repräsentiert somit den auf das Schema ausgewählten Selektionsdruck.
<strong>4.5</strong> <strong>Genetische</strong> <strong>Algorithmen</strong> 139<br />
Ist die relative Fitness innerhalb eines Schemas eine Zeit lang etwa gleichbleibend<br />
hoch und höher als die durchschnittliche Fitness der Population, so wächst der<br />
Anteil der Schema-À-Individuen in diesem Zeitraum exponentiell an (<br />
<br />
À<br />
<br />
<br />
<br />
).<br />
Dies kann, wie später an Hand eines Beispiels erläutert werden wird, experimentell<br />
nachvollzogen werden und ist ein wesentlicher Punkt, denn dieser Effekt bewirkt,<br />
dass es sich bei einem genetischen Algorithmus eben nicht um ein wahlloses Suchverfahren<br />
handelt, sonder in gewissem Sinne um eine zielgerichtete Suche, die noch<br />
dazu mit (anfangs) exponentieller Geschwindigkeit von statten geht.<br />
Dass der Selektionsdruck alleine die Population nicht auf Dauer in einen suboptimalen<br />
Bereich treibt, dafür sorgen die anderen beiden genetischen Operatoren.<br />
Durch die Kreuzung werden, wie folgenden Beispiele zeigen, Schemata i.A. zerstört,<br />
wobei jedoch kurze Schemata offenbar eine bessere „Überlebenschance“ haben,<br />
als längere.<br />
£ ½ ¼ £ £<br />
· · · · ·<br />
£ · · · ·<br />
· ½ ¼ £ £<br />
<br />
£ ½ ¼ · ·<br />
· · · £ £<br />
<br />
£ ½ ¼ £ £<br />
· ½ · · ·<br />
Es können allerdings auch Schema-Individuen neu entstehen, was wiederum dazu<br />
beiträgt, dass weniger erfolgreiche Schemata verlassen und andere Regionen des<br />
Suchraums aufgesucht werden können.<br />
Ähnlich verhält es sich mit der Mutation. Auch hier werden Schemata i.A. zerstört,<br />
wobei jedoch kurze Schemata offenbar eine bessere „Überlebenschance“ haben, als<br />
längere.<br />
£ ½ ¼ £ £<br />
<br />
£ 0 ¼ £ £<br />
Fasst man alle diese Einflüsse auf ein Schema zusammen, so erhält man folgendes<br />
Resultat, das so genannte Schema-Theorem welches die Propagation des relativen<br />
Anteils È À eines Schemas innerhalb der Population im Laufe der Generationen<br />
beschreibt:
140 Kapitel 4: Non-Standard-Optimierung<br />
Schema-Theorem: Ist À ein Schema mit der definierenden Länge Æ´Àµ<br />
und mit der Ordnung Ó´Àµ in einem binär codierten (klassischen) <strong>Genetische</strong>n<br />
Algorithmus mit Kreuzungs-Wahrscheinlichkeit Ô und Mutations-<br />
Wahrscheinlichkeit Ô Ñ . Sei weiter È À ´Òµ der relative Anteil der zum Schema À<br />
gehörenden Individuen in einer Population zum Iterationszeitpunkt Ò. Dann<br />
gilt:<br />
<br />
Ó´ÀµÔ Ñ<br />
È À´Ò ·½µ È À´Òµ ¡ À´Òµ<br />
´Òµ ¡ <br />
½<br />
Ô Æ´Àµ<br />
¡<br />
Æ ½<br />
Zur Illustration dieses Sachverhaltes greifen wir wieder auf das Beispiel 4.16 zurück,<br />
an Hand dessen wir unter MATLAB die Funktionsweise der <strong>Algorithmen</strong><br />
visualisiert haben (Abbildung 4.23 bis 4.26).<br />
Der Suchraum wurde in diesem Beispiel für die Anwendung des <strong>Genetische</strong>n Algorithmus<br />
mit einer Genauigkeit von ca. ½¼ diskretisiert und mit ½-Bit-Strings<br />
binär codiert. Die beiden Streifen über den Graphen der Zielfunktion in Abbildung<br />
4.23 repräsentieren zwei sehr unterschiedliche Schemata, nämlich ein Schema hoher<br />
Fitness in der Nähe des globalen Optimums und ein Schema mit sehr niedriger<br />
Fitness in der Nähe des globalen Minimums.<br />
Die übrigen Grafiken repräsentieren die durchschnittliche Fitness der Population<br />
aus Individuen in einem Lauf und jeweils die (durchschnittliche) Fitness des Schemas<br />
und die (durchschnittliche) Anzahl der Schema-Individuen, welche über mehrere<br />
Läufe gemittelt wurde. Man erkennt deutlich, dass die Fitness der Population<br />
anfangs dramatisch, später leicht ansteigt. Ebenso deutlich erkennt man den exponentiellen<br />
Anstieg der durchschnittlichen Schema-Fitness und der Schema-Anzahl<br />
für das überdurchschnittliche Schema. Das schlechte Schema hingegen ist von Anfang<br />
an so gut wie nicht in der Population vertreten.<br />
Konvergenz <strong>Genetische</strong>r <strong>Algorithmen</strong><br />
Bezüglich der Konvergenz <strong>Genetische</strong>r <strong>Algorithmen</strong> gibt es leider auch wenige<br />
theoretische Resultate. Im Falle des <strong>Genetische</strong>n Algorithmus mit so genannter „elitärer<br />
Strategie“, bei der in jeder Generation auf jeden Fall das beste Individuum in<br />
der Population verbleibt, lässt sich jedoch folgendes theoretische Resultat beweisen:<br />
Konvergenzsatz: Ist Ü £ das globale Maximum einer Optimierungsaufgabe<br />
ÑÜ ´Üµ<br />
Ü<br />
und Ü Ò das beste Individuum in der Ò-ten Generation eines <strong>Genetische</strong>n Algorithmus<br />
(<strong>Genetische</strong>r Algorithmus mit „elitärer Strategie“).<br />
Dann gilt:<br />
¡<br />
ÐÑ<br />
Ò½ È Ü Ò ´Ü<br />
£<br />
¡<br />
µ ½ (140.1)
<strong>4.5</strong> <strong>Genetische</strong> <strong>Algorithmen</strong> 141<br />
Abbildung 4.23: Testfunktion und Bereiche<br />
zweier Schemata<br />
Abbildung 4.24: Durchschnittliche Fitness<br />
des „guten“ Schemas<br />
Abbildung 4.25: Durchschnittliche Fitness<br />
der Population<br />
Abbildung 4.26: Durchschnittliche Anzahl<br />
der Schema-Individuen<br />
Dieses Resultat lässt sich so interpretieren, dass im Grenzfall das beste Individuum<br />
einer Population mit Wahrscheinlichkeit ½ die Fitness des globalen Optimums hat.<br />
(in der Mathematik spricht man von stochastischer Konvergenz)!<br />
Allerdings sagt das Resultat nichts über die Zahl der Iterationen, die für eine Konvergenz<br />
im obigen Sinne benötigt wird, so dass das Resultat für die praktische Parametrierung<br />
des <strong>Genetische</strong>n Algorithmus nicht herangezogen werden kann.<br />
Fazit<br />
Die Eigenschaften des die <strong>Genetische</strong>n Algorithmus können stichwortartig wie<br />
folgt zusammengefasst werden:<br />
Mittlere Fitness der Populationen steigt an.<br />
Fitte Schemata breiten sich (durch den Selektionsdruck) exponentiell aus.<br />
Kreuzung und Mutation wirken dem entgegen. Dadurch können fittere Schemata<br />
und Individuen gefunden werden.
142 Kapitel 4: Non-Standard-Optimierung<br />
Algorithmus durchsucht gleichzeitig viele Hyper„flächen“ des Suchraums<br />
(implizite Parallelität der GA).<br />
Fitte Schemata mit kleinen Bitblöcken werden bevorzugt durch die Generationen<br />
verbreitet (building-block-Hypothese).<br />
Jede Population ist ein Schätzer für die Fitnessverteilung der Schemata.<br />
Die Konvergenz ist nicht gesichert.<br />
Die Konvergenzdauer ist i.A. unbekannt und kann meist nur durch Experimente<br />
ermittelt werden.<br />
Für die Parametrierung gibt es lediglich Faustregeln. Ansonsten muss die<br />
richtige Parametrierung experimentell ermittelt werden.<br />
Für die Codierung des Suchraums gibt es verschiedene Standardansätze<br />
(binäre Codierung, reelle Codierung). Es sind aber auch problemabhängig<br />
andere Codierungen möglich.<br />
<strong>Genetische</strong> <strong>Algorithmen</strong> sind universell anwendbar und liefern oft auch in<br />
sehr komplizierten Fällen sehr gute Ergebnisse.<br />
<strong>Genetische</strong> <strong>Algorithmen</strong> sind in der Lage, Bereiche lokaler Suboptima wieder<br />
zu verlassen!<br />
<strong>4.5</strong>.4 Fallbeispiel<br />
Die Leistungsfähigkeit <strong>Genetische</strong>r <strong>Algorithmen</strong> soll nun abschließend an einem<br />
praxisnahen realistischen Beispiel, einem nichtlinearen Transportproblem (vgl. Beispiel<br />
1.3), demonstriert werden.<br />
Nichtlineares Transportproblem<br />
Gesucht ist:<br />
ÑÒ<br />
Ü<br />
´Üµ ÑÒ<br />
Ü<br />
Æ<br />
Å<br />
½ ½<br />
¡ Ü ¾ (142.1)<br />
mit<br />
Æ <br />
Å <br />
Ü <br />
<br />
Zahl der Lieferanten (¿µ<br />
Zahl der Kunden ()<br />
Zahl der transportierten Einheiten von Lieferant zu Kunde <br />
Kosten des Transports von Lieferant zu Kunde <br />
(142.2)
<strong>4.5</strong> <strong>Genetische</strong> <strong>Algorithmen</strong> 143<br />
unter den Nebenbedingungen<br />
Å<br />
½<br />
Æ<br />
½<br />
Ü <br />
Ü <br />
Æ ¿<br />
Å <br />
(143.1)<br />
mit den Lieferkapazitäten<br />
´¼ ½¼¼ ¼µ (143.2)<br />
mit den Kundenmindestanforderungen<br />
´¾¼ ¾¼ ¿¼ ¿¼µ (143.3)<br />
mit der Transportkostenmatrix<br />
<br />
¼<br />
<br />
<br />
½¼ ½ ¾ ¿<br />
¼ ½ ¿½ ½¾<br />
¾½ ½ ½ ½¼<br />
½<br />
<br />
(143.4)<br />
Als zusätzliche Randbedingung ist zu beachten, dass die Ü ganzzahlig sein sollen!<br />
Diskussion zweier Lösungsansätze<br />
Wir wollen die Lösung des Problems mit einem <strong>Genetische</strong>n Algorithmus zur besseren<br />
Illustration der Leistungsfähigkeit mit einem klassischen Lösungsansatz vergleichen.<br />
Zu diesem Zweck soll das Problem auch mit einem Quasi-Newton-Verfahren bearbeitet<br />
werden, wobei die geforderte Ganzzahligkeit der Lösung nachträglich berücksichtigt<br />
wird. Diese Forderung kann im <strong>Genetische</strong>n Algorithmus auf Grund<br />
der verwendet Binärcodierung dagegen sehr leicht realisiert werden.<br />
Quasi-Newton-Lösung: Zur Lösung der Aufgabe mit einem Quasi-Newton-<br />
Verfahren verwenden wir folgende MATLAB-Funktionen der Begleitsoftware:<br />
GANLTransport_Konventionell.m<br />
KostenGANLTransport2.m
144 Kapitel 4: Non-Standard-Optimierung<br />
Die Berechnung in GANLTransport_Konventionell.m greift dabei auf die Funktion<br />
fmincon.m der Optimization Toolbox zurück, die das Problem unter Verwendung<br />
eines Quasi-Newton-Verfahrens löst.<br />
Die Lösungen sind auf Grund der großen Zahl von Suboptima sehr stark abhängig<br />
vom gewählten Startwert.<br />
Bei mehreren Versuchen wurde folgende beste Lösung gefunden:<br />
<br />
¼<br />
<br />
<br />
¼¼¼ ¿¿ ½¼ ½¿<br />
¼¼ <br />
¼¼¼ ¾¼ ½<br />
½<br />
<br />
<br />
(144.1)<br />
mit dem Kostenminimum ¿¼!<br />
Um daraus ganzzahlige Lösungen zu produzieren wurde der Ansatz gewählt, alle<br />
„benachbarten“ ganzzahligen Lösungen auszutesten!<br />
Dieser Ansatz kann natürlich nur bei kleinen Problemen verfolgt werden, da es<br />
hierfür ¾ Æ¡Å Möglichkeiten gibt.<br />
Die beste benachbarte ganzzahlige Lösung war<br />
<br />
¼<br />
<br />
<br />
¼ ¾ ¾¼<br />
½ <br />
½ ¾ <br />
½<br />
<br />
<br />
(144.2)<br />
mit dem Kostenminimum ¾, den Liefermengen<br />
´¿¼ ¼ ¿µ ´¼ ½¼¼ ¼µ<br />
und mit den Empfangsmengen<br />
´ ¾½ ¿¾ ¿½µ ´¾¼ ¾¼ ¿¼ ¿¼µ <br />
Wie die mit dem <strong>Genetische</strong>n Algorithmus bestimmten Lösungen später zeigten,<br />
ist dies im vorliegenden Fall nur eine suboptimale Lösung!<br />
Ein weiterer Nachteil dieser Methode ist, dass sie im allgemeinen Fall nicht eingesetzt<br />
werden kann, z.B. falls ´Üµ nicht stetig differenzierbar ist, wie bei einer<br />
stückweise stetigen Kostenfunktion!
<strong>4.5</strong> <strong>Genetische</strong> <strong>Algorithmen</strong> 145<br />
GA-Lösung: Zur Lösung der Aufgabe mit einem <strong>Genetische</strong>n Algorithmus verwenden<br />
wir folgende MATLAB-Funktionen der Begleitsoftware:<br />
ga.m<br />
FitGANL_Transport1.m (Fitnessfunktion)<br />
GANLTransport.m<br />
KostenGANLTransport.m<br />
Aufruf_GANLTransport.m<br />
ItAufruf_GANLTransport.m<br />
Die Datei ga.m entstammt der inoffiziellen MATLAB-Toolbox für genetische <strong>Algorithmen</strong><br />
der North Carolina State University [5].<br />
Die Datei GANLTransport.m implementiert den binären <strong>Genetische</strong>n Algorithmus<br />
für dieses Problem. Mit Aufruf_GANLTransport.m kann der <strong>Genetische</strong> Algorithmus<br />
das Problem angewandt werden. Mit der Funktion ItAufruf_GANLTransport.m<br />
kann das Verfahren mehrmals nacheinander aufgerufen werden. Das beste<br />
Ergebnis kann anschließend aus den in einer Datei abgespeicherten Lösungen ausgewählt<br />
werden.<br />
Für die Codierung der Daten wurde eine -Bit-Binärcodierung ausgewählt, da diese<br />
zur Darstellung der maximalen Liefermenge ½¼¼ ausreicht. Der Vorteil dieser<br />
Codierung ist, wie bereits erwähnt, dass die geforderte Ganzzahligkeit der Lösung<br />
garantiert ist.<br />
Ein Nachteil ist natürlich, dass auch unzulässige Lösungen (Lösungen, die die Nebenbedingungen<br />
nicht erfüllen) entstehen können. In der Literatur [10] wird ein<br />
Vorschlag einer ganzzahliger Codierung gemacht, die nur zulässige Lösungen darstellt<br />
(eine problemangepasste Codierung). Diese ist jedoch wesentlich komplizierter<br />
und soll deshalb an dieser Stelle nicht behandelt werden.<br />
Die übrigen Parameter des Algorithmus wurden konventionell gewählt. In jedem<br />
Versuch wurden ½¼¼¼¼ Generationen durchsimuliert.<br />
Die besten Lösungen der Versuche waren<br />
<br />
¼<br />
<br />
<br />
¼ ¼ ½ <br />
½ ¼<br />
¾ ½ ¿ ½½<br />
½<br />
<br />
<br />
(145.1)
146 Kapitel 4: Non-Standard-Optimierung<br />
mit einem Kostenminimum von ¼ und<br />
<br />
¼<br />
<br />
<br />
¾ ¿½ ¼ <br />
¼ ½<br />
¿¿ ½ <br />
½<br />
<br />
<br />
(146.1)<br />
mit einem Kostenminimum von ½!<br />
Beide Lösungen sind wesentlich besser als die mit der „klassischen Methode“ gefundene<br />
Lösung. Der <strong>Genetische</strong> Algorithmus funktioniert gut, obwohl er dem Problem<br />
nicht optimal angepasst ist!<br />
Insofern wäre der <strong>Genetische</strong> Algorithmus wäre für kompliziertere Kostenfunktionen<br />
(z.B. differenzierbare oder gar nicht stetige Kostenfunktionen) eine sehr gute,<br />
wenn nicht gar die einzig mögliche Alternative!<br />
<strong>4.5</strong>.5 Übungen<br />
Übung 28 (Lösung Seite 181 )<br />
Bestimmen Sie mit Hilfe einer geeigneten MATLAB-Implementierung des <strong>Genetische</strong>n<br />
Algorithmus eine Lösung der Minimierungsaufgabe<br />
unter den nichtlinearen Nebenbedingungen<br />
ÑÒ ´Ü ½Ü ¾ Ü ¿ µÜ ¾ ½ · Ü ¾ · Ü ¿ (146.2)<br />
Ü ½Ü ¾Ü ¿¾Ê<br />
½´Ü ½ Ü ¾ Ü ¿ µÜ ¾ ½ · ܾ ¾ ½¼<br />
¾´Ü ½ Ü ¾ Ü ¿ µÜ½ ·Ü ¾ · Ü ¿ ¼ (146.3)