diff --git a/resources/MatlabInterface/JEInterface-examples.m b/resources/MatlabInterface/JEInterface-examples.m index 4c13e49d..9b9b57a6 100755 --- a/resources/MatlabInterface/JEInterface-examples.m +++ b/resources/MatlabInterface/JEInterface-examples.m @@ -1,11 +1,12 @@ -clear all -clear classes +%% Usage examples for the EvA2 to Matlab interface. +% Author: Marcel Kronfeld, Chair for Cognitive Systems, University of Tuebingen, Germany +% URL: http://www.ra.cs.uni-tuebingen.de/software/EvA2/ % adapt the path settings! -addpath '/home/mkron/workspace/JE2Base/resources/MatlabInterface' -javaaddpath '/home/mkron/workspace/JE2Base/build' -addpath 'C:\Dokumente und Einstellungen\mkron\workspace\JE2Base\resources\MatlabInterface' -javaaddpath 'C:\Dokumente und Einstellungen\mkron\workspace\JE2Base\build' +addpath '/home/user/workspace/MatlabInterface' % .. directory containing @JEInterface +javaaddpath '/home/user/workspace/EvA2Base.jar' % .. the EvA2 base package +% addpath 'C:\Dokumente und Einstellungen\user\workspace\MatlabInterface' % Windows will look differently +% javaaddpath 'C:\Dokumente und Einstellungen\user\workspace\EvA2Base.jar' % Windows will look differently % real valued case R=[-5 -5 -5; 5 5 5]; @@ -28,4 +29,3 @@ JI=JEInterface(@testfun, 'int', R, initR, 5, 'Display', 'iter'); JI=optimize(JI, 3); [sol, fit]=getResult(JI); finalPop=getMultipleResults(JI); - diff --git a/resources/MatlabInterface/testfun.m b/resources/MatlabInterface/testfun.m index e2423bda..0862de5c 100644 --- a/resources/MatlabInterface/testfun.m +++ b/resources/MatlabInterface/testfun.m @@ -1,3 +1,7 @@ +%% Usage examples for the EvA2 to Matlab interface. +% Author: Marcel Kronfeld, Chair for Cognitive Systems, University of Tuebingen, Germany +% URL: http://www.ra.cs.uni-tuebingen.de/software/EvA2/ + function z = testfun(x, y) switch y case 1 % modulated parabola diff --git a/src/eva2/examples/TerminatorExample.java b/src/eva2/examples/TerminatorExample.java new file mode 100644 index 00000000..d0ab85c5 --- /dev/null +++ b/src/eva2/examples/TerminatorExample.java @@ -0,0 +1,31 @@ +package eva2.examples; +import eva2.OptimizerFactory; +import eva2.server.go.problems.F1Problem; +import eva2.server.go.operators.terminators.*; +import eva2.server.go.operators.terminators.PopulationMeasureTerminator.*; + +public class TerminatorExample { + public static void main(String[] args) { + F1Problem f1 = new F1Problem(); + double[] sol; + // A combined terminator for fitness and phenotype convergence + CombinedTerminator convT = new CombinedTerminator( + // fitness-based stagnation period, absolute threshold, consider stagnation + // in both direction (per dim.) or w.r.t. minimization only + new FitnessConvergenceTerminator(0.0001, 1000, StagnationTypeEnum.fitnessCallBased, ChangeTypeEnum.absoluteChange, DirectionTypeEnum.decrease), + new PhenotypeConvergenceTerminator(0.0001, 1000, StagnationTypeEnum.fitnessCallBased, ChangeTypeEnum.absoluteChange, DirectionTypeEnum.bidirectional), + CombinedTerminator.AND); + // Adding an evaluation terminator with OR to the convergence criterion + OptimizerFactory.setTerminator(new CombinedTerminator( + new EvaluationTerminator(20000), + convT, + CombinedTerminator.OR)); + sol = OptimizerFactory.optimizeToDouble(OptimizerFactory.PSO, f1, null); + System.out.println(OptimizerFactory.lastEvalsPerformed() + + " evals performed. " + + OptimizerFactory.terminatedBecause() + + " Found solution: "); + for (int i=0; i ppSols; + + GOParameters esParams = OptimizerFactory.standardCbnES(fm0); + esParams.setTerminator(new EvaluationTerminator(2000)); + esParams.setSeed(0); + best = (AbstractEAIndividual)OptimizerFactory.optimizeToInd(esParams, null); + + System.out.println(esParams.getTerminator().lastTerminationMessage() + "\nFound solution: " + + AbstractEAIndividual.getDefaultDataString(best)); + + // post-process with clustering only + ppSols = OptimizerFactory.postProcessIndVec(new PostProcessParams(0, 0.1, 5)); + System.out.println("After clustering: "); + for (AbstractEAIndividual indy : ppSols) { + System.out.println(AbstractEAIndividual.getDefaultDataString(indy)); + } + + // post-process with clustering and hill climbing + ppSols = OptimizerFactory.postProcessIndVec(new PostProcessParams(1000, 0.1, 5)); + System.out.println("After clustering and local refinement: "); + for (AbstractEAIndividual indy : ppSols) { + System.out.println(AbstractEAIndividual.getDefaultDataString(indy)); + } + }; +} \ No newline at end of file diff --git a/src/eva2/examples/TestingF1PSO.java b/src/eva2/examples/TestingF1PSO.java new file mode 100644 index 00000000..3dcffe15 --- /dev/null +++ b/src/eva2/examples/TestingF1PSO.java @@ -0,0 +1,15 @@ +package eva2.examples; +import eva2.OptimizerFactory; +import eva2.server.go.problems.F1Problem; + +public class TestingF1PSO { + public static void main(String[] args) { + F1Problem f1 = new F1Problem(); + // start a PSO with a runtime of 50000 evaluations + OptimizerFactory.setEvaluationTerminator(50000); + double[] sol = OptimizerFactory.optimizeToDouble(OptimizerFactory.PSO, f1, null); + System.out.println(OptimizerFactory.terminatedBecause() + "\nFound solution: "); + for (int i=0; i