![JAR search and dependency download from the Maven repository](/logo.png)
net.sourceforge.cilib.tuning.TuningProblem Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cilib-library Show documentation
Show all versions of cilib-library Show documentation
A library of composable components enabling simpler Computational Intelligence
/** __ __
* _____ _/ /_/ /_ Computational Intelligence Library (CIlib)
* / ___/ / / / __ \ (c) CIRG @ UP
* / /__/ / / / /_/ / http://cilib.net
* \___/_/_/_/_.___/
*/
package net.sourceforge.cilib.tuning;
import fj.F;
import static fj.data.List.range;
import static fj.function.Doubles.sum;
import net.sourceforge.cilib.algorithm.AbstractAlgorithm;
import net.sourceforge.cilib.measurement.Measurement;
import net.sourceforge.cilib.problem.*;
import net.sourceforge.cilib.problem.solution.Fitness;
import net.sourceforge.cilib.tuning.problem.ProblemGenerator;
import net.sourceforge.cilib.type.types.Real;
import net.sourceforge.cilib.type.types.Type;
public class TuningProblem extends AbstractProblem {
private Problem currentProblem;
private AbstractAlgorithm targetAlgorithm;
private ProblemGenerator problemsProvider;
private Measurement measurement;
private int samples;
public TuningProblem() {
this.measurement = new net.sourceforge.cilib.measurement.single.Fitness();
this.samples = 1;
}
public TuningProblem(TuningProblem copy) {
this.measurement = copy.measurement.getClone();
this.samples = copy.samples;
this.targetAlgorithm = copy.targetAlgorithm.getClone();
this.problemsProvider = copy.problemsProvider;
}
@Override
public TuningProblem getClone() {
return new TuningProblem(this);
}
@Override
protected Fitness calculateFitness(Type solution) {
double f = sum(range(0, samples).map(new F(){
@Override
public Double f(Integer a) {
targetAlgorithm.setOptimisationProblem(currentProblem);
targetAlgorithm.performInitialisation();
targetAlgorithm.runAlgorithm();
return measurement.getValue(targetAlgorithm).doubleValue();
}
})) / samples;
return objective.evaluate(f);
}
public void nextProblem() {
currentProblem = problemsProvider._1();
}
public void setMeasurement(Measurement measurement) {
this.measurement = measurement;
}
public Measurement getMeasurement() {
return measurement;
}
public void setProblemsProvider(ProblemGenerator problemProvider) {
this.problemsProvider = problemProvider;
}
public ProblemGenerator getProblemsProvider() {
return problemsProvider;
}
public void setTargetAlgorithm(AbstractAlgorithm targetAlgorithm) {
this.targetAlgorithm = targetAlgorithm;
}
public AbstractAlgorithm getTargetAlgorithm() {
return targetAlgorithm;
}
public void setSamples(int samples) {
this.samples = samples;
}
public int getSamples() {
return samples;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy