Information Technology Reference
In-Depth Information
Abb. 8.6 Chromosom der Euro-Münzen
Der Architektur von JGAP ist charakteristisch, dass der genetische Algorithmus die
evolutionären Funktionen in einer generischen Art und Weise ausführt. Das bedeutet, dass
der Algorithmus keine problemspezifischen Implementierungsanteile besitzt und dem-
nach auch über keine Möglichkeiten verfügt, die potentiellen Lösungen hinsichtlich ihrer
Brauchbarkeit einzuschätzen. Diese Einschätzung liefert hingegen die Fitness-Funktion,
die eine potentielle Lösung im Vergleich zu den anderen Lösungen bewertet und je nach
Ausgang dieser Bewertung einen ganzzahligen Wert zurückliefert. Dieser ganzzahlige
Wert zeigt demnach an, wie passend oder gut und demnach „fit“ die jeweilige Lösung
ist. Dabei gilt, dass, je höher diese Zahl ist, desto besser die Lösung eingeschätzt werden
muss. Umgekehrt gilt, dass, je niedriger diese Zahl gegen 1 tendiert, desto weniger stellt
diese Lösung eine optimale Lösung dar. Insofern verwendet der genetische Algorithmus
die Finess-Funktion, um die Population von Lösungen in Richtung einer Menge von opti-
malen Lösungen evolutionär zu entwickeln.
Im zweiten Schritt geht es also darum, eine geignete Fitness-Funktion zu finden und zu
implementieren. In diesem Fall drückt der von der Fitness-Funktion ermittelte Wert zum
einen die Nähe der aktuellen Lösung zur idealtypischen Lösung aus. Zum anderen kann
man darin die Gesamtzahl der von der Lösung berücksichtigten Münzen ablesen. Dazu
wird in einem ersten Schritt ein höherer Wert zurückgeliefert, wenn sich die Lösung der
Ziellösung annähert, respektive werden niedere Werte ermittelt, wenn sich die Lösung von
der Ziellösung entfernt. In einem zweiten Schritt wird der Fitnessert der Lösung dahinge-
hen angepasst, inwieweit diese der Forderung nach einer minimalen Anzahl von Münzen
nachkommt.
Aus der Sichtweise der Implementierung wird hierzu eine eigene Klasse definiert, die
durch die org.jgap.FitnessFunction -Klasse erweitert wird. Generell gilt, dass
alle Fitness-Funktionen diese Erweiterung erfahren müssen. Daran anschließend wird der
Konstruktor definiert, der über die Parameterübergabe die zur Berechnung anstehende
Wechselgeldsumme übernimmt. Die Methode evaluate() als Fitness-Funktion ist
als eine Standardmethode sicherlich die wichtigste Methode, die zum einen alle Fitness-
Funktionen benötigt und die daher zum anderen von Anwendungsfall zu Anwendungsfall
überschrieben werden muss. Diese Methode wird vom genetischen Algorithmus demnach
immer dann aufgerufen, wenn es den Fitness-Wert eines Chromosoms zu berechnen gilt.
Insofern wird evaluate() von einem Chromosom verwendet, wobei jedes Chromo-
som eine potenzielle Lösung darstellt. Ein Chromosom wiederum setzt sich aus Genen
Search WWH ::




Custom Search