/* * 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.config; import org.jgap.*; /** * Sample Fitness function for the MaximizingFunction problem. */ public class MaximizingFunctionFitnessFunction extends FitnessFunction { /** String containing the CVS revision. Read out via reflection!*/ private final static String CVS_REVISION = "$Revision: 1.5 $"; /** * 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. * @author Siddhartha Azad. * @param a_chromosome the Chromosome instance to evaluate * @return a positive integer reflecting the fitness rating of the given * Chromosome */ public double evaluate(IChromosome a_chromosome) { int numGenes = a_chromosome.size(); if (numGenes != 3) { throw new IllegalArgumentException("Chromosome for " + "MaximizingFunction must have " + "exactly 3 genes."); } Integer aVal = (Integer) a_chromosome.getGene(0).getAllele(); Integer bVal = (Integer) a_chromosome.getGene(1).getAllele(); Integer cVal = (Integer) a_chromosome.getGene(2).getAllele(); return (aVal.intValue() - bVal.intValue() + cVal.intValue()); } }