aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/CGP.java
diff options
context:
space:
mode:
authorEduardo Pedroni <ep625@york.ac.uk>2014-03-08 14:48:25 +0000
committerEduardo Pedroni <ep625@york.ac.uk>2014-03-08 14:48:25 +0000
commitd63d3145f0f2abcee1bb88457324f4aaf9b9320e (patch)
treedfb19082adfba8989c4fd95ef286b8c1e7a1f2b1 /src/jcgp/CGP.java
parentef7a850a8f2f81ccaa07f25d9b7ad602e84d88c9 (diff)
Slowly refactoring Parameters to fit the GUI a little better...
Diffstat (limited to 'src/jcgp/CGP.java')
-rw-r--r--src/jcgp/CGP.java60
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