Files
eva2/src/eva2/cli/Main.java
Fabian Becker ca70b48bd2 Fixed comment fuckup where simple was replaced with eva2.problems.simple
Implements YamlStatistics in cli.Main
A few fixes in the processor to allow GUI-less optimization
2014-11-13 17:49:40 +01:00

146 lines
4.4 KiB
Java

package eva2.cli;
import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.individuals.IndividualInterface;
import eva2.optimization.modules.Processor;
import eva2.optimization.operator.terminators.InterfaceTerminator;
import eva2.optimization.population.Population;
import eva2.optimization.population.PopulationInterface;
import eva2.optimization.statistics.InterfaceStatistics;
import eva2.optimization.statistics.InterfaceStatisticsListener;
import eva2.optimization.statistics.InterfaceStatisticsParameters;
import eva2.optimization.statistics.InterfaceTextListener;
import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.problems.InterfaceAdditionalPopulationInformer;
import eva2.problems.InterfaceOptimizationProblem;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.logging.Logger;
/**
*
*/
public class Main {
public static void main(String[] args) {
InterfaceOptimizationParameters parameters = OptimizationBuilder.parseOptimizerArguments(args);
InterfaceStatisticsParameters statisticsParameters = OptimizationBuilder.parseStatisticsArguments(args);
InterfaceTerminator terminator = parameters.getTerminator();
InterfaceOptimizer optimizer = parameters.getOptimizer();
InterfaceOptimizationProblem problem = parameters.getProblem();
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 {
fw = new FileWriter("derp.yml");
bw = new BufferedWriter(fw);
} catch (IOException ex) {
System.out.println(ex.getMessage());
System.exit(0);
}
Processor optimizationProcessor = new Processor(new YamlStatistics(statisticsParameters), parameters);
optimizationProcessor.setSaveParams(false);
optimizationProcessor.startOptimization();
optimizationProcessor.runOptimizationOnce();
}
}
final class YamlStatistics implements InterfaceStatistics {
private static final Logger LOGGER = Logger.getLogger(YamlStatistics.class.getName());
private InterfaceStatisticsParameters statisticsParameters;
public YamlStatistics(InterfaceStatisticsParameters statisticsParameters) {
super();
this.statisticsParameters = statisticsParameters;
}
@Override
public void startOptimizationPerformed(String infoString, int runNumber, InterfaceOptimizationParameters params, List<InterfaceAdditionalPopulationInformer> informerList) {
}
@Override
public void stopOptimizationPerformed(boolean normal, String stopMessage) {
}
@Override
public void addDataListener(InterfaceStatisticsListener listener) {
}
@Override
public boolean removeDataListener(InterfaceStatisticsListener listener) {
return false;
}
@Override
public void addTextListener(InterfaceTextListener listener) {
}
@Override
public boolean removeTextListener(InterfaceTextListener listener) {
return false;
}
@Override
public void printToTextListener(String s) {
System.out.println(s);
}
@Override
public void createNextGenerationPerformed(PopulationInterface Pop, InterfaceOptimizer opt, List<InterfaceAdditionalPopulationInformer> informerList) {
}
@Override
public void createNextGenerationPerformed(double[] bestFit, double[] worstFit, int calls) {
}
@Override
public InterfaceStatisticsParameters getStatisticsParameters() {
return statisticsParameters;
}
@Override
public IndividualInterface getRunBestSolution() {
return null;
}
@Override
public IndividualInterface getBestSolution() {
return null;
}
@Override
public double[] getBestFitness() {
return new double[0];
}
@Override
public void postProcessingPerformed(Population resultPop) {
}
}