/* * 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.distinctGenes; import org.jgap.*; import org.jgap.impl.*; /** * Simple class that demonstrates how to configure JGAP to use differently * composed genes. * * @author Klaus Meffert * @since 3.0 */ public class Main { /** String containing the CVS revision. Read out via reflection!*/ private static final String CVS_REVISION = "$Revision: 1.3 $"; /** * Starts the example. * @param args ignored here */ public static void main(String[] args) { int numEvolutions = 500; Configuration gaConf = new DefaultConfiguration(); gaConf.reset(); gaConf.setFitnessEvaluator(new DeltaFitnessEvaluator()); gaConf.setPreservFittestIndividual(true); gaConf.setKeepPopulationSizeConstant(false); Genotype genotype = null; final int chromeSize = 41; //number of genes in each chromosome try { IChromosome sampleChromosome = new MyChromosome(gaConf, new BooleanGene(gaConf), chromeSize); gaConf.setSampleChromosome(sampleChromosome); gaConf.setPopulationSize(20); gaConf.setFitnessFunction(new SampleFitnessFunction()); genotype = Genotype.randomInitialGenotype(gaConf); } catch (InvalidConfigurationException e) { e.printStackTrace(); System.exit( -2); } int progress = 0; int percentEvolution = numEvolutions / 10; for (int i = 0; i < numEvolutions; i++) { genotype.evolve(); // Print progress. // --------------- if (percentEvolution > 0 && i % percentEvolution == 0) { progress++; IChromosome fittest = genotype.getFittestChromosome(); double fitness = fittest.getFitnessValue(); System.out.println("Generation " + i + ": Currently fittest Chromosome has fitness " + fitness); if (fitness < 0.0001) { break; } } } // Print summary. // -------------- IChromosome fittest = genotype.getFittestChromosome(); System.out.println("Fittest Chromosome has fitness " + fittest.getFitnessValue()); } }