/*
* This file is part of JGAP.
*
* JGAP offers a dual license model containing the LGPL as well as the MPL.
*
* For licensing information please see the file license.txt included with JGAP
* or have a look at the top of class org.jgap.Chromosome which representatively
* includes the JGAP license policy applicable for any file delivered with JGAP.
*/
package examples.supergene;
import org.jgap.*;
import org.jgap.supergenes.*;
/**
*
* Fitness function for a version where Supergene is used.
*
* @author Neil Rotstan
* @author Klaus Meffert
* @author Audrius Meskauskas
* @since 2.0
*/
public class SupergeneChangeFitnessFunction
extends AbstractChangeFitnessFunction {
/** String containing the CVS revision. Read out via reflection!*/
private final static String CVS_REVISION = "$Revision: 1.2 $";
public SupergeneChangeFitnessFunction(int a_targetAmount) {
super(a_targetAmount);
}
/**
* Dimes and nickels are taken from the chromosome, and
* quarters and pennies are taken from the supergene (gene number 2).
*/
public Gene getResponsibleGene(IChromosome a_chromosome, int a_code) {
switch (a_code) {
case SupergeneSample.DIMES:
case SupergeneSample.QUARTERS:
return a_chromosome.getGene(a_code);
case SupergeneSample.NICKELS:
Supergene s = (Supergene) a_chromosome.getGene(2);
return s.geneAt(0);
case SupergeneSample.PENNIES:
s = (Supergene) a_chromosome.getGene(2);
return s.geneAt(1);
default:
throw new Error("Invalid coind code " + a_code);
}
}
}