Information Technology Reference
In-Depth Information
Eine solche Konfiguration wird erleichtert, indem eine DefaultConfiguration -Klas-
se die üblichen bzw. allgemeinen Einstellungen automatisch vornimmt. Generell müssen
drei grundlegende Einstellungen vorgenommen werden, damit ein genetischer Algorithmus
seine Arbeit aufnehmen kann. Zunächst muss festgelegt werden, mit welcher Fitness-Funk-
tion der Algoithmus arbeiten soll. Weiterhin muss die Bedeutung der Chromosomen be-
stimmt werden, d. h. wie die Chromosomen die Problemstellung abbilden sollen. Als letztes
gilt es anzugeben, aus wievielen Chromosomen eine Population bestehen soll. Ein solches
Chromosom setzt sich aus einzelnen Genen zusammen, insofern muss JGAB mitgeteilt
werden, welche Genklasse zur Darstellung eines einzelnen Gens verwendet werden soll.
Hierzu stellt JGAB eine Vielzahl an unterschiedlichen Genvarianten bereits von „Hause
aus“ zur Verfügung. Aber auch hier lässt sich die Flexibilität noch erweitern, indem man
auch eigenentwicklte Genklassen verwenden kann.
Im konkreten Anwendungsfall kommt das „hauseigene“ IntegerGene zum Einsatz.
Diese Klasse lässt es via Konstruktor zu, eine untere und obere Grenze anzugeben, um so-
mit die repräsentierte Münze zu konfigurieren. Dabei gibt die obere Grenze die Anzahl der
Münzen an, an der eine optimale Lösung zu erkennen ist. Eine sinnvolle Eingrenzung an
Lösungskonfigrationen sorgt dafür, dass JGAB eine optimale Lösung auch mit wenigen
Evolutionen entwickeln kann.
Die Implementierung zeigt, dass eine Gensequenz der Länge 7 definiert wird, um die
Münzen darstellen zu können, aus denen sich das Wechselgeld zusammensetzen kann.
Ein jedes dieser sieben Gene stellt eine Münzart dar. Abschließend wird für jedes Gen
die untere bzw. obere Grenze festgelegt, wobei die erstere Angabe die Mindestanzahl und
die letztere Angabe das maximale Vorkommen einer Münze innerhalb des Wechselgeldes
angibt. Nach dieser Festlegung wird ein Chromosom definiert und dabei gleichzeitig die
Gene mit eingereicht, um dann in einem weiteren Schritt dieses so entstandene Chromo-
som mit dem Konfigurationsobjekt in Verbindung zu bringen. Nunmehr gilt es, die ge-
eignete Populationsgröße festzulegen, d. h. die Anzahl von Chromosomen anzugeben, aus
denen sich die Population zusammensetzt. Dabei gilt der Grundsatz, dass eine größere
Population in der Regel ein Mehr an potentiellen Lösungen aufgrund einer umfangrei-
cheren generischen Vielfalt zulässt. Im Umkehrschluss muss dafür aber auch ein größerer
Rechenaufwand aufgebracht werden, um die Population zu entwickeln. Letztlich gilt es,
zwischen der Zeit, die man einem solchen Algorithmus zur Entwicklung der Population
zugestehen will und der Anzahl der potentiellen Lösungen, die man erwartet, abzuwägen.
In diesem Anwendungsfall wurde eine Populationsgröße gewählt, die größer als die An-
zahl der möglichen Lösungen ist, in dem die Maximalwerte der einzelnen Gendefinitionen
miteinander multipliziert werden.
sampleGenes[0] = new IntegerGene(conf, 1, 3 );
sampleGenes[1] = new IntegerGene(conf, 0, 2 );
sampleGenes[2] = new IntegerGene(conf, 0, 2 );
sampleGenes[3] = new IntegerGene(conf, 0, 4 );
sampleGenes[4] = new IntegerGene(conf, 0, 1 );
sampleGenes[5] = new IntegerGene(conf, 0, 1 );
sampleGenes[6] = new IntegerGene(conf, 0, 2 );
sampleGenes[7] = new IntegerGene(conf, 0, 1 );
Search WWH ::




Custom Search