From 7605dacb8a41def20720bdfcb7c783b7db9eaa99 Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Thu, 6 Nov 2014 15:54:57 +0100 Subject: [PATCH] CLI adjustments --- src/eva2/cli/Main.java | 42 ++++++++++++++++++++++++--- src/eva2/cli/OptimizationBuilder.java | 2 -- src/eva2/tools/matlab/JMatLink.java | 40 ++----------------------- 3 files changed, 40 insertions(+), 44 deletions(-) diff --git a/src/eva2/cli/Main.java b/src/eva2/cli/Main.java index 502a8b1b..9589ca2e 100644 --- a/src/eva2/cli/Main.java +++ b/src/eva2/cli/Main.java @@ -1,12 +1,19 @@ package eva2.cli; -import eva2.OptimizerFactory; import eva2.optimization.go.InterfaceOptimizationParameters; -import eva2.optimization.modules.OptimizationParameters; +import eva2.optimization.individuals.InterfaceDataTypeDouble; +import eva2.optimization.operator.terminators.InterfaceTerminator; import eva2.optimization.statistics.InterfaceStatisticsParameters; +import eva2.optimization.strategies.InterfaceOptimizer; +import eva2.problems.InterfaceOptimizationProblem; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Arrays; /** - * Created by becker on 01.11.2014. + * */ public class Main { @@ -14,10 +21,37 @@ public class Main { InterfaceOptimizationParameters parameters = OptimizationBuilder.parseOptimizerArguments(args); InterfaceStatisticsParameters statisticsParameters = OptimizationBuilder.parseStatisticsArguments(args); + InterfaceTerminator terminator = parameters.getTerminator(); + InterfaceOptimizer optimizer = parameters.getOptimizer(); + InterfaceOptimizationProblem problem = parameters.getProblem(); - double[] result = OptimizerFactory.optimizeToDouble((OptimizationParameters)parameters); + OutputStream fileStream = null; + try { + fileStream = new FileOutputStream("derp.yml"); + } catch (IOException ex) { + System.out.println(ex.getMessage()); + System.exit(0); + } + optimizer.addPopulationChangedEventListener(new OptimizationLogger(parameters, fileStream)); + for (int i = 0; i < statisticsParameters.getMultiRuns(); i++) { + problem.initializeProblem(); + problem.initializePopulation(optimizer.getPopulation()); + optimizer.setProblem(problem); + terminator.initialize(problem); + + /** + * This is the main optimization loop. We keep calling + * optimize() until a termination criterion is met or + * the user aborts the optimization manually. + */ + do { + optimizer.optimize(); + } while (!terminator.isTerminated(optimizer.getAllSolutions())); + + System.out.println(Arrays.toString(((InterfaceDataTypeDouble)optimizer.getPopulation().getBestEAIndividual()).getDoubleData())); + } } } diff --git a/src/eva2/cli/OptimizationBuilder.java b/src/eva2/cli/OptimizationBuilder.java index 165e8416..b1f4fe42 100644 --- a/src/eva2/cli/OptimizationBuilder.java +++ b/src/eva2/cli/OptimizationBuilder.java @@ -84,7 +84,6 @@ public final class OptimizationBuilder { for (String key : argumentMap.keySet()) { insertIntoArgumentTree(argumentTree, key, argumentMap.get(key)); } - System.out.println(argumentTree.toString()); return argumentTree; } @@ -150,7 +149,6 @@ public final class OptimizationBuilder { if (getter == null || setter == null || setter.isAnnotationPresent(Hidden.class)) { continue; } - System.out.println(name + " = " + " type = " + type); // We use the name of the descriptor or if possible // one that is given by the @Parameter annotation. diff --git a/src/eva2/tools/matlab/JMatLink.java b/src/eva2/tools/matlab/JMatLink.java index 7cb63202..f34e74c7 100644 --- a/src/eva2/tools/matlab/JMatLink.java +++ b/src/eva2/tools/matlab/JMatLink.java @@ -238,47 +238,11 @@ public class JMatLink extends Thread { // ************** load JMatLink library into memory ********************** static { - // System.out.println("loading !!"); - try { // System.out.println("loading"); - + try { System.loadLibrary("JMatLink"); - - // String - // path="../lib/"+SystemHelper.getOperationSystemName()+"/JMatLink.dll"; - - // System.out.println("load: "+path); - - // System.loadLibrary(path); - - // String libPath = "." + System.getProperty("file.separator", "/"); - - // //libPath += SystemHelper.getOperationSystemName() + - // System.getProperty("file.separator", "/"); - - // libPath += System.mapLibraryName("JMatLink"); - - // - - // // make sure that we have the absolute path - - // libPath = new File(libPath).getAbsolutePath(); - - // - - // System.out.println("load: "+"d:/workingAt/JCompChem/lib/windows/JMatLink.dll"); - - // System.loadLibrary("../lib/windows/JMatLink_old.dll"); - - // System.out.println("loaded"); - - } catch (UnsatisfiedLinkError e) { - - System.err.println("ERROR: Could not load the JMatLink library"); - - e.printStackTrace(); + } catch (UnsatisfiedLinkError ignored) { } - // System.out.println("loading !! end"); }