ga
Class Population

java.lang.Object
  extended byga.Population
All Implemented Interfaces:
java.io.Serializable

public abstract class Population
extends java.lang.Object
implements java.io.Serializable

Verwaltet eine Menge an Individuen und führt den Vortpflanzungs und Selektionsprozess durch.

Author:
Martin Hedler
See Also:
Serialized Form

Constructor Summary
Population(Individual type, int count)
          Erstellt eine neue Population mit Individuen vom Typ type.
Population(Individual type, int individualCount, int childrenCount, int groupSize, double crossoverRate, double twoPointCrossoverRate, double mutationRate)
          Erstellt eine neue Population mit Individuen vom Typ type.
 
Method Summary
protected abstract  void calculate(Individual[] l)
          Berechnet die Fitness der Individuen der Population.
 void chaos(int aliveCount)
          Vernichtet alle Individuuen, bis aus die besten und fuellt die Population mit neuen zufaellig erzeugten Individuuen auf.
protected  void death()
          Schlechte Individuen aus der Population entfernen.
 void evolutionStep(int count)
          Führt count Evolutionsschritte durch.
 Individual getBest()
          Liefert das beste Individuum einer Generation zurück.
 int getChildrenCount()
          Liefert die Anzahl der Kinder zurück, die in jeder Generation geboren werden.
 double getCrossoverRate()
          Liefert die Wahrscheinlichkeit eines Crossover.
 int getGroupSize()
          Liefert die Grösse einer Paaraungsgruppe zurück.
 Individual getIndividual(int index)
          Liefert das Individuum zurück, welches sich an der durch Index angegebenen Position befindet.
 int getIndividualCount()
          Liefert die Anzahl der Individuen zurück, die sich in der Population befinden.
 double getMutationRate()
          Liefert die Muationsrate zurück.
 double getPopulationFitnes()
          Liefert die Summe der Fitnes aller zur Zeit lebenden Individuen zurück.
 double getTwoPointCrossoverRate()
          Liefert die Wahrscheinlichkeit für ein 2-Punkt-Crossover zurück.
 void setChildrenCount(int s)
          Zum Setzen der Anzahl der Kinder, die in jeder Generation geboren werden sollen.
 void setCrossoverRate(double d)
          Setzt die Wahrscheinlichkeit eines Crossovers.
 void setGroupSize(int s)
          Setzt die Grösse einer Paaraungsgruppe.
 void setIndividual(int index, Individual i)
          Fügt an die durch index angegebenen Position ein Individuum ein.
 void setIndividualCount(int s)
          Zum Setzen der Populationsgrösse.
 void setMutationRate(double mutationRate)
          Setzt die Mutationswahrscheinlichkeit.
 void setTwoPointCrossoverRate(double twoPointCrossoverRate)
          Setzt die Wahrscheinlichkeit dafür, dass es zu einem 2-Punkt-Crossover kommt.
protected  void sex()
          Erzeugt neue Individuen und fühgt diese in die Population ein.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Population

public Population(Individual type,
                  int individualCount,
                  int childrenCount,
                  int groupSize,
                  double crossoverRate,
                  double twoPointCrossoverRate,
                  double mutationRate)
Erstellt eine neue Population mit Individuen vom Typ type.

Parameters:
type - Urindividuum, welches als Muster für alle anderen Individuuen dient.
individualCount - Anzahl der Individuen in einer Generation, die erzeugt werden sollen.
childrenCount - Anzahl der Kinder, die in jeder Generation erzeugt werden sollen.
groupSize - Grösse der Gruppen, die zur Paarung gebildet werden.
crossoverRate - Wahrscheinlichkeit dass ein Crossovers stattfindet.
twoPointCrossoverRate - Wahrscheinlichkeit fuer 2-Punkt-Crossover, falls überhaupt ein Crossover stattfinden sollte.
mutationRate - Muationswahrscheinlichkeit.

Population

public Population(Individual type,
                  int count)
Erstellt eine neue Population mit Individuen vom Typ type. Mit Voreinstellungen für:
childrenCount = 2
groupSize = 5
crossoverRate = 0.7
twoPointCrossoverRate = 0.4
muationRate = 0.02

Parameters:
type - Urindividuum, welches als Muster für alle anderen Individuuen dient.
count - Anzahl der Individuen in einer Generation, die erzeugt werden sollen.
Method Detail

sex

protected void sex()
Erzeugt neue Individuen und fühgt diese in die Population ein.


getBest

public Individual getBest()
Liefert das beste Individuum einer Generation zurück.

Returns:
Das beste Individuum.

death

protected void death()
Schlechte Individuen aus der Population entfernen.


evolutionStep

public void evolutionStep(int count)
Führt count Evolutionsschritte durch. In einem Schritt werden: 1. neue Individuen erzeugt (Paarung / Kinder)
2. die Generation bewertet
3. und die schlechstesten Individuen geloescht.

Parameters:
count - Anzahl der durchzuführenden Schritte.

calculate

protected abstract void calculate(Individual[] l)
Berechnet die Fitness der Individuen der Population.

Parameters:
l - Liste der Individuen.

getChildrenCount

public int getChildrenCount()
Liefert die Anzahl der Kinder zurück, die in jeder Generation geboren werden.

Returns:
Anzahl der je Generation erzeugten Kinder.

getGroupSize

public int getGroupSize()
Liefert die Grösse einer Paaraungsgruppe zurück.

Returns:
Grösse einer Gruppe.

setChildrenCount

public void setChildrenCount(int s)
Zum Setzen der Anzahl der Kinder, die in jeder Generation geboren werden sollen.

Parameters:
s - Anzahl der Kinder. Ist diese Zahl ungerade, so wird auf die nächst höhere Zahl erhöht.

setIndividualCount

public void setIndividualCount(int s)
Zum Setzen der Populationsgrösse.

Parameters:
s - Anzahl der Individuen.

setGroupSize

public void setGroupSize(int s)
Setzt die Grösse einer Paaraungsgruppe.

Parameters:
s - Gruppengrösse.

getPopulationFitnes

public double getPopulationFitnes()
Liefert die Summe der Fitnes aller zur Zeit lebenden Individuen zurück.

Returns:
Populationsfitnes.

getTwoPointCrossoverRate

public double getTwoPointCrossoverRate()
Liefert die Wahrscheinlichkeit für ein 2-Punkt-Crossover zurück.

Returns:
Wahrscheinlichkeit für ein 2-Punkt-Crossover.

setTwoPointCrossoverRate

public void setTwoPointCrossoverRate(double twoPointCrossoverRate)
Setzt die Wahrscheinlichkeit dafür, dass es zu einem 2-Punkt-Crossover kommt.

Parameters:
twoPointCrossoverRate - Wahrscheinlichkeit für ein 2-Punkt-Crossover.

getMutationRate

public double getMutationRate()
Liefert die Muationsrate zurück.

Returns:
Muationswahrscheinlichkeit.

setMutationRate

public void setMutationRate(double mutationRate)
Setzt die Mutationswahrscheinlichkeit.

Parameters:
mutationRate - Muatationsrate.

getIndividual

public Individual getIndividual(int index)
                         throws java.lang.IndexOutOfBoundsException
Liefert das Individuum zurück, welches sich an der durch Index angegebenen Position befindet.

Parameters:
index - Die Position des gewünschten Individuums.
Returns:
Das Individuum an der Position index.
Throws:
java.lang.IndexOutOfBoundsException - Wird geworfen, wenn index < 0 | index >>= getIndividualCount() ist.

setIndividual

public void setIndividual(int index,
                          Individual i)
                   throws java.lang.IndexOutOfBoundsException
Fügt an die durch index angegebenen Position ein Individuum ein.

Parameters:
index - Position in der Population an der das Individuum eingefügt werden soll.
i - Das Individuum, welches eingefügt werden soll.
Throws:
java.lang.IndexOutOfBoundsException - Wird geworfen, wenn index grösser ist, als die Population (Anzahl der Individuuen) oder kleiner Null.

getIndividualCount

public int getIndividualCount()
Liefert die Anzahl der Individuen zurück, die sich in der Population befinden.

Returns:
Die anktuelle Anzahl der Individuen.

chaos

public void chaos(int aliveCount)
Vernichtet alle Individuuen, bis aus die besten und fuellt die Population mit neuen zufaellig erzeugten Individuuen auf.

Parameters:
aliveCount - Anzahl der Individuen die am Leben bleiben sollen.

getCrossoverRate

public double getCrossoverRate()
Liefert die Wahrscheinlichkeit eines Crossover.

Returns:
Crossoverwahrscheinlichkeit.

setCrossoverRate

public void setCrossoverRate(double d)
Setzt die Wahrscheinlichkeit eines Crossovers.

Parameters:
d - Crossoverwahrscheinlichkeit.