ga
Class Chromosom

java.lang.Object
  extended byga.Chromosom
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable
Direct Known Subclasses:
BooleanChromosom, DoubleChromosom

public abstract class Chromosom
extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable

Dient als Grundlage für spezialisierte Chromosomen. Ein Chromosom ist ein Träger für Informationen. D.h. je nach Anwendung kann eine andere Kodierung gewählt werden. Jedoch muss dabei selbst der Mutations- und Crossoveralgorithmus implementiert werden. Es liegen jedoch bereits spezialisierte Chromosomen für entsprechende Datentypen vor: BooleanChromosom und DoubleChromosom.

Version:
0.7
Author:
Martin Hedler
See Also:
Serialized Form

Constructor Summary
Chromosom()
           
 
Method Summary
 java.lang.Object clone()
          Erstellt eine Kopie des Chromosoms.
abstract  void copy(Chromosom other)
          Kopiert den Inhalt des angegebenen Chromosoms in sich selbst.
abstract  void crossover(Chromosom other, double twoPointCrossoverRate, Chromosom[] childChromosom)
          Führt ein Crossover zwischen diesem und einem anderen Chromosomen durch.
abstract  void mutate(double mutationRate)
          Mutiert den Inhalt des Chromosoms.
abstract  void random()
          Verändert den Inhalt des Chromosoms zufällig.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Chromosom

public Chromosom()
Method Detail

mutate

public abstract void mutate(double mutationRate)
Mutiert den Inhalt des Chromosoms.

Parameters:
mutationRate - Mutationswahrscheinlichkeit mit der ein Gen mutiert wird, bzw. die Rate, die angibt, wieviel Prozent des Chromosoms mutiert wird.

crossover

public abstract void crossover(Chromosom other,
                               double twoPointCrossoverRate,
                               Chromosom[] childChromosom)
                        throws java.lang.ClassCastException
Führt ein Crossover zwischen diesem und einem anderen Chromosomen durch. Es sind zwei Arten von Crossovern möglich: 1-Punkt-Crossover und 2-Punkt-Crossover. Die Wahrsheinlichkeit für ein 2-Punkt-Crossover wird angegeben. Daraus ergibt sich die Wahrscheinlichkeit für ein 1-Punk-Crossover folgendermassen: P(1-Punkt) = 1 - P(2-Punkt).

Parameters:
other - Das andere Chromosom mit dem dieses Chromosom gekreutzt wird.
twoPointCrossoverRate - Wahrscheinlichkeit eines 2-Punkt-Crossovers.
childChromosom - Ein Array mit der Läge 2, welches die beiden Ergebnischromosomen aufnehmen soll. Die beiden Chromosome des Arrays müssen bereits existieren, so dass der Inhalt nur noch hineinkopiert werden muss.
Throws:
java.lang.ClassCastException - Wird geworfen, wenn die beiden Chromosome nicht miteinander gekreutzt werden koennen, z.B. weil sie von unterschiedlichen Typen sind. Oder wenn die Ergebnischromosome von einem anderen Typ sind.

random

public abstract void random()
Verändert den Inhalt des Chromosoms zufällig.


clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Erstellt eine Kopie des Chromosoms.

Returns:
Eine Kopie des Chromosoms.
Throws:
java.lang.CloneNotSupportedException

copy

public abstract void copy(Chromosom other)
                   throws java.lang.ClassCastException
Kopiert den Inhalt des angegebenen Chromosoms in sich selbst. Es wird eine vollständige Kopie angelegt und nicht nur eine Referenz auf die Attribute von other.

Parameters:
other - Das Quellchromosom, von welchem die Werte übernommen werden sollen.
Throws:
java.lang.ClassCastException