Random cleanup and start of CLI log implementation.
This commit is contained in:
parent
9ea3f4d464
commit
a2ddf25ce6
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user