aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend
diff options
context:
space:
mode:
authorEduardo Pedroni <ep625@york.ac.uk>2014-04-04 17:14:44 +0100
committerEduardo Pedroni <ep625@york.ac.uk>2014-04-04 17:14:44 +0100
commitc7969623b44f375e30fa3f15dcd7581609276a0f (patch)
treed1743df21e685fed93b7a12dd91a524e44fa42bd /src/jcgp/backend
parent0dbf126fc524bc029d9f5803d849b7c8f43fe389 (diff)
Parameter validation refactored and fully functional.
Diffstat (limited to 'src/jcgp/backend')
-rw-r--r--src/jcgp/backend/modules/ea/MuPlusLambda.java37
-rw-r--r--src/jcgp/backend/modules/ea/TournamentSelection.java4
-rw-r--r--src/jcgp/backend/parameters/BooleanParameter.java9
-rw-r--r--src/jcgp/backend/parameters/DoubleParameter.java2
-rw-r--r--src/jcgp/backend/parameters/IntegerParameter.java2
-rw-r--r--src/jcgp/backend/parameters/Parameter.java8
-rw-r--r--src/jcgp/backend/parameters/ParameterStatus.java2
-rw-r--r--src/jcgp/backend/population/Chromosome.java1
8 files changed, 51 insertions, 14 deletions
diff --git a/src/jcgp/backend/modules/ea/MuPlusLambda.java b/src/jcgp/backend/modules/ea/MuPlusLambda.java
index 22a0876..ad8c5d8 100644
--- a/src/jcgp/backend/modules/ea/MuPlusLambda.java
+++ b/src/jcgp/backend/modules/ea/MuPlusLambda.java
@@ -3,8 +3,10 @@ package jcgp.backend.modules.ea;
import jcgp.JCGP.Resources;
import jcgp.backend.modules.ModuleStatus;
import jcgp.backend.modules.mutator.Mutator;
+import jcgp.backend.parameters.BooleanParameter;
import jcgp.backend.parameters.IntegerParameter;
import jcgp.backend.parameters.Parameter;
+import jcgp.backend.parameters.ParameterStatus;
import jcgp.backend.population.Population;
/**
@@ -19,18 +21,41 @@ public class MuPlusLambda implements EvolutionaryAlgorithm {
private int fittestChromosome;
private IntegerParameter parents, offspring;
+ private BooleanParameter report;
- public MuPlusLambda() {
+ public MuPlusLambda(final Resources resources) {
parents = new IntegerParameter(1, "Parents") {
@Override
- protected void validate(int newValue) {
-
+ public void validate(int newValue) {
+ if (newValue + offspring.get() != resources.getInt("popSize")) {
+ status = ParameterStatus.INVALID;
+ status.setDetails("Parents + offspring must equal population size.");
+ } else if (newValue <= 0) {
+ status = ParameterStatus.INVALID;
+ status.setDetails("EA needs at least 1 parent.");
+ } else {
+ status = ParameterStatus.VALID;
+ }
}
};
offspring = new IntegerParameter(4, "Offspring") {
@Override
- protected void validate(int newValue) {
-
+ public void validate(int newValue) {
+ if (newValue + parents.get() != resources.getInt("popSize")) {
+ status = ParameterStatus.INVALID;
+ status.setDetails("Parents + offspring must equal population size.");
+ } else if (newValue <= 0) {
+ status = ParameterStatus.INVALID;
+ status.setDetails("EA needs at least 1 offspring.");
+ } else {
+ status = ParameterStatus.VALID;
+ }
+ }
+ };
+ report = new BooleanParameter(false, "Report") {
+ @Override
+ public void validate(boolean newValue) {
+ // nothing
}
};
}
@@ -63,7 +88,7 @@ public class MuPlusLambda implements EvolutionaryAlgorithm {
@Override
public Parameter[] getLocalParameters() {
- return new Parameter[] {parents, offspring};
+ return new Parameter[] {parents, offspring, report};
}
@Override
diff --git a/src/jcgp/backend/modules/ea/TournamentSelection.java b/src/jcgp/backend/modules/ea/TournamentSelection.java
index 3c4a539..32ac54d 100644
--- a/src/jcgp/backend/modules/ea/TournamentSelection.java
+++ b/src/jcgp/backend/modules/ea/TournamentSelection.java
@@ -19,8 +19,8 @@ public class TournamentSelection implements EvolutionaryAlgorithm {
public TournamentSelection() {
tournament = new IntegerParameter(1, "Tournament size") {
@Override
- protected void validate(int newValue) {
-
+ public void validate(int newValue) {
+ // TODO this
}
};
diff --git a/src/jcgp/backend/parameters/BooleanParameter.java b/src/jcgp/backend/parameters/BooleanParameter.java
index db78419..43825be 100644
--- a/src/jcgp/backend/parameters/BooleanParameter.java
+++ b/src/jcgp/backend/parameters/BooleanParameter.java
@@ -11,6 +11,13 @@ public abstract class BooleanParameter extends Parameter {
this.value = new SimpleBooleanProperty(value);
}
+ /**
+ * Simple BooleanParameter constructor,
+ *
+ *
+ * @param value
+ * @param name
+ */
public BooleanParameter(boolean value, String name) {
super(name, false, false);
this.value = new SimpleBooleanProperty(value);
@@ -26,7 +33,7 @@ public abstract class BooleanParameter extends Parameter {
}
}
- protected abstract void validate(boolean newValue);
+ public abstract void validate(boolean newValue);
public SimpleBooleanProperty valueProperty() {
return value;
diff --git a/src/jcgp/backend/parameters/DoubleParameter.java b/src/jcgp/backend/parameters/DoubleParameter.java
index 2b98991..53551f5 100644
--- a/src/jcgp/backend/parameters/DoubleParameter.java
+++ b/src/jcgp/backend/parameters/DoubleParameter.java
@@ -30,6 +30,6 @@ public abstract class DoubleParameter extends Parameter {
return value;
}
- protected abstract void validate(double newValue);
+ public abstract void validate(double newValue);
}
diff --git a/src/jcgp/backend/parameters/IntegerParameter.java b/src/jcgp/backend/parameters/IntegerParameter.java
index 1127817..68095d9 100644
--- a/src/jcgp/backend/parameters/IntegerParameter.java
+++ b/src/jcgp/backend/parameters/IntegerParameter.java
@@ -31,6 +31,6 @@ public abstract class IntegerParameter extends Parameter {
return value;
}
- protected abstract void validate(int newValue);
+ public abstract void validate(int newValue);
}
diff --git a/src/jcgp/backend/parameters/Parameter.java b/src/jcgp/backend/parameters/Parameter.java
index 26bc8f1..ddd5d5b 100644
--- a/src/jcgp/backend/parameters/Parameter.java
+++ b/src/jcgp/backend/parameters/Parameter.java
@@ -4,7 +4,7 @@ import javafx.beans.property.Property;
public abstract class Parameter {
- protected boolean monitor, critical;
+ protected boolean monitor, critical, reset = false;
protected ParameterStatus status = ParameterStatus.VALID;
@@ -24,6 +24,10 @@ public abstract class Parameter {
return critical;
}
+ public boolean requiresReset() {
+ return critical || reset;
+ }
+
public String getName() {
return name;
}
@@ -33,5 +37,5 @@ public abstract class Parameter {
}
public abstract Property<?> valueProperty();
-
+
}
diff --git a/src/jcgp/backend/parameters/ParameterStatus.java b/src/jcgp/backend/parameters/ParameterStatus.java
index ed235d4..86abe33 100644
--- a/src/jcgp/backend/parameters/ParameterStatus.java
+++ b/src/jcgp/backend/parameters/ParameterStatus.java
@@ -1,7 +1,7 @@
package jcgp.backend.parameters;
public enum ParameterStatus {
- INVALID, WARNING, VALID;
+ INVALID, WARNING, WARNING_RESET, VALID;
private String details;
diff --git a/src/jcgp/backend/population/Chromosome.java b/src/jcgp/backend/population/Chromosome.java
index 41ba06e..c7493b9 100644
--- a/src/jcgp/backend/population/Chromosome.java
+++ b/src/jcgp/backend/population/Chromosome.java
@@ -310,6 +310,7 @@ public class Chromosome {
}
public void printNodes() {
+ // TODO make this proper
int arity = resources.getInt("arity");
for (int r = 0; r < (resources.getInt("rows")); r++) {