Random cleanup and start of CLI log implementation.

This commit is contained in:
Fabian Becker 2014-11-12 19:23:21 +01:00
parent 9ea3f4d464
commit a2ddf25ce6
11 changed files with 49 additions and 49 deletions

View File

@ -6,11 +6,15 @@ import eva2.optimization.operator.terminators.InterfaceTerminator;
import eva2.optimization.statistics.InterfaceStatisticsParameters; import eva2.optimization.statistics.InterfaceStatisticsParameters;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.problems.InterfaceOptimizationProblem; 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.IOException;
import java.io.OutputStream; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
/** /**
* *
@ -25,15 +29,27 @@ public class Main {
InterfaceOptimizer optimizer = parameters.getOptimizer(); InterfaceOptimizer optimizer = parameters.getOptimizer();
InterfaceOptimizationProblem problem = parameters.getProblem(); InterfaceOptimizationProblem problem = parameters.getProblem();
OutputStream fileStream = null; LinkedHashMap<String, Object> 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<LinkedHashMap<String, Object>> runs = new ArrayList<>();
optimizationLog.put("runs", runs);
FileWriter fw;
BufferedWriter bw = null;
try { try {
fileStream = new FileOutputStream("derp.yml"); fw = new FileWriter("derp.yml");
bw = new BufferedWriter(fw);
} catch (IOException ex) { } catch (IOException ex) {
System.out.println(ex.getMessage()); System.out.println(ex.getMessage());
System.exit(0); System.exit(0);
} }
optimizer.addPopulationChangedEventListener(new OptimizationLogger(parameters, fileStream)); //optimizer.addPopulationChangedEventListener(new OptimizationLogger(parameters, ));
for (int i = 0; i < statisticsParameters.getMultiRuns(); i++) { for (int i = 0; i < statisticsParameters.getMultiRuns(); i++) {
problem.initializeProblem(); problem.initializeProblem();
@ -53,5 +69,12 @@ public class Main {
System.out.println(Arrays.toString(((InterfaceDataTypeDouble)optimizer.getPopulation().getBestEAIndividual()).getDoubleData())); System.out.println(Arrays.toString(((InterfaceDataTypeDouble)optimizer.getPopulation().getBestEAIndividual()).getDoubleData()));
} }
try {
bw.write(new Yaml().dump(optimizationLog));
bw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
} }
} }

View File

@ -5,6 +5,7 @@ import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.population.InterfacePopulationChangedEventListener; import eva2.optimization.population.InterfacePopulationChangedEventListener;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.LinkedHashMap;
/** /**
* *
@ -12,10 +13,12 @@ import java.io.OutputStream;
public class OptimizationLogger implements InterfacePopulationChangedEventListener, OptimizationStateListener { public class OptimizationLogger implements InterfacePopulationChangedEventListener, OptimizationStateListener {
private final OutputStream outputStream; private final OutputStream outputStream;
private final InterfaceOptimizationParameters optimizationParameters; private final InterfaceOptimizationParameters optimizationParameters;
private LinkedHashMap<String, Object> optimizationData;
public OptimizationLogger(InterfaceOptimizationParameters optimizationParameters, OutputStream outputStream) { public OptimizationLogger(InterfaceOptimizationParameters optimizationParameters, OutputStream outputStream) {
this.optimizationParameters = optimizationParameters; this.optimizationParameters = optimizationParameters;
this.outputStream = outputStream; this.outputStream = outputStream;
this.optimizationData = new LinkedHashMap<>(5);
} }
@Override @Override

View File

@ -1,6 +1,5 @@
package eva2.gui.plot; package eva2.gui.plot;
import eva2.gui.Exp;
import eva2.gui.InterfaceSelectablePointIcon; import eva2.gui.InterfaceSelectablePointIcon;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.mocco.paretofrontviewer.InterfaceRefPointListener; import eva2.optimization.mocco.paretofrontviewer.InterfaceRefPointListener;

View File

@ -25,8 +25,7 @@ public class Graph implements Serializable {
} }
/** /**
* @param Info *
* @param stroke
*/ */
public String getInfo() { public String getInfo() {
return infoString; 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 * @return true if the graph could be added directly or false if the graph was added by force
* losing some data points * losing some data points
* @see PlotInterface.addGraph * @see PlotInterface#addGraph
*/ */
public boolean addGraph(Graph x) { public boolean addGraph(Graph x) {
boolean useForce = false; boolean useForce = false;

View File

@ -69,20 +69,6 @@ public class GraphPointSet {
public int getSize() { public int getSize() {
return x.length; 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; private int colorOffset = 0;
@ -104,8 +90,7 @@ public class GraphPointSet {
/** /**
* *
*/ */
public GraphPointSet(/* int size */int GraphLabel, DArea Area) { public GraphPointSet(int GraphLabel, DArea Area) {
// System.out.println("Constructor GraphPointSet "+ GraphLabel);
cachex = new double[cacheSize]; cachex = new double[cacheSize];
cachey = new double[cacheSize]; cachey = new double[cacheSize];
area = Area; area = Area;
@ -143,7 +128,6 @@ public class GraphPointSet {
* @param y * @param y
*/ */
public void addDPoint(double x, double y) { public void addDPoint(double x, double y) {
// System.out.println(" "+x+" "+y);
if (cacheIndex == cacheSize) { if (cacheIndex == cacheSize) {
for (int i = 0; i < cacheSize; i++) { for (int i = 0; i < cacheSize; i++) {
connectedPointSet.addDPoint(cachex[i], cachey[i]); connectedPointSet.addDPoint(cachex[i], cachey[i]);
@ -176,10 +160,8 @@ public class GraphPointSet {
public void addGraph(GraphPointSet set, DMeasures measures, boolean useForce) { public void addGraph(GraphPointSet set, DMeasures measures, boolean useForce) {
if (set.connectedPointSet.getSize() != connectedPointSet.getSize() if (set.connectedPointSet.getSize() != connectedPointSet.getSize()
&& connectedPointSet.getSize() != 0 && !useForce) { && connectedPointSet.getSize() != 0 && !useForce) {
System.err System.err.println("WARNING addGraph not possible, lost last graph");
.println("WARNING addGraph not possible, lost last graph"); System.err.println(" connectedPointSet.getSize() " + connectedPointSet.getSize());
System.err.println(" connectedPointSet.getSize() "
+ connectedPointSet.getSize());
return; return;
} }
if (set.getPointSet().getSize() == 0) { if (set.getPointSet().getSize() == 0) {

View File

@ -1,12 +1,13 @@
package eva2.optimization.statistics; package eva2.optimization.statistics;
import eva2.gui.BeanInspector; import eva2.gui.BeanInspector;
import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.IndividualInterface; import eva2.optimization.individuals.IndividualInterface;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
import eva2.optimization.population.PopulationInterface; import eva2.optimization.population.PopulationInterface;
import eva2.problems.InterfaceAdditionalPopulationInformer;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.problems.InterfaceAdditionalPopulationInformer;
import eva2.tools.Pair; import eva2.tools.Pair;
import eva2.tools.StringSelection; import eva2.tools.StringSelection;
import eva2.tools.StringTools; 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[] currentStatHeader = null; // the header Strings of the currently provided data
protected String[] currentStatMetaInfo = null; // meta information on the statistical data protected String[] currentStatMetaInfo = null; // meta information on the statistical data
private Double[] statDataSumOverAll = null; private Double[] statDataSumOverAll = null;
// , lastAdditionalInfoSums=null;
// say whether the object should be written to a file every time // say whether the object should be written to a file every time
private boolean saveParams = true; private boolean saveParams = true;
@ -228,8 +228,7 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
*/ */
public static String getDateString() { public static String getDateString() {
SimpleDateFormat formatter = new SimpleDateFormat("E'_'yyyy.MM.dd'_at_'HH.mm.ss"); SimpleDateFormat formatter = new SimpleDateFormat("E'_'yyyy.MM.dd'_at_'HH.mm.ss");
String dt = formatter.format(new Date()); return formatter.format(new Date());
return dt;
} }
protected boolean doFileOutput() { protected boolean doFileOutput() {
@ -251,7 +250,7 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
} }
@Override @Override
public void startOptimizationPerformed(String infoString, int runNumber, Object params, List<InterfaceAdditionalPopulationInformer> informerList) { public void startOptimizationPerformed(String infoString, int runNumber, InterfaceOptimizationParameters params, List<InterfaceAdditionalPopulationInformer> informerList) {
if (runNumber == 0) { if (runNumber == 0) {
// store the initial graph selection state, so that modifications during runtime cannot cause inconsistencies // store the initial graph selection state, so that modifications during runtime cannot cause inconsistencies

View File

@ -1,10 +1,11 @@
package eva2.optimization.statistics; package eva2.optimization.statistics;
import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.individuals.IndividualInterface; import eva2.optimization.individuals.IndividualInterface;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
import eva2.optimization.population.PopulationInterface; import eva2.optimization.population.PopulationInterface;
import eva2.problems.InterfaceAdditionalPopulationInformer;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.problems.InterfaceAdditionalPopulationInformer;
import java.util.List; import java.util.List;
@ -15,7 +16,7 @@ public interface InterfaceStatistics {
/** /**
* Initialize statistics computations. * Initialize statistics computations.
*/ */
void startOptimizationPerformed(String infoString, int runNumber, Object params, List<InterfaceAdditionalPopulationInformer> informerList); // called from processor void startOptimizationPerformed(String infoString, int runNumber, InterfaceOptimizationParameters params, List<InterfaceAdditionalPopulationInformer> informerList); // called from processor
/** /**
* Finalize statistics computations. * Finalize statistics computations.

View File

@ -1,11 +1,12 @@
package eva2.optimization.statistics; package eva2.optimization.statistics;
import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.IndividualInterface; import eva2.optimization.individuals.IndividualInterface;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
import eva2.optimization.population.PopulationInterface; import eva2.optimization.population.PopulationInterface;
import eva2.problems.InterfaceAdditionalPopulationInformer;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.problems.InterfaceAdditionalPopulationInformer;
import java.util.List; import java.util.List;
@ -92,7 +93,7 @@ public class StatisticsDummy implements InterfaceStatistics, InterfaceTextListen
@Override @Override
public void startOptimizationPerformed(String infoString, int runNumber, public void startOptimizationPerformed(String infoString, int runNumber,
Object params, List<InterfaceAdditionalPopulationInformer> informerList) { InterfaceOptimizationParameters params, List<InterfaceAdditionalPopulationInformer> informerList) {
if (runNumber == 0) { if (runNumber == 0) {
bestIndividualAllover = null; bestIndividualAllover = null;
} }

View File

@ -7,6 +7,7 @@ import eva2.gui.plot.Graph;
import eva2.gui.plot.GraphWindow; import eva2.gui.plot.GraphWindow;
import eva2.gui.plot.Plot; import eva2.gui.plot.Plot;
import eva2.gui.plot.PlotInterface; import eva2.gui.plot.PlotInterface;
import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.population.PopulationInterface; import eva2.optimization.population.PopulationInterface;
import eva2.problems.InterfaceAdditionalPopulationInformer; import eva2.problems.InterfaceAdditionalPopulationInformer;
import eva2.tools.Pair; import eva2.tools.Pair;
@ -52,7 +53,7 @@ public class StatisticsWithGUI extends AbstractStatistics implements Serializabl
* *
*/ */
@Override @Override
public synchronized void startOptimizationPerformed(String infoString, int runNumber, Object goParams, List<InterfaceAdditionalPopulationInformer> informerList) { public synchronized void startOptimizationPerformed(String infoString, int runNumber, InterfaceOptimizationParameters goParams, List<InterfaceAdditionalPopulationInformer> informerList) {
super.startOptimizationPerformed(infoString, runNumber, goParams, informerList); super.startOptimizationPerformed(infoString, runNumber, goParams, informerList);
graphInfoString = infoString; graphInfoString = infoString;

View File

@ -127,7 +127,7 @@ public class ArtificialBeeColony extends AbstractOptimizer implements Serializab
this.population.incrFunctionCallsBy(this.population.size()); 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; int t = 0, i = 0;
double sumFitness = 0.0; double sumFitness = 0.0;

View File

@ -19,14 +19,6 @@ public class EVAERROR {
System.exit(-1); System.exit(-1);
} }
/**
*
*/
public static void EXIT(String message, Exception ex) {
LOGGER.log(Level.SEVERE, message, ex);
System.exit(-1);
}
/** /**
* *
*/ */