Remove SelectedTag in StatisticsParameters

refs #32
This commit is contained in:
Fabian Becker 2014-11-05 22:31:28 +01:00
parent 93aff6d876
commit 1b8b77c52f
10 changed files with 87 additions and 85 deletions

View File

@ -254,12 +254,8 @@ public class OptimizerRunnable implements Runnable {
* *
* @param vLev * @param vLev
*/ */
public void setVerbosityLevel(int vLev) { public void setVerbosityLevel(InterfaceStatisticsParameters.OutputVerbosity vLev) {
if (vLev >= 0 && vLev < proc.getStatistics().getStatisticsParameter().getOutputVerbosity().getTags().length) { proc.getStatistics().getStatisticsParameter().setOutputVerbosity(vLev);
proc.getStatistics().getStatisticsParameter().getOutputVerbosity().setSelectedTag(vLev);
} else {
System.err.println("Invalid verbosity leveln in OptimizerRunnable.setVerbosityLevel!");
}
} }
/** /**
@ -267,7 +263,7 @@ public class OptimizerRunnable implements Runnable {
* *
* @param outp * @param outp
*/ */
public void setOutputTo(int outp) { public void setOutputTo(InterfaceStatisticsParameters.OutputTo outp) {
((StatisticsParameters) proc.getStatistics().getStatisticsParameter()).setOutputTo(outp); ((StatisticsParameters) proc.getStatistics().getStatisticsParameter()).setOutputTo(outp);
} }

View File

@ -23,6 +23,7 @@ import eva2.optimization.operator.selection.SelectBestIndividuals;
import eva2.optimization.operator.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.operator.terminators.InterfaceTerminator; import eva2.optimization.operator.terminators.InterfaceTerminator;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
import eva2.optimization.statistics.InterfaceStatisticsParameters;
import eva2.optimization.statistics.StatisticsParameters; import eva2.optimization.statistics.StatisticsParameters;
import eva2.problems.*; import eva2.problems.*;
import eva2.optimization.statistics.InterfaceTextListener; import eva2.optimization.statistics.InterfaceTextListener;
@ -814,7 +815,7 @@ public class PostProcess {
*/ */
private static void runPP(OptimizerRunnable rnbl) { private static void runPP(OptimizerRunnable rnbl) {
rnbl.getOptimizationParameters().setDoPostProcessing(false); rnbl.getOptimizationParameters().setDoPostProcessing(false);
rnbl.setVerbosityLevel(StatisticsParameters.VERBOSITY_NONE); rnbl.setVerbosityLevel(InterfaceStatisticsParameters.OutputVerbosity.NONE);
ppRunnables.add(rnbl); ppRunnables.add(rnbl);
rnbl.run(); rnbl.run();
rnbl.getOptimizationParameters().setDoPostProcessing(true); rnbl.getOptimizationParameters().setDoPostProcessing(true);

View File

@ -200,7 +200,7 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
String startDate = getDateString(); String startDate = getDateString();
// open the result file: // open the result file:
if (doFileOutput() // not "text-window only" if (doFileOutput() // not "text-window only"
&& (statisticsParameter.getOutputVerbosity().getSelectedTagID() > StatisticsParameters.VERBOSITY_NONE)) { // verbosity accordingly high && (statisticsParameter.getOutputVerbosity() != InterfaceStatisticsParameters.OutputVerbosity.NONE)) { // verbosity accordingly high
//!resFName.equalsIgnoreCase("none") && !resFName.equals("")) { //!resFName.equalsIgnoreCase("none") && !resFName.equals("")) {
String fnameBase = makeOutputFileName(statisticsParameter.getResultFilePrefix(), infoString, startDate); String fnameBase = makeOutputFileName(statisticsParameter.getResultFilePrefix(), infoString, startDate);
int cnt = 0; int cnt = 0;
@ -233,7 +233,7 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
} }
protected boolean doFileOutput() { protected boolean doFileOutput() {
return (statisticsParameter.getOutputTo().getSelectedTagID() != 1); // not "text-window only" return (statisticsParameter.getOutputTo() != InterfaceStatisticsParameters.OutputTo.WINDOW); // not "text-window only"
} }
private String makeOutputFileName(String prefix, String infoString, String startDate) { private String makeOutputFileName(String prefix, String infoString, String startDate) {
@ -648,7 +648,7 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
resultOut.print(s); resultOut.print(s);
} }
for (InterfaceTextListener l : textListeners) { for (InterfaceTextListener l : textListeners) {
if (statisticsParameter.getOutputTo().getSelectedTagID() >= 1) { if (statisticsParameter.getOutputTo() != InterfaceStatisticsParameters.OutputTo.FILE) {
l.print(s); l.print(s);
} }
} }
@ -1205,22 +1205,24 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
* @return * @return
*/ */
private boolean printLineByVerbosity(int iteration) { private boolean printLineByVerbosity(int iteration) {
return (statisticsParameter.getOutputVerbosity().getSelectedTagID() > StatisticsParameters.VERBOSITY_KTH_IT) return (statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.ALL)
|| ((statisticsParameter.getOutputVerbosity().getSelectedTagID() == StatisticsParameters.VERBOSITY_KTH_IT) || ((statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.KTH_IT)
&& (isKthRun(iteration, statisticsParameter.getOutputVerbosityK()))); && (isKthRun(iteration, statisticsParameter.getOutputVerbosityK())));
} }
private boolean printRunIntroVerbosity() { private boolean printRunIntroVerbosity() {
return (statisticsParameter.getOutputVerbosity().getSelectedTagID() >= StatisticsParameters.VERBOSITY_KTH_IT) return (statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.ALL) ||
|| (optRunsPerformed == 0 && (statisticsParameter.getOutputVerbosity().getSelectedTagID() >= StatisticsParameters.VERBOSITY_FINAL)); (statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.KTH_IT)
|| (optRunsPerformed == 0 && (statisticsParameter.getOutputVerbosity() != InterfaceStatisticsParameters.OutputVerbosity.NONE));
} }
private boolean printRunStoppedVerbosity() { private boolean printRunStoppedVerbosity() {
return (statisticsParameter.getOutputVerbosity().getSelectedTagID() >= StatisticsParameters.VERBOSITY_KTH_IT); return statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.KTH_IT ||
statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.ALL;
} }
private boolean printFinalVerbosity() { private boolean printFinalVerbosity() {
return (statisticsParameter.getOutputVerbosity().getSelectedTagID() > StatisticsParameters.VERBOSITY_NONE); return (statisticsParameter.getOutputVerbosity() != InterfaceStatisticsParameters.OutputVerbosity.NONE);
} }
private boolean isKthRun(int i, int k) { private boolean isKthRun(int i, int k) {
@ -1240,7 +1242,8 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
} }
private boolean printHeaderByVerbosity() { private boolean printHeaderByVerbosity() {
return (statisticsParameter.getOutputVerbosity().getSelectedTagID() >= StatisticsParameters.VERBOSITY_KTH_IT); return (statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.ALL) ||
(statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.KTH_IT);
} }
private static void divideMean(Double[] mean, double d) { private static void divideMean(Double[] mean, double d) {

View File

@ -1,6 +1,5 @@
package eva2.optimization.statistics; package eva2.optimization.statistics;
import eva2.tools.SelectedTag;
import eva2.tools.StringSelection; import eva2.tools.StringSelection;
/** /**
@ -51,15 +50,43 @@ public interface InterfaceStatisticsParameters {
void setOutputAllFieldsAsText(boolean bShowFullText); void setOutputAllFieldsAsText(boolean bShowFullText);
void setOutputVerbosity(SelectedTag sTag); void setOutputVerbosity(OutputVerbosity sTag);
SelectedTag getOutputVerbosity(); OutputVerbosity getOutputVerbosity();
int getOutputVerbosityK(); int getOutputVerbosityK();
void setOutputVerbosityK(int k); void setOutputVerbosityK(int k);
void setOutputTo(SelectedTag sTag); void setOutputTo(OutputTo sTag);
SelectedTag getOutputTo(); OutputTo getOutputTo();
public enum OutputVerbosity {
NONE, FINAL, KTH_IT, ALL;
@Override
public String toString() {
switch (this) {
case NONE: return "No output";
case FINAL: return "Final Results";
case KTH_IT: return "K-th iterations";
case ALL: return "All iterations";
default: return this.name();
}
}
}
public enum OutputTo {
FILE, WINDOW, BOTH;
public String toString() {
switch (this) {
case FILE: return "File (current dir.)";
case WINDOW: return "Text-window";
case BOTH: return "Both file and text-window";
default: return name();
}
}
}
} }

View File

@ -21,13 +21,13 @@ public class StatisticsDummy implements InterfaceStatistics, InterfaceTextListen
public StatisticsDummy() { public StatisticsDummy() {
bestIndividualAllover = null; bestIndividualAllover = null;
sParams = new StatisticsParameters(); sParams = new StatisticsParameters();
sParams.setOutputVerbosityK(StatisticsParameters.VERBOSITY_NONE); sParams.setOutputVerbosityK(0);
} }
public StatisticsDummy(boolean doConsoleOut) { public StatisticsDummy(boolean doConsoleOut) {
bestIndividualAllover = null; bestIndividualAllover = null;
sParams = new StatisticsParameters(); sParams = new StatisticsParameters();
sParams.setOutputVerbosityK(StatisticsParameters.VERBOSITY_NONE); sParams.setOutputVerbosityK(0);
consoleOut = doConsoleOut; consoleOut = doConsoleOut;
} }

View File

@ -33,15 +33,9 @@ import java.util.logging.Logger;
@Description(value = "Configure statistics and output of the optimization run. Changes to the data selection state will not take effect during a run.") @Description(value = "Configure statistics and output of the optimization run. Changes to the data selection state will not take effect during a run.")
public class StatisticsParameters implements InterfaceStatisticsParameters, InterfaceNotifyOnInformers, Serializable { public class StatisticsParameters implements InterfaceStatisticsParameters, InterfaceNotifyOnInformers, Serializable {
private static final Logger LOGGER = Logger.getLogger(StatisticsParameters.class.getName()); private static final Logger LOGGER = Logger.getLogger(StatisticsParameters.class.getName());
public final static int VERBOSITY_NONE = 0;
public final static int VERBOSITY_FINAL = 1; private OutputVerbosity outputVerbosity;
public final static int VERBOSITY_KTH_IT = 2; private OutputTo outputTo;
public final static int VERBOSITY_ALL = 3;
SelectedTag outputVerbosity = new SelectedTag("No output", "Final results", "K-th iterations", "All iterations");
public final static int OUTPUT_FILE = 0;
public final static int OUTPUT_WINDOW = 1;
public final static int OUTPUT_FILE_WINDOW = 2;
SelectedTag outputTo = new SelectedTag("File (current dir.)", "Text-window", "Both file and text-window");
private int verbosityK = 10; private int verbosityK = 10;
private int textOutput = 0; private int textOutput = 0;
private int multiRuns = 1; private int multiRuns = 1;
@ -88,8 +82,9 @@ public class StatisticsParameters implements InterfaceStatisticsParameters, Inte
*/ */
public StatisticsParameters() { public StatisticsParameters() {
name = "Statistics"; name = "Statistics";
outputVerbosity.setSelectedTag(VERBOSITY_KTH_IT);
outputTo.setSelectedTag(1); outputVerbosity = OutputVerbosity.KTH_IT;
outputTo = OutputTo.WINDOW;
} }
/** /**
@ -99,8 +94,8 @@ public class StatisticsParameters implements InterfaceStatisticsParameters, Inte
public String toString() { public String toString() {
String ret = "\r\nStatisticsParameter (" + super.toString() + "):\r\nmultiRuns=" + multiRuns String ret = "\r\nStatisticsParameter (" + super.toString() + "):\r\nmultiRuns=" + multiRuns
+ ", textOutput=" + textOutput + ", textOutput=" + textOutput
+ ", verbosity= " + outputVerbosity.getSelectedString() + ", verbosity= " + outputVerbosity
+ "\nTo " + outputTo.getSelectedString() + "\nTo " + outputTo
+ ", " + BeanInspector.toString(graphSel.getStrings()); + ", " + BeanInspector.toString(graphSel.getStrings());
return ret; return ret;
} }
@ -202,17 +197,17 @@ public class StatisticsParameters implements InterfaceStatisticsParameters, Inte
@Override @Override
public void setShowTextOutput(boolean show) { public void setShowTextOutput(boolean show) {
// activate if not activated // activate if not activated
if (show && outputTo.getSelectedTagID() == 0) { if (show && outputTo == OutputTo.FILE) {
outputTo.setSelectedTag(2); outputTo = OutputTo.BOTH;
} // deactivate if activated } // deactivate if activated
else if (!show && outputTo.getSelectedTagID() > 0) { else if (!show) {
outputTo.setSelectedTag(0); outputTo = OutputTo.FILE;
} }
} }
@Override @Override
public boolean isShowTextOutput() { public boolean isShowTextOutput() {
return outputTo.getSelectedTagID() > 0; return outputTo == OutputTo.WINDOW || outputTo == OutputTo.BOTH;
} }
/** /**
@ -248,25 +243,17 @@ public class StatisticsParameters implements InterfaceStatisticsParameters, Inte
} }
@Override @Override
public void setOutputVerbosity(SelectedTag sTag) { @Parameter(description = "Set the data output level.")
public void setOutputVerbosity(OutputVerbosity sTag) {
outputVerbosity = sTag; outputVerbosity = sTag;
GenericObjectEditor.setHideProperty(this.getClass(), "outputVerbosityK", sTag.getSelectedTagID() != VERBOSITY_KTH_IT); GenericObjectEditor.setHideProperty(this.getClass(), "outputVerbosityK", sTag != OutputVerbosity.KTH_IT);
}
public void setOutputVerbosity(int i) {
outputVerbosity.setSelectedTag(i);
GenericObjectEditor.setHideProperty(this.getClass(), "outputVerbosityK", outputVerbosity.getSelectedTagID() != VERBOSITY_KTH_IT);
} }
@Override @Override
public SelectedTag getOutputVerbosity() { public OutputVerbosity getOutputVerbosity() {
return outputVerbosity; return outputVerbosity;
} }
public String outputVerbosityTipText() {
return "Set the data output level.";
}
@Override @Override
public int getOutputVerbosityK() { public int getOutputVerbosityK() {
return verbosityK; return verbosityK;
@ -279,21 +266,16 @@ public class StatisticsParameters implements InterfaceStatisticsParameters, Inte
} }
@Override @Override
public SelectedTag getOutputTo() { public OutputTo getOutputTo() {
return outputTo; return outputTo;
} }
@Override @Override
public void setOutputTo(SelectedTag tag) { @Parameter(description = "Set the output destination; to deactivate output, set verbosity to none.")
public void setOutputTo(OutputTo tag) {
outputTo = tag; outputTo = tag;
} }
@Parameter(description = "Set the output destination; to deactivate output, set verbosity to none.")
public void setOutputTo(int i) {
outputTo.setSelectedTag(i);
}
@Override @Override
public StringSelection getFieldSelection() { public StringSelection getFieldSelection() {
return graphSel; return graphSel;

View File

@ -17,8 +17,6 @@ import java.util.List;
* @see AbstractStatistics * @see AbstractStatistics
*/ */
public class StatisticsStandalone extends AbstractStatistics implements InterfaceStatistics, Serializable { public class StatisticsStandalone extends AbstractStatistics implements InterfaceStatistics, Serializable {
private static final long serialVersionUID = -8451652609212653368L;
private ArrayList<ArrayList<Object[]>> resultData = null; private ArrayList<ArrayList<Object[]>> resultData = null;
private ArrayList<String> resultHeaderStrings = null; private ArrayList<String> resultHeaderStrings = null;
private boolean collectData = false; private boolean collectData = false;
@ -30,19 +28,19 @@ public class StatisticsStandalone extends AbstractStatistics implements Interfac
} }
public StatisticsStandalone(String resultFileName) { public StatisticsStandalone(String resultFileName) {
this(resultFileName, 1, resultFileName == null ? StatisticsParameters.VERBOSITY_NONE : StatisticsParameters.VERBOSITY_FINAL, false); this(resultFileName, 1, resultFileName == null ? InterfaceStatisticsParameters.OutputVerbosity.NONE : InterfaceStatisticsParameters.OutputVerbosity.FINAL, false);
} }
public StatisticsStandalone(String resultFileName, int multiRuns, int verbosity, boolean outputAllFieldsAsText) { public StatisticsStandalone(String resultFileName, int multiRuns, InterfaceStatisticsParameters.OutputVerbosity verbosity, boolean outputAllFieldsAsText) {
this(StatisticsParameters.getInstance(false)); this(StatisticsParameters.getInstance(false));
statisticsParameter.setMultiRuns(multiRuns); statisticsParameter.setMultiRuns(multiRuns);
statisticsParameter.setOutputVerbosity(statisticsParameter.getOutputVerbosity().setSelectedTag(verbosity)); statisticsParameter.setOutputVerbosity(verbosity);
statisticsParameter.setResultFilePrefix(resultFileName); statisticsParameter.setResultFilePrefix(resultFileName);
statisticsParameter.setOutputAllFieldsAsText(outputAllFieldsAsText); statisticsParameter.setOutputAllFieldsAsText(outputAllFieldsAsText);
if (resultFileName == null) { if (resultFileName == null) {
statisticsParameter.getOutputTo().setSelectedTag(StatisticsParameters.OUTPUT_WINDOW); statisticsParameter.setOutputTo(InterfaceStatisticsParameters.OutputTo.WINDOW);
} else { } else {
statisticsParameter.setOutputTo(statisticsParameter.getOutputTo().setSelectedTag(StatisticsParameters.OUTPUT_FILE)); statisticsParameter.setOutputTo(InterfaceStatisticsParameters.OutputTo.FILE);
} }
} }

View File

@ -14,6 +14,7 @@ import eva2.optimization.operator.selection.SelectBestIndividuals;
import eva2.optimization.operator.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.population.InterfaceSolutionSet; import eva2.optimization.population.InterfaceSolutionSet;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
import eva2.optimization.statistics.InterfaceStatisticsParameters;
import eva2.optimization.statistics.StatisticsStandalone; import eva2.optimization.statistics.StatisticsStandalone;
import eva2.optimization.strategies.GeneticAlgorithm; import eva2.optimization.strategies.GeneticAlgorithm;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
@ -88,7 +89,7 @@ public class ERPStarter {
if (startGUI) { if (startGUI) {
Main.initClientGUI(params, null, null, null); Main.initClientGUI(params, null, null, null);
} else { } else {
OptimizerRunnable rnbl = new OptimizerRunnable(params, new StatisticsStandalone(outputFilePrefix, 1, 3, true), false); OptimizerRunnable rnbl = new OptimizerRunnable(params, new StatisticsStandalone(outputFilePrefix, 1, InterfaceStatisticsParameters.OutputVerbosity.ALL, true), false);
// actually start the optimization // actually start the optimization
OptimizerFactory.optimize(rnbl); OptimizerFactory.optimize(rnbl);

View File

@ -13,6 +13,7 @@ import eva2.optimization.operator.terminators.PopulationMeasureTerminator.Change
import eva2.optimization.operator.terminators.PopulationMeasureTerminator.DirectionTypeEnum; import eva2.optimization.operator.terminators.PopulationMeasureTerminator.DirectionTypeEnum;
import eva2.optimization.operator.terminators.PopulationMeasureTerminator.StagnationTypeEnum; import eva2.optimization.operator.terminators.PopulationMeasureTerminator.StagnationTypeEnum;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
import eva2.optimization.statistics.InterfaceStatisticsParameters;
import eva2.optimization.statistics.InterfaceTextListener; import eva2.optimization.statistics.InterfaceTextListener;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.util.annotation.Description; import eva2.util.annotation.Description;
@ -40,7 +41,7 @@ public class MatlabProblem extends AbstractOptimizationProblem implements Interf
transient PrintStream dos = null; transient PrintStream dos = null;
private double range[][] = null; private double range[][] = null;
private static String defTestOut = "matlabproblem-debug.log"; private static String defTestOut = "matlabproblem-debug.log";
int verbosityLevel = 0; InterfaceStatisticsParameters.OutputVerbosity verbosityLevel = InterfaceStatisticsParameters.OutputVerbosity.NONE;
boolean outputAllStatsField = true; boolean outputAllStatsField = true;
private MatlabEvalMediator handler = null; private MatlabEvalMediator handler = null;
private MatlabProblemDataTypeEnum dataType = MatlabProblemDataTypeEnum.typeDouble; private MatlabProblemDataTypeEnum dataType = MatlabProblemDataTypeEnum.typeDouble;
@ -216,14 +217,6 @@ public class MatlabProblem extends AbstractOptimizationProblem implements Interf
} }
} }
public void setStatsOutput(int verboLevel) {
if ((verboLevel >= 0) && (verboLevel <= 3)) {
verbosityLevel = verboLevel;
} else {
System.err.println("Error, invalid verbosity level for statistics output!");
}
}
public String jmiInterfaceNameTipText() { public String jmiInterfaceNameTipText() {
return "Name of the JEInterface instance in Matlab"; return "Name of the JEInterface instance in Matlab";
} }
@ -322,11 +315,11 @@ public class MatlabProblem extends AbstractOptimizationProblem implements Interf
log("Setting text listener, verbo " + verbosityLevel + "\n"); log("Setting text listener, verbo " + verbosityLevel + "\n");
runnable.setTextListener(this); runnable.setTextListener(this);
runnable.setVerbosityLevel(verbosityLevel); runnable.setVerbosityLevel(verbosityLevel);
if (verbosityLevel > 0) { if (verbosityLevel != InterfaceStatisticsParameters.OutputVerbosity.NONE) {
runnable.setOutputTo(2); runnable.setOutputTo(InterfaceStatisticsParameters.OutputTo.BOTH);
} // both file + window } // both file + window
else { else {
runnable.setOutputTo(1); runnable.setOutputTo(InterfaceStatisticsParameters.OutputTo.WINDOW);
} // only window } // only window
runnable.setOutputFullStatsToText(outputAllStatsField); runnable.setOutputFullStatsToText(outputAllStatsField);
@ -535,7 +528,7 @@ public class MatlabProblem extends AbstractOptimizationProblem implements Interf
@Override @Override
public void print(String str) { public void print(String str) {
if (verbosityLevel > 0) { if (verbosityLevel != InterfaceStatisticsParameters.OutputVerbosity.NONE) {
// matlab displays sysout output in the command window, so we simply use this channel // matlab displays sysout output in the command window, so we simply use this channel
System.out.print(str); System.out.print(str);
} }

View File

@ -3,6 +3,7 @@ package eva2.problems;
import eva2.OptimizerRunnable; import eva2.OptimizerRunnable;
import eva2.gui.BeanInspector; import eva2.gui.BeanInspector;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.statistics.InterfaceStatisticsParameters;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
@ -45,7 +46,7 @@ final class WaitForEvARunnable implements Runnable {
mp.log("reported results.\n"); mp.log("reported results.\n");
mp.notifyFinished(); mp.notifyFinished();
mp.log("notified finish.\n"); mp.log("notified finish.\n");
if (mp.verbosityLevel > 0) { if (mp.verbosityLevel != InterfaceStatisticsParameters.OutputVerbosity.NONE) {
System.out.println("Optimization finished: " + mp.getInfoString()); System.out.println("Optimization finished: " + mp.getInfoString());
} }
} catch (Exception e) { } catch (Exception e) {