package problems.example;

import ga.core.GAProblem;
import ga.core.GAIndividual;
import ga.core.GAGene;
import ga.listeners.GAConsoleListener;
import ga.Evolve;

/**
 * Solving a simple problem using a Genetic Algorithm.
 *
 * @author Olly Oechsle, University of Essex, Date: 18-May-2007
 * @version 1.0
 */
public class ExampleProblem extends GAProblem {

    public static void main(String[] args) {
        new Evolve(new ExampleProblem(), new GAConsoleListener(false)).run();
    }    

    public String getName() {
        return "Basic GA Example";
    }

    public GAIndividual createIndividual() {
        return new ExampleIndividual();
    }

    public void evaluate(GAIndividual ind) {

        double fitness = 0;

        for (int i = 0; i < ind.genes.length; i++) {
            GAGene gene = ind.genes[i];
            double expected = i*2;
            fitness += Math.abs(expected - gene.value);
        }

        ind.setKozaFitness(fitness);

    }
    
}
