ga
Class DoubleChromosom

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

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

Stellt ein Chromosom zur Verwaltung von double Werten zur Verfügung.

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

Constructor Summary
DoubleChromosom()
          Legt ein leeres double Chromosom an.
DoubleChromosom(double[] field)
          Legt ein double Chromosom, mit den angegebenen Werten an.
DoubleChromosom(int size)
          Legt ein double Chromosom, mit der angegebenen Länge an.
 
Method Summary
 java.lang.Object clone()
          Erstellt eine Kopie des Chromosoms.
 void copy(Chromosom other)
          Kopiert den Inhalt des angegebenen Chromosoms in sich selbst.
 void crossover(Chromosom other, double twoPointCrossoverRate, Chromosom[] childChromosom)
          Führt ein Crossover zwischen diesem und einem anderen Chromosomen durch.
 double[] getField()
          Liefert das double Datenfeld des Chromosoms.
 void mutate(double mutationRate)
          Mutiert den Inhalt des Chromosoms.
 void random()
          Verändert den Inhalt des Chromosoms zufällig.
 void setField(double[] ds)
           
 void setRange(double minValue, double maxValue)
          Setzt den Wertebereich, den die Zahlen in dem Chromosom einnehmen können.
 java.lang.String toString()
          Gibt das Datenfeld als String aus.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DoubleChromosom

public DoubleChromosom(int size)
Legt ein double Chromosom, mit der angegebenen Länge an. Der Inhalt ist dabei unbestimmt.

Parameters:
size - Länge des Chromosoms.

DoubleChromosom

public DoubleChromosom()
Legt ein leeres double Chromosom an.


DoubleChromosom

public DoubleChromosom(double[] field)
Legt ein double Chromosom, mit den angegebenen Werten an.

Parameters:
field - Array von double Werten, mit denen das Chromosom initialisiert wird.
Method Detail

setRange

public void setRange(double minValue,
                     double maxValue)
Setzt den Wertebereich, den die Zahlen in dem Chromosom einnehmen können. Die voreingestellten Werte sind -1 und +1.

Parameters:
minValue - Die untere Schranke.
maxValue - Die obere Schranke.

mutate

public void mutate(double mutationRate)
Description copied from class: Chromosom
Mutiert den Inhalt des Chromosoms.

Specified by:
mutate in class Chromosom
Parameters:
mutationRate - Mutationswahrscheinlichkeit mit der ein Gen mutiert wird, bzw. die Rate, die angibt, wieviel Prozent des Chromosoms mutiert wird.

random

public void random()
Description copied from class: Chromosom
Verändert den Inhalt des Chromosoms zufällig.

Specified by:
random in class Chromosom

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Description copied from class: Chromosom
Erstellt eine Kopie des Chromosoms.

Overrides:
clone in class Chromosom
Returns:
Eine Kopie des Chromosoms.
Throws:
java.lang.CloneNotSupportedException

getField

public double[] getField()
Liefert das double Datenfeld des Chromosoms.

Returns:
Eine Kopie des Datenfelds.

toString

public java.lang.String toString()
Gibt das Datenfeld als String aus.


crossover

public void crossover(Chromosom other,
                      double twoPointCrossoverRate,
                      Chromosom[] childChromosom)
               throws java.lang.ClassCastException
Description copied from class: Chromosom
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).

Specified by:
crossover in class Chromosom
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.

copy

public void copy(Chromosom other)
          throws java.lang.ClassCastException
Description copied from class: Chromosom
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.

Specified by:
copy in class Chromosom
Parameters:
other - Das Quellchromosom, von welchem die Werte übernommen werden sollen.
Throws:
java.lang.ClassCastException

setField

public void setField(double[] ds)
Parameters:
ds -