* Function without output argument cannot be call in assignation expression
[scilab.git] / scilab / modules / optimization / tests / unit_tests / optimsimplex / optimsimplex_randbounds.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 randbounds with default number of vertices
19 //
20 rand("seed" , 0)
21 s1 = optimsimplex_new ( "randbounds" , [-1.2 1.0], rosenbrock, ...
22 [-5.0 -5.0] , [5.0 5.0] );
23 computed = optimsimplex_getall ( s1 );
24 expected = [
25 24.19999999999999573674   -1.1999999999999999555911    1.
26 3347.7382596240795464837  -2.8867513453587889671326    2.5604385416954755783081
27 71189.511402687028748915  -4.9977886537089943885803  -1.69672908261418342590
28 ]
29  expected  = 
30    24.2       -1.2         1.       
31    3347.7383  -2.8867513   2.5604385
32    71189.511  -4.9977887  -1.6967291
33 assert_checkalmostequal ( computed , expected , %eps );
34 s1 = optimsimplex_destroy ( s1 );
35 //
36 // Test randbounds with 5 vertices
37 //
38 rand("seed" , 0)
39 s1 = optimsimplex_new ( "randbounds" , [-1.2 1.0], rosenbrock, ...
40 [-5.0 -5.0] , [5.0 5.0], 5 );
41 computed = optimsimplex_getall ( s1 );
42 expected = [
43 24.19999999999999573674   -1.1999999999999999555911    1.
44 3347.7382596240795464837  -2.8867513453587889671326    2.5604385416954755783081
45 71189.511402687028748915  -4.9977886537089943885803  -1.69672908261418342590
46 211.01779965627284241236    1.6538110421970486640930    1.2839178834110498428345
47 10770.01508687966997968     3.497452358715236186981     1.857310198247432708740
48 ];
49 assert_checkalmostequal ( computed , expected , %eps );
50 s1 = optimsimplex_destroy ( s1 );
51 //
52 // Test optimsimplex_randbounds
53 //
54 function [ y , myobj ] = mycostf ( x , myobj )
55     y = rosenbrock(x);
56     myobj.nb = myobj.nb + 1
57 endfunction
58 //
59 // Test randbounds with additional object
60 //
61 mydude = tlist(["T_MYSTUFF","nb"]);
62 mydude.nb = 0;
63 s1 = optimsimplex_new ();
64 rand("seed" , 0)
65 [ s1 , mydude ] = optimsimplex_new ( "randbounds" , [-1.2 1.0], mycostf, ...
66 [-5.0 -5.0] , [5.0 5.0], 5 , mydude );
67 computed = optimsimplex_getall ( s1 );
68 expected = [
69 24.19999999999999573674   -1.1999999999999999555911    1.
70 3347.7382596240795464837  -2.8867513453587889671326    2.5604385416954755783081
71 71189.511402687028748915  -4.9977886537089943885803  -1.69672908261418342590
72 211.01779965627284241236    1.6538110421970486640930    1.2839178834110498428345
73 10770.01508687966997968     3.497452358715236186981     1.857310198247432708740
74 ]
75  expected  = 
76    24.2       -1.2         1.       
77    3347.7383  -2.8867513   2.5604385
78    71189.511  -4.9977887  -1.6967291
79    211.0178    1.653811    1.2839179
80    10770.015   3.4974524   1.8573102
81 assert_checkequal ( mydude.nb , 5 );
82 s1 = optimsimplex_destroy ( s1 );
83 // Test unconsistent size of boundsmin
84 x0 = [1 2];
85 boundsmin = [-5 -5 -5];
86 boundsmax = [5 5];
87 cmd = "newobj = optimsimplex_new ( ""randbounds"" , x0 , rosenbrock , boundsmin , boundsmax );";
88 instr = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n";
89 assert_checkerror ( cmd , instr,[],"optimsimplex_new",4,1,2);
90 // Test unconsistent size of boundsmax
91 x0 = [1 2];
92 boundsmin = [-5 -5];
93 boundsmax = [5 5 5];
94 cmd = "newobj = optimsimplex_new ( ""randbounds"" , x0 , rosenbrock , boundsmin , boundsmax );";
95 instr = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n";
96 assert_checkerror ( cmd , instr,[],"optimsimplex_new",5,1,2);