diff --git a/src/eva2/server/go/operators/postprocess/PostProcess.java b/src/eva2/server/go/operators/postprocess/PostProcess.java index 3f1afc5e..abdeaf66 100644 --- a/src/eva2/server/go/operators/postprocess/PostProcess.java +++ b/src/eva2/server/go/operators/postprocess/PostProcess.java @@ -12,7 +12,6 @@ import eva2.server.go.operators.cluster.InterfaceClustering; import eva2.server.go.operators.distancemetric.InterfaceDistanceMetric; import eva2.server.go.operators.distancemetric.PhenotypeMetric; import eva2.server.go.operators.mutation.InterfaceMutation; -import eva2.server.go.operators.mutation.MutateESCovarianceMartixAdaption; import eva2.server.go.operators.mutation.MutateESFixedStepSize; import eva2.server.go.operators.mutation.MutateESMutativeStepSizeControl; import eva2.server.go.operators.terminators.EvaluationTerminator; @@ -503,7 +502,7 @@ public class PostProcess { listener.println("max peak ratio is " + mmkProb.getMaximumPeakRatio(getFoundOptima(solutions, mmkProb.getRealOptima(), mmkProb.getEpsilon(), true))); for (double epsilon=0.1; epsilon > 0.00000001; epsilon/=10.) { // out.println("no optima found: " + ((InterfaceMultimodalProblemKnown)mmProb).getNumberOfFoundOptima(pop)); - listener.println("found " + getFoundOptima(solutions, mmkProb.getRealOptima(), epsilon, true).size() + " for epsilon = " + epsilon + ", maxPeakRatio: " + ((AbstractMultiModalProblemKnown)mmkProb).getMaximumPeakRatio(solutions, epsilon)); + listener.println("found " + getFoundOptima(solutions, mmkProb.getRealOptima(), epsilon, true).size() + " for epsilon = " + epsilon + ", maxPeakRatio: " + AbstractMultiModalProblemKnown.getMaximumPeakRatio(mmkProb,solutions, epsilon)); } } } diff --git a/src/eva2/server/go/problems/AbstractMultiModalProblemKnown.java b/src/eva2/server/go/problems/AbstractMultiModalProblemKnown.java index 30776761..63ac696f 100644 --- a/src/eva2/server/go/problems/AbstractMultiModalProblemKnown.java +++ b/src/eva2/server/go/problems/AbstractMultiModalProblemKnown.java @@ -215,7 +215,11 @@ public abstract class AbstractMultiModalProblemKnown extends AbstractProblemDoub * @return int */ public int getNumberOfFoundOptima(Population pop) { - List sols = PostProcess.getFoundOptima(pop, m_Optima, m_Epsilon, true); + return getNoFoundOptimaOf(this, pop); + } + + public static int getNoFoundOptimaOf(InterfaceMultimodalProblemKnown mmProb, Population pop) { + List sols = PostProcess.getFoundOptima(pop, mmProb.getRealOptima(), mmProb.getEpsilon(), true); return sols.size(); } @@ -231,18 +235,18 @@ public abstract class AbstractMultiModalProblemKnown extends AbstractProblemDoub * @return double */ public double getMaximumPeakRatio(Population pop) { - return getMaximumPeakRatio(pop, m_Epsilon); + return getMaximumPeakRatio(this, pop, m_Epsilon); } - public double getMaximumPeakRatio(Population pop, double epsilon) { + public static double getMaximumPeakRatio(InterfaceMultimodalProblemKnown mmProb, Population pop, double epsilon) { double optimaInvertedSum = 0, foundInvertedSum = 0; - AbstractEAIndividual[] optsFound = PostProcess.getFoundOptimaArray(pop, m_Optima, epsilon, true); - - for (int i=0; i m_StatsParams.getMultiRuns()) System.err.println("error: this shouldnt happen (StatisticsWithGUI::stopOptPerformed)"); + if (optRunsPerformed > m_StatsParams.getMultiRuns()) { + // this may happen if the user reduces the multirun parameter during late multiruns + System.err.println("error: more runs performed than defined."); + } // unite the graphs only if the break was "normal" if (normal && (m_StatsParams.getMultiRuns() > 1) && (m_StatGraph != null)) { // unite the point sets for a multirun