aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/resources/Resources.java
diff options
context:
space:
mode:
authorEduardo Pedroni <ep625@york.ac.uk>2014-04-08 20:04:12 +0100
committerEduardo Pedroni <ep625@york.ac.uk>2014-04-08 20:04:12 +0100
commit260f1baaab10ab9b1db67ab587bc36adcb34494e (patch)
tree408c472a31c3fb26894c02f50803a36b684486bc /src/jcgp/backend/resources/Resources.java
parent226365bd6a0f56143ffbce7379857ff3e126fbaf (diff)
GUIParameters all refactored and commented.
Diffstat (limited to 'src/jcgp/backend/resources/Resources.java')
-rw-r--r--src/jcgp/backend/resources/Resources.java260
1 files changed, 157 insertions, 103 deletions
diff --git a/src/jcgp/backend/resources/Resources.java b/src/jcgp/backend/resources/Resources.java
index 13e0c51..c83fa35 100644
--- a/src/jcgp/backend/resources/Resources.java
+++ b/src/jcgp/backend/resources/Resources.java
@@ -1,16 +1,12 @@
package jcgp.backend.resources;
-import java.util.HashMap;
import java.util.Random;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import jcgp.backend.function.Function;
import jcgp.backend.function.FunctionSet;
-import jcgp.backend.resources.parameters.BooleanParameter;
-import jcgp.backend.resources.parameters.DoubleParameter;
import jcgp.backend.resources.parameters.IntegerParameter;
-import jcgp.backend.resources.parameters.Parameter;
import jcgp.backend.resources.parameters.ParameterStatus;
/**
@@ -23,12 +19,12 @@ import jcgp.backend.resources.parameters.ParameterStatus;
*
*/
public class Resources {
- protected HashMap<String, Parameter> parameters = new HashMap<String, Parameter>();
+ protected IntegerParameter rows, columns, inputs, outputs, populationSize,
+ levelsBack, currentGeneration, generations, currentRun, runs,
+ arity, seed, report;
protected Random numberGenerator = new Random();
-
protected FunctionSet functionSet;
-
// GUI console
protected Console console;
@@ -36,175 +32,234 @@ public class Resources {
createBaseParameters();
}
- public int getInt(String key) {
- if (parameters.get(key) instanceof IntegerParameter) {
- return ((IntegerParameter) parameters.get(key)).get();
- } else if (parameters.get(key) instanceof DoubleParameter) {
- return (int) ((DoubleParameter) parameters.get(key)).get();
- } else {
- throw new ClassCastException("Could not cast " + parameters.get(key).getClass() + " to int.");
- }
+ /**
+ * @return the rows
+ */
+ public int rows() {
+ return rows.get();
}
-
- public double getDouble(String key) {
- if (parameters.get(key) instanceof IntegerParameter) {
- return ((IntegerParameter) parameters.get(key)).get();
- } else if (parameters.get(key) instanceof DoubleParameter) {
- return ((DoubleParameter) parameters.get(key)).get();
- } else {
- throw new ClassCastException("Could not cast " + parameters.get(key).getClass() + " to double.");
- }
+
+ /**
+ * @return the columns
+ */
+ public int columns() {
+ return columns.get();
}
-
- public boolean getBoolean(String key) {
- if (parameters.get(key) instanceof BooleanParameter) {
- return ((BooleanParameter) parameters.get(key)).get();
- } else {
- throw new ClassCastException("Could not cast " + parameters.get(key).getClass() + " to int.");
- }
+
+ /**
+ * @return the inputs
+ */
+ public int inputs() {
+ return inputs.get();
}
-
- public Parameter getParameter(String key) {
- return parameters.get(key);
+
+ /**
+ * @return the outputs
+ */
+ public int outputs() {
+ return outputs.get();
}
-
- public boolean contains(String key) {
- return parameters.containsKey(key);
+
+ /**
+ * @return the populationSize
+ */
+ public int populationSize() {
+ return populationSize.get();
}
-
+
+ /**
+ * @return the levelsBack
+ */
+ public int levelsBack() {
+ return levelsBack.get();
+ }
+
+ /**
+ * @return the nodes
+ */
+ public int nodes() {
+ return columns.get() * rows.get();
+ }
+
+ /**
+ * @return the currentGeneration
+ */
+ public int currentGeneration() {
+ return currentGeneration.get();
+ }
+
+ /**
+ * @return the generations
+ */
+ public int generations() {
+ return generations.get();
+ }
+
+ /**
+ * @return the currentRun
+ */
+ public int currentRun() {
+ return currentRun.get();
+ }
+
+ /**
+ * @return the runs
+ */
+ public int runs() {
+ return runs.get();
+ }
+
+ /**
+ * @return the arity
+ */
+ public int arity() {
+ return arity.get();
+ }
+
+ /**
+ * @return the seed
+ */
+ public int seed() {
+ return seed.get();
+ }
+
+ /**
+ * @return the report
+ */
+ public int report() {
+ return report.get();
+ }
+
private void createBaseParameters() {
- parameters.put("rows", new IntegerParameter(8, "Rows", false, true) {
+ rows = new IntegerParameter(5, "Rows", false, true) {
@Override
- public void validate(int newValue) {
- if (newValue <= 0) {
+ public void validate(Number newValue) {
+ if (newValue.intValue() <= 0) {
status = ParameterStatus.INVALID;
status.setDetails("Chromosome must have at least 1 row.");
} else {
status = ParameterStatus.VALID;
}
}
- });
- parameters.put("columns", new IntegerParameter(9, "Columns", false, true) {
+ };
+
+ columns = new IntegerParameter(5, "Columns", false, true) {
@Override
- public void validate(int newValue) {
- if (newValue <= 0) {
+ public void validate(Number newValue) {
+ if (newValue.intValue() <= 0) {
status = ParameterStatus.INVALID;
status.setDetails("Chromosome must have at least 1 column.");
} else {
status = ParameterStatus.VALID;
}
}
- });
- parameters.put("inputs", new IntegerParameter(3, "Inputs", false, true) {
+ };
+
+ inputs = new IntegerParameter(3, "Inputs", false, true) {
@Override
- public void validate(int newValue) {
- if (newValue <= 0) {
+ public void validate(Number newValue) {
+ if (newValue.intValue() <= 0) {
status = ParameterStatus.INVALID;
status.setDetails("Chromosome must have at least 1 input.");
} else {
status = ParameterStatus.VALID;
}
}
- });
- parameters.put("outputs", new IntegerParameter(3, "Outputs", false, true) {
+ };
+
+ outputs = new IntegerParameter(3, "Outputs", false, true) {
@Override
- public void validate(int newValue) {
- if (newValue <= 0) {
+ public void validate(Number newValue) {
+ if (newValue.intValue() <= 0) {
status = ParameterStatus.INVALID;
status.setDetails("Chromosome must have at least 1 output.");
} else {
status = ParameterStatus.VALID;
}
}
- });
- parameters.put("popSize", new IntegerParameter(5, "Population", false, true) {
+ };
+
+ populationSize = new IntegerParameter(5, "Population", false, true) {
@Override
- public void validate(int newValue) {
- if (newValue <= 0) {
+ public void validate(Number newValue) {
+ if (newValue.intValue() <= 0) {
status = ParameterStatus.INVALID;
status.setDetails("Population size must be at least 1.");
} else {
status = ParameterStatus.VALID;
}
}
- });
- parameters.put("levelsBack", new IntegerParameter(2, "Levels back", false, true) {
+ };
+
+ levelsBack = new IntegerParameter(2, "Levels back", false, true) {
@Override
- public void validate(int newValue) {
- if (newValue <= 0) {
+ public void validate(Number newValue) {
+ if (newValue.intValue() <= 0) {
status = ParameterStatus.INVALID;
status.setDetails("Levels back must be at least 1.");
- } else if (newValue > getInt("columns")) {
+ } else if (newValue.intValue() > columns.get()) {
status = ParameterStatus.INVALID;
status.setDetails("Levels back must be less than or equal to the number of columns.");
} else {
status = ParameterStatus.VALID;
}
}
- });
-
- IntegerParameter nodes = new IntegerParameter(1, "Nodes", true, false) {
- @Override
- public void validate(int newValue) {
- // blank
- }
};
- nodes.valueProperty().bind(((IntegerParameter) parameters.get("rows")).valueProperty().multiply(((IntegerParameter) parameters.get("columns")).valueProperty()));
- parameters.put("nodes", nodes);
-
- parameters.put("generations", new IntegerParameter(1000000, "Generations") {
+
+ generations = new IntegerParameter(1000000, "Generations") {
@Override
- public void validate(int newValue) {
- if (newValue <= 0) {
+ public void validate(Number newValue) {
+ if (newValue.intValue() <= 0) {
status = ParameterStatus.INVALID;
status.setDetails("Number of generations must be greater than 0.");
- } else if (newValue < getInt("currentGen")) {
+ } else if (newValue.intValue() < currentGeneration.get()) {
status = ParameterStatus.WARNING_RESET;
status.setDetails("Setting generations to less than the current generation will cause the experiment to restart.");
} else {
status = ParameterStatus.VALID;
}
}
- });
- parameters.put("currentGen", new IntegerParameter(1, "Generation", true, false) {
+ };
+
+ currentGeneration = new IntegerParameter(1, "Generation", true, false) {
@Override
- public void validate(int newValue) {
+ public void validate(Number newValue) {
// blank
}
- });
+ };
- parameters.put("runs", new IntegerParameter(5, "Runs") {
+ runs = new IntegerParameter(5, "Runs") {
@Override
- public void validate(int newValue) {
- if (newValue <= 0) {
+ public void validate(Number newValue) {
+ if (newValue.intValue() <= 0) {
status = ParameterStatus.INVALID;
status.setDetails("Number of runs must be greater than 0.");
- } else if (newValue < getInt("currentRun")) {
+ } else if (newValue.intValue() < currentRun.get()) {
status = ParameterStatus.WARNING_RESET;
status.setDetails("Setting runs to less than the current run will cause the experiment to restart.");
} else {
status = ParameterStatus.VALID;
}
}
- });
- parameters.put("currentRun", new IntegerParameter(1, "Run", true, false) {
+ };
+
+ currentRun = new IntegerParameter(1, "Run", true, false) {
@Override
- public void validate(int newValue) {
+ public void validate(Number newValue) {
// blank
}
- });
+ };
- //parameters.put("arity", new IntegerParameter(functionSet.getMaxArity(), "Max arity", true, false) {
- parameters.put("arity", new IntegerParameter(0, "Max arity", true, false) {
+ arity = new IntegerParameter(0, "Max arity", true, false) {
@Override
- public void validate(int newValue) {
+ public void validate(Number newValue) {
// blank
}
- });
+ };
- IntegerParameter seed = new IntegerParameter(1234, "Seed", false, true) {
+ seed = new IntegerParameter(1234, "Seed", false, true) {
@Override
- public void validate(int newValue) {
+ public void validate(Number newValue) {
status = ParameterStatus.VALID;
}
};
@@ -217,19 +272,18 @@ public class Resources {
}
});
numberGenerator.setSeed(seed.get());
- parameters.put("seed", seed);
- parameters.put("report", new IntegerParameter(1, "Report", false, false) {
+ report = new IntegerParameter(1, "Report", false, false) {
@Override
- public void validate(int newValue) {
- if (newValue > getInt("generations")) {
+ public void validate(Number newValue) {
+ if (newValue.intValue() > generations.get()) {
status = ParameterStatus.WARNING;
status.setDetails("No reports will be printed.");
} else {
status = ParameterStatus.VALID;
}
}
- });
+ };
}
/*
@@ -271,8 +325,8 @@ public class Resources {
* These are affected by parameter report
*/
public void reportln(String s) {
- if (getInt("report") > 0) {
- if (getInt("currentGen") % getInt("report") == 0) {
+ if (report.get() > 0) {
+ if (currentGeneration.get() % report.get() == 0) {
System.out.println(s);
if (console != null) {
console.println(s);
@@ -282,8 +336,8 @@ public class Resources {
}
public void report(String s) {
- if (getInt("report") > 0) {
- if (getInt("currentGen") % getInt("report") == 0) {
+ if (report.get() > 0) {
+ if (currentGeneration.get() % report.get() == 0) {
System.out.print(s);
if (console != null) {
console.print(s);