Update order of files in ref file.
[scilab.git] / scilab / modules / optimization / tests / unit_tests / neldermead / neldermead_outputcmdobsolete.tst
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-en.txt
10
11 // <-- CLI SHELL MODE -->
12 // <-- ENGLISH IMPOSED -->
13 // <-- NO CHECK REF -->
14
15 // This test is designed to produce a warning:
16 // this warning is localized.
17 // This is why we do not check the ref.
18 // Checking the ref file under Linux fails, because
19 // <-- ENGLISH IMPOSED --> has no effect there.
20 // See : http://bugzilla.scilab.org/show_bug.cgi?id=9284
21
22
23
24
25 function [ y , index ] = rosenbrock ( x , index )
26   y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
27 endfunction
28
29
30 //
31 // Check backward-compatibility #1:
32 // without stop output argument.
33 //
34
35 function myoutputcmd3 ( state , data , mystuff )
36   global _OUTPUCMDFLAG_
37   // Unload the array, just to make sure that the minimum is there
38   iter = data.iteration
39   fc = data.funccount
40   fval = data.fval
41   x = data.x
42   simplex = data.simplex
43   // Simplex is a data structure, which can be managed
44   // by the simplex class.
45   v = optimsimplex_dirmat ( simplex )
46   condv = cond ( v )
47   _OUTPUCMDFLAG_ = mystuff.myarg
48 endfunction
49
50 global _OUTPUCMDFLAG_;
51 _OUTPUCMDFLAG_ = 0;
52
53 myobj = tlist(["T_MYSTUFF","myarg"]);
54 myobj.myarg = 12;
55
56 nm = neldermead_new ();
57 nm = neldermead_configure(nm,"-numberofvariables",2);
58 nm = neldermead_configure(nm,"-function",rosenbrock);
59 nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
60 nm = neldermead_configure(nm,"-maxiter",10);
61 nm = neldermead_configure(nm,"-method","variable");
62 nm = neldermead_configure(nm,"-outputcommand",list(myoutputcmd3,myobj));
63 nm = neldermead_search(nm);
64 iter = neldermead_get(nm,"-iterations");
65 assert_checkequal ( iter , 10 );
66 assert_checkequal ( _OUTPUCMDFLAG_ , 12 );
67 nm = neldermead_destroy(nm);
68
69 //
70 // Check backward-compatibility #2:
71 // obsolete use of -outputcommandarg option.
72 //
73
74 //
75 // myoutputcmd2 --
76 //  This command is called back by the Nelder-Mead
77 //  algorithm.
78 // Arguments
79 //  state : the current state of the algorithm
80 //    "init", "iter", "done"
81 //  data : the data at the current state
82 //    This is a tlist with the following entries:
83 //    * x : the optimal vector of parameters
84 //    * fval : the minimum function value
85 //    * simplex : the simplex, as a simplex object
86 //    * iteration : the number of iterations performed
87 //    * funccount : the number of function evaluations
88 //  myobj : a user-defined data structure
89 // stop: set to true to stop algorithm
90 //
91 function stop = myoutputcmd2 ( state , data , myobj )
92   global _OUTPUCMDFLAG_
93   // Unload the array, just to make sure that the minimum is there
94   iter = data.iteration
95   fc = data.funccount
96   fval = data.fval
97   x = data.x
98   simplex = data.simplex
99   // Simplex is a data structure, which can be managed
100   // by the simplex class.
101   v = optimsimplex_dirmat ( simplex )
102   condv = cond ( v )
103   _OUTPUCMDFLAG_ = myobj.myarg
104   stop = %f
105 endfunction
106
107
108 global _OUTPUCMDFLAG_;
109 _OUTPUCMDFLAG_ = 0;
110
111 myobj = tlist(["T_MYSTUFF","myarg"]);
112 myobj.myarg = 12;
113
114 nm = neldermead_new ();
115 nm = neldermead_configure(nm,"-numberofvariables",2);
116 nm = neldermead_configure(nm,"-function",rosenbrock);
117 nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
118 nm = neldermead_configure(nm,"-maxiter",10);
119 nm = neldermead_configure(nm,"-method","variable");
120 nm = neldermead_configure(nm,"-outputcommand",myoutputcmd2);
121 nm = neldermead_configure(nm,"-outputcommandarg",myobj);
122 nm = neldermead_search(nm);
123 iter = neldermead_get(nm,"-iterations");
124 assert_checkequal ( iter , 10 );
125 assert_checkequal ( _OUTPUCMDFLAG_ , 12 );
126 nm = neldermead_destroy(nm);
127