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.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<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 {
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();
}
}
}

View File

@ -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<String, Object> optimizationData;
public OptimizationLogger(InterfaceOptimizationParameters optimizationParameters, OutputStream outputStream) {
this.optimizationParameters = optimizationParameters;
this.outputStream = outputStream;
this.optimizationData = new LinkedHashMap<>(5);
}
@Override

View File

@ -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;

View File

@ -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;

View File

@ -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) {

View File

@ -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<InterfaceAdditionalPopulationInformer> informerList) {
public void startOptimizationPerformed(String infoString, int runNumber, InterfaceOptimizationParameters params, List<InterfaceAdditionalPopulationInformer> informerList) {
if (runNumber == 0) {
// store the initial graph selection state, so that modifications during runtime cannot cause inconsistencies

View File

@ -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<InterfaceAdditionalPopulationInformer> informerList); // called from processor
void startOptimizationPerformed(String infoString, int runNumber, InterfaceOptimizationParameters params, List<InterfaceAdditionalPopulationInformer> informerList); // called from processor
/**
* Finalize statistics computations.

View File

@ -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<InterfaceAdditionalPopulationInformer> informerList) {
InterfaceOptimizationParameters params, List<InterfaceAdditionalPopulationInformer> informerList) {
if (runNumber == 0) {
bestIndividualAllover = null;
}

View File

@ -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<InterfaceAdditionalPopulationInformer> informerList) {
public synchronized void startOptimizationPerformed(String infoString, int runNumber, InterfaceOptimizationParameters goParams, List<InterfaceAdditionalPopulationInformer> informerList) {
super.startOptimizationPerformed(infoString, runNumber, goParams, informerList);
graphInfoString = infoString;

View File

@ -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;

View File

@ -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);
}
/**
*
*/