next up previous contents index
Next: Schnittstellenbeschreibung Up: Implementation des genetische Algorithmus Previous: getClassName   Contents   Index


Die Operatoren cOperation

Alle Operatoren werden von der Basisklasse cOperation abgeleitet. Von der Klasse cOperation selbst können keine Instanzen erzeugt werden.

Operatoren werden vom Algorithmus gestartet, um neue bessere Individuen zu erzeugen. Ob und wieviele neue Individuen ein Operation erzeugt und welche Informationen sie dafür benutzt bleibt der Operation überlassen. Wenn eine Operation kein Individuum erzeugt, wird für sie vom Kernalgorithmus ein Dummyindividuum eingefügt, um die Operation bewerten zu können. Dieses Dummyindividuum besteht nur aus Individueninformationen cIndividualInfo über ein totes Individuum. Die Fitness dieses Dummyindividuums ist die minimal mögliche Fitness.

Jeder Operation muss ein eindeutiger Identifier cOperationIdentifier (siehe Abschnitt 78.2 auf Seite [*]) bei der Erzeugung zugeordnet werden. Jeder Operatorklasse darf nur einen Konstruktor haben dem als einziger Parameter der Operationsidentifier cOperationIdentifier übergeben wird. Auf diese Art können die Operationsobjekte/-instanzen zu den Operatoren immer auf die gleiche Weise (von einer Factory) erzeugt werden.

Wenn für Operationen Funktionalität verwendet wird, die auch für andere Operatoren interessant sein könnte, ist diese Funktionalität in seperate Module oder Klassen auszulagern. Die Operatoren sollten nur zum Verwalten der Operation dienen und nicht zum Verarbeiten von weiteren Informationen. Wenn beispielsweise eine Operation auf Bildern gleichfarbige Flächen sucht und zu kompakten Fib-Objekten zusammenfasst. So sollte der Quellkode aus der von cOperation abgeleiteten Klasse für die Operation nicht viel mehr tun, als Funktionen aus anderen Modulen aufzurufen, welche die gleichfarbigen Flächen suchen und diese zusammenfassen.

Über die Konstante OPERATION_DOMAIN kann die Art der Individuen ermittelt werden, auf denen die Operation arbeitet. Dies ist der Klassenname der Individuen (z. B. cIndividual) auf denen die Operation arbeitet.

Neu Operatoren sollten leicht hinzugefügt werden können.



Subsections
next up previous contents index
Next: Schnittstellenbeschreibung Up: Implementation des genetische Algorithmus Previous: getClassName   Contents   Index
Betti Österholz 2013-02-13