diff options
author | Eduardo Pedroni <ep625@york.ac.uk> | 2014-03-08 14:48:25 +0000 |
---|---|---|
committer | Eduardo Pedroni <ep625@york.ac.uk> | 2014-03-08 14:48:25 +0000 |
commit | d63d3145f0f2abcee1bb88457324f4aaf9b9320e (patch) | |
tree | dfb19082adfba8989c4fd95ef286b8c1e7a1f2b1 /src/jcgp/CGP.java | |
parent | ef7a850a8f2f81ccaa07f25d9b7ad602e84d88c9 (diff) |
Slowly refactoring Parameters to fit the GUI a little better...
Diffstat (limited to 'src/jcgp/CGP.java')
-rw-r--r-- | src/jcgp/CGP.java | 60 |
1 files changed, 32 insertions, 28 deletions
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 |