[optimization] fix tests
[scilab.git] / scilab / modules / optimization / tests / unit_tests / optimsimplex / optimsimplex_new.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 // Copyright (C) 2012 - 2016 - Scilab Enterprises
6 //
7 // This file is hereby licensed under the terms of the GNU GPL v2.0,
8 // pursuant to article 5.3.4 of the CeCILL v.2.1.
9 // This file was originally licensed under the terms of the CeCILL v2.1,
10 // and continues to be available under such terms.
11 // For more information, see the COPYING file which you should have received
12 // along with this program.
13 // <-- CLI SHELL MODE -->
14 function y = rosenbrock (x)
15   y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
16 endfunction
17 //
18 // Test optimsimplex_new with a matrix of coordinates
19 //
20 coords = [
21     0.    0.  
22     1.    0.  
23     0.    1.  
24 ];
25 s1 = optimsimplex_new ( coords );
26 computed = optimsimplex_getallx ( s1 );
27 expected = [
28     0.    0.  
29     1.    0.  
30     0.    1.  
31 ];
32 assert_checkequal ( computed , expected );
33 computed = optimsimplex_getn(s1);
34 assert_checkequal ( computed , 2 );
35 computed = optimsimplex_getnbve (s1);
36 assert_checkequal ( computed , 3 );
37 s1 = optimsimplex_destroy(s1);
38 //
39 // Test optimsimplex_new with a matrix of coordinates and 
40 // a function
41 //
42 coords = [
43     0.    0.  
44     1.    0.  
45     0.    1.  
46 ];
47 s1 = optimsimplex_new ( coords , rosenbrock );
48 computed = optimsimplex_getall ( s1 );
49 expected = [
50     1.      0.    0.  
51     100.    1.    0.  
52     101.    0.    1.  
53 ];
54 assert_checkequal ( computed , expected );
55 computed = optimsimplex_getn(s1);
56 assert_checkequal ( computed , 2 );
57 computed = optimsimplex_getnbve (s1);
58 assert_checkequal ( computed , 3 );
59 s1 = optimsimplex_destroy(s1);
60 //
61 // Test with a function which has an additional argument
62 //
63 myobj = tlist(["T_MYSTUFF","nb"]);
64 myobj.nb = 0;
65 function [ y , myobj ] = mycostf ( x , myobj )
66   y = rosenbrock(x);
67   myobj.nb = myobj.nb + 1
68 endfunction
69 coords = [
70     0.    0.  
71     1.    0.  
72     0.    1.  
73 ];
74 [ s1 , myobj ] = optimsimplex_new ( coords , mycostf , myobj );
75 computed = optimsimplex_getall ( s1 );
76 expected = [
77     1.      0.    0.  
78     100.    1.    0.  
79     101.    0.    1.  
80 ];
81 assert_checkequal ( computed , expected );
82 assert_checkequal ( myobj.nb , 3 );
83 computed = optimsimplex_getn(s1);
84 assert_checkequal ( computed , 2 );
85 computed = optimsimplex_getnbve (s1);
86 assert_checkequal ( computed , 3 );
87 s1 = optimsimplex_destroy ( s1 );
88 //
89 // Test optimsimplex_new with a matrix of coordinates made of k=5 vertices
90 //
91 coords = [
92     0.    0.  
93     1.    0.  
94     0.    1.  
95     1.    1.  
96     2.    2.  
97 ];
98 s1 = optimsimplex_new ( coords , rosenbrock );
99 computed = optimsimplex_getall ( s1 );
100 expected = [
101     1.      0.    0.  
102     100.    1.    0.  
103     101.    0.    1.  
104     0.      1.    1.  
105     401.    2.    2.  
106 ];
107 assert_checkequal ( computed , expected );
108 computed = optimsimplex_getn(s1);
109 assert_checkequal ( computed , 2 );
110 computed = optimsimplex_getnbve (s1);
111 assert_checkequal ( computed , 5 );
112 s1 = optimsimplex_destroy(s1);
113 // Check printing system
114 coords = [
115     0.    0.  
116     1.    0.  
117     0.    1.  
118     1.    1.  
119     2.    2.  
120 ];
121 s1 = optimsimplex_new ( coords , rosenbrock );
122 string(s1)
123  ans  =
124   "Optim Simplex Object:"
125   "====================="
126   "nbve: 5"              
127   "n: 2"                 
128   "x: 5-by-2 matrix"     
129   "fv: 5-by-1 matrix"    
130 s1
131  s1  = 
132 Optim Simplex Object:
133 =====================
134 nbve: 5
135 n: 2
136 x: 5-by-2 matrix
137 fv: 5-by-1 matrix
138 s1 = optimsimplex_destroy(s1);
139 //
140 coords = [
141     0.    0.  
142     1.    0.  
143     0.    1.  
144     1.    1.  
145     2.    2.  
146 ];
147 s1 = optimsimplex_new ( coords );
148 s1
149  s1  = 
150 Optim Simplex Object:
151 =====================
152 nbve: 5
153 n: 2
154 x: 5-by-2 matrix
155 fv: [] matrix
156 s1 = optimsimplex_destroy(s1);
157 // Check with empty function
158 coords = [
159     0.    0.  
160     1.    0.  
161     0.    1.  
162     1.    1.  
163     2.    2.  
164 ];
165 s1 = optimsimplex_new ( coords , [] )
166  s1  = 
167 Optim Simplex Object:
168 =====================
169 nbve: 5
170 n: 2
171 x: 5-by-2 matrix
172 fv: [] matrix
173 computed = optimsimplex_getn(s1);
174 assert_checkequal ( computed , 2 );
175 computed = optimsimplex_getnbve (s1);
176 assert_checkequal ( computed , 5 );
177 computed = optimsimplex_getallx(s1);
178 assert_checkequal ( computed , coords );
179 s1 = optimsimplex_destroy(s1);