From a2ddf25ce67bb29df6480e8c6682123fc0ef9b15 Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Wed, 12 Nov 2014 19:23:21 +0100 Subject: [PATCH] Random cleanup and start of CLI log implementation. --- src/eva2/cli/Main.java | 33 ++++++++++++++++--- src/eva2/cli/OptimizationLogger.java | 3 ++ src/eva2/gui/plot/FunctionArea.java | 1 - src/eva2/gui/plot/Graph.java | 5 ++- src/eva2/gui/plot/GraphPointSet.java | 24 ++------------ .../statistics/AbstractStatistics.java | 9 +++-- .../statistics/InterfaceStatistics.java | 5 +-- .../statistics/StatisticsDummy.java | 5 +-- .../statistics/StatisticsWithGUI.java | 3 +- .../strategies/ArtificialBeeColony.java | 2 +- src/eva2/tools/EVAERROR.java | 8 ----- 11 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/eva2/cli/Main.java b/src/eva2/cli/Main.java index 9589ca2e..4a8f1601 100644 --- a/src/eva2/cli/Main.java +++ b/src/eva2/cli/Main.java @@ -6,11 +6,15 @@ import eva2.optimization.operator.terminators.InterfaceTerminator; import eva2.optimization.statistics.InterfaceStatisticsParameters; import eva2.optimization.strategies.InterfaceOptimizer; import eva2.problems.InterfaceOptimizationProblem; +import org.yaml.snakeyaml.Yaml; -import java.io.FileOutputStream; +import java.io.BufferedWriter; +import java.io.FileWriter; import java.io.IOException; -import java.io.OutputStream; +import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; /** * @@ -25,15 +29,27 @@ public class Main { InterfaceOptimizer optimizer = parameters.getOptimizer(); InterfaceOptimizationProblem problem = parameters.getProblem(); - OutputStream fileStream = null; + LinkedHashMap optimizationLog = new LinkedHashMap<>(); + // Meta parameters + optimizationLog.put("population_size", parameters.getOptimizer().getPopulation().getTargetSize()); + optimizationLog.put("number_of_runs", statisticsParameters.getMultiRuns()); + optimizationLog.put("seed", parameters.getRandomSeed()); + + // Container for individual runs + List> runs = new ArrayList<>(); + optimizationLog.put("runs", runs); + + FileWriter fw; + BufferedWriter bw = null; try { - fileStream = new FileOutputStream("derp.yml"); + fw = new FileWriter("derp.yml"); + bw = new BufferedWriter(fw); } catch (IOException ex) { System.out.println(ex.getMessage()); System.exit(0); } - optimizer.addPopulationChangedEventListener(new OptimizationLogger(parameters, fileStream)); + //optimizer.addPopulationChangedEventListener(new OptimizationLogger(parameters, )); for (int i = 0; i < statisticsParameters.getMultiRuns(); i++) { problem.initializeProblem(); @@ -53,5 +69,12 @@ public class Main { System.out.println(Arrays.toString(((InterfaceDataTypeDouble)optimizer.getPopulation().getBestEAIndividual()).getDoubleData())); } + + try { + bw.write(new Yaml().dump(optimizationLog)); + bw.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } } } diff --git a/src/eva2/cli/OptimizationLogger.java b/src/eva2/cli/OptimizationLogger.java index e0cbba2f..218ff226 100644 --- a/src/eva2/cli/OptimizationLogger.java +++ b/src/eva2/cli/OptimizationLogger.java @@ -5,6 +5,7 @@ import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.population.InterfacePopulationChangedEventListener; import java.io.OutputStream; +import java.util.LinkedHashMap; /** * @@ -12,10 +13,12 @@ import java.io.OutputStream; public class OptimizationLogger implements InterfacePopulationChangedEventListener, OptimizationStateListener { private final OutputStream outputStream; private final InterfaceOptimizationParameters optimizationParameters; + private LinkedHashMap optimizationData; public OptimizationLogger(InterfaceOptimizationParameters optimizationParameters, OutputStream outputStream) { this.optimizationParameters = optimizationParameters; this.outputStream = outputStream; + this.optimizationData = new LinkedHashMap<>(5); } @Override diff --git a/src/eva2/gui/plot/FunctionArea.java b/src/eva2/gui/plot/FunctionArea.java index 2220ba96..91607a66 100644 --- a/src/eva2/gui/plot/FunctionArea.java +++ b/src/eva2/gui/plot/FunctionArea.java @@ -1,6 +1,5 @@ package eva2.gui.plot; -import eva2.gui.Exp; import eva2.gui.InterfaceSelectablePointIcon; import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.mocco.paretofrontviewer.InterfaceRefPointListener; diff --git a/src/eva2/gui/plot/Graph.java b/src/eva2/gui/plot/Graph.java index 2b6778a0..50bd7c44 100644 --- a/src/eva2/gui/plot/Graph.java +++ b/src/eva2/gui/plot/Graph.java @@ -25,8 +25,7 @@ public class Graph implements Serializable { } /** - * @param Info - * @param stroke + * */ public String getInfo() { return infoString; @@ -77,7 +76,7 @@ public class Graph implements Serializable { * * @return true if the graph could be added directly or false if the graph was added by force * losing some data points - * @see PlotInterface.addGraph + * @see PlotInterface#addGraph */ public boolean addGraph(Graph x) { boolean useForce = false; diff --git a/src/eva2/gui/plot/GraphPointSet.java b/src/eva2/gui/plot/GraphPointSet.java index 3dd2c2c8..17420a52 100644 --- a/src/eva2/gui/plot/GraphPointSet.java +++ b/src/eva2/gui/plot/GraphPointSet.java @@ -69,20 +69,6 @@ public class GraphPointSet { public int getSize() { return x.length; } - - // /** - // * - // */ - // public DPointSet printPoints() { - // for (int i = 0; i < connectedPointSet.getSize();i++) { - // DPoint p = connectedPointSet.getDPoint(i); - // double x = p.x; - // double y = p.y; - // //System.out.println("point "+i+ " x= "+x+"y= "+y); - // } - // return connectedPointSet.getDPointSet(); - // } - } private int colorOffset = 0; @@ -104,8 +90,7 @@ public class GraphPointSet { /** * */ - public GraphPointSet(/* int size */int GraphLabel, DArea Area) { - // System.out.println("Constructor GraphPointSet "+ GraphLabel); + public GraphPointSet(int GraphLabel, DArea Area) { cachex = new double[cacheSize]; cachey = new double[cacheSize]; area = Area; @@ -143,7 +128,6 @@ public class GraphPointSet { * @param y */ public void addDPoint(double x, double y) { - // System.out.println(" "+x+" "+y); if (cacheIndex == cacheSize) { for (int i = 0; i < cacheSize; i++) { connectedPointSet.addDPoint(cachex[i], cachey[i]); @@ -176,10 +160,8 @@ public class GraphPointSet { public void addGraph(GraphPointSet set, DMeasures measures, boolean useForce) { if (set.connectedPointSet.getSize() != connectedPointSet.getSize() && connectedPointSet.getSize() != 0 && !useForce) { - System.err - .println("WARNING addGraph not possible, lost last graph"); - System.err.println(" connectedPointSet.getSize() " - + connectedPointSet.getSize()); + System.err.println("WARNING addGraph not possible, lost last graph"); + System.err.println(" connectedPointSet.getSize() " + connectedPointSet.getSize()); return; } if (set.getPointSet().getSize() == 0) { diff --git a/src/eva2/optimization/statistics/AbstractStatistics.java b/src/eva2/optimization/statistics/AbstractStatistics.java index 401f3f26..d5198285 100644 --- a/src/eva2/optimization/statistics/AbstractStatistics.java +++ b/src/eva2/optimization/statistics/AbstractStatistics.java @@ -1,12 +1,13 @@ package eva2.optimization.statistics; import eva2.gui.BeanInspector; +import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.IndividualInterface; import eva2.optimization.population.Population; import eva2.optimization.population.PopulationInterface; -import eva2.problems.InterfaceAdditionalPopulationInformer; import eva2.optimization.strategies.InterfaceOptimizer; +import eva2.problems.InterfaceAdditionalPopulationInformer; import eva2.tools.Pair; import eva2.tools.StringSelection; import eva2.tools.StringTools; @@ -61,7 +62,6 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter protected String[] currentStatHeader = null; // the header Strings of the currently provided data protected String[] currentStatMetaInfo = null; // meta information on the statistical data private Double[] statDataSumOverAll = null; -// , lastAdditionalInfoSums=null; // say whether the object should be written to a file every time private boolean saveParams = true; @@ -228,8 +228,7 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter */ public static String getDateString() { SimpleDateFormat formatter = new SimpleDateFormat("E'_'yyyy.MM.dd'_at_'HH.mm.ss"); - String dt = formatter.format(new Date()); - return dt; + return formatter.format(new Date()); } protected boolean doFileOutput() { @@ -251,7 +250,7 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter } @Override - public void startOptimizationPerformed(String infoString, int runNumber, Object params, List informerList) { + public void startOptimizationPerformed(String infoString, int runNumber, InterfaceOptimizationParameters params, List informerList) { if (runNumber == 0) { // store the initial graph selection state, so that modifications during runtime cannot cause inconsistencies diff --git a/src/eva2/optimization/statistics/InterfaceStatistics.java b/src/eva2/optimization/statistics/InterfaceStatistics.java index a2438073..ff63bb84 100644 --- a/src/eva2/optimization/statistics/InterfaceStatistics.java +++ b/src/eva2/optimization/statistics/InterfaceStatistics.java @@ -1,10 +1,11 @@ package eva2.optimization.statistics; +import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.individuals.IndividualInterface; import eva2.optimization.population.Population; import eva2.optimization.population.PopulationInterface; -import eva2.problems.InterfaceAdditionalPopulationInformer; import eva2.optimization.strategies.InterfaceOptimizer; +import eva2.problems.InterfaceAdditionalPopulationInformer; import java.util.List; @@ -15,7 +16,7 @@ public interface InterfaceStatistics { /** * Initialize statistics computations. */ - void startOptimizationPerformed(String infoString, int runNumber, Object params, List informerList); // called from processor + void startOptimizationPerformed(String infoString, int runNumber, InterfaceOptimizationParameters params, List informerList); // called from processor /** * Finalize statistics computations. diff --git a/src/eva2/optimization/statistics/StatisticsDummy.java b/src/eva2/optimization/statistics/StatisticsDummy.java index 0da44cd8..149a6a7e 100644 --- a/src/eva2/optimization/statistics/StatisticsDummy.java +++ b/src/eva2/optimization/statistics/StatisticsDummy.java @@ -1,11 +1,12 @@ package eva2.optimization.statistics; +import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.IndividualInterface; import eva2.optimization.population.Population; import eva2.optimization.population.PopulationInterface; -import eva2.problems.InterfaceAdditionalPopulationInformer; import eva2.optimization.strategies.InterfaceOptimizer; +import eva2.problems.InterfaceAdditionalPopulationInformer; import java.util.List; @@ -92,7 +93,7 @@ public class StatisticsDummy implements InterfaceStatistics, InterfaceTextListen @Override public void startOptimizationPerformed(String infoString, int runNumber, - Object params, List informerList) { + InterfaceOptimizationParameters params, List informerList) { if (runNumber == 0) { bestIndividualAllover = null; } diff --git a/src/eva2/optimization/statistics/StatisticsWithGUI.java b/src/eva2/optimization/statistics/StatisticsWithGUI.java index 9effa547..cce85d91 100644 --- a/src/eva2/optimization/statistics/StatisticsWithGUI.java +++ b/src/eva2/optimization/statistics/StatisticsWithGUI.java @@ -7,6 +7,7 @@ import eva2.gui.plot.Graph; import eva2.gui.plot.GraphWindow; import eva2.gui.plot.Plot; import eva2.gui.plot.PlotInterface; +import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.population.PopulationInterface; import eva2.problems.InterfaceAdditionalPopulationInformer; import eva2.tools.Pair; @@ -52,7 +53,7 @@ public class StatisticsWithGUI extends AbstractStatistics implements Serializabl * */ @Override - public synchronized void startOptimizationPerformed(String infoString, int runNumber, Object goParams, List informerList) { + public synchronized void startOptimizationPerformed(String infoString, int runNumber, InterfaceOptimizationParameters goParams, List informerList) { super.startOptimizationPerformed(infoString, runNumber, goParams, informerList); graphInfoString = infoString; diff --git a/src/eva2/optimization/strategies/ArtificialBeeColony.java b/src/eva2/optimization/strategies/ArtificialBeeColony.java index e4b12128..638626e6 100644 --- a/src/eva2/optimization/strategies/ArtificialBeeColony.java +++ b/src/eva2/optimization/strategies/ArtificialBeeColony.java @@ -127,7 +127,7 @@ public class ArtificialBeeColony extends AbstractOptimizer implements Serializab this.population.incrFunctionCallsBy(this.population.size()); /** - * Send onlooker bees to food sources based on fitness proportional probablity + * Send onlooker bees to food sources based on fitness proportional probability */ int t = 0, i = 0; double sumFitness = 0.0; diff --git a/src/eva2/tools/EVAERROR.java b/src/eva2/tools/EVAERROR.java index 8041a198..09ec5b0f 100644 --- a/src/eva2/tools/EVAERROR.java +++ b/src/eva2/tools/EVAERROR.java @@ -19,14 +19,6 @@ public class EVAERROR { System.exit(-1); } - /** - * - */ - public static void EXIT(String message, Exception ex) { - LOGGER.log(Level.SEVERE, message, ex); - System.exit(-1); - } - /** * */