diff options
| author | Eduardo Pedroni <ep625@york.ac.uk> | 2014-02-04 16:20:33 +0000 | 
|---|---|---|
| committer | Eduardo Pedroni <ep625@york.ac.uk> | 2014-02-04 16:20:33 +0000 | 
| commit | 1fd678821cf133c7c431daea687f3467bb0be2dd (patch) | |
| tree | c23e7fe6a4076c6748d03b2cee9d41ff6e9734b2 /src/jcgp/ea/StandardMutator.java | |
| parent | d9671c354080de20bba4f70438af9242c8ecd675 (diff) | |
Added fitness evaluation mechanism, though it might not be a very good design. Tests will be done to verify that.
Diffstat (limited to 'src/jcgp/ea/StandardMutator.java')
| -rw-r--r-- | src/jcgp/ea/StandardMutator.java | 22 | 
1 files changed, 20 insertions, 2 deletions
| 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())); +				} +			} +		}  	} -  } | 
