fr.inria.optimization.cmaes.examples
Class CMAExample1

java.lang.Object
  extended by fr.inria.optimization.cmaes.examples.CMAExample1

public class CMAExample1
extends java.lang.Object

A very short example program how to use the class CMAEvolutionStrategy. The code is given below, see also the code snippet in the documentation of class CMAEvolutionStrategy. For implementation of restarts see CMAExample2.

public class CMAExample1 {
        public static void main(String[] args) {
                IObjectiveFunction fitfun = new Rosenbrock();

                // new a CMA-ES and set some initial values
                CMAEvolutionStrategy cma = new CMAEvolutionStrategy();
                cma.readProperties(); // read options, see file CMAEvolutionStrategy.properties
                cma.setDimension(22); // overwrite some loaded properties
                cma.setInitialX(0.5); // in each dimension, also setTypicalX can be used
                cma.setInitialStandardDeviation(0.2); // also a mandatory setting 
                cma.options.stopFitness = 1e-9;       // optional setting

                // initialize cma and get fitness array to fill in later
                double[] fitness = cma.init();  // new double[cma.parameters.getPopulationSize()];

                // initial output to files
                cma.writeToDefaultFilesHeaders(0); // 0 == overwrites old files

                // iteration loop
                while(cma.stopConditions.getNumber() == 0) {

                        // core iteration step 
                        double[][] pop = cma.samplePopulation(); // get a new population of solutions
                        for(int i = 0; i < pop.length; ++i) {    // for each candidate solution i
                                while (!fitfun.isFeasible(pop[i]))   //    test whether solution is feasible,  
                                        pop[i] = cma.resampleSingle(i);  //       re-sample solution until it is feasible  
                                fitness[i] = fitfun.valueOf(pop[i]); //    compute fitness value, where fitfun
                        }                                            //    is the function to be minimized
                        cma.updateDistribution(fitness);         // pass fitness array to update search distribution

                        // output to console and files
                        cma.writeToDefaultFiles();
                        int outmod = 150;
                        if (cma.getCountIter() % (15*outmod) == 1)
                                cma.printlnAnnotation(); // might write file as well
                        if (cma.getCountIter() % outmod == 1)
                                cma.println(); 
                }
                // evaluate mean value as it is the best estimator for the optimum
                cma.setFitnessOfMeanX(fitfun.valueOf(cma.getMeanX())); // updates the best ever solution 

                // final output
                cma.writeToDefaultFiles(1);
                cma.println();
                cma.println("Terminated due to");
                for (String s : cma.stopConditions.getMessages())
                        cma.println("  " + s);
                cma.println("best function value " + cma.getBestFunctionValue() 
                                + " at evaluation " + cma.getBestEvaluationNumber());

                // we might return cma.getBestSolution() or cma.getBestX()

        } // main  
} // class

Author:
Nikolaus Hansen, released into public domain.
See Also:
CMAEvolutionStrategy

Constructor Summary
CMAExample1()
           
 
Method Summary
static void main(java.lang.String[] args)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CMAExample1

public CMAExample1()
Method Detail

main

public static void main(java.lang.String[] args)