This commit is contained in:
Fabian Becker 2015-12-28 22:05:50 +01:00
parent bd10e078de
commit e3cb6fccfb

View File

@ -8,6 +8,7 @@ import eva2.optimization.population.SolutionSet;
import eva2.problems.InterfaceOptimizationProblem; import eva2.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import eva2.util.annotation.Description; import eva2.util.annotation.Description;
import eva2.util.annotation.Parameter;
/** /**
* Simulated Annealing by Nelder and Mead, a simple yet efficient local search * Simulated Annealing by Nelder and Mead, a simple yet efficient local search
@ -75,12 +76,10 @@ public class SimulatedAnnealing extends AbstractOptimizer implements java.io.Ser
*/ */
@Override @Override
public void optimize() { public void optimize() {
AbstractEAIndividual indy;
Population original = (Population) this.population.clone(); Population original = (Population) this.population.clone();
double delta; double delta;
for (int i = 0; i < this.population.size(); i++) { for (AbstractEAIndividual indy : this.population) {
indy = this.population.get(i);
double tmpD = indy.getMutationProbability(); double tmpD = indy.getMutationProbability();
indy.setMutationProbability(1.0); indy.setMutationProbability(1.0);
indy.mutate(); indy.mutate();
@ -93,7 +92,6 @@ public class SimulatedAnnealing extends AbstractOptimizer implements java.io.Ser
this.population.add(i, original.get(i)); this.population.add(i, original.get(i));
} else { } else {
delta = this.calculateDelta(original.get(i), this.population.get(i)); delta = this.calculateDelta(original.get(i), this.population.get(i));
//System.out.println("delta: " + delta);
if (Math.exp(-delta / this.currentTemperature) > RNG.randomInt(0, 1)) { if (Math.exp(-delta / this.currentTemperature) > RNG.randomInt(0, 1)) {
this.population.remove(i); this.population.remove(i);
this.population.add(i, original.get(i)); this.population.add(i, original.get(i));
@ -212,16 +210,13 @@ public class SimulatedAnnealing extends AbstractOptimizer implements java.io.Ser
return this.initialTemperature; return this.initialTemperature;
} }
@Parameter(description = "Set the initial temperature.")
public void setInitialTemperature(double pop) { public void setInitialTemperature(double pop) {
this.initialTemperature = pop; this.initialTemperature = pop;
} }
public String initialTemperatureTipText() {
return "Set the initial temperature.";
}
/** /**
* Set alpha, which is used to degrade the temperaure * Set alpha, which is used to degrade the temperature
* *
* @return The cooling rate. * @return The cooling rate.
*/ */
@ -229,14 +224,11 @@ public class SimulatedAnnealing extends AbstractOptimizer implements java.io.Ser
return this.alpha; return this.alpha;
} }
@Parameter(description = "Set alpha, which is used to degrade the temperature.")
public void setAlpha(double a) { public void setAlpha(double a) {
this.alpha = a; this.alpha = a;
if (this.alpha > 1) { if (this.alpha > 1) {
this.alpha = 1.0; this.alpha = 1.0;
} }
} }
public String alphaTipText() {
return "Set alpha, which is used to degrade the temperaure.";
}
} }