Minor changes.

This commit is contained in:
Marcel Kronfeld 2010-08-16 11:57:09 +00:00
parent c4ebba116f
commit ab6b7f2794
6 changed files with 17 additions and 34 deletions

View File

@ -80,7 +80,8 @@ public class ParetoMetricTerminator extends PopulationMeasureTerminator implemen
public static String globalInfo() {
return "Terminate if the pareto front of a multi-objective optimization process converges " +
"with respect to a certain measure.";
"with respect to a certain measure. Note that this only works with " +
"AbstractMultiObjectiveOptimizationProblem instances.";
}
public void setParetoMetric(InterfaceParetoFrontMetric pMetric) {

View File

@ -12,26 +12,11 @@ import eva2.server.go.populations.Population;
*
*/
public class PopulationArchiveTerminator extends PopulationMeasureTerminator {
IndividualWeightedFitnessComparator wfComp = new IndividualWeightedFitnessComparator(null);
IndividualWeightedFitnessComparator wfComp = new IndividualWeightedFitnessComparator(new double[]{1.});
// private boolean isStillConverged(PopulationInterface pop) {
// Population archive = ((Population)pop).getArchive();
// if (archive==null || (archive.size()<1)) {
// System.err.println("Error, population had no archive in " + this.getClass());
// return false;
// } else {
// double bestScore = Population.getScore(archive.getEAIndividual(0), fitWeights);
// for (int i=1; i<archive.size(); i++) {
// double tmpScore = Population.getScore(archive.getEAIndividual(i), fitWeights);
// if (tmpScore<bestScore) bestScore=tmpScore;
// }
// if (bestScore>=oldScore) return true;
// else {
// oldScore=bestScore;
// return false;
// }
// }
// }
public static String globalInfo() {
return "Stop if a linear recombination of the best fitness stagnates for a certain period.";
}
@Override
protected double calcInitialMeasure(PopulationInterface pop) {

View File

@ -28,7 +28,7 @@ import eva2.tools.SelectedTag;
public abstract class PopulationMeasureTerminator implements InterfaceTerminator,
Serializable {
public enum ChangeTypeEnum {relativeChange, absoluteChange, absoluteValue};
public enum DirectionTypeEnum {decreaseImprovement, bidirectional};
public enum DirectionTypeEnum {decrease, bidirectional};
public enum StagnationTypeEnum {fitnessCallBased, generationBased};
protected static boolean TRACE = false;
@ -41,7 +41,7 @@ Serializable {
private StagnationTypeEnum stagnationMeasure = StagnationTypeEnum.fitnessCallBased;
// private SelectedTag convCondition = new SelectedTag("Relative change", "Absolute change", "Absolute value");
private ChangeTypeEnum changeType = ChangeTypeEnum.relativeChange;
private DirectionTypeEnum condDirection = DirectionTypeEnum.decreaseImprovement;
private DirectionTypeEnum condDirection = DirectionTypeEnum.decrease;
// private SelectedTag condImprovementOrChange = new SelectedTag("Decrease", "Improvement and Deterioration");
protected String msg="Not terminated.";
@ -243,7 +243,7 @@ Serializable {
}
public boolean doCheckImprovement() {
return (condDirection==DirectionTypeEnum.decreaseImprovement);
return (condDirection==DirectionTypeEnum.decrease);
// return condImprovementOrChange.isSelectedString("Improvement");
}
@ -295,7 +295,7 @@ Serializable {
return stagTime;
}
public String stagnationTimeTipText() {
return "Terminate if the population has not improved for this time";
return "Terminate if the population has not improved/changed for this time";
}
public StagnationTypeEnum getStagnationMeasure() {
@ -305,7 +305,7 @@ Serializable {
this.stagnationMeasure = stagnationTimeIn;
}
public String stagnationMeasureTipText() {
return "Stagnation time is measured in fitness calls or generations.";
return "Stagnation time is measured in fitness calls or generations";
}
public ChangeTypeEnum getConvergenceCondition() {
@ -313,21 +313,18 @@ Serializable {
}
public void setConvergenceCondition(ChangeTypeEnum convergenceCondition) {
this.changeType = convergenceCondition;
// GenericObjectEditor.setHideProperty(this.getClass(), "convergenceThresholdUpper", isRelativeConvergence() || doCheckImprovement());
}
public String convergenceConditionTipText() {
return "Select between absolute and relative convergence condition";
return "Select absolute or relative convergence condition";
}
public DirectionTypeEnum getCheckType() {
return condDirection;
// return condImprovementOrChange;
}
public void setCheckType(DirectionTypeEnum dt) {
this.condDirection = dt;
// GenericObjectEditor.setHideProperty(this.getClass(), "convergenceThresholdUpper", isRelativeConvergence() || doCheckImprovement());
}
public String checkTypeTipText() {
return "Detect improvement only (decreasing measure) or change in both directions (de- and increase).";
return "Detect improvement only (decreasing measure) or change in both directions (decrease and increase)";
}
}

View File

@ -486,7 +486,7 @@ implements InterfaceOptimizationProblem /*, InterfaceParamControllable*/, Serial
Population pop = new Population(1);
pop.add(orig);
InterfaceTerminator term = new EvaluationTerminator(maxEvaluations);
if (epsilonFitConv > 0) term = new CombinedTerminator(new PhenotypeConvergenceTerminator(epsilonFitConv, 100*dim, StagnationTypeEnum.fitnessCallBased, ChangeTypeEnum.absoluteChange, DirectionTypeEnum.decreaseImprovement), term, false);
if (epsilonFitConv > 0) term = new CombinedTerminator(new PhenotypeConvergenceTerminator(epsilonFitConv, 100*dim, StagnationTypeEnum.fitnessCallBased, ChangeTypeEnum.absoluteChange, DirectionTypeEnum.decrease), term, false);
int evalsPerf = PostProcess.processSingleCandidatesNMCMA(PostProcessMethod.nelderMead, pop, term, initRelPerturb, prob);
overallDist = metric.distance(indy, pop.getBestEAIndividual());
//System.out.println(System.currentTimeMillis() + " in " + evalsPerf + " evals moved by "+ overallDist);

View File

@ -399,7 +399,7 @@ public abstract class AbstractProblemDouble extends AbstractOptimizationProblem
tmpIndy.SetDoubleGenotype(pos);
((AbstractEAIndividual)tmpIndy).SetFitness(prob.eval(pos));
pop.add(tmpIndy);
FitnessConvergenceTerminator convTerm = new FitnessConvergenceTerminator(1e-25, 10, StagnationTypeEnum.generationBased, ChangeTypeEnum.absoluteChange, DirectionTypeEnum.decreaseImprovement);
FitnessConvergenceTerminator convTerm = new FitnessConvergenceTerminator(1e-25, 10, StagnationTypeEnum.generationBased, ChangeTypeEnum.absoluteChange, DirectionTypeEnum.decrease);
int calls = PostProcess.processSingleCandidatesNMCMA(PostProcessMethod.nelderMead, pop, convTerm, 0.001, prob);
return ((InterfaceDataTypeDouble)pop.getBestEAIndividual()).getDoubleData();
}

View File

@ -159,7 +159,7 @@ public class EvolutionStrategyIPOP extends EvolutionStrategies implements Interf
bestList = new LinkedList<AbstractEAIndividual>();
best = getPopulation().getBestEAIndividual();
dim = AbstractEAIndividual.getDoublePositionShallow(getPopulation().getEAIndividual(0)).length;
fitConvTerm = new FitnessConvergenceTerminator(stagThreshold, (isStagnationTimeUserDef()) ? stagTimeArbitrary : calcDefaultStagnationTime(), StagnationTypeEnum.generationBased, ChangeTypeEnum.absoluteChange, DirectionTypeEnum.decreaseImprovement); // gen. based, absolute
fitConvTerm = new FitnessConvergenceTerminator(stagThreshold, (isStagnationTimeUserDef()) ? stagTimeArbitrary : calcDefaultStagnationTime(), StagnationTypeEnum.generationBased, ChangeTypeEnum.absoluteChange, DirectionTypeEnum.decrease); // gen. based, absolute
getPopulation().addPopulationChangedEventListener(this);
getPopulation().setNotifyEvalInterval(initialLambda);
}