870c244414b2d92f9b8d0c9cc1586c36a5c7c57f
[scilab.git] / scilab / modules / optimization / tests / nonreg_tests / bug_9208.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 //
10 // <-- Non-regression test for bug 9208 -->
11 //
12 // <-- Bugzilla URL -->
13 // http://bugzilla.scilab.org/show_bug.cgi?id=9208
14 //
15 // <-- Short Description -->
16 // Added three optional output arguments to optim(), to retrieve #iterations,
17 // #evaluations and a termination flag.
18 //
19 // Example 1
20 a  = 1.0;
21 b  = 2.0;
22 c  = 3.0;
23 d  = 4.0;
24 x0 = [1 1];
25 function [f, g, ind] = costfunction(x, ind, a, b, c, d)
26     f = a * ( x(1) - c ) ^2 + b * ( x(2) - d )^2;
27     g(1) = 2 * a * ( x(1) - c );
28     g(2) = 2 * b * ( x(2) - d );
29 endfunction
30 costf = list ( costfunction , a , b , c, d );
31 [fopt, xopt, w, g, iters, evals, err] = optim ( costf , x0 );
32 assert_checkequal([iters evals err], [10 11 1]);
33 [fopt, xopt, w, g, iters, evals, err] = optim ( costf , x0 , "ar",nap=5 );
34 assert_checkequal([iters evals err], [4 5 4]);
35 [fopt, xopt, w, g, iters, evals, err] = optim ( costf , x0 , "ar",nap=100,iter=5 );
36 assert_checkequal([iters evals err], [6 7 5]);
37 // Example 2
38 x0 = [-1.2 1.0];
39 function f = rosenbrock(x)
40     f = 100.0 *(x(2)-x(1)^2)^2 + (1-x(1))^2;
41 endfunction
42 function [f, g, ind] = rosenbrockCost2(x, ind)
43     f = rosenbrock ( x );
44     g = derivative ( rosenbrock , x.' , order = 4 );
45 endfunction
46 [fopt, xopt, w, g, iters, evals, err] = optim ( rosenbrockCost2 , x0 );
47 assert_checkequal([iters evals err], [37 50 9]);
48 [fopt, xopt, w, g, iters, evals, err] = optim ( rosenbrockCost2 , x0 , "ar",nap=10 );
49 assert_checkequal([iters evals err], [8 10 4]);
50 [fopt, xopt, w, g, iters, evals, err] = optim ( rosenbrockCost2 , x0 , "ar",nap=100,iter=10 );
51 assert_checkequal([iters evals err], [11 14 5]);