Scilab Function  
    
      cma_optim -   functional interface to the CMA-ES optimizer, a (stochastic) 
                     non-convex function minimizer
    
      Calling Sequence
    
    
      - 
         param = cma_optim()
      
 
      - 
         param = cma_optim([])
      
 
      - 
        [xopt, f, out, param] = cma_optim(costf, x0, sigma0 [, param])
      
 
    
    
      Parameters
    
    
      - 
        
          costf
        
       objective function (cost function) to be minimized. costf must
       accept a column vector as input and return the scalar cost to
       be minimized. The return value %nan is allowed and leads to an
       immediate resampling (and (re-)evaluation) of the solution
       during the same iteration.
       
 
      - 
        
          x0
        
       initial solution, a column vector of real values. 
       
 
      - 
        
          sigma0
        
       the initial standard deviation acting on x0,
       typically 1/3 of the typical variable ranges. If the ranges
       of variables are different, use param.scaling_of_variables
       
 
      - 
        
          param
        
       optional parameters collected in a struct. '[]' or '{}' invokes
       all default settings. param.verb controls verbosity. After the
       objective function is debugged and when the returned
       solution(s) are satisfactory, logmodulo=0 (no data saving) and
       displaymodulo=0 (no screen output) make the code completely
       quiet (and faster).
       
 
      - 
        
          xopt
        
       best found solution vector. On noisy functions and for robust
       optimization out.solutions.mean.x might be the better choice. 
       
 
      - 
        
          f
        
       function value of xopt: f=costf(xopt)
       
 
      - 
        
          out
        
         additional useful output collected in a struct. 
       
 
      - 
        
          param
        output parameter param contains the actually used parameters
           (some of them might have been evaluated), including x0 and sigma0. 
       
 
    
    
      Description
    
    
      - 
        
        
The function cma_optim uses the functions cma_new() and other
     cma_*() funcions that implement the CMA-ES in a more object
     oriented way.
     
        The CMA-ES is a stochastic optimizer. It can make
     perfect sense to re-run the code several times.
     
       
      - 
        
        
      
 
    
    
      Examples
    
    
  getf('fitfuns.sci');    // define frosen and felli, file should be in CMA-ES-vXXX/demos
  [f x out] = cma_optim(frosen, rand(8,1), 0.3); // minimize 8-D Rosenbrock function
  disp(f)                 // display achieved function value, x is the delivered solution 
  p = cma_optim([]);      // get optional parameters
  disp(p.stop);           // lets see the possible and default termination criteria
  p.readme.stop           // lets see what the entries mean
  p.stop.fitness = 1e-9;  // set target function value (minimization)
  p.verb.plotmodulo = 0;  // turn plotting off this time
  [f x out] = cma_optim(felli, ones(15,1), 1, p);  // minimize 15-D hyper-ellipsoid function
  disp(out.solutions.bestever.f);    // show the best-ever function value
  disp(felli(out.solutions.mean.x)); // might be an even better solution
  cma_plot;               // let's finally plot the run 
  
    
      See Also
    
    
      
        
           cma_new
        
      ,  
        
           cma_plot
        
      ,  
        
           cma_optim_restarted
        
      ,  
        
           optim
        
      ,  
    
      Authors
    
    
      - 
        Nikolaus Hansen
      
 
    
    
      Bibliography
    
    
      Used Function
    
cma_new()
     cma_ask()
     cma_tell()
     ...