aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/modules/mutator/PointMutator.java
diff options
context:
space:
mode:
authorEduardo Pedroni <ep625@york.ac.uk>2014-05-06 14:29:37 +0100
committerEduardo Pedroni <ep625@york.ac.uk>2014-05-06 14:29:37 +0100
commit8189116ea4b5db4675e31dfd04a5687d55e29262 (patch)
treec1815021452a888f8838f1628d8fb4689777e73e /src/jcgp/backend/modules/mutator/PointMutator.java
parentaa9e74e7f67789f6353fc26e02ee8e68e40609a2 (diff)
Added javadocs, made minor changes to the comments
Diffstat (limited to 'src/jcgp/backend/modules/mutator/PointMutator.java')
-rw-r--r--src/jcgp/backend/modules/mutator/PointMutator.java31
1 files changed, 20 insertions, 11 deletions
diff --git a/src/jcgp/backend/modules/mutator/PointMutator.java b/src/jcgp/backend/modules/mutator/PointMutator.java
index 0223a37..9e421c2 100644
--- a/src/jcgp/backend/modules/mutator/PointMutator.java
+++ b/src/jcgp/backend/modules/mutator/PointMutator.java
@@ -24,48 +24,57 @@ public abstract class PointMutator extends Mutator {
protected IntegerParameter genesMutated;
protected BooleanParameter report;
+
+ /**
+ * For internal use only, initialises the resources field.
+ *
+ * @param resources the experiment's resources.
+ */
+ protected PointMutator(Resources resources) {
+ super(resources);
+ }
@Override
- public void mutate(Chromosome chromosome, Resources resources) {
- if (report.get()) resources.reportln("[Mutator] Number of mutations to be performed: " + genesMutated.get());
+ public void mutate(Chromosome chromosome) {
+ if (report.get()) getResources().reportln("[Mutator] Number of mutations to be performed: " + genesMutated.get());
// for however many genes must be mutated
for (int i = 0; i < genesMutated.get(); i++) {
MutableElement m = chromosome.getRandomMutableElement();
- if (report.get()) resources.report("[Mutator] Mutation " + i + " selected " + m + ", ");
+ if (report.get()) getResources().report("[Mutator] Mutation " + i + " selected " + m + ", ");
// outputs and nodes are mutated differently
if (m instanceof Output) {
- if (report.get()) resources.report("changed source from " + ((Output) m).getSource() + " ");
+ if (report.get()) getResources().report("changed source from " + ((Output) m).getSource() + " ");
// outputs are easy, simply set to a different random connection, any will do
m.setConnection(0, chromosome.getRandomConnection());
- if (report.get()) resources.reportln("to " + ((Output) m).getSource());
+ if (report.get()) getResources().reportln("to " + ((Output) m).getSource());
} else if (m instanceof Node) {
/* nodes are more complicated, first we must decide whether to mutate the function
* or a connection
* we do this by generating a random int between 0 and 1 + arity
*/
- int geneType = resources.getRandomInt(1 + resources.arity());
+ int geneType = getResources().getRandomInt(1 + getResources().arity());
// if the int is less than 1, mutate function, else mutate connections
if (geneType < 1) {
- if (report.get()) resources.report("changed function from " + ((Node) m).getFunction() + " ");
+ if (report.get()) getResources().report("changed function from " + ((Node) m).getFunction() + " ");
- ((Node) m).setFunction(resources.getRandomFunction());
+ ((Node) m).setFunction(getResources().getRandomFunction());
- if (report.get()) resources.reportln("to " + ((Node) m).getFunction());
+ if (report.get()) getResources().reportln("to " + ((Node) m).getFunction());
} else {
// if we decided to mutate connection, subtract 1 from geneType so it fits into the arity range
geneType -= 1;
- if (report.get()) resources.report("changed connection " + geneType + " from " + ((Node) m).getConnection(geneType) + " ");
+ if (report.get()) getResources().report("changed connection " + geneType + " from " + ((Node) m).getConnection(geneType) + " ");
m.setConnection(geneType, chromosome.getRandomConnection(((Node) m).getColumn()));
- if (report.get()) resources.reportln("to " + ((Node) m).getConnection(geneType));
+ if (report.get()) getResources().reportln("to " + ((Node) m).getConnection(geneType));
}
}
}