aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/modules/mutator/FixedPointMutator.java
diff options
context:
space:
mode:
authorEduardo Pedroni <ep625@york.ac.uk>2014-04-25 19:38:16 +0100
committerEduardo Pedroni <ep625@york.ac.uk>2014-04-25 19:38:16 +0100
commitb0c0698e5503c2506217117bf144fde31e6f6601 (patch)
tree11a6e20fb565f1e75fb25852e757e4a37e4c313b /src/jcgp/backend/modules/mutator/FixedPointMutator.java
parent9ac2848be66c39acdc291dc3b48b91178acc1a05 (diff)
Commented lots of packages.
Diffstat (limited to 'src/jcgp/backend/modules/mutator/FixedPointMutator.java')
-rw-r--r--src/jcgp/backend/modules/mutator/FixedPointMutator.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/jcgp/backend/modules/mutator/FixedPointMutator.java b/src/jcgp/backend/modules/mutator/FixedPointMutator.java
new file mode 100644
index 0000000..4088918
--- /dev/null
+++ b/src/jcgp/backend/modules/mutator/FixedPointMutator.java
@@ -0,0 +1,64 @@
+package jcgp.backend.modules.mutator;
+
+import jcgp.backend.resources.Resources;
+import jcgp.backend.resources.parameters.BooleanParameter;
+import jcgp.backend.resources.parameters.IntegerParameter;
+import jcgp.backend.resources.parameters.Parameter;
+import jcgp.backend.resources.parameters.ParameterStatus;
+
+/**
+ * Fixed point mutator
+ * <br><br>
+ * This operator uses the point mutator
+ * algorithm to mutate a user-defined fixed
+ * number of genes.
+ *
+ *
+ * @see PointMutator
+ * @author Eduardo Pedroni
+ *
+ */
+public class FixedPointMutator extends PointMutator {
+
+ private IntegerParameter geneMutated;
+ private BooleanParameter report;
+
+ /**
+ * Creates a new instance of FixedPointMutator.
+ *
+ * @param resources a reference to the experiment's resources.
+ */
+ public FixedPointMutator(final Resources resources) {
+ geneMutated = new IntegerParameter(5, "Genes mutated", false, false) {
+ @Override
+ public void validate(Number newValue) {
+ if (newValue.intValue() <= 0) {
+ status = ParameterStatus.INVALID;
+ status.setDetails("At least 1 mutation must take place.");
+ } else if (newValue.intValue() > (resources.nodes() * (resources.arity() + 1)) + resources.outputs()) {
+ status = ParameterStatus.WARNING;
+ status.setDetails("More genes are mutated than there are genes in the genotype.");
+ } else {
+ status = ParameterStatus.VALID;
+ }
+ }
+ };
+ report = new BooleanParameter(false, "Report") {
+ @Override
+ public void validate(Boolean newValue) {
+ // blank
+ }
+ };
+ }
+
+ @Override
+ public Parameter<?>[] getLocalParameters() {
+ return new Parameter[] {geneMutated, report};
+ }
+
+ @Override
+ public String toString() {
+ return "Fixed point mutation";
+ }
+
+}