Der Kernalgorithmus cEnviroment
implementiert den genetischen Algorithmus unter zuhilfenahme der Bewerter und Operatoren. Es kann vom Kernalgorithmus bzw. der Umwelt immer nur eine Instanz (im gültigen Prozessraum) existieren.
Im Kernalgorithmus werden zwei Schleife solange ausgeführt, bis die Endbedingung zutrift oder sie, über die Methode stop()
, gestoppt wird.
Eine Schleife dient zum Erzeugen von Individuen und die andere zum Löschen von Individuen. Dafür werden Operationen ausgewählt (das Auswählen geschieht mit Hilfe von cChoosOperation
abgeleiteten Klassen) und gestartet, solange noch genügend Rechnerresourcen (Prüfung mit von cResouceCheck
abgeleiteten Klassen) vorhanden sind. Gestartete Operationen werden vermerkt. Wird eine Operation beendet, so werden die von ihr erzeugten Individuen geprüft und es wird die Operation mit den von ihr erzeugten Individuen bewertet.
Wenn eine Operation kein Individum erzeugt, wird für sie vom Kernalgorithmus ein Dummyindividuum eingefügt und die Operation bezüglich dieser bewertet. Dieses Dummyindividuum besteht nur aus Individueninformationen cIndividualInfo
über ein totes Individuum. Die Fitness dieses Dummyindividuum ist die minimal mögliche Fitness.
Sollte eine Operation schon sehr lange laufen, wird geprüft ob die Operation noch reagiert (mit der isRunning()
Methode der Operation). Dann wird eventuell versucht die Operation mit ihrer stop()
-Methode zu beenden. Wenn auch dies nicht zum Erfolg führt, wird der Prozess in dem die Operation läuft beendet.
Der Kernalgorithmus ist generisch für ein von der Klasse cIndividual
abgeleiteten Individuentyp geschrieben.