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
*/
public void setVerbosityLevel(int vLev) {
if (vLev >= 0 && vLev < proc.getStatistics().getStatisticsParameter().getOutputVerbosity().getTags().length) {
proc.getStatistics().getStatisticsParameter().getOutputVerbosity().setSelectedTag(vLev);
} else {
System.err.println("Invalid verbosity leveln in OptimizerRunnable.setVerbosityLevel!");
}
public void setVerbosityLevel(InterfaceStatisticsParameters.OutputVerbosity vLev) {
proc.getStatistics().getStatisticsParameter().setOutputVerbosity(vLev);
}
/**
@ -267,7 +263,7 @@ public class OptimizerRunnable implements Runnable {
*
* @param outp
*/
public void setOutputTo(int outp) {
public void setOutputTo(InterfaceStatisticsParameters.OutputTo 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.InterfaceTerminator;
import eva2.optimization.population.Population;
import eva2.optimization.statistics.InterfaceStatisticsParameters;
import eva2.optimization.statistics.StatisticsParameters;
import eva2.problems.*;
import eva2.optimization.statistics.InterfaceTextListener;
@ -814,7 +815,7 @@ public class PostProcess {
*/
private static void runPP(OptimizerRunnable rnbl) {
rnbl.getOptimizationParameters().setDoPostProcessing(false);
rnbl.setVerbosityLevel(StatisticsParameters.VERBOSITY_NONE);
rnbl.setVerbosityLevel(InterfaceStatisticsParameters.OutputVerbosity.NONE);
ppRunnables.add(rnbl);
rnbl.run();
rnbl.getOptimizationParameters().setDoPostProcessing(true);

View File

@ -200,7 +200,7 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
String startDate = getDateString();
// open the result file:
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("")) {
String fnameBase = makeOutputFileName(statisticsParameter.getResultFilePrefix(), infoString, startDate);
int cnt = 0;
@ -233,7 +233,7 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
}
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) {
@ -648,7 +648,7 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
resultOut.print(s);
}
for (InterfaceTextListener l : textListeners) {
if (statisticsParameter.getOutputTo().getSelectedTagID() >= 1) {
if (statisticsParameter.getOutputTo() != InterfaceStatisticsParameters.OutputTo.FILE) {
l.print(s);
}
}
@ -1205,22 +1205,24 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
* @return
*/
private boolean printLineByVerbosity(int iteration) {
return (statisticsParameter.getOutputVerbosity().getSelectedTagID() > StatisticsParameters.VERBOSITY_KTH_IT)
|| ((statisticsParameter.getOutputVerbosity().getSelectedTagID() == StatisticsParameters.VERBOSITY_KTH_IT)
return (statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.ALL)
|| ((statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.KTH_IT)
&& (isKthRun(iteration, statisticsParameter.getOutputVerbosityK())));
}
private boolean printRunIntroVerbosity() {
return (statisticsParameter.getOutputVerbosity().getSelectedTagID() >= StatisticsParameters.VERBOSITY_KTH_IT)
|| (optRunsPerformed == 0 && (statisticsParameter.getOutputVerbosity().getSelectedTagID() >= StatisticsParameters.VERBOSITY_FINAL));
return (statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.ALL) ||
(statisticsParameter.getOutputVerbosity() == InterfaceStatisticsParameters.OutputVerbosity.KTH_IT)
|| (optRunsPerformed == 0 && (statisticsParameter.getOutputVerbosity() != InterfaceStatisticsParameters.OutputVerbosity.NONE));
}
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() {
return (statisticsParameter.getOutputVerbosity().getSelectedTagID() > StatisticsParameters.VERBOSITY_NONE);
return (statisticsParameter.getOutputVerbosity() != InterfaceStatisticsParameters.OutputVerbosity.NONE);
}
private boolean isKthRun(int i, int k) {
@ -1240,7 +1242,8 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
}
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) {

View File

@ -1,6 +1,5 @@
package eva2.optimization.statistics;
import eva2.tools.SelectedTag;
import eva2.tools.StringSelection;
/**
@ -51,15 +50,43 @@ public interface InterfaceStatisticsParameters {
void setOutputAllFieldsAsText(boolean bShowFullText);
void setOutputVerbosity(SelectedTag sTag);
void setOutputVerbosity(OutputVerbosity sTag);
SelectedTag getOutputVerbosity();
OutputVerbosity getOutputVerbosity();
int getOutputVerbosityK();
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() {
bestIndividualAllover = null;
sParams = new StatisticsParameters();
sParams.setOutputVerbosityK(StatisticsParameters.VERBOSITY_NONE);
sParams.setOutputVerbosityK(0);
}
public StatisticsDummy(boolean doConsoleOut) {
bestIndividualAllover = null;
sParams = new StatisticsParameters();
sParams.setOutputVerbosityK(StatisticsParameters.VERBOSITY_NONE);
sParams.setOutputVerbosityK(0);
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.")
public class StatisticsParameters implements InterfaceStatisticsParameters, InterfaceNotifyOnInformers, Serializable {
private static final Logger LOGGER = Logger.getLogger(StatisticsParameters.class.getName());
public final static int VERBOSITY_NONE = 0;
public final static int VERBOSITY_FINAL = 1;
public final static int VERBOSITY_KTH_IT = 2;
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 OutputVerbosity outputVerbosity;
private OutputTo outputTo;
private int verbosityK = 10;
private int textOutput = 0;
private int multiRuns = 1;
@ -88,8 +82,9 @@ public class StatisticsParameters implements InterfaceStatisticsParameters, Inte
*/
public StatisticsParameters() {
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() {
String ret = "\r\nStatisticsParameter (" + super.toString() + "):\r\nmultiRuns=" + multiRuns
+ ", textOutput=" + textOutput
+ ", verbosity= " + outputVerbosity.getSelectedString()
+ "\nTo " + outputTo.getSelectedString()
+ ", verbosity= " + outputVerbosity
+ "\nTo " + outputTo
+ ", " + BeanInspector.toString(graphSel.getStrings());
return ret;
}
@ -202,17 +197,17 @@ public class StatisticsParameters implements InterfaceStatisticsParameters, Inte
@Override
public void setShowTextOutput(boolean show) {
// activate if not activated
if (show && outputTo.getSelectedTagID() == 0) {
outputTo.setSelectedTag(2);
if (show && outputTo == OutputTo.FILE) {
outputTo = OutputTo.BOTH;
} // deactivate if activated
else if (!show && outputTo.getSelectedTagID() > 0) {
outputTo.setSelectedTag(0);
else if (!show) {
outputTo = OutputTo.FILE;
}
}
@Override
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
public void setOutputVerbosity(SelectedTag sTag) {
@Parameter(description = "Set the data output level.")
public void setOutputVerbosity(OutputVerbosity sTag) {
outputVerbosity = sTag;
GenericObjectEditor.setHideProperty(this.getClass(), "outputVerbosityK", sTag.getSelectedTagID() != VERBOSITY_KTH_IT);
}
public void setOutputVerbosity(int i) {
outputVerbosity.setSelectedTag(i);
GenericObjectEditor.setHideProperty(this.getClass(), "outputVerbosityK", outputVerbosity.getSelectedTagID() != VERBOSITY_KTH_IT);
GenericObjectEditor.setHideProperty(this.getClass(), "outputVerbosityK", sTag != OutputVerbosity.KTH_IT);
}
@Override
public SelectedTag getOutputVerbosity() {
public OutputVerbosity getOutputVerbosity() {
return outputVerbosity;
}
public String outputVerbosityTipText() {
return "Set the data output level.";
}
@Override
public int getOutputVerbosityK() {
return verbosityK;
@ -279,21 +266,16 @@ public class StatisticsParameters implements InterfaceStatisticsParameters, Inte
}
@Override
public SelectedTag getOutputTo() {
public OutputTo getOutputTo() {
return outputTo;
}
@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;
}
@Parameter(description = "Set the output destination; to deactivate output, set verbosity to none.")
public void setOutputTo(int i) {
outputTo.setSelectedTag(i);
}
@Override
public StringSelection getFieldSelection() {
return graphSel;

View File

@ -17,8 +17,6 @@ import java.util.List;
* @see AbstractStatistics
*/
public class StatisticsStandalone extends AbstractStatistics implements InterfaceStatistics, Serializable {
private static final long serialVersionUID = -8451652609212653368L;
private ArrayList<ArrayList<Object[]>> resultData = null;
private ArrayList<String> resultHeaderStrings = null;
private boolean collectData = false;
@ -30,19 +28,19 @@ public class StatisticsStandalone extends AbstractStatistics implements Interfac
}
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));
statisticsParameter.setMultiRuns(multiRuns);
statisticsParameter.setOutputVerbosity(statisticsParameter.getOutputVerbosity().setSelectedTag(verbosity));
statisticsParameter.setOutputVerbosity(verbosity);
statisticsParameter.setResultFilePrefix(resultFileName);
statisticsParameter.setOutputAllFieldsAsText(outputAllFieldsAsText);
if (resultFileName == null) {
statisticsParameter.getOutputTo().setSelectedTag(StatisticsParameters.OUTPUT_WINDOW);
statisticsParameter.setOutputTo(InterfaceStatisticsParameters.OutputTo.WINDOW);
} 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.population.InterfaceSolutionSet;
import eva2.optimization.population.Population;
import eva2.optimization.statistics.InterfaceStatisticsParameters;
import eva2.optimization.statistics.StatisticsStandalone;
import eva2.optimization.strategies.GeneticAlgorithm;
import eva2.optimization.strategies.InterfaceOptimizer;
@ -88,7 +89,7 @@ public class ERPStarter {
if (startGUI) {
Main.initClientGUI(params, null, null, null);
} 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
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.StagnationTypeEnum;
import eva2.optimization.population.Population;
import eva2.optimization.statistics.InterfaceStatisticsParameters;
import eva2.optimization.statistics.InterfaceTextListener;
import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.util.annotation.Description;
@ -40,7 +41,7 @@ public class MatlabProblem extends AbstractOptimizationProblem implements Interf
transient PrintStream dos = null;
private double range[][] = null;
private static String defTestOut = "matlabproblem-debug.log";
int verbosityLevel = 0;
InterfaceStatisticsParameters.OutputVerbosity verbosityLevel = InterfaceStatisticsParameters.OutputVerbosity.NONE;
boolean outputAllStatsField = true;
private MatlabEvalMediator handler = null;
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() {
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");
runnable.setTextListener(this);
runnable.setVerbosityLevel(verbosityLevel);
if (verbosityLevel > 0) {
runnable.setOutputTo(2);
if (verbosityLevel != InterfaceStatisticsParameters.OutputVerbosity.NONE) {
runnable.setOutputTo(InterfaceStatisticsParameters.OutputTo.BOTH);
} // both file + window
else {
runnable.setOutputTo(1);
runnable.setOutputTo(InterfaceStatisticsParameters.OutputTo.WINDOW);
} // only window
runnable.setOutputFullStatsToText(outputAllStatsField);
@ -535,7 +528,7 @@ public class MatlabProblem extends AbstractOptimizationProblem implements Interf
@Override
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
System.out.print(str);
}

View File

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