dd933aa1c07906b2d46037d64003251cf00507de
[scilab.git] / scilab / modules / optimization / macros / neldermead / neldermead_new.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2008-2009 - INRIA - Michael Baudin
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10 //
11 // neldermead_new --
12 //   Creates a new Nelder-Mead object.
13 //
14 function newobj = neldermead_new ()
15   newobj = tlist(["T_NELDERMEAD",...
16     "optbase","method",...
17     "simplex0","simplex0method","simplex0length",...
18     "rho","chi","gamma","sigma",...
19     "tolfstdeviation","tolfstdeviationmethod",...
20     "tolsimplexizeabsolute","tolsimplexizerelative","tolsimplexizemethod", "simplexsize0", ...
21     "toldeltafv","tolssizedeltafvmethod",...
22     "historysimplex", ...
23     "coords0",...
24     "simplex0deltausual","simplex0deltazero", ...
25     "restartsimplexmethod",...
26     "simplexopt","restartmax" , "restarteps", ...
27     "restartstep","kelleystagnationflag",...
28     "kelleynormalizationflag","kelleystagnationalpha0", ...
29     "kelleyalpha","restartnb","restartflag","restartdetection" , ...
30     "startupflag" , ...
31     "boxnbpoints" , "boxnbpointseff" , "nbineqloops" , "ineqscaling" , ...
32     "vectorizefunction" ]);
33   newobj.optbase = optimbase_new();
34   // Possible values "variable", "fixed".
35   newobj.method = "variable";
36   newobj.simplex0 = optimsimplex_new ( );
37   // Possible values : "axes", "spendley", "pfeffer" 
38   newobj.simplex0method = "axes";
39   newobj.simplex0length = 1.0;
40   // Reflection factor : rho
41   newobj.rho = 1.0;
42   // Expansion factor : chi
43   newobj.chi = 2.0;
44   // Contraction factor : gamma
45   newobj.gamma = .5;
46   // Shrinkage factor : sigma
47   newobj.sigma = .5;
48   // The tolerance for the standard deviation
49   newobj.tolfstdeviation = 0.0;
50   // Possible values : "disabled", "enabled"
51   newobj.tolfstdeviationmethod = "disabled";
52   // The absolute tolerance for the simplex size
53   newobj.tolsimplexizeabsolute = 0.0;
54   // The relative tolerance for the simplex size
55   newobj.tolsimplexizerelative = %eps;
56   // Possible values : "disabled", "enabled"
57   // TODO : turn this on by default. 
58   // Note :
59   //   If the simplex method converges, the simplex size is near zero.
60   newobj.tolsimplexizemethod = "enabled";
61   // The tolerance for the function value delta
62   newobj.toldeltafv = %eps;
63   // Possible values : "disabled", "enabled"
64   newobj.tolssizedeltafvmethod = "disabled";
65   // The value used in Pfeffer method initial simplex computation for non-zero parameters
66   newobj.simplex0deltausual = 0.05;
67   // The value used in Pfeffer method initial simplex computation for zero parameters
68   newobj.simplex0deltazero = 0.0075;
69   // The coordinates of the initial simplex, given by the user
70   newobj.coords0 = [];
71   // The Kelley stagnation detection in termination criteria :  0/1
72   // (i.e. sufficient decrease of function value)
73   newobj.kelleystagnationflag = 0
74   // The Kelley stagnation detection parameter
75   newobj.kelleystagnationalpha0 = 1.e-4
76   // The Kelley stagnation detection can be normalized or not.
77   // Note: 
78   // * in the 1997 paper "Detection and Remediation of Stagnation in Nelder-Mead
79   //   algorithm", Kelley uses the constant value of 1.e-4.
80   // * in the 1999 book "Iterative Methods for Optimization", Kelley uses normalization.
81   // Results are slightly changed, as indicated in the book/paper (the modification is 
82   // not mentioned, but the iteration number when the restart is performed
83   // is modified).
84   newobj.kelleynormalizationflag = 1
85   // The current value of Kelley's alpha, after normalization, if required
86   newobj.kelleyalpha = 1.e-4;
87   // The optimum simplex, after one optimization process
88   newobj.simplexopt = [];
89   // The maximum number of restarts
90   newobj.restartmax = 3;
91   // The epsilon value for O'Neill restart detection
92   newobj.restarteps = %eps;
93   // The step length for O'Neill restart detection
94   newobj.restartstep = 1.0;
95   // Possible values : "oriented", "axes", "spendley", "pfeffer" 
96   newobj.restartsimplexmethod = "oriented";
97   // Possible values : 0/1
98   newobj.restartflag = 0;
99   // Number of restarts performed
100   newobj.restartnb = 0;
101   // Type of restart detection method : "kelley", "oneill"
102   newobj.restartdetection = "oneill";
103   // Set to 1 when the startup has been performed
104   newobj.startupflag = 0;
105   // Initial size of the simplex, for the tolerance on the simplex size
106   newobj.simplexsize0 = 0.0
107   // Number of points required in the simplex (for Box method)
108   newobj.boxnbpoints = "2n"
109   // Effective number of points required in the simplex (for Box method)
110   newobj.boxnbpointseff = 0
111   // Number of loops performed to satisfy nonlinear
112   // inequality constraints (for Box method)
113   newobj.nbineqloops = 10
114   // The scaling coefficient in nonlinear inequality constraints
115   // in Box method, in (0,1) range
116   newobj.ineqscaling = 0.5
117   // Set to 1 if the cost function is vectorized
118   newobj.vectorizefunction = 0
119 endfunction
120