From d63d3145f0f2abcee1bb88457324f4aaf9b9320e Mon Sep 17 00:00:00 2001 From: Eduardo Pedroni Date: Sat, 8 Mar 2014 14:48:25 +0000 Subject: Slowly refactoring Parameters to fit the GUI a little better... --- src/jcgp/CGP.java | 60 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 28 deletions(-) (limited to 'src/jcgp/CGP.java') diff --git a/src/jcgp/CGP.java b/src/jcgp/CGP.java index 48273e9..6ac8ff8 100644 --- a/src/jcgp/CGP.java +++ b/src/jcgp/CGP.java @@ -2,35 +2,40 @@ package jcgp; import java.util.Random; -import jcgp.ea.EvolutionaryAlgorithm; -import jcgp.ea.Mutator; -import jcgp.ea.StandardEA; -import jcgp.ea.StandardMutator; -import jcgp.fitness.FitnessFunction; -import jcgp.fitness.TestCase; -import jcgp.fitness.TruthTableEvaluator; -import jcgp.function.Arithmetic; -import jcgp.function.FunctionSet; +import jcgp.modules.ea.EvolutionaryAlgorithm; +import jcgp.modules.ea.StandardEA; +import jcgp.modules.fitness.FitnessFunction; +import jcgp.modules.fitness.TestCase; +import jcgp.modules.fitness.TruthTableEvaluator; +import jcgp.modules.function.Arithmetic; +import jcgp.modules.function.FunctionSet; +import jcgp.modules.mutator.Mutator; +import jcgp.modules.mutator.StandardMutator; +import jcgp.parameters.BooleanParameter; +import jcgp.parameters.IntegerParameter; +import jcgp.parameters.Parameters; import jcgp.population.Population; -public final class CGP { +public class CGP { // CGP components - private EvolutionaryAlgorithm ea; + private EvolutionaryAlgorithm evolutionaryAlgorithm; private Mutator mutator; private Population population; private FitnessFunction fitnessFunction; + + public CGP() { initialise(); for (int i = 0; i < Parameters.getTotalGenerations(); i++) { Parameters.setCurrentGeneration(i); fitnessFunction.evaluate(population); - ea.evolve(population, mutator); - if (ea.getFittestChromosome().getFitness() >= 3) { + evolutionaryAlgorithm.evolve(population, mutator); + if (evolutionaryAlgorithm.getFittestChromosome().getFitness() >= 3) { if (Parameters.getDebug()) { - ea.getFittestChromosome().printNodes(); + evolutionaryAlgorithm.getFittestChromosome().printNodes(); } break; } @@ -41,31 +46,30 @@ public final class CGP { * */ private void initialise() { + // make fundamental parameters + Parameters.add("Rows", new IntegerParameter(3)); + Parameters.add("Columns", new IntegerParameter(3)); + Parameters.add("Inputs", new IntegerParameter(3)); + Parameters.add("Outputs", new IntegerParameter(3)); + Parameters.add("population", new IntegerParameter(5)); + + Parameters.add("generations", new IntegerParameter(100)); + Parameters.add("runs", new IntegerParameter(5)); + + Parameters.add("debug", new BooleanParameter(false)); + // initialise function set FunctionSet functionSet = new FunctionSet(new Arithmetic.Addition(), new Arithmetic.Subtraction(), new Arithmetic.Multiplication()); // initialise utilities Utilities.setResources(new Random(1234), functionSet); - // initialise parameters - Parameters.setColumns(3); - Parameters.setRows(6); - Parameters.setInputs(3); - Parameters.setOutputs(3); - Parameters.setLevelsBack(3); - Parameters.setPopulationSize(1, 4); - Parameters.setMutationRate(10); - Parameters.setTotalGenerations(5000); - Parameters.setTotalRuns(5); - Parameters.setMaxArity(functionSet.getMaxArity()); - Parameters.setDebug(false); - // initialise fitness function and truth table TruthTable.setTestCases(new TestCase(new Object[] {2, 5, 4}, new Object[] {1, 10, 15})); fitnessFunction = new TruthTableEvaluator(); // initialise EA - ea = new StandardEA(); + evolutionaryAlgorithm = new StandardEA(); mutator = new StandardMutator(); // initialise population -- cgit v1.2.3