aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/modules/ea/MuPlusLambda.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jcgp/backend/modules/ea/MuPlusLambda.java')
-rw-r--r--src/jcgp/backend/modules/ea/MuPlusLambda.java37
1 files changed, 31 insertions, 6 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