JGAP

org.jgap
Class FitnessFunction

java.lang.Object
  extended by org.jgap.FitnessFunction
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, ICloneable
Direct Known Subclasses:
AbstractChangeFitnessFunction, CachedFitnessFunction, CoinsEnergyFitnessFunction, CoinsExampleFitnessFunction, DynamicMutationFitnessFunction, KnapsackFitnessFunction, LMSFitnessFunction, MaxFunction, MaxFunction, MaxFunction, MaximizingFunctionFitnessFunction, MinimizingMakeChangeFitnessFunction, SalesmanFitnessFunction, SampleFitnessFunction, SampleFitnessFunction, SampleFitnessFunction, SampleFitnessFunction, TruthTableFitnessFunction

public abstract class FitnessFunction
extends java.lang.Object
implements java.io.Serializable, ICloneable

Fitness functions are used to determine how optimal a particular solution is relative to other solutions. This abstract class should be extended and the evaluate() method implemented. The fitness function is given a Chromosome to evaluate and should return a positive double that reflects its fitness value. The higher the value, the more fit the Chromosome. The actual range of fitness values isn't important (other than the fact that they must be positive doubles): it's the relative difference as a percentage that tends to determine the success or failure of a Chromosome. So in other words, two Chromosomes with respective fitness values of 1 and 100 have the same relative fitness to each other as two Chromosomes with respective fitness values of 10 and 1000 (in each case, the first is 1% as fit as the second).

Note: Two Chromosomes with equivalent sets of genes should always be assigned the same fitness value by any implementation of this interface.

Since:
1.0
See Also:
Serialized Form

Field Summary
static double DELTA
           
static double NO_FITNESS_VALUE
           
 
Constructor Summary
FitnessFunction()
           
 
Method Summary
 java.lang.Object clone()
          Please override in your implementations!
protected abstract  double evaluate(IChromosome a_subject)
          Determine the fitness of the given Chromosome instance.
 double getFitnessValue(IChromosome a_subject)
          Retrieves the fitness value of the given Chromosome.
 double getLastComputedFitnessValue()
           
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_FITNESS_VALUE

public static final double NO_FITNESS_VALUE
See Also:
Constant Field Values

DELTA

public static final double DELTA
See Also:
Constant Field Values
Constructor Detail

FitnessFunction

public FitnessFunction()
Method Detail

getFitnessValue

public double getFitnessValue(IChromosome a_subject)
Retrieves the fitness value of the given Chromosome. The fitness value will be a positive double.

Parameters:
a_subject - the Chromosome for which to compute and return the fitness value
Returns:
the fitness value of the given Chromosome
Since:
2.0 (until 1.1: return type int)

getLastComputedFitnessValue

public double getLastComputedFitnessValue()
Returns:
the last fitness value computed via method getFitnessValue( Chromosome), or NO_FITNES_VALUE if the former method has not been called yet
Since:
2.4

evaluate

protected abstract double evaluate(IChromosome a_subject)
Determine the fitness of the given Chromosome instance. The higher the return value, the more fit the instance. This method should always return the same fitness value for two equivalent Chromosome instances.

Parameters:
a_subject - the Chromosome instance to evaluate
Returns:
positive double reflecting the fitness rating of the given Chromosome. Note that if a non-positive double is returned, a RuntimeException should be generated
Since:
2.0 (until 1.1: return type int)

clone

public java.lang.Object clone()
Please override in your implementations!

Specified by:
clone in interface ICloneable
Overrides:
clone in class java.lang.Object
Returns:
deep clone of the current instance
Since:
3.2

JGAP