Fix neldermead_configure test (x0 can be a row vector).
[scilab.git] / scilab / modules / optimization / tests / unit_tests / neldermead / neldermead_configure.dia.ref
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2008-2009 - INRIA - Michael Baudin
3 // Copyright (C) 2011 - DIGITEO - Michael Baudin
4 //
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at
9 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10 // <-- CLI SHELL MODE -->
11 //
12 // Check behaviour with configured settings.
13 //
14 function [ y , index ] = rosenbrock ( x , index )
15   y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
16 endfunction
17 //
18 // Check maxfunevals with "variable" method
19 //
20 nm = neldermead_new ();
21 //
22 nm = neldermead_configure(nm,"-numberofvariables",2);
23 numvar = neldermead_cget(nm,"-numberofvariables");
24 assert_checkequal ( numvar , 2 );
25 //
26 nm = neldermead_configure(nm,"-x0",[1.1 1.1]');
27 x0 = neldermead_cget(nm,"-x0");
28 assert_checkequal ( x0 , [1.1 1.1]' );
29 // Check default -simplex0method
30 simplex0method = neldermead_cget(nm,"-simplex0method");
31 assert_checkequal ( simplex0method , "axes" );
32 //
33 nm = neldermead_configure(nm,"-simplex0method","spendley");
34 simplex0method = neldermead_cget(nm,"-simplex0method");
35 assert_checkequal ( simplex0method , "spendley" );
36 // Check default -simplex0length
37 simplex0length = neldermead_cget(nm,"-simplex0length");
38 assert_checkequal ( simplex0length , 1 );
39 //
40 nm = neldermead_configure(nm,"-simplex0length",0.1);
41 simplex0length = neldermead_cget(nm,"-simplex0length");
42 assert_checkequal ( simplex0length , 0.1 );
43 //
44 // Check default -method
45 method = neldermead_cget(nm,"-method");
46 assert_checkequal ( method , "variable" );
47 //
48 nm = neldermead_configure(nm,"-method","fixed");
49 method = neldermead_cget(nm,"-method");
50 assert_checkequal ( method , "fixed" );
51 //
52 nm = neldermead_configure(nm,"-method","variable");
53 method = neldermead_cget(nm,"-method");
54 assert_checkequal ( method , "variable" );
55 //
56 nm = neldermead_configure(nm,"-function",rosenbrock);
57 //
58 nm = neldermead_configure(nm,"-maxfunevals",10);
59 maxfunevals = neldermead_cget(nm,"-maxfunevals");
60 assert_checkequal ( maxfunevals , 10 );
61 //
62 nm = neldermead_search(nm);
63 funevals = neldermead_get(nm,"-funevals");
64 // Let's be not strict
65 assert_checkequal ( funevals < 15 , %T );
66 // Cleanup
67 nm = neldermead_destroy(nm);
68 //
69 // Check maxiter with "variable" method
70 //
71 nm = neldermead_new ();
72 nm = neldermead_configure(nm,"-numberofvariables",2);
73 nm = neldermead_configure(nm,"-x0",[1.1 1.1]');
74 nm = neldermead_configure(nm,"-simplex0method","axes");
75 nm = neldermead_configure(nm,"-simplex0length",0.1);
76 nm = neldermead_configure(nm,"-method","variable");
77 nm = neldermead_configure(nm,"-function",rosenbrock);
78 nm = neldermead_configure(nm,"-maxiter",10);
79 nm = neldermead_search(nm);
80 iterations = neldermead_get(nm,"-iterations");
81 assert_checkequal ( iterations , 10 );
82 // Cleanup
83 nm = neldermead_destroy(nm);
84 // Wrong -method flag
85 nm = neldermead_new ();
86 cmd = "nm = neldermead_configure(nm,''-method'',''foo'')";
87 alloptions = """fixed"" or ""variable"" or ""box"" or ""mine""";
88 assert_checkerror(cmd,"%s: Expected value [%s] for input argument %s at input #%d, but got ""%s"" instead.",[],..
89   "neldermead_configure",alloptions,"value",3,"foo");
90 nm = neldermead_destroy(nm);
91 // Wrong -simplex0method flag
92 nm = neldermead_new ();
93 cmd = "nm = neldermead_configure(nm,''-simplex0method'',''foo'')";
94 alloptions = """given"" or ""axes"" or ""spendley"" or ""pfeffer"" or ""randbounds""";
95 assert_checkerror(cmd,"%s: Expected value [%s] for input argument %s at input #%d, but got ""%s"" instead.",[],..
96   "neldermead_configure",alloptions,"value",3,"foo");
97 nm = neldermead_destroy(nm);
98 // Wrong -tolsimplexizemethod flag
99 nm = neldermead_new ();
100 cmd = "nm = neldermead_configure(nm,''-tolsimplexizemethod'',''foo'')";
101 assert_checkerror(cmd,"%s: Expected boolean but for variable %s at input #%d, got %s instead.",[],"nelmead_typeboolean","value",3,"string");
102 nm = neldermead_destroy(nm);
103 // Wrong -tolssizedeltafvmethod flag
104 nm = neldermead_new ();
105 cmd = "nm = neldermead_configure(nm,''-tolssizedeltafvmethod'',''foo'')";
106 assert_checkerror(cmd,"%s: Expected boolean but for variable %s at input #%d, got %s instead.",[],"nelmead_typeboolean","value",3,"string");
107 nm = neldermead_destroy(nm);
108 //
109 // Check wrong key for get method
110 nm = neldermead_new ();
111 nm = neldermead_configure(nm,"-numberofvariables",2);
112 nm = neldermead_configure(nm,"-x0",[1.1 1.1]');
113 nm = neldermead_configure(nm,"-simplex0method","axes");
114 nm = neldermead_configure(nm,"-simplex0length",0.1);
115 nm = neldermead_configure(nm,"-method","variable");
116 nm = neldermead_configure(nm,"-function",rosenbrock);
117 nm = neldermead_configure(nm,"-maxfunevals",2);
118 nm = neldermead_search(nm);
119 cmd = "funevals = neldermead_get(nm,''-foo'')";
120 assert_checkerror(cmd,"%s: Unknown key %s",[],"optimbase_get","-foo");
121 nm = neldermead_destroy(nm);
122 //
123 // Check that x0 is forced to be a vector
124 nm = neldermead_new ();
125 nm = neldermead_configure(nm,"-numberofvariables",2);
126 cmd = "nm = neldermead_configure(nm,''-x0'',[-1.2 1.0]);";
127 nm = neldermead_destroy(nm);
128 nm = neldermead_new ();
129 nm = neldermead_configure(nm,"-numberofvariables",2);
130 cmd = "nm = neldermead_configure(nm,''-x0'',[-1.2 1.0; 1.0 -1.2]);";
131 assert_checkerror(cmd,"%s: Wrong size for x0 argument: A vector expected.", [], "optimbase_configure");
132 nm = neldermead_destroy(nm);
133 //
134 // Check -restartstep
135 nm = neldermead_new ();
136 nm = neldermead_configure(nm,"-numberofvariables",2);
137 cmd = "nm = neldermead_configure(nm,''-restartstep'',[1 2 3]);";
138 assert_checkerror(cmd,"%s: The restartstep vector is expected to have %d x %d shape, but current shape is %d x %d",[],"neldermead_configure",2,1,1,3);
139 cmd = "nm = neldermead_configure(nm,''-restartstep'',[-1 2]'');";
140 assert_checkerror(cmd,"%s: Expected that all entries of input argument %s at input #%d are greater or equal than %s, but entry #%d is equal to %s.",[],..
141   "neldermead_configure","value",3,"2.22D-308",1,"-1");
142 nm = neldermead_destroy(nm);
143 //
144 // Check -restarteps
145 nm = neldermead_new ();
146 nm = neldermead_configure(nm,"-numberofvariables",2);
147 cmd = "nm = neldermead_configure(nm,''-restarteps'',[1 2]);";
148 assert_checkerror(cmd,"%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n",[], ..
149   "neldermead_configure",3,1,1);
150 cmd = "nm = neldermead_configure(nm,''-restarteps'',-1);";
151 assert_checkerror(cmd,"%s: Expected that all entries of input argument %s at input #%d are greater or equal than %s, but entry #%d is equal to %s.",[],..
152   "neldermead_configure","value",3,"2.22D-308",1,"-1");
153 nm = neldermead_destroy(nm);
154 //
155 // Check the display system
156 nm = neldermead_new ();
157 nm
158  nm  =
159  
160 Nelder-Mead Object:
161 ======================
162
163 Simplex0 Method : axes
164 Simplex0 Length : 1
165 Simplex0, Pfeffer, Delta Usual : 0.05
166 Simplex0, Pfeffer, Delta Zero : 0.0075
167 Simplex0, Given, Coords :
168 []
169
170 Termination parameters
171 Termination on simplex size : T
172 Termination on simplex size, Absolute Tolerance : 0
173 Termination on simplex size, Relative Tolerance : 2.220D-16
174 Termination on simplex size, Initial Simplex Size : 0
175 Termination on simplex size + Delta of function value : F
176 Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : 2.220D-16
177 Termination on Kelley's Stagnation : F
178 Termination on Kelley's Stagnation, Normalization : T
179 Termination on Kelley's Stagnation, Alpha0 : 0.0001
180 Termination on Kelley's Stagnation, Alpha : 0.0001
181 Termination by Box : F
182 Termination by Box, Absolute Tolerance on Function: 0.00001
183 Termination by Box, Maximum Number of Consecutive Match : 5
184 Termination by Box, Current Number of Consecutive Match : 0
185 Termination on Variance : F
186 Termination on Variance, Absolute Tolerance : 0
187 Termination on Variance, Relative Tolerance : 2.220D-16
188 Termination on Variance, Variance of Initial Simplex : 0
189
190 Algorithms parameters
191 Method : variable
192 Reflection Factor (rho) : 1
193 Expansion Factor (chi) : 2
194 Contraction Factor (gamma) : 0.5
195 Shrinkage Factor (sigma) : 0.5
196 Kelley Stagnation : F
197 Restart Epsilon : 2.220D-16
198 Restart Step : 1
199 Restart Maximum : 3
200 Restart Simplex Method : oriented
201 Restart Flag : F
202 Restart Number : 0
203 Restart Detection Method : oneill
204 Startup Flag : F
205 Automatic Checking of Cost Function : T
206 Box, Number of Points  : 2n
207 Box, Current Number of Points  : 0
208 Box, Scaling, Factor  : 0.5
209 Box, Scaling, Method  : tox0
210 Box, Scaling, Minimum : 0.00001
211 Box, Bounds Parameter: 0.000001
212 Box, Reflection Coefficient : 1.3
213
214 optbase: <TOPTIM Object>
215 simplex0: <TSIMPLEX Object>
216 simplexopt: <constant Object>
217 nm = neldermead_destroy(nm);