Information Technology Reference
In-Depth Information
zusammen, wobei jedes dieser Gene einen bestimmten Part oder eine bestimmte Sequenz
einer Lösung repräsentiert. In diesem Anwendungsfall stellt das Chromosom ein Maß für
Änderungen dar, während die Gene die bestimmten Arten von Münzen repräsentieren. Der
Wert eines solchen Gens wird als ein Allel bezeichnet. Hier drückt das Allel die Anzahl
eines jeweiligen Münztyps aus, aus der sich das Wechselgeld zusammensetzt.
Gleich zu Beginn der evaluate() -Methode werden einige Hilfsroutinen aufgeru-
fen, die die Gesamtsumme des Wechselgeldes in Cent und die Anzahl der Münzen be-
rechnet, da diese Werte für die Entwicklung der potentiellen Lösungen benötigt werden.
Anschließend wird noch die Differenz bzw. der Abstand von dem aktuellen Wechselbetrag
zum Zielbetrag berechnet und als Absolutbetrag der weiteren Berechnung zur Verfügung
gestellt. Erst dann wird der eigentliche Fitness-Wert in zwei Schritten ermittelt. Im ersten
Schritt wird ein anfänglicher Fitnesswert berechnet, der den Abstand zwischen aktuellem
Lösungsbetrag und dem gewünschten Zielbetrag ausdrückt. Wenn der Lösungsbetrag dem
des Zielbetrages entspricht, wird in einem zweiten Schritt der ermittelte Fitnesswert dahin-
gehend angepasst, inwieweit diese Lösung mit einer Mindestzahl an Münzen auskommt.
Da gemäß Vorgabe nur ein Wert zwischen einem Cent und tausend Cent zur Berech-
nung anstehen kann, das Maximalmaß einer Änderung demnach bei maximal 1000 liegen
kann, lässt sich der Unterschied zwischen dem Lösungs- und dem Zielbetrag durch Sub-
traktion ermitteln. Daraus folgt, dass höhere Werte für Beträge nahe bei dem Zielbetrag
und niedrigere Werte für von dem Zielbetrag entferntere Beträge stehen. Wenn der Lö-
sungsbetrag dem Zielbetrag nahe kommt oder gar mit diesem identisch ist, werden zusätz-
liche Fitnesspunkte vergeben, wenn möglichst wenige Münzen benötigt werden.
Im Endeffekt liefert die so konzipierten Fitnessfunktion hohe Fitnesswerte für solche
Lösungen zurück, die den Zielbetrag mit nur sehr wenigen Münzen darstellen kann. Re-
spektive dazu liefert die Fitnessfunktion niedrige Fitnesswerte zurück, wenn die Lösung
weit von dem Zielbetrag entfernt ist oder aber nur durch eine große Anzahl von Münzen
dargestellt werden kann.
Im Detail berechnet die amountOfChange() -Methode die Gesamtsumme, die von
einem Chromosom ausgedrückten Änderung (in Cent). Dabei bedient sich diese Methode
der getNumberOfCoinsAtGene() - Methode, die die Nummer jeder Münzart ermit-
telt. Die getNumberOfCoinsAtGene() -Methode bestimmt die Anzahl von Münzen,
die von einem bestimmten Gen eines gegebenen Chromosoms dargestellt werden. Insofern
liefert diese Methode das Allel eines Genes an einer bestimmten Position eines Chromosoms
in Form eines int -Datentyps zurück. Die Methode getTotalNumberOfCoins() er-
mittelt die Gesamtzahl der von einem gegebenen Chromosom dargestellten Münzen.
Bei der Entwicklung von JGAP wurde darauf geachtet, dass ein flexibler Einsatz mög-
lich ist und dass durch Wiederverwendbarkeit das Rad nicht immer neu erfunden werden
muss, indem man auf bereits bestehende Lösungen zurückgreifen kann. Aber auch die Ein-
bindung eigener genetischer Operatoren oder Generatoren etc. ist möglich. Letzteres setzt
voraus, dass JGAP dementsprechend „von außen“ konfiguriert werden kann. Hierzu sieht
JGAP ein sogenanntes Konfigurationsobjekt namens Configuration vor, mit Hilfe des-
sen sich ein genetischer Algorithmus vor seiner eigentlichen Anwendung einrichten lässt.
Search WWH ::




Custom Search