aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/modules/problem/SymbolicRegressionProblem.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jcgp/backend/modules/problem/SymbolicRegressionProblem.java')
-rw-r--r--src/jcgp/backend/modules/problem/SymbolicRegressionProblem.java28
1 files changed, 8 insertions, 20 deletions
diff --git a/src/jcgp/backend/modules/problem/SymbolicRegressionProblem.java b/src/jcgp/backend/modules/problem/SymbolicRegressionProblem.java
index 52df0f2..5468157 100644
--- a/src/jcgp/backend/modules/problem/SymbolicRegressionProblem.java
+++ b/src/jcgp/backend/modules/problem/SymbolicRegressionProblem.java
@@ -1,6 +1,6 @@
package jcgp.backend.modules.problem;
-import jcgp.backend.function.DoubleArithmetic;
+import jcgp.backend.function.SymbolicRegressionFunctions;
import jcgp.backend.population.Chromosome;
import jcgp.backend.population.Population;
import jcgp.backend.resources.Resources;
@@ -16,7 +16,9 @@ public class SymbolicRegressionProblem extends TestCaseProblem<Double> {
public SymbolicRegressionProblem(Resources resources) {
super(resources);
- functionSet = new DoubleArithmetic();
+ functionSet = new SymbolicRegressionFunctions();
+ setProblemName("Symbolic regression");
+ setFileExtension(".dat");
errorThreshold = new DoubleParameter(0.01, "Error threshold") {
@Override
public void validate(Number newValue) {
@@ -45,7 +47,7 @@ public class SymbolicRegressionProblem extends TestCaseProblem<Double> {
}
}
};
- hitsBasedFitness = new BooleanParameter(true, "Hits-based fitness") {
+ hitsBasedFitness = new BooleanParameter(true, "HITS-based fitness") {
@Override
public void validate(Boolean newValue) {
// blank
@@ -55,9 +57,6 @@ public class SymbolicRegressionProblem extends TestCaseProblem<Double> {
@Override
public void evaluate(Population population, Resources resources) {
- // set fittest to 0, change it whenever a fitter one is found
- population.setFittest(0);
-
// for every chromosome in the population
for (int i = 0; i < resources.populationSize(); i++) {
// assume an initial fitness of 0
@@ -81,18 +80,12 @@ public class SymbolicRegressionProblem extends TestCaseProblem<Double> {
}
// assign the resulting fitness to the respective individual
population.getChromosome(i).setFitness(fitness);
- if (fitness >= population.getFittest().getFitness()) {
- population.setFittest(i);
- }
}
+
+ // sort population
+ population.sortAscending();
}
-
- @Override
- public String toString() {
- return "Symbolic regression";
- }
-
@Override
public void addTestCase(String[] inputs, String[] outputs) {
Double[] inputCases = new Double[inputs.length];
@@ -116,9 +109,4 @@ public class SymbolicRegressionProblem extends TestCaseProblem<Double> {
public Parameter<?>[] getLocalParameters() {
return new Parameter[]{maxFitness, errorThreshold, perfectionThreshold, hitsBasedFitness};
}
-
- @Override
- public String getFileExtension() {
- return ".dat";
- }
}