From 1fd678821cf133c7c431daea687f3467bb0be2dd Mon Sep 17 00:00:00 2001 From: Eduardo Pedroni Date: Tue, 4 Feb 2014 16:20:33 +0000 Subject: Added fitness evaluation mechanism, though it might not be a very good design. Tests will be done to verify that. --- src/jcgp/ea/StandardMutator.java | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/jcgp/ea/StandardMutator.java') diff --git a/src/jcgp/ea/StandardMutator.java b/src/jcgp/ea/StandardMutator.java index 731215d..cab5c76 100644 --- a/src/jcgp/ea/StandardMutator.java +++ b/src/jcgp/ea/StandardMutator.java @@ -1,13 +1,31 @@ package jcgp.ea; +import jcgp.CGP.Parameters; +import jcgp.CGP.Utilities; import jcgp.population.Chromosome; +import jcgp.population.MutableElement; +import jcgp.population.Node; +import jcgp.population.Output; public class StandardMutator implements Mutator { @Override public void mutate(Chromosome chromosome) { + int mutations = (int) (Parameters.getMutationRate() * ((double) Parameters.getNodeNumber() / 100)); - + for (int i = 0; i < mutations; i++) { + MutableElement m = Utilities.getRandomMutable(chromosome); + + if (m instanceof Output) { + m.setConnection(Utilities.getRandomConnection(chromosome, m.getColumn())); + } else if (m instanceof Node) { + int geneType = Utilities.getRandomInt(1 + Parameters.getMaxArity()); + if (geneType < 1) { + ((Node) m).setFunction(Utilities.getRandomFunction()); + } else { + m.setConnection(Utilities.getRandomConnection(chromosome, m.getColumn())); + } + } + } } - } -- cgit v1.2.3