/*
* 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.impl.IntegerGene;
import examples.supergene.*;
/**
* Fitness function for test implementations without using supergenes.
*
* @author Neil Rotstan
* @author Klaus Meffert
* @author Audrius Meskauskas
*/
class WithoutSupergeneChangeFitFForTesting
extends SupergeneChangeFitnessFunction {
/** String containing the CVS revision. Read out via reflection!*/
private final static String CVS_REVISION = "$Revision: 1.1 $";
public WithoutSupergeneChangeFitFForTesting(int a_targetAmount) {
super(a_targetAmount);
}
public Gene getResponsibleGene(IChromosome a_chromosome, int a_code) {
return a_chromosome.getGene(a_code);
}
/**
* Additionall check that the number of nickels and pennies should
* be both even or odd.
*/
public double evaluate(IChromosome a_subject) {
IntegerGene nickels =
(IntegerGene) a_subject.getGene(SupergeneSample.NICKELS);
IntegerGene pennies =
(IntegerGene) a_subject.getGene(SupergeneSample.PENNIES);
boolean valid = nickels.intValue() % 2 == pennies.intValue() % 2;
// valid = true; // uncomment for testing without the condition above
double r;
if (!valid) {
r = 0;
}
else {
r = super.evaluate(a_subject);
}
return r;
}
}