Information Technology Reference
In-Depth Information
Abb. 5.4 UML-Digramm von SimpleGA
In der Methode generateIndividual() kann ein Individuum mit zufälligen An-
fangswerten versehen werden. Dazu wird das ganze Array durchlaufen und (hier) zufällig
mit den Werten 0 und 1 gefüllt. generator ist ein statisches Objekt der Klasse java.
util.Random , der Aufruf generator.nextIndividual() erzeugt eine ganze
Zahl zwischen 0 (einschließlich) und 1 (einschließlich). Wenn nicht mehr binär codiert
werden soll, muss man an dieser Stelle andere Zufallsmechanismen verwenden. Die Ini-
tialisierung mit Zufallswerten wird nur für Objekte der Anfangsgeneration benötigt, denn
die späteren Individuen entstehen durch die Vererbungsoperatoren und werden nicht zu-
fällig besetzt.
Die Fitness eines Individuums wird mit der Methode calcFittness() berechnet
und an mehreren Stellen verwendet. Damit nicht jedes Mal eine Rechnung durchgeführt
werden muss, wird der Fitnesswert direkt zurückgegeben, wenn er schon vorliegt (hier:
wenn er eben nicht dem Defaultwert entspricht). Ansonsten wird die Fitness gemäß der
gegebenen Fitnessfunktion berechnet. Das sieht natürlich je nach Anwendung vollkom-
men verschieden aus. In diesem Beispiel werden die Übereinstimmungen mit einem Test-
daten-Array gezählt. Selbstverständlich kann die Fitnessfunktion oft sehr viel komplexer
ausfallen. Man sollte sich aber vor Augen halten, dass diese Funktion sehr oft aufgerufen
wird, so dass sich eine hoch-optimierte Programmierung hier besonders lohnt.
Der Methode mutate() muss ein Parameter übergeben werden, nämlich die Muta-
tionswahrscheinlichkeit, bezogen auf das einzelne Atom, bisher also auf ein Bit. Im zu-
nächst betrachteten Fall wird durch den aufgezeigten Algorithmus im Erfolgsfall ein Bit
gekippt.
Search WWH ::




Custom Search