renaming doEvaluation got complicated...
This commit is contained in:
parent
e5fc50703b
commit
c794bf44a0
@ -35,19 +35,28 @@ public abstract class AbstractProblemDouble extends AbstractOptimizationProblem
|
||||
}
|
||||
}
|
||||
|
||||
protected double[] getEvalArray(AbstractEAIndividual individual){
|
||||
double[] x = new double[((InterfaceDataTypeDouble) individual).getDoubleData().length];
|
||||
System.arraycopy(((InterfaceDataTypeDouble) individual).getDoubleData(), 0, x, 0, x.length);
|
||||
return x;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void evaluate(AbstractEAIndividual individual) {
|
||||
double[] x;
|
||||
double[] fitness;
|
||||
|
||||
x = new double[((InterfaceDataTypeDouble) individual).getDoubleData().length];
|
||||
System.arraycopy(((InterfaceDataTypeDouble) individual).getDoubleData(), 0, x, 0, x.length);
|
||||
x = getEvalArray(individual);
|
||||
// evaluate the vector
|
||||
fitness = this.eval(x);
|
||||
// if indicated, add Gaussian noise
|
||||
if (m_Noise != 0) RandomNumberGenerator.addNoise(fitness, m_Noise);
|
||||
// set the fitness
|
||||
individual.SetFitness(fitness);
|
||||
// set the fitness
|
||||
setEvalFitness(individual, x, fitness);
|
||||
}
|
||||
|
||||
protected void setEvalFitness(AbstractEAIndividual individual, double[] x, double[] fit) {
|
||||
individual.SetFitness(fit);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -63,9 +72,8 @@ public abstract class AbstractProblemDouble extends AbstractOptimizationProblem
|
||||
public void initPopulation(Population population) {
|
||||
AbstractEAIndividual tmpIndy;
|
||||
population.clear();
|
||||
((InterfaceDataTypeDouble)this.m_Template).setDoubleDataLength(this.getProblemDimension());
|
||||
((InterfaceDataTypeDouble)this.m_Template).SetDoubleRange(makeRange());
|
||||
|
||||
initTemplate();
|
||||
|
||||
for (int i = 0; i < population.getPopulationSize(); i++) {
|
||||
tmpIndy = (AbstractEAIndividual)((AbstractEAIndividual)this.m_Template).clone();
|
||||
tmpIndy.init(this);
|
||||
|
@ -47,7 +47,7 @@ public class F10Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
double c1 = this.calculateC(1);
|
||||
result[0] = 0.;
|
||||
|
@ -48,7 +48,7 @@ public class F11Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
double tmpProd = 1;
|
||||
result[0] = 0;
|
||||
|
@ -70,7 +70,7 @@ public class F12Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
double tmp = -5;
|
||||
result[0] = 0;
|
||||
|
@ -48,7 +48,7 @@ public class F13Problem extends F1Problem {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
result[0] = 0;
|
||||
|
||||
|
@ -43,7 +43,7 @@ public class F14Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
double x0 = x[0]-2;
|
||||
double x1 = x[1]-2;
|
||||
|
@ -1,11 +1,9 @@
|
||||
package javaeva.server.go.problems;
|
||||
|
||||
import javaeva.server.go.individuals.AbstractEAIndividual;
|
||||
import javaeva.server.go.individuals.ESIndividualDoubleData;
|
||||
import javaeva.server.go.individuals.InterfaceDataTypeDouble;
|
||||
import javaeva.server.go.populations.Population;
|
||||
import javaeva.server.go.strategies.InterfaceOptimizer;
|
||||
import javaeva.server.go.tools.RandomNumberGenerator;
|
||||
|
||||
/**
|
||||
* Created by IntelliJ IDEA.
|
||||
@ -27,9 +25,7 @@ public class F1Problem extends AbstractProblemDouble implements Interface2DBorde
|
||||
protected boolean m_UseTestConstraint = false;
|
||||
|
||||
public F1Problem() {
|
||||
this.m_Template = new ESIndividualDoubleData();
|
||||
((ESIndividualDoubleData)this.m_Template).setDoubleDataLength(m_ProblemDimension);
|
||||
((ESIndividualDoubleData)this.m_Template).SetDoubleRange(makeRange());
|
||||
super();
|
||||
}
|
||||
|
||||
public F1Problem(F1Problem b) {
|
||||
@ -64,62 +60,26 @@ public class F1Problem extends AbstractProblemDouble implements Interface2DBorde
|
||||
* @param population The populations that is to be inited
|
||||
*/
|
||||
public void initPopulation(Population population) {
|
||||
AbstractEAIndividual tmpIndy;
|
||||
super.initPopulation(population);
|
||||
|
||||
this.m_OverallBest = null;
|
||||
|
||||
population.clear();
|
||||
|
||||
((InterfaceDataTypeDouble)this.m_Template).setDoubleDataLength(this.m_ProblemDimension);
|
||||
((InterfaceDataTypeDouble)this.m_Template).SetDoubleRange(makeRange());
|
||||
|
||||
for (int i = 0; i < population.getPopulationSize(); i++) {
|
||||
tmpIndy = (AbstractEAIndividual)((AbstractEAIndividual)this.m_Template).clone();
|
||||
tmpIndy.init(this);
|
||||
population.add(tmpIndy);
|
||||
}
|
||||
// population init must be last
|
||||
// it set's fitcalls and generation to zero
|
||||
population.init();
|
||||
}
|
||||
|
||||
protected double[][] getDoubleRange() {
|
||||
return ((InterfaceDataTypeDouble)this.m_Template).getDoubleRange();
|
||||
}
|
||||
|
||||
/** This method evaluate a single individual and sets the fitness values
|
||||
* @param individual The individual that is to be evalutated
|
||||
*/
|
||||
public void evaluate(AbstractEAIndividual individual) {
|
||||
double[] x;
|
||||
double[] fitness;
|
||||
|
||||
// retrieve the individual data
|
||||
x = new double[((InterfaceDataTypeDouble) individual).getDoubleData().length];
|
||||
System.arraycopy(((InterfaceDataTypeDouble) individual).getDoubleData(), 0, x, 0, x.length);
|
||||
|
||||
protected double[] getEvalArray(AbstractEAIndividual individual){
|
||||
double[] x = super.getEvalArray(individual);
|
||||
// add an offset in solution space
|
||||
for (int i = 0; i < x.length; i++) x[i] = x[i] - this.m_XOffSet;
|
||||
|
||||
// evaluate the vector
|
||||
fitness = this.eval(x);
|
||||
|
||||
// add noise to the fitness
|
||||
if (m_Noise != 0) RandomNumberGenerator.addNoise(fitness, m_Noise);
|
||||
|
||||
// add an offset in fitness space
|
||||
for (int i = 0; i < fitness.length; i++) fitness[i] += this.m_YOffSet;
|
||||
|
||||
// finally set the fitness
|
||||
individual.SetFitness(fitness);
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
protected void setEvalFitness(AbstractEAIndividual individual, double[] x, double[] fit) {
|
||||
super.setEvalFitness(individual, x, fit);
|
||||
if (this.m_UseTestConstraint) {
|
||||
if (x[0] < 1) individual.addConstraintViolation(1-x[0]);
|
||||
}
|
||||
if ((this.m_OverallBest == null) || (this.m_OverallBest.getFitness(0) > individual.getFitness(0))) {
|
||||
this.m_OverallBest = (AbstractEAIndividual)individual.clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Ths method allows you to evaluate a simple bit string to determine the fitness
|
||||
* @param x The n-dimensional input vector
|
||||
@ -228,6 +188,6 @@ public class F1Problem extends AbstractProblemDouble implements Interface2DBorde
|
||||
}
|
||||
|
||||
public double[][] get2DBorder() {
|
||||
return getDoubleRange();
|
||||
return ((InterfaceDataTypeDouble)this.m_Template).getDoubleRange();
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ public class F2Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
result[0] = 0;
|
||||
for (int i = 0; i < x.length-1; i++) {
|
||||
|
@ -40,7 +40,7 @@ public class F3Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
result[0] = 6*x.length;
|
||||
for (int i = 0; i < x.length-1; i++) {
|
||||
|
@ -71,7 +71,7 @@ public class F4Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
result[0] = 0;
|
||||
for (int i = 0; i < x.length-1; i++) {
|
||||
|
@ -71,7 +71,7 @@ public class F5Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
double tmp;
|
||||
result[0] = 0;
|
||||
|
@ -59,7 +59,7 @@ public class F6Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
|
||||
if (doRotation) {
|
||||
Matrix resVec = rotation.times(new Matrix(x, x.length));
|
||||
|
@ -83,7 +83,7 @@ public class F7Problem extends F1Problem implements java.io.Serializable {
|
||||
System.arraycopy(((InterfaceDataTypeDouble) individual).getDoubleData(), 0, x, 0, x.length);
|
||||
|
||||
for (int i = 0; i < x.length; i++) x[i] = x[i] - this.m_XOffSet;
|
||||
fitness = this.doEvaluation(x);
|
||||
fitness = this.eval(x);
|
||||
for (int i = 0; i < fitness.length; i++) {
|
||||
// add noise to the fitness
|
||||
fitness[i] += RandomNumberGenerator.gaussianDouble(this.m_Noise);
|
||||
@ -103,7 +103,7 @@ public class F7Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
result[0] = 0;
|
||||
if ((Math.floor(this.m_CurrentTimeStamp / this.m_t)%2) == 0) {
|
||||
|
@ -75,7 +75,7 @@ public class F8Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
double sum1 = 0, sum2 = 0, exp1, exp2;
|
||||
|
||||
|
@ -40,7 +40,7 @@ public class F9Problem extends F1Problem implements java.io.Serializable {
|
||||
* @param x The n-dimensional input vector
|
||||
* @return The m-dimensional output vector.
|
||||
*/
|
||||
public double[] doEvaluation(double[] x) {
|
||||
public double[] eval(double[] x) {
|
||||
double[] result = new double[1];
|
||||
result[0] = 0;
|
||||
for (int i = 0; i < x.length; i++) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user