diff options
author | Shashank | 2017-05-29 12:40:26 +0530 |
---|---|---|
committer | Shashank | 2017-05-29 12:40:26 +0530 |
commit | 0345245e860375a32c9a437c4a9d9cae807134e9 (patch) | |
tree | ad51ecbfa7bcd3cc5f09834f1bb8c08feaa526a4 /modules/optimization/tests | |
download | scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.gz scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.bz2 scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.zip |
CMSCOPE changed
Diffstat (limited to 'modules/optimization/tests')
271 files changed, 50301 insertions, 0 deletions
diff --git a/modules/optimization/tests/nonreg_tests/bug_10269.dia.ref b/modules/optimization/tests/nonreg_tests/bug_10269.dia.ref new file mode 100755 index 000000000..26d354bc2 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_10269.dia.ref @@ -0,0 +1,44 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// <-- Non-regression test for bug 10269 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=10269 +// +// <-- Short Description --> +// qp_solve can now take up to 5 output arguments. The last one is an error flag, +// if it is present, then the function will issue a warning instead of an error. +// Run with test_run('optimization', 'bug_10269', ['no_check_error_output']) +C1 = [1, -1, 2; -1, 0, 5; 1, -3, 3; 0, -4, 0; 3, 5, 1; 1, 6, 0]; +b1 = [1; 2; 3]; +// x'*C2 >= b2 (2 inequality constraints) +C2 = [0 ,1; -1, 0; 0, -2; -1, -1; -2, -1; 1, 0]; +b2 = [1; -2.5]; +// and minimize 0.5*x'*Q*x - p'*x with +p = [-1; -2; -3; -4; -5; -6]; Q = eye(6, 6); +me = 3; +// Normal behavior +[x, iact, iter, f] = qp_solve(Q, p, [C1 C2], [b1; b2], me); +assert_checkequal(iter, [5; 0]); +assert_checkalmostequal(f, -14.843248, 1e-5); +// Still normal, but with error flag +[x, iact, iter, f, info] = qp_solve(Q, p, [C1 C2], [b1; b2], me); +assert_checkequal(info, 0); +assert_checkequal(iter, [5; 0]); +assert_checkalmostequal(f, -14.843248, 1e-5); +// Provoked error, without flag +Q = rand(6, 6); +refMsg = msprintf(_("%s: Q is not symmetric positive definite.\n"), "qp_solve"); +assert_checkerror("[x, iact, iter, f] = qp_solve(Q, p, [C1 C2], [b1; b2], me);", refMsg); +// Provoked error, with flag +[x, iact, iter, f, info] = qp_solve(Q, p, [C1 C2], [b1; b2], me); + +qp_solve: Warning: Q is not symmetric positive definite. The results may be inaccurate. + +assert_checkequal(info, 2); diff --git a/modules/optimization/tests/nonreg_tests/bug_10269.tst b/modules/optimization/tests/nonreg_tests/bug_10269.tst new file mode 100755 index 000000000..5fcc71f1a --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_10269.tst @@ -0,0 +1,53 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + +// <-- Non-regression test for bug 10269 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=10269 +// +// <-- Short Description --> +// qp_solve can now take up to 5 output arguments. The last one is an error flag, +// if it is present, then the function will issue a warning instead of an error. + +// Run with test_run('optimization', 'bug_10269', ['no_check_error_output']) + +C1 = [1, -1, 2; -1, 0, 5; 1, -3, 3; 0, -4, 0; 3, 5, 1; 1, 6, 0]; +b1 = [1; 2; 3]; + +// x'*C2 >= b2 (2 inequality constraints) +C2 = [0 ,1; -1, 0; 0, -2; -1, -1; -2, -1; 1, 0]; +b2 = [1; -2.5]; + +// and minimize 0.5*x'*Q*x - p'*x with +p = [-1; -2; -3; -4; -5; -6]; Q = eye(6, 6); +me = 3; + +// Normal behavior +[x, iact, iter, f] = qp_solve(Q, p, [C1 C2], [b1; b2], me); +assert_checkequal(iter, [5; 0]); +assert_checkalmostequal(f, -14.843248, 1e-5); + +// Still normal, but with error flag +[x, iact, iter, f, info] = qp_solve(Q, p, [C1 C2], [b1; b2], me); +assert_checkequal(info, 0); +assert_checkequal(iter, [5; 0]); +assert_checkalmostequal(f, -14.843248, 1e-5); + +// Provoked error, without flag +Q = rand(6, 6); +refMsg = msprintf(_("%s: Q is not symmetric positive definite.\n"), "qp_solve"); +assert_checkerror("[x, iact, iter, f] = qp_solve(Q, p, [C1 C2], [b1; b2], me);", refMsg); + +// Provoked error, with flag +[x, iact, iter, f, info] = qp_solve(Q, p, [C1 C2], [b1; b2], me); +assert_checkequal(info, 2); + + diff --git a/modules/optimization/tests/nonreg_tests/bug_11452.dia.ref b/modules/optimization/tests/nonreg_tests/bug_11452.dia.ref new file mode 100755 index 000000000..b2c40a103 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_11452.dia.ref @@ -0,0 +1,28 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - INRIA - Serge Steer +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 11452 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=11452 +// +// <-- Short Description --> +// diag optional argument in lsqrsolve cannot be used +// +a=[1,7; + 2,8 + 4 3 + -1 0.3]; +b=[10;11;-1;2]; +function y=f1(x, m) + y=a*x-b; +endfunction +stp=[1.d-10,1.d-10,1.d-5,100,0,100]; +Diag=[1;1]; +[xsol,v]=lsqrsolve([100;100],f1,4,stp,Diag); +assert_checkalmostequal(xsol,a\b); diff --git a/modules/optimization/tests/nonreg_tests/bug_11452.tst b/modules/optimization/tests/nonreg_tests/bug_11452.tst new file mode 100755 index 000000000..fc8d2f20a --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_11452.tst @@ -0,0 +1,31 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - INRIA - Serge Steer +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 11452 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=11452 +// +// <-- Short Description --> +// diag optional argument in lsqrsolve cannot be used +// + +a=[1,7; +2,8 +4 3 +-1 0.3]; +b=[10;11;-1;2]; +function y=f1(x, m) + y=a*x-b; +endfunction + +stp=[1.d-10,1.d-10,1.d-5,100,0,100]; +Diag=[1;1]; +[xsol,v]=lsqrsolve([100;100],f1,4,stp,Diag); + +assert_checkalmostequal(xsol,a\b); diff --git a/modules/optimization/tests/nonreg_tests/bug_12080.dia.ref b/modules/optimization/tests/nonreg_tests/bug_12080.dia.ref new file mode 100755 index 000000000..50e03d83e --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_12080.dia.ref @@ -0,0 +1,69 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 12080 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=12080 +// +// <-- Short Description --> +// lsqrsolve always print messages +clear; +N=10; +a=2; +b=1; +c=1; +d=1; +x=linspace(-2,4,N)'; +noise=0.1*grand(N,1,"nor",0,1); +data=a./(b+c.*(x-d).^2)+noise; +function y=model(p,m,x) + a=p(1); + b=p(2); + c=p(3); + d=p(4); + y=a./(b+c.*(x-d).^2); +endfunction +function y=modelDiff(p,m,x,data) + y=model(p,m,x)-data; +endfunction +m = size(data,"*"); +p=[1,1,1,1]; +y=model(p,m,x); +y=modelDiff(p,m,x,data); +p0=[1 1 1 1]; +lsqrsolve(p0,list(modelDiff,x),m); // No warning must be displayed +clear; +N=10; +a=1; +b=1; +c=1; +d=100000; +x=linspace(-2,4,N)'; +noise=0.1*grand(N,1,"nor",0,1); +data=a./(b+c.*(x-d).^2)+noise; +function y=model(p,m,x) + a=p(1); + b=p(2); + c=p(3); + d=p(4); + y=a./(b+c.*(x-d).^-10); +endfunction +function y=modelDiff(p,m,x,data) + y=model(p,m,x)-data; +endfunction +m = size(data,"*"); +p=[1,1,1,1]; +y=model(p,m,x); +y=modelDiff(p,m,x,data); +p0=[1 1 1 1]; +[popt,diffopt]=lsqrsolve(p0,list(modelDiff,x),m,[1d-8,1d-8,1d-5,2,0,100]); // A warning must be displayed +Warning: lsqrsolve: Number of calls to fct has reached or exceeded maxfev. + diff --git a/modules/optimization/tests/nonreg_tests/bug_12080.tst b/modules/optimization/tests/nonreg_tests/bug_12080.tst new file mode 100755 index 000000000..4b19ea418 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_12080.tst @@ -0,0 +1,72 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 12080 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=12080 +// +// <-- Short Description --> +// lsqrsolve always print messages + +clear; +N=10; +a=2; +b=1; +c=1; +d=1; +x=linspace(-2,4,N)'; +noise=0.1*grand(N,1,"nor",0,1); +data=a./(b+c.*(x-d).^2)+noise; +function y=model(p,m,x) + a=p(1); + b=p(2); + c=p(3); + d=p(4); + y=a./(b+c.*(x-d).^2); +endfunction + +function y=modelDiff(p,m,x,data) + y=model(p,m,x)-data; +endfunction +m = size(data,"*"); +p=[1,1,1,1]; +y=model(p,m,x); +y=modelDiff(p,m,x,data); +p0=[1 1 1 1]; +lsqrsolve(p0,list(modelDiff,x),m); // No warning must be displayed + +clear; +N=10; +a=1; +b=1; +c=1; +d=100000; +x=linspace(-2,4,N)'; +noise=0.1*grand(N,1,"nor",0,1); +data=a./(b+c.*(x-d).^2)+noise; + +function y=model(p,m,x) + a=p(1); + b=p(2); + c=p(3); + d=p(4); + y=a./(b+c.*(x-d).^-10); +endfunction + +function y=modelDiff(p,m,x,data) + y=model(p,m,x)-data; +endfunction +m = size(data,"*"); +p=[1,1,1,1]; +y=model(p,m,x); +y=modelDiff(p,m,x,data); +p0=[1 1 1 1]; +[popt,diffopt]=lsqrsolve(p0,list(modelDiff,x),m,[1d-8,1d-8,1d-5,2,0,100]); // A warning must be displayed diff --git a/modules/optimization/tests/nonreg_tests/bug_12111.dia.ref b/modules/optimization/tests/nonreg_tests/bug_12111.dia.ref new file mode 100755 index 000000000..7f394e599 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_12111.dia.ref @@ -0,0 +1,23 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- Non-regression test for bug 12111 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=12111 +// +// <-- Short Description --> +// karmarkar does not generate appropriate warnings +// +// <-- ENGLISH IMPOSED --> +A=[-0.1548 -0.0909 -0.0014 -0.0001; 0.0989 -0.0884 0.0004 0]; +B=[0.1966354; 0.2167484]; +C=[0.2056; 0.0908; 0.0012; 0]; +lb=[0; 0; 0; 0]; +ub=[1; 1; 1; 1]; +assert_checktrue(execstr("xopt=karmarkar([],[],C,[],[],[],[],[],A,B,lb,ub)","errcatch")==0); +WARNING: karmarkar: The algorithm did not converge (exitflag= -2). diff --git a/modules/optimization/tests/nonreg_tests/bug_12111.tst b/modules/optimization/tests/nonreg_tests/bug_12111.tst new file mode 100755 index 000000000..2d6864600 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_12111.tst @@ -0,0 +1,23 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- Non-regression test for bug 12111 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=12111 +// +// <-- Short Description --> +// karmarkar does not generate appropriate warnings +// +// <-- ENGLISH IMPOSED --> + +A=[-0.1548 -0.0909 -0.0014 -0.0001; 0.0989 -0.0884 0.0004 0]; +B=[0.1966354; 0.2167484]; +C=[0.2056; 0.0908; 0.0012; 0]; +lb=[0; 0; 0; 0]; +ub=[1; 1; 1; 1]; +assert_checktrue(execstr("xopt=karmarkar([],[],C,[],[],[],[],[],A,B,lb,ub)","errcatch")==0); diff --git a/modules/optimization/tests/nonreg_tests/bug_12702.dia.ref b/modules/optimization/tests/nonreg_tests/bug_12702.dia.ref new file mode 100755 index 000000000..34a1b2e22 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_12702.dia.ref @@ -0,0 +1,2485 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 12702 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=12702 +// +// <-- Short Description --> +// When no extra parameters are needed in the cost function, NDcost does not work: +// +function f = rosenbrock(x) + f = 100.0 * (x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +function [f, g, ind] = rosenbrockCost(x, ind) + if ((ind == 1) | (ind == 4)) then + f = rosenbrock ( x ); + end + if ((ind == 1) | (ind == 4)) then + g = derivative ( rosenbrock , x(:) ); + end +endfunction +x0 = [-1.2 1.0]; +lines(0); +for impval = 1:5 + [ fopt , xopt ] = optim ( rosenbrockCost , x0 , "gc" , imp=impval); +end +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 1 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783322D-16 -0.623D-30 + nlis0 0.37536580D+01 0.53783325D-16 0.187D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.11D-15 + norm of x = 0.14142135D+01 + f = 0.53783322D-16 + norm of x = 0.74770897D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 2 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 26, simul 34, f= 0.93394213D-01, h'(0)=-0.12026D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 27, simul 35, f= 0.68247218D-01, h'(0)=-0.20762D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 30, simul 39, f= 0.28635824D-01, h'(0)=-0.25872D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 32, simul 41, f= 0.47312383D-02, h'(0)=-0.12658D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 33, simul 43, f= 0.27115836D-02, h'(0)=-0.27047D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 34, simul 44, f= 0.78628305D-03, h'(0)=-0.10616D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 36, simul 46, f= 0.65777622D-05, h'(0)=-0.12835D-04 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 37, simul 47, f= 0.65293786D-06, h'(0)=-0.24132D-05 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 38, simul 48, f= 0.48527539D-06, h'(0)=-0.97036D-06 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 39, simul 49, f= 0.73398571D-12, h'(0)=-0.14314D-11 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 40, simul 50, f= 0.20622707D-15, h'(0)=-0.99085D-16 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 41, simul 51, f= 0.53783589D-16, h'(0)=-0.47026D-24 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 42, simul 52, f= 0.53783322D-16, h'(0)=-0.62345D-30 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783322D-16 -0.623D-30 + nlis0 0.37536580D+01 0.53783325D-16 0.187D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.11D-15 + norm of x = 0.14142135D+01 + f = 0.53783322D-16 + norm of x = 0.74770897D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 3 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + ------------------------------------------------------------------------------- + + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + + n1qn3: iter 26, simul 34, f= 0.93394213D-01, h'(0)=-0.12026D+00 + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + + n1qn3: iter 27, simul 35, f= 0.68247218D-01, h'(0)=-0.20762D-01 + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + + n1qn3: iter 30, simul 39, f= 0.28635824D-01, h'(0)=-0.25872D-01 + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + + n1qn3: iter 32, simul 41, f= 0.47312383D-02, h'(0)=-0.12658D-01 + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + + n1qn3: iter 33, simul 43, f= 0.27115836D-02, h'(0)=-0.27047D-02 + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + + n1qn3: iter 34, simul 44, f= 0.78628305D-03, h'(0)=-0.10616D-02 + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + + n1qn3: iter 36, simul 46, f= 0.65777622D-05, h'(0)=-0.12835D-04 + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + + n1qn3: iter 37, simul 47, f= 0.65293786D-06, h'(0)=-0.24132D-05 + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + + n1qn3: iter 38, simul 48, f= 0.48527539D-06, h'(0)=-0.97036D-06 + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + + n1qn3: iter 39, simul 49, f= 0.73398571D-12, h'(0)=-0.14314D-11 + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + + n1qn3: iter 40, simul 50, f= 0.20622707D-15, h'(0)=-0.99085D-16 + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.806D-21 + + n1qn3: iter 41, simul 51, f= 0.53783589D-16, h'(0)=-0.47026D-24 + nlis0 fpn=-0.470D-24 d2= 0.75D-26 tmin= 0.26D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.267D-21 -0.536D-27 + + n1qn3: iter 42, simul 52, f= 0.53783322D-16, h'(0)=-0.62345D-30 + nlis0 fpn=-0.623D-30 d2= 0.68D-32 tmin= 0.38D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.375D+01 0.326D-23 0.187D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783322D-16 -0.623D-30 + nlis0 0.37536580D+01 0.53783325D-16 0.187D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.11D-15 + norm of x = 0.14142135D+01 + f = 0.53783322D-16 + norm of x = 0.74770897D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 4 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394213D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247218D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635824D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312383D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115836D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628305D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777622D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65293786D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527539D-06, h'(0)=-0.97036D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27051D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11218D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73398571D-12, h'(0)=-0.14314D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61628D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53526D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20622707D-15, h'(0)=-0.99085D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.806D-21 + n1qn3: stopping criterion on g: 0.92929D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84645D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 75.5 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53783589D-16, h'(0)=-0.47026D-24 + n1qn3: line search + nlis0 fpn=-0.470D-24 d2= 0.75D-26 tmin= 0.26D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.267D-21 -0.536D-27 + n1qn3: stopping criterion on g: 0.10705D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.55083D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.349D-02 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783322D-16, h'(0)=-0.62345D-30 + n1qn3: line search + nlis0 fpn=-0.623D-30 d2= 0.68D-32 tmin= 0.38D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.375D+01 0.326D-23 0.187D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783322D-16 -0.623D-30 + nlis0 0.37536580D+01 0.53783325D-16 0.187D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.11D-15 + norm of x = 0.14142135D+01 + f = 0.53783322D-16 + norm of x = 0.74770897D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 5 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394213D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247218D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635824D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312383D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115836D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628305D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777622D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65293786D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527539D-06, h'(0)=-0.97036D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27051D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11218D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73398571D-12, h'(0)=-0.14314D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61628D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53526D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20622707D-15, h'(0)=-0.99085D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.806D-21 + n1qn3: stopping criterion on g: 0.92929D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84645D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 75.5 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53783589D-16, h'(0)=-0.47026D-24 + n1qn3: line search + nlis0 fpn=-0.470D-24 d2= 0.75D-26 tmin= 0.26D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.267D-21 -0.536D-27 + n1qn3: stopping criterion on g: 0.10705D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.55083D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.349D-02 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783322D-16, h'(0)=-0.62345D-30 + n1qn3: line search + nlis0 fpn=-0.623D-30 d2= 0.68D-32 tmin= 0.38D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.375D+01 0.326D-23 0.187D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783322D-16 -0.623D-30 + nlis0 0.37536580D+01 0.53783325D-16 0.187D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.11D-15 + norm of x = 0.14142135D+01 + f = 0.53783322D-16 + norm of x = 0.74770897D-13 +Optimization stops because too small variations for x. + diff --git a/modules/optimization/tests/nonreg_tests/bug_12702.linux32.dia.ref b/modules/optimization/tests/nonreg_tests/bug_12702.linux32.dia.ref new file mode 100755 index 000000000..4692f6ccc --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_12702.linux32.dia.ref @@ -0,0 +1,2761 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 12702 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=12702 +// +// <-- Short Description --> +// When no extra parameters are needed in the cost function, NDcost does not work: +// +function f = rosenbrock(x) + f = 100.0 * (x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +function [f, g, ind] = rosenbrockCost(x, ind) + if ((ind == 1) | (ind == 4)) then + f = rosenbrock ( x ); + end + if ((ind == 1) | (ind == 4)) then + g = derivative ( rosenbrock , x(:) ); + end +endfunction +x0 = [-1.2 1.0]; +lines(0); +for impval = 1:5 + [ fopt , xopt ] = optim ( rosenbrockCost , x0 , "gc" , imp=impval); +end +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 1 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783159D-16 -0.250D-27 + nlis0 0.31381060D-01 0.53783164D-16 0.254D-27 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 65 + realized relative precision on g: 0.20D-15 + norm of x = 0.14142135D+01 + f = 0.53783159D-16 + norm of x = 0.11121981D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 2 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 26, simul 34, f= 0.93394210D-01, h'(0)=-0.12026D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 27, simul 35, f= 0.68247216D-01, h'(0)=-0.20762D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 28, simul 36, f= 0.49926692D-01, h'(0)=-0.55493D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 29, simul 38, f= 0.36768989D-01, h'(0)=-0.91754D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 30, simul 39, f= 0.28635822D-01, h'(0)=-0.25872D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 31, simul 40, f= 0.11210317D-01, h'(0)=-0.94861D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 32, simul 41, f= 0.47312377D-02, h'(0)=-0.12658D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 33, simul 43, f= 0.27115840D-02, h'(0)=-0.27047D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 34, simul 44, f= 0.78628279D-03, h'(0)=-0.10616D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 35, simul 45, f= 0.10596352D-03, h'(0)=-0.16466D-03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 36, simul 46, f= 0.65777570D-05, h'(0)=-0.12835D-04 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 37, simul 47, f= 0.65292577D-06, h'(0)=-0.24132D-05 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 38, simul 48, f= 0.48527840D-06, h'(0)=-0.97037D-06 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 39, simul 49, f= 0.73389661D-12, h'(0)=-0.14313D-11 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 40, simul 50, f= 0.20623400D-15, h'(0)=-0.99092D-16 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 41, simul 51, f= 0.53783590D-16, h'(0)=-0.47240D-24 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 42, simul 52, f= 0.53783159D-16, h'(0)=-0.24956D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783159D-16 -0.250D-27 + nlis0 0.31381060D-01 0.53783164D-16 0.254D-27 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 65 + realized relative precision on g: 0.20D-15 + norm of x = 0.14142135D+01 + f = 0.53783159D-16 + norm of x = 0.11121981D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 3 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + ------------------------------------------------------------------------------- + + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + + n1qn3: iter 26, simul 34, f= 0.93394210D-01, h'(0)=-0.12026D+00 + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + + n1qn3: iter 27, simul 35, f= 0.68247216D-01, h'(0)=-0.20762D-01 + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + + n1qn3: iter 28, simul 36, f= 0.49926692D-01, h'(0)=-0.55493D-01 + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + + n1qn3: iter 29, simul 38, f= 0.36768989D-01, h'(0)=-0.91754D-02 + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + + n1qn3: iter 30, simul 39, f= 0.28635822D-01, h'(0)=-0.25872D-01 + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + + n1qn3: iter 31, simul 40, f= 0.11210317D-01, h'(0)=-0.94861D-02 + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + + n1qn3: iter 32, simul 41, f= 0.47312377D-02, h'(0)=-0.12658D-01 + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + + n1qn3: iter 33, simul 43, f= 0.27115840D-02, h'(0)=-0.27047D-02 + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + + n1qn3: iter 34, simul 44, f= 0.78628279D-03, h'(0)=-0.10616D-02 + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + + n1qn3: iter 35, simul 45, f= 0.10596352D-03, h'(0)=-0.16466D-03 + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + + n1qn3: iter 36, simul 46, f= 0.65777570D-05, h'(0)=-0.12835D-04 + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + + n1qn3: iter 37, simul 47, f= 0.65292577D-06, h'(0)=-0.24132D-05 + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + + n1qn3: iter 38, simul 48, f= 0.48527840D-06, h'(0)=-0.97037D-06 + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + + n1qn3: iter 39, simul 49, f= 0.73389661D-12, h'(0)=-0.14313D-11 + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + + n1qn3: iter 40, simul 50, f= 0.20623400D-15, h'(0)=-0.99092D-16 + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.965D-21 + + n1qn3: iter 41, simul 51, f= 0.53783590D-16, h'(0)=-0.47240D-24 + nlis0 fpn=-0.472D-24 d2= 0.12D-25 tmin= 0.21D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.432D-21 0.118D-27 + + n1qn3: iter 42, simul 52, f= 0.53783159D-16, h'(0)=-0.24956D-27 + nlis0 fpn=-0.250D-27 d2= 0.62D-27 tmin= 0.10D-01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.163D-21 -0.218D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+00 0.163D-22 -0.225D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.900D-01 0.147D-22 0.269D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.810D-01 0.130D-22 -0.230D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.729D-01 0.114D-22 0.155D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.656D-01 0.114D-22 0.191D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.590D-01 0.977D-23 -0.235D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.531D-01 0.814D-23 0.105D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.478D-01 0.814D-23 0.259D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.430D-01 0.651D-23 -0.488D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D-01 0.651D-23 -0.240D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.349D-01 0.489D-23 0.558D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.314D-01 0.489D-23 0.254D-27 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783159D-16 -0.250D-27 + nlis0 0.31381060D-01 0.53783164D-16 0.254D-27 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 65 + realized relative precision on g: 0.20D-15 + norm of x = 0.14142135D+01 + f = 0.53783159D-16 + norm of x = 0.11121981D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 4 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394210D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247216D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926692D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768989D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635822D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210317D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312377D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115840D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628279D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596352D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777570D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65292577D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527840D-06, h'(0)=-0.97037D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27052D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11217D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73389661D-12, h'(0)=-0.14313D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61636D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53527D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20623400D-15, h'(0)=-0.99092D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.965D-21 + n1qn3: stopping criterion on g: 0.92949D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84653D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 78.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53783590D-16, h'(0)=-0.47240D-24 + n1qn3: line search + nlis0 fpn=-0.472D-24 d2= 0.12D-25 tmin= 0.21D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.432D-21 0.118D-27 + n1qn3: stopping criterion on g: 0.19705D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.70730D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.351D-02 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.209D-02 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783159D-16, h'(0)=-0.24956D-27 + n1qn3: line search + nlis0 fpn=-0.250D-27 d2= 0.62D-27 tmin= 0.10D-01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.163D-21 -0.218D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+00 0.163D-22 -0.225D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.900D-01 0.147D-22 0.269D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.810D-01 0.130D-22 -0.230D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.729D-01 0.114D-22 0.155D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.656D-01 0.114D-22 0.191D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.590D-01 0.977D-23 -0.235D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.531D-01 0.814D-23 0.105D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.478D-01 0.814D-23 0.259D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.430D-01 0.651D-23 -0.488D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D-01 0.651D-23 -0.240D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.349D-01 0.489D-23 0.558D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.314D-01 0.489D-23 0.254D-27 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783159D-16 -0.250D-27 + nlis0 0.31381060D-01 0.53783164D-16 0.254D-27 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 65 + realized relative precision on g: 0.20D-15 + norm of x = 0.14142135D+01 + f = 0.53783159D-16 + norm of x = 0.11121981D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 5 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394210D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247216D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926692D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768989D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635822D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210317D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312377D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115840D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628279D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596352D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777570D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65292577D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527840D-06, h'(0)=-0.97037D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27052D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11217D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73389661D-12, h'(0)=-0.14313D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61636D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53527D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20623400D-15, h'(0)=-0.99092D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.965D-21 + n1qn3: stopping criterion on g: 0.92949D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84653D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 78.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53783590D-16, h'(0)=-0.47240D-24 + n1qn3: line search + nlis0 fpn=-0.472D-24 d2= 0.12D-25 tmin= 0.21D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.432D-21 0.118D-27 + n1qn3: stopping criterion on g: 0.19705D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.70730D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.351D-02 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.209D-02 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783159D-16, h'(0)=-0.24956D-27 + n1qn3: line search + nlis0 fpn=-0.250D-27 d2= 0.62D-27 tmin= 0.10D-01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.163D-21 -0.218D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+00 0.163D-22 -0.225D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.900D-01 0.147D-22 0.269D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.810D-01 0.130D-22 -0.230D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.729D-01 0.114D-22 0.155D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.656D-01 0.114D-22 0.191D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.590D-01 0.977D-23 -0.235D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.531D-01 0.814D-23 0.105D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.478D-01 0.814D-23 0.259D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.430D-01 0.651D-23 -0.488D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D-01 0.651D-23 -0.240D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.349D-01 0.489D-23 0.558D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.314D-01 0.489D-23 0.254D-27 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783159D-16 -0.250D-27 + nlis0 0.31381060D-01 0.53783164D-16 0.254D-27 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 65 + realized relative precision on g: 0.20D-15 + norm of x = 0.14142135D+01 + f = 0.53783159D-16 + norm of x = 0.11121981D-13 +Optimization stops because too small variations for x. + diff --git a/modules/optimization/tests/nonreg_tests/bug_12702.tst b/modules/optimization/tests/nonreg_tests/bug_12702.tst new file mode 100755 index 000000000..45f02e9e9 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_12702.tst @@ -0,0 +1,37 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 12702 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=12702 +// +// <-- Short Description --> +// When no extra parameters are needed in the cost function, NDcost does not work: +// + +function f = rosenbrock(x) + f = 100.0 * (x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +function [f, g, ind] = rosenbrockCost(x, ind) + if ((ind == 1) | (ind == 4)) then + f = rosenbrock ( x ); + end + if ((ind == 1) | (ind == 4)) then + g = derivative ( rosenbrock , x(:) ); + end +endfunction + +x0 = [-1.2 1.0]; +lines(0); + +for impval = 1:5 + [ fopt , xopt ] = optim ( rosenbrockCost , x0 , "gc" , imp=impval); +end diff --git a/modules/optimization/tests/nonreg_tests/bug_12702.win.dia.ref b/modules/optimization/tests/nonreg_tests/bug_12702.win.dia.ref new file mode 100755 index 000000000..0c4a6154c --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_12702.win.dia.ref @@ -0,0 +1,2485 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 12702 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=12702 +// +// <-- Short Description --> +// When no extra parameters are needed in the cost function, NDcost does not work: +// +function f = rosenbrock(x) + f = 100.0 * (x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +function [f, g, ind] = rosenbrockCost(x, ind) + if ((ind == 1) | (ind == 4)) then + f = rosenbrock ( x ); + end + if ((ind == 1) | (ind == 4)) then + g = derivative ( rosenbrock , x(:) ); + end +endfunction +x0 = [-1.2 1.0]; +lines(0); +for impval = 1:5 + [ fopt , xopt ] = optim ( rosenbrockCost , x0 , "gc" , imp=impval); +end +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 1 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783484D-16 -0.248D-29 + nlis0 0.38722999D+01 0.53783488D-16 0.743D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.21D-15 + norm of x = 0.14142135D+01 + f = 0.53783484D-16 + norm of x = 0.14924691D-12 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 2 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 26, simul 34, f= 0.93394212D-01, h'(0)=-0.12026D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 27, simul 35, f= 0.68247217D-01, h'(0)=-0.20762D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 30, simul 39, f= 0.28635823D-01, h'(0)=-0.25872D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 32, simul 41, f= 0.47312381D-02, h'(0)=-0.12658D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 33, simul 43, f= 0.27115837D-02, h'(0)=-0.27047D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 34, simul 44, f= 0.78628297D-03, h'(0)=-0.10616D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 36, simul 46, f= 0.65777606D-05, h'(0)=-0.12835D-04 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 37, simul 47, f= 0.65293408D-06, h'(0)=-0.24132D-05 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 38, simul 48, f= 0.48527633D-06, h'(0)=-0.97036D-06 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 39, simul 49, f= 0.73395789D-12, h'(0)=-0.14314D-11 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 40, simul 50, f= 0.20622903D-15, h'(0)=-0.99086D-16 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 41, simul 51, f= 0.53784084D-16, h'(0)=-0.47400D-24 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 42, simul 52, f= 0.53783484D-16, h'(0)=-0.24769D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783484D-16 -0.248D-29 + nlis0 0.38722999D+01 0.53783488D-16 0.743D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.21D-15 + norm of x = 0.14142135D+01 + f = 0.53783484D-16 + norm of x = 0.14924691D-12 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 3 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + ------------------------------------------------------------------------------- + + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + + n1qn3: iter 26, simul 34, f= 0.93394212D-01, h'(0)=-0.12026D+00 + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + + n1qn3: iter 27, simul 35, f= 0.68247217D-01, h'(0)=-0.20762D-01 + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + + n1qn3: iter 30, simul 39, f= 0.28635823D-01, h'(0)=-0.25872D-01 + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + + n1qn3: iter 32, simul 41, f= 0.47312381D-02, h'(0)=-0.12658D-01 + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + + n1qn3: iter 33, simul 43, f= 0.27115837D-02, h'(0)=-0.27047D-02 + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + + n1qn3: iter 34, simul 44, f= 0.78628297D-03, h'(0)=-0.10616D-02 + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + + n1qn3: iter 36, simul 46, f= 0.65777606D-05, h'(0)=-0.12835D-04 + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + + n1qn3: iter 37, simul 47, f= 0.65293408D-06, h'(0)=-0.24132D-05 + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + + n1qn3: iter 38, simul 48, f= 0.48527633D-06, h'(0)=-0.97036D-06 + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + + n1qn3: iter 39, simul 49, f= 0.73395789D-12, h'(0)=-0.14314D-11 + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + + n1qn3: iter 40, simul 50, f= 0.20622903D-15, h'(0)=-0.99086D-16 + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.112D-20 + + n1qn3: iter 41, simul 51, f= 0.53784084D-16, h'(0)=-0.47400D-24 + nlis0 fpn=-0.474D-24 d2= 0.19D-25 tmin= 0.17D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.599D-21 -0.107D-26 + + n1qn3: iter 42, simul 52, f= 0.53783484D-16, h'(0)=-0.24769D-29 + nlis0 fpn=-0.248D-29 d2= 0.33D-32 tmin= 0.39D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D+01 0.326D-23 0.743D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783484D-16 -0.248D-29 + nlis0 0.38722999D+01 0.53783488D-16 0.743D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.21D-15 + norm of x = 0.14142135D+01 + f = 0.53783484D-16 + norm of x = 0.14924691D-12 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 4 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394212D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247217D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635823D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312381D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115837D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628297D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777606D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65293408D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527633D-06, h'(0)=-0.97036D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27051D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11218D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73395789D-12, h'(0)=-0.14314D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61631D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53526D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20622903D-15, h'(0)=-0.99086D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.112D-20 + n1qn3: stopping criterion on g: 0.92861D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84647D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 80.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53784084D-16, h'(0)=-0.47400D-24 + n1qn3: line search + nlis0 fpn=-0.474D-24 d2= 0.19D-25 tmin= 0.17D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.599D-21 -0.107D-26 + n1qn3: stopping criterion on g: 0.21365D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.86648D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.352D-02 + Oren-Spedicato factor (not used) = 0.102D-02 diagonal: average value = 0.198D-02 + n1qn3: descent direction d: angle(-g,d) = 29.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783484D-16, h'(0)=-0.24769D-29 + n1qn3: line search + nlis0 fpn=-0.248D-29 d2= 0.33D-32 tmin= 0.39D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D+01 0.326D-23 0.743D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783484D-16 -0.248D-29 + nlis0 0.38722999D+01 0.53783488D-16 0.743D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.21D-15 + norm of x = 0.14142135D+01 + f = 0.53783484D-16 + norm of x = 0.14924691D-12 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 5 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394212D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247217D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635823D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312381D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115837D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628297D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777606D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65293408D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527633D-06, h'(0)=-0.97036D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27051D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11218D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73395789D-12, h'(0)=-0.14314D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61631D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53526D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20622903D-15, h'(0)=-0.99086D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.112D-20 + n1qn3: stopping criterion on g: 0.92861D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84647D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 80.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53784084D-16, h'(0)=-0.47400D-24 + n1qn3: line search + nlis0 fpn=-0.474D-24 d2= 0.19D-25 tmin= 0.17D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.599D-21 -0.107D-26 + n1qn3: stopping criterion on g: 0.21365D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.86648D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.352D-02 + Oren-Spedicato factor (not used) = 0.102D-02 diagonal: average value = 0.198D-02 + n1qn3: descent direction d: angle(-g,d) = 29.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783484D-16, h'(0)=-0.24769D-29 + n1qn3: line search + nlis0 fpn=-0.248D-29 d2= 0.33D-32 tmin= 0.39D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D+01 0.326D-23 0.743D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783484D-16 -0.248D-29 + nlis0 0.38722999D+01 0.53783488D-16 0.743D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.21D-15 + norm of x = 0.14142135D+01 + f = 0.53783484D-16 + norm of x = 0.14924691D-12 +Optimization stops because too small variations for x. + diff --git a/modules/optimization/tests/nonreg_tests/bug_13092.dia.ref b/modules/optimization/tests/nonreg_tests/bug_13092.dia.ref new file mode 100755 index 000000000..4f4d0a9f8 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_13092.dia.ref @@ -0,0 +1,31 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 13092 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=13092 +// +// <-- Short Description --> +// Wrong error message when user function returned a complex number +function d = myf(x) + mu = 1e6 + eVal_min = 0.4 + A = [4*(x(1)**4 + x(2)**4), 2*x(2)**4; 2*x(2)**4, 4*x(2)**4] + B = [4*(x(1)**2 + x(2)**2), -3*x(2)**2; -3*x(2)**2, 4*x(2)**2] + eig = spec(A,B) + eig = gsort(eig, "g", "i") + eVal = eig(1) + d = x(1)**2 + x(2)**2 + mu * (eVal_min - eVal)**2 +endfunction +xStart = [1 1]; +refMsg = msprintf(_("%s: Wrong type for user function output argument #%d: A real matrix expected."), "optimbase_function", 1); +assert_checkerror("[x, fval] = fminsearch(myf, xStart);", refMsg); diff --git a/modules/optimization/tests/nonreg_tests/bug_13092.tst b/modules/optimization/tests/nonreg_tests/bug_13092.tst new file mode 100755 index 000000000..536ce84b1 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_13092.tst @@ -0,0 +1,34 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 13092 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=13092 +// +// <-- Short Description --> +// Wrong error message when user function returned a complex number + +function d = myf(x) + mu = 1e6 + eVal_min = 0.4 + A = [4*(x(1)**4 + x(2)**4), 2*x(2)**4; 2*x(2)**4, 4*x(2)**4] + B = [4*(x(1)**2 + x(2)**2), -3*x(2)**2; -3*x(2)**2, 4*x(2)**2] + eig = spec(A,B) + eig = gsort(eig, "g", "i") + eVal = eig(1) + d = x(1)**2 + x(2)**2 + mu * (eVal_min - eVal)**2 +endfunction + +xStart = [1 1]; + +refMsg = msprintf(_("%s: Wrong type for user function output argument #%d: A real matrix expected."), "optimbase_function", 1); +assert_checkerror("[x, fval] = fminsearch(myf, xStart);", refMsg); diff --git a/modules/optimization/tests/nonreg_tests/bug_13116.dia.ref b/modules/optimization/tests/nonreg_tests/bug_13116.dia.ref new file mode 100755 index 000000000..ede966c18 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_13116.dia.ref @@ -0,0 +1,65 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// Copyright (C) 2013 - Raise Partner - Mohamed Houacine +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 13116 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=13116 +// +// <-- Short Description --> +// qpsolve did not respect the constraints +me = 1; +// Constraints: ci <= x <= cs +ci = [-0.5; -1; -1; -1; -1; -1; -1; -1; -1; -1]; +cs = [0.5; 1; 1; 1; 1; 1; 1; 1; 1; 1]; +b = 1; +C = ones(1, 10); +p = zeros(10, 1); +Q = [1D-07 0 0 0 0 0 0 0 0 0; +0 0.0000284 0.0000103 0.0000241 0.0000047 -0.0000031 -0.0000008 0.0000220 0.0000207 0.0000024; +0 0.0000103 0.0000336 0.0000238 0.0000088 -0.0000022 -0.0000004 0.0000093 0.0000114 0.0000034; +0 0.0000241 0.0000238 0.0000436 0.0000137 -0.0000005 -0.0000043 0.0000198 0.0000126 0.0000004; +0 0.0000047 0.0000088 0.0000137 0.0000330 0.0000041 0.0000017 0.0000077 0.0000055 0.0000109; +0 -0.0000031 -0.0000022 -0.0000005 0.0000041 0.0000269 0.0000003 -0.0000036 -0.0000054 0.0000094; +0 -0.0000008 -0.0000004 -0.0000043 0.0000017 0.0000003 0.0000092 0.0000033 0.0000005 0.0000028; +0 0.0000220 0.0000093 0.0000198 0.0000077 -0.0000036 0.0000033 0.0000497 0.0000218 0.0000018; +0 0.0000207 0.0000114 0.0000126 0.0000055 -0.0000054 0.0000005 0.0000218 0.0000343 0.0000033; +0 0.0000024 0.0000034 0.0000004 0.0000109 0.0000094 0.0000028 0.0000018 0.0000033 0.0000160 ]; +[x, iact, iter, f] = qpsolve(Q, p, C, b, ci, cs, me); +assert_checktrue(abs(x(1)) <= 0.5); +assert_checktrue(abs(x(2:$)) <= 1); +// Example from the help page +//Find x in R^6 such that: +//C1*x = b1 (3 equality constraints i.e me=3) +C1 = [1 -1 1 0 3 1; +-1 0 -3 -4 5 6; +2 5 3 0 1 0]; +b1 = [1; 2; 3]; +//C2*x <= b2 (2 inequality constraints) +C2 = [0 1 0 1 2 -1; +-1 0 2 1 1 0]; +b2 =[-1; 2.5]; +//with x between ci and cs: +ci = [-1000; -10000; 0; -1000; -1000; -1000]; +cs = [10000; 100; 1.5; 100; 100; 1000]; +//and minimize 0.5*x'*Q*x + p'*x with +p = [1; 2; 3; 4; 5; 6]; Q = eye(6, 6); +//No initial point is given; +C = [C1; C2]; +b = [b1; b2]; +me = 3; +[x, iact, iter, f] = qpsolve(Q, p, C, b, ci, cs, me); +//Only linear constraints (1 to 4) are active +assert_checktrue(x(1) >= -1000 & x(1) <= 10000); +assert_checktrue(x(2) >= -10000 & x(2) <= 100); +assert_checktrue(x(3) >= 0 & x(3) <= 1.5); +assert_checktrue(x(4) >= -1000 & x(4) <= 100); +assert_checktrue(x(5) >= -1000 & x(5) <= 100); +assert_checktrue(x(6) >= -1000 & x(6) <= 1000); diff --git a/modules/optimization/tests/nonreg_tests/bug_13116.tst b/modules/optimization/tests/nonreg_tests/bug_13116.tst new file mode 100755 index 000000000..578719d2b --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_13116.tst @@ -0,0 +1,74 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// Copyright (C) 2013 - Raise Partner - Mohamed Houacine +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 13116 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=13116 +// +// <-- Short Description --> +// qpsolve did not respect the constraints + +me = 1; +// Constraints: ci <= x <= cs +ci = [-0.5; -1; -1; -1; -1; -1; -1; -1; -1; -1]; +cs = [0.5; 1; 1; 1; 1; 1; 1; 1; 1; 1]; +b = 1; +C = ones(1, 10); +p = zeros(10, 1); +Q = [1D-07 0 0 0 0 0 0 0 0 0; +0 0.0000284 0.0000103 0.0000241 0.0000047 -0.0000031 -0.0000008 0.0000220 0.0000207 0.0000024; +0 0.0000103 0.0000336 0.0000238 0.0000088 -0.0000022 -0.0000004 0.0000093 0.0000114 0.0000034; +0 0.0000241 0.0000238 0.0000436 0.0000137 -0.0000005 -0.0000043 0.0000198 0.0000126 0.0000004; +0 0.0000047 0.0000088 0.0000137 0.0000330 0.0000041 0.0000017 0.0000077 0.0000055 0.0000109; +0 -0.0000031 -0.0000022 -0.0000005 0.0000041 0.0000269 0.0000003 -0.0000036 -0.0000054 0.0000094; +0 -0.0000008 -0.0000004 -0.0000043 0.0000017 0.0000003 0.0000092 0.0000033 0.0000005 0.0000028; +0 0.0000220 0.0000093 0.0000198 0.0000077 -0.0000036 0.0000033 0.0000497 0.0000218 0.0000018; +0 0.0000207 0.0000114 0.0000126 0.0000055 -0.0000054 0.0000005 0.0000218 0.0000343 0.0000033; +0 0.0000024 0.0000034 0.0000004 0.0000109 0.0000094 0.0000028 0.0000018 0.0000033 0.0000160 ]; + +[x, iact, iter, f] = qpsolve(Q, p, C, b, ci, cs, me); + +assert_checktrue(abs(x(1)) <= 0.5); +assert_checktrue(abs(x(2:$)) <= 1); + +// Example from the help page +//Find x in R^6 such that: +//C1*x = b1 (3 equality constraints i.e me=3) +C1 = [1 -1 1 0 3 1; +-1 0 -3 -4 5 6; +2 5 3 0 1 0]; +b1 = [1; 2; 3]; + +//C2*x <= b2 (2 inequality constraints) +C2 = [0 1 0 1 2 -1; +-1 0 2 1 1 0]; +b2 =[-1; 2.5]; + +//with x between ci and cs: +ci = [-1000; -10000; 0; -1000; -1000; -1000]; +cs = [10000; 100; 1.5; 100; 100; 1000]; + +//and minimize 0.5*x'*Q*x + p'*x with +p = [1; 2; 3; 4; 5; 6]; Q = eye(6, 6); + +//No initial point is given; +C = [C1; C2]; +b = [b1; b2]; +me = 3; +[x, iact, iter, f] = qpsolve(Q, p, C, b, ci, cs, me); +//Only linear constraints (1 to 4) are active + +assert_checktrue(x(1) >= -1000 & x(1) <= 10000); +assert_checktrue(x(2) >= -10000 & x(2) <= 100); +assert_checktrue(x(3) >= 0 & x(3) <= 1.5); +assert_checktrue(x(4) >= -1000 & x(4) <= 100); +assert_checktrue(x(5) >= -1000 & x(5) <= 100); +assert_checktrue(x(6) >= -1000 & x(6) <= 1000); diff --git a/modules/optimization/tests/nonreg_tests/bug_13243.dia.ref b/modules/optimization/tests/nonreg_tests/bug_13243.dia.ref new file mode 100755 index 000000000..1b33ef561 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_13243.dia.ref @@ -0,0 +1,69 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2014 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 13243 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=13243 +// +// <-- Short Description --> +// optim() with "gc" option failed when imp<0. +function f = problem1(x) + f = sum((x-(1:length(x))').^2); +endfunction +// Define the cost function: +function [f, g, ind] = myoptfunc(x, ind) + f = problem1(x); + g = derivative(problem1, x, order=4); +endfunction +// Initial guess: +x0 = 1*ones(5, 1); +// Perform optimization: +[fopt, xopt] = optim(myoptfunc, x0, "gc", imp=-1); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +Norm of projected gradient lower than 0.0000000D+00. + +assert_checkequal(fopt, 0); +assert_checkequal(xopt', 1:5); diff --git a/modules/optimization/tests/nonreg_tests/bug_13243.tst b/modules/optimization/tests/nonreg_tests/bug_13243.tst new file mode 100755 index 000000000..5d20a0151 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_13243.tst @@ -0,0 +1,36 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2014 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 13243 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=13243 +// +// <-- Short Description --> +// optim() with "gc" option failed when imp<0. + +function f = problem1(x) + f = sum((x-(1:length(x))').^2); +endfunction + +// Define the cost function: +function [f, g, ind] = myoptfunc(x, ind) + f = problem1(x); + g = derivative(problem1, x, order=4); +endfunction + +// Initial guess: +x0 = 1*ones(5, 1); + +// Perform optimization: +[fopt, xopt] = optim(myoptfunc, x0, "gc", imp=-1); + +assert_checkequal(fopt, 0); +assert_checkequal(xopt', 1:5); diff --git a/modules/optimization/tests/nonreg_tests/bug_1456.dia.ref b/modules/optimization/tests/nonreg_tests/bug_1456.dia.ref new file mode 100755 index 000000000..4f69cf557 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_1456.dia.ref @@ -0,0 +1,46 @@ +-->write(%io(2),tmpdirToPrint); +TMPDIR1='/tmp/SD_7204_' +-->// <-- HEADER END --> +-->// ============================================================================= +-->// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +-->// Copyright (C) 2008 - INRIA - Vincent Couvert <vincent.couvert@inria.fr> +-->// +-->// This file is distributed under the same license as the Scilab package. +-->// ============================================================================= +-->// <-- TEST WITH GRAPHIC @#> +-->// <-- Non-regression test for bug 1456 @#> +-->// NOT FIXED +-->// <-- Bugzilla URL @#> +-->// http://bugzilla.scilab.org/show_bug.cgi?id=1456 +-->// +-->// <-- Short Description @#> +-->// Detailed description of the problem +-->// Numerical problem with lmisolver +-->// Text of the scilab error message +-->// Z0 does not satisfy equality conditions for dual feasibility. +-->// !--error 230 +-->// semidef fails +-->// at line 238 of function lmisolver called by : +-->// [XLISTF,OPT]=lmisolver(list(eye(A)),fct) +-->A=[1 -24 0 -240;1 -12 -60 -120;0 1 0 0;0 0 1 0]; +-->function [LME,LMI,OBJ]=fct(XLIST) +-->T=XLIST(1); +-->LME=T-T'; +-->LMI=-A*T-T*A'-eye(); +-->OBJ=[]; +-->endfunction +-->[XLISTF,OPT]=lmisolver(list(eye(A)),fct); +lmisolver: Construction of canonical representation. +lmisolver: Basis Construction. +lmisolver: FEASIBILITY PHASE. +Z0 does not satisfy equality conditions for dual feasibility. +-->// <-- FOOTER START --> +-->catch +--> errmsg = "<--"+"Error on the test script file"+"-->" + errmsg = + + <--Error on the test script file--> +--> printf("%s",errmsg) +<--Error on the test script file-->-->end + +-->diary(0); diff --git a/modules/optimization/tests/nonreg_tests/bug_1456.tst b/modules/optimization/tests/nonreg_tests/bug_1456.tst new file mode 100755 index 000000000..69e8e17dc --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_1456.tst @@ -0,0 +1,43 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Vincent Couvert <vincent.couvert@inria.fr> +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// <-- Non-regression test for bug 1456 --> +// NOT FIXED +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=1456 +// +// <-- Short Description --> +// Detailed description of the problem +// Numerical problem with lmisolver +// Text of the scilab error message +// Z0 does not satisfy equality conditions for dual feasibility. +// !--error 230 +// semidef fails +// at line 238 of function lmisolver called by : +// [XLISTF,OPT]=lmisolver(list(eye(A)),fct) + +// <-- NOT FIXED --> + +A=[1 -24 0 -240;1 -12 -60 -120;0 1 0 0;0 0 1 0]; + +function [LME,LMI,OBJ]=fct(XLIST) + T=XLIST(1); + LME=T-T'; + LMI=-A*T-T*A'-eye(); + OBJ=[]; +endfunction + +[XLISTF,OPT]=lmisolver(list(eye(A)),fct); +Tcomputed = XLISTF(1); +Texpected = [9.898862973943269 , -0.148040709667531 , 0.084466211100534 , 0.056050336743578 ; + -0.148040709667531 , 0.009915577328041 , -0.000240812494752 , -0.002102817295201 ; + 0.084466211100534 , -0.000240812494752 , 0.002102817295201 , -0.000240812494554 ; + 0.056050336743578 , -0.002102817295201 , -0.000240812494554 , 0.000795767345537]; +Texpected= 1.0e+08 * Texpected; +if or(abs(Tcomputed-Texpected)>%eps) then bugmes();quit;end diff --git a/modules/optimization/tests/nonreg_tests/bug_2330.dia.ref b/modules/optimization/tests/nonreg_tests/bug_2330.dia.ref new file mode 100755 index 000000000..04a2151f5 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_2330.dia.ref @@ -0,0 +1,32 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr> +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- Non-regression test for bug 2330 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=2330 +// +// <-- Short Description --> +// datafit does not work equivalently on WinXP and Linux. With a given dataset and +// same routines centered on datafit function, it works perfectly on Linux and +// partially (some data are fitted some others not) on WinXP. +//build the data to fit +//--------------------- +function Xcalc=biexp(p,t) + Xcalc=p(1).*exp(-p(2).*t)+p(3).*exp(-p(4).*t)+p(5); +endfunction; +t=(0:100:36000)'; +p=[0.1;0.0001;0.2;0.0002;0.3]; +X=biexp(p,t); +//try to fit the data +//------------------- +//the error function +function e=myerf(p,X,t),e=X-biexp(p,t),endfunction +// the initial point +p0=[0.01;0.001;0.01;0.001;0.1]; +//call datafit +[pr,err]=datafit(list(myerf,t),X,p0); +if err>=5d-4 then bugmes();quit;end diff --git a/modules/optimization/tests/nonreg_tests/bug_2330.tst b/modules/optimization/tests/nonreg_tests/bug_2330.tst new file mode 100755 index 000000000..fffd5be2e --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_2330.tst @@ -0,0 +1,37 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr> +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// <-- Non-regression test for bug 2330 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=2330 +// +// <-- Short Description --> +// datafit does not work equivalently on WinXP and Linux. With a given dataset and +// same routines centered on datafit function, it works perfectly on Linux and +// partially (some data are fitted some others not) on WinXP. + +//build the data to fit +//--------------------- +function Xcalc=biexp(p,t) + Xcalc=p(1).*exp(-p(2).*t)+p(3).*exp(-p(4).*t)+p(5); +endfunction; +t=(0:100:36000)'; +p=[0.1;0.0001;0.2;0.0002;0.3]; +X=biexp(p,t); + +//try to fit the data +//------------------- +//the error function +function e=myerf(p,X,t),e=X-biexp(p,t),endfunction +// the initial point +p0=[0.01;0.001;0.01;0.001;0.1]; +//call datafit +[pr,err]=datafit(list(myerf,t),X,p0); +if err>=5d-4 then pause,end diff --git a/modules/optimization/tests/nonreg_tests/bug_2435.dia.ref b/modules/optimization/tests/nonreg_tests/bug_2435.dia.ref new file mode 100755 index 000000000..01a83f0f4 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_2435.dia.ref @@ -0,0 +1,17 @@ +// <-- Non-regression test for bug 2435 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=2435 +// +// <-- Short Description --> +// The following "optim based" function mades scilab hangs +// Scilab Project - Serge Steer +// Copyright INRIA 2007 +// Date : June 2007 +function [f,g,ind]=cost(x,ind) + xref=[1;2;3]; + f=0.5*norm(x-xref)^2 + g=x-xref; +endfunction +x0=[1;-1;1]; +if execstr('[f,xopt]=optim(cost,,''b'',-2*ones(x0),2*ones(x0),x0);','errcatch') <> 54 then bugmes();quit;end diff --git a/modules/optimization/tests/nonreg_tests/bug_2435.tst b/modules/optimization/tests/nonreg_tests/bug_2435.tst new file mode 100755 index 000000000..b61678b97 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_2435.tst @@ -0,0 +1,26 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr> +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// <-- Non-regression test for bug 2435 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=2435 +// +// <-- Short Description --> +// The following "optim based" function mades scilab hangs + +function [f,g,ind]=cost(x,ind) + xref=[1;2;3]; + f=0.5*norm(x-xref)^2 + g=x-xref; +endfunction + +x0=[1;-1;1]; + +if execstr('[f,xopt]=optim(cost,,''b'',-2*ones(x0),2*ones(x0),x0);','errcatch') <> 54 then pause,end diff --git a/modules/optimization/tests/nonreg_tests/bug_244.dia.ref b/modules/optimization/tests/nonreg_tests/bug_244.dia.ref new file mode 100755 index 000000000..646282921 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_244.dia.ref @@ -0,0 +1,160 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Vincent COUVERT +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- TEST WITH GRAPHIC --> +// <-- Non-regression test for bug 244 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=244 +// +// <-- Short Description --> +// recursion problems with fsolve +// Titration of a dibase with HCl (at the beginning, a little amount of NaOH was added) +// parameters +//C0=2.39e-4 +C0=2e-4; +C02=0.02; +na0=2e-7; +v0=0.01; +pK1=6.9; +pK2=6.9; +// function to get the calculated pH +deff('[x]=f0(pH)','x=(10^(-pH-pK1)+2*10^(-2*pH))/(10^(-pK1-pK2)+10^(-pH-pK1)+10^(-2*pH))+((v0+v)*(10^(-pH)-10^(pH-14))+na0-C02*v)/(C0*v0)'); +deff('[pH]=fpH(p)','v=p;pH=fsolve(7,f0)'); +// data +X=[];Y=[]; +X=[ +//0 +0.00001 +0.00002 +0.00003 +0.00004 +0.00005 +0.000055 +0.00006 +0.000065 +0.00007 +0.000075 +0.00008 +0.000085 +0.00009 +0.000095 +0.0001 +0.000105 +0.00011 +0.000115 +0.00012 +0.000125 +0.00013 +0.000135 +0.00014 +0.000145 +0.00015 +0.000155 +0.00016 +0.000165 +0.00017 +0.000175 +0.00018 +0.000185 +0.00019 +0.000195 +0.0002 +0.000205 +0.00021 +0.000215 +0.00022 +0.000225 +0.00023 +0.000235 +0.00024 +0.000245 +0.00025 +0.000255 +0.00026 +0.000265 +0.00027 +0.000275 +0.00028 +0.000285 +0.000295 +0.000305 +0.00032 +0.000345 +0.000395 +0.000445 +]; +Y=[ +//8.21 +7.82 +7.64 +7.48 +7.37 +7.22 +7.20 +7.17 +7.13 +7.12 +7.12 +7.10 +7.07 +7.04 +7.07 +7.04 +7.01 +6.98 +6.94 +6.91 +6.87 +6.84 +6.80 +6.76 +6.73 +6.68 +6.61 +6.57 +6.51 +6.45 +6.36 +6.27 +6.14 +6.02 +5.84 +5.64 +5.34 +5.00 +4.80 +4.59 +4.46 +4.40 +4.33 +4.24 +4.18 +4.11 +4.07 +4.02 +3.99 +3.95 +3.91 +3.88 +3.86 +3.80 +3.76 +3.69 +3.60 +3.47 +3.36 +]; +// fitting +Z=[Y;X]; +deff('e=G(p,z)','pK1=p(1),pK2=p(2),v=z(2),pHexp=z(1),e=pHexp-fpH(v)'); +[p,err]=datafit(G,Z,[6;7]); +// graphic part +clf() +//v=[0:1e-5:4.5e-4] +v=X; +fplot2d(v,fpH); +plot2d(X,Y,[-2]); diff --git a/modules/optimization/tests/nonreg_tests/bug_244.tst b/modules/optimization/tests/nonreg_tests/bug_244.tst new file mode 100755 index 000000000..786c3ec45 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_244.tst @@ -0,0 +1,173 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Vincent COUVERT +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- TEST WITH GRAPHIC --> + +// <-- Non-regression test for bug 244 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=244 +// +// <-- Short Description --> +// recursion problems with fsolve + + +// Titration of a dibase with HCl (at the beginning, a little amount of NaOH was added) + +// parameters +//C0=2.39e-4 +C0=2e-4; +C02=0.02; +na0=2e-7; +v0=0.01; + +pK1=6.9; +pK2=6.9; + +// function to get the calculated pH +deff('[x]=f0(pH)','x=(10^(-pH-pK1)+2*10^(-2*pH))/(10^(-pK1-pK2)+10^(-pH-pK1)+10^(-2*pH))+((v0+v)*(10^(-pH)-10^(pH-14))+na0-C02*v)/(C0*v0)'); +deff('[pH]=fpH(p)','v=p;pH=fsolve(7,f0)'); + +// data + +X=[];Y=[]; + +X=[ +//0 +0.00001 +0.00002 +0.00003 +0.00004 +0.00005 +0.000055 +0.00006 +0.000065 +0.00007 +0.000075 +0.00008 +0.000085 +0.00009 +0.000095 +0.0001 +0.000105 +0.00011 +0.000115 +0.00012 +0.000125 +0.00013 +0.000135 +0.00014 +0.000145 +0.00015 +0.000155 +0.00016 +0.000165 +0.00017 +0.000175 +0.00018 +0.000185 +0.00019 +0.000195 +0.0002 +0.000205 +0.00021 +0.000215 +0.00022 +0.000225 +0.00023 +0.000235 +0.00024 +0.000245 +0.00025 +0.000255 +0.00026 +0.000265 +0.00027 +0.000275 +0.00028 +0.000285 +0.000295 +0.000305 +0.00032 +0.000345 +0.000395 +0.000445 +]; + +Y=[ +//8.21 +7.82 +7.64 +7.48 +7.37 +7.22 +7.20 +7.17 +7.13 +7.12 +7.12 +7.10 +7.07 +7.04 +7.07 +7.04 +7.01 +6.98 +6.94 +6.91 +6.87 +6.84 +6.80 +6.76 +6.73 +6.68 +6.61 +6.57 +6.51 +6.45 +6.36 +6.27 +6.14 +6.02 +5.84 +5.64 +5.34 +5.00 +4.80 +4.59 +4.46 +4.40 +4.33 +4.24 +4.18 +4.11 +4.07 +4.02 +3.99 +3.95 +3.91 +3.88 +3.86 +3.80 +3.76 +3.69 +3.60 +3.47 +3.36 +]; + +// fitting +Z=[Y;X]; +deff('e=G(p,z)','pK1=p(1),pK2=p(2),v=z(2),pHexp=z(1),e=pHexp-fpH(v)'); +[p,err]=datafit(G,Z,[6;7]); + +// graphic part +clf() +//v=[0:1e-5:4.5e-4] +v=X; +fplot2d(v,fpH); +plot2d(X,Y,[-2]); diff --git a/modules/optimization/tests/nonreg_tests/bug_2573.dia.ref b/modules/optimization/tests/nonreg_tests/bug_2573.dia.ref new file mode 100755 index 000000000..d8375276c --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_2573.dia.ref @@ -0,0 +1,39 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr> +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- Non-regression test for bug 2573 1949 and 2101 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=2573 +// +// <-- Short Description --> +//qld gives erroneous answer +Q=[52.260163 -92.994537; -92.994537 166.55854]; +p=[1.8641286;-8.1261342]; +C=zeros(1,2);b=0;me=1; +ci=-%inf*ones(2,1);cs=%inf*ones(2,1); +s1=qld(Q,p,C,b,ci,cs,me); +if norm(s1-[7.89465359259093979;4.45660600662314366])>1d-10 then bugmes();quit;end +// +// Min 1/2 x^T [0.5 -1] x +// [-1 3] +// +// with [1 1] x = 1 +// 0 <= x1 <= +8 +// 0 <= x2 <= +8 +// +Q = [0.5 -1; -1 3]; //positive-defined +p = [0; 0]; +C = [1 1]; +b = 1; +ci = [0; 0]; +cs = []; +me = 1; +x0 = [0.5; 0.5]; +tol = 1e-8; +[xcomputed,lagr_qld,info] = qld(Q,p,C,b,ci,cs,me,tol); +xexpected = [8;3]/11; +if norm(xcomputed-xexpected)>1d-10 then bugmes();quit;end diff --git a/modules/optimization/tests/nonreg_tests/bug_2573.tst b/modules/optimization/tests/nonreg_tests/bug_2573.tst new file mode 100755 index 000000000..6b1b3e42f --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_2573.tst @@ -0,0 +1,47 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr> +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// <-- Non-regression test for bug 2573 1949 and 2101 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=2573 +// +// <-- Short Description --> +//qld gives erroneous answer + +Q=[52.260163 -92.994537; -92.994537 166.55854]; +p=[1.8641286;-8.1261342]; +C=zeros(1,2);b=0;me=1; +ci=-%inf*ones(2,1);cs=%inf*ones(2,1); + +s1=qld(Q,p,C,b,ci,cs,me); +if norm(s1-[7.89465359259093979;4.45660600662314366])>1d-10 then pause,end + + +// +// Min 1/2 x^T [0.5 -1] x +// [-1 3] +// +// with [1 1] x = 1 +// 0 <= x1 <= +8 +// 0 <= x2 <= +8 +// +Q = [0.5 -1; -1 3]; //positive-defined +p = [0; 0]; +C = [1 1]; +b = 1; +ci = [0; 0]; +cs = []; +me = 1; +x0 = [0.5; 0.5]; +tol = 1e-8; + +[xcomputed,lagr_qld,info] = qld(Q,p,C,b,ci,cs,me,tol); +xexpected = [8;3]/11; +if norm(xcomputed-xexpected)>1d-10 then pause,end diff --git a/modules/optimization/tests/nonreg_tests/bug_3056.dia.ref b/modules/optimization/tests/nonreg_tests/bug_3056.dia.ref new file mode 100755 index 000000000..58ece862d --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_3056.dia.ref @@ -0,0 +1,84 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Vincent Couvert <vincent.couvert@inria.fr> +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- TEST WITH GRAPHIC --> +// <-- Non-regression test for bug 3056 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=3056 +// +// <-- Short Description --> +// scilab crash with the following test and the nd algorithm. +// <-- ENGLISH IMPOSED --> +global xn_1; +global fn_1; +global gn_1; +global iter; +global to_record; +// Rastrigin test function +function [f,df,ind] = myf(x,ind) + global xn_1; + global iter; + global to_record; + global fn_1; + global gn_1; + if to_record then + xn_1($+1) = x; + printf("myf: ||xn(1) - xn_1(1)|| = %f - ||xn(2) - xn_1(2)|| = %f - iter = %d",norm(xn_1($)(1)-xn_1($-1)(1)),norm(xn_1($)(2)-xn_1($-1)(2)),iter); + end + iter = iter + 1; + f = x(1)^2+x(2)^2-cos(12*x(1))-cos(18*x(2)); + df(1,1) = 2*x(1) - 12*sin(12*x(1)); + df(2,1) = 2*x(2) - 18*sin(18*x(1)); + if to_record then + fn_1($+1) = f; + gn_1($+1) = df; + printf(" - ||fn - fn_1|| = %f - ||gn - gn_1|| = %f\n",norm(fn_1($)-fn_1($-1)),norm(gn_1($)-gn_1($-1))); + end +endfunction +Min = [-1;-1]; +Max = [1;1]; +x0 = [0.25;-0.25]; +iter = 0; +to_record = %F; +xn_1 = list(); +xn_1($+1) = x0; +fn_1 = list(); +gn_1 = list(); +[f_tmp, df_tmp, ind] = myf(x0,1); +fn_1($+1) = f_tmp; +gn_1($+1) = df_tmp + gn_1 = + + + gn_1(1) + + - 1.1934401 + 17.095542 +to_record = %f; +[fopt,xopt,gopt]=optim(myf,x0,algo="nd","ar",nap=20,iter=10,epsg=1e-1,epsf=1e-1,epsx=[1e-2;1e-2],imp=0); +list_to_plot = xn_1; +xn_1 = list(); +to_record = %F; +x = Min(1):(Max(1)-Min(1))/20:Max(1); +y = Min(2):(Max(2)-Min(2))/20:Max(2); +[X,Y]=meshgrid(x,y); +for i=1:size(X,1) + for j=1:size(X,2) + [Z(i,j),tmp1,tmp2] = myf([X(i,j);Y(i,j)],1); + end +end +scf(); +drawlater; +xset("fpf"," "); +contour(x,y,Z', 10); +_axes = get("current_axes"); +_axes.data_bounds = [Min(1) Max(1) Min(2) Max(2)]; +xtitle("myf","x1","x2"); +for i=1:length(list_to_plot) + plot(list_to_plot(i)(1),list_to_plot(i)(2),"ko"); +end +drawnow; diff --git a/modules/optimization/tests/nonreg_tests/bug_3056.tst b/modules/optimization/tests/nonreg_tests/bug_3056.tst new file mode 100755 index 000000000..0665bd00e --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_3056.tst @@ -0,0 +1,98 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Vincent Couvert <vincent.couvert@inria.fr> +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- TEST WITH GRAPHIC --> + +// <-- Non-regression test for bug 3056 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=3056 +// +// <-- Short Description --> +// scilab crash with the following test and the nd algorithm. + +// <-- ENGLISH IMPOSED --> + +global xn_1; +global fn_1; +global gn_1; +global iter; +global to_record; + +// Rastrigin test function + +function [f,df,ind] = myf(x,ind) + global xn_1; + global iter; + global to_record; + global fn_1; + global gn_1; + + if to_record then + xn_1($+1) = x; + printf("myf: ||xn(1) - xn_1(1)|| = %f - ||xn(2) - xn_1(2)|| = %f - iter = %d",norm(xn_1($)(1)-xn_1($-1)(1)),norm(xn_1($)(2)-xn_1($-1)(2)),iter); + end + + iter = iter + 1; + f = x(1)^2+x(2)^2-cos(12*x(1))-cos(18*x(2)); + df(1,1) = 2*x(1) - 12*sin(12*x(1)); + df(2,1) = 2*x(2) - 18*sin(18*x(1)); + if to_record then + fn_1($+1) = f; + gn_1($+1) = df; + printf(" - ||fn - fn_1|| = %f - ||gn - gn_1|| = %f\n",norm(fn_1($)-fn_1($-1)),norm(gn_1($)-gn_1($-1))); + end +endfunction + +Min = [-1;-1]; +Max = [1;1]; + +x0 = [0.25;-0.25]; + +iter = 0; + +to_record = %F; +xn_1 = list(); +xn_1($+1) = x0; +fn_1 = list(); +gn_1 = list(); +[f_tmp, df_tmp, ind] = myf(x0,1); +fn_1($+1) = f_tmp; +gn_1($+1) = df_tmp + +to_record = %f; + +[fopt,xopt,gopt]=optim(myf,x0,algo="nd","ar",nap=20,iter=10,epsg=1e-1,epsf=1e-1,epsx=[1e-2;1e-2],imp=0); + +list_to_plot = xn_1; +xn_1 = list(); +to_record = %F; + +x = Min(1):(Max(1)-Min(1))/20:Max(1); +y = Min(2):(Max(2)-Min(2))/20:Max(2); + +[X,Y]=meshgrid(x,y); + +for i=1:size(X,1) + for j=1:size(X,2) + [Z(i,j),tmp1,tmp2] = myf([X(i,j);Y(i,j)],1); + end +end + +scf(); +drawlater; +xset("fpf"," "); +contour(x,y,Z', 10); +_axes = get("current_axes"); +_axes.data_bounds = [Min(1) Max(1) Min(2) Max(2)]; +xtitle("myf","x1","x2"); + +for i=1:length(list_to_plot) + plot(list_to_plot(i)(1),list_to_plot(i)(2),"ko"); +end + +drawnow; diff --git a/modules/optimization/tests/nonreg_tests/bug_3161.dia.ref b/modules/optimization/tests/nonreg_tests/bug_3161.dia.ref new file mode 100755 index 000000000..c12804d21 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_3161.dia.ref @@ -0,0 +1,30 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Allan CORNET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- Non-regression test for bug 3161 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=3161 +// +// <-- Short Description --> +// datafit crashes +function y=FF(x,p),y=p(1)*(x-p(2))+p(3)*x.*x,endfunction +X=[];Y=[]; +pg=[34;12;14]; //parameter used to generate data +for x=0:.1:3, Y=[Y,FF(x,pg)+100*(rand()-.5)];X=[X,x];end +Z=[Y;X]; +//The criterion function +function e=G(p,z) + y=z(1),x=z(2); + e=y-FF(x,p); +endfunction +//Solve the problem +p0=[3;5;10]; +p = []; +err = []; +[p,err]=datafit(G,Z,p0); +if p == [] then bugmes();quit;end; +if err == [] then bugmes();quit;end; diff --git a/modules/optimization/tests/nonreg_tests/bug_3161.tst b/modules/optimization/tests/nonreg_tests/bug_3161.tst new file mode 100755 index 000000000..cd8fd66a1 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_3161.tst @@ -0,0 +1,41 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Allan CORNET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// <-- Non-regression test for bug 3161 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=3161 +// +// <-- Short Description --> +// datafit crashes + +function y=FF(x,p),y=p(1)*(x-p(2))+p(3)*x.*x,endfunction + +X=[];Y=[]; + +pg=[34;12;14]; //parameter used to generate data +for x=0:.1:3, Y=[Y,FF(x,pg)+100*(rand()-.5)];X=[X,x];end + +Z=[Y;X]; + +//The criterion function +function e=G(p,z) + y=z(1),x=z(2); + e=y-FF(x,p); +endfunction + +//Solve the problem +p0=[3;5;10]; + +p = []; +err = []; +[p,err]=datafit(G,Z,p0); + +if p == [] then pause,end; +if err == [] then pause,end;
\ No newline at end of file diff --git a/modules/optimization/tests/nonreg_tests/bug_3244.dia.ref b/modules/optimization/tests/nonreg_tests/bug_3244.dia.ref new file mode 100755 index 000000000..1396913cc --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_3244.dia.ref @@ -0,0 +1,57 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- Non-regression test for bug 3244 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=3244 +// +// <-- Short Description --> +// Bad outputs for the qpsolve/qp_solve functions +// ============================================================================= +assert_checkfalse(execstr("qpsolve", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve", refMsg); +assert_checkfalse(execstr("qpsolve(1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1)", refMsg); +assert_checkfalse(execstr("qpsolve(1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1, 1)", refMsg); +assert_checkfalse(execstr("qpsolve(1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1, 1, 1)", refMsg); +assert_checkfalse(execstr("qpsolve(1, 1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1, 1, 1, 1)", refMsg); +assert_checkfalse(execstr("qpsolve(1, 1, 1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1, 1, 1, 1, 1)", refMsg); +assert_checkfalse(execstr("qpsolve(1, 1, 1, 1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1, 1, 1, 1, 1, 1)", refMsg); +assert_checkfalse(execstr("qp_solve", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qp_solve", 5); +assert_checkerror("qp_solve", refMsg); +assert_checkfalse(execstr("qp_solve(1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qp_solve", 5); +assert_checkerror("qp_solve(1)", refMsg); +assert_checkfalse(execstr("qp_solve(1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qp_solve", 5); +assert_checkerror("qp_solve(1, 1)", refMsg); +assert_checkfalse(execstr("qp_solve(1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qp_solve", 5); +assert_checkerror("qp_solve(1, 1, 1)", refMsg); +assert_checkfalse(execstr("qp_solve(1, 1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qp_solve", 5); +assert_checkerror("qp_solve(1, 1, 1, 1)", refMsg); +assert_checkfalse(execstr("qp_solve(1, 1, [], 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong size for input argument #%d: %d column(s) expected for matrix %s.\n"), "qp_solve", 3, 1, "C"); +assert_checkerror("qp_solve(1, 1, [], 1, 1)", refMsg); +assert_checkfalse(execstr("qp_solve(1, 2, 3, 4, 5)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be an integer in the range 0 to %d.\n"), "qp_solve", 5, "me", 1); +assert_checkerror("qp_solve(1, 2, 3, 4, 5)", refMsg); diff --git a/modules/optimization/tests/nonreg_tests/bug_3244.tst b/modules/optimization/tests/nonreg_tests/bug_3244.tst new file mode 100755 index 000000000..c4eedfb11 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_3244.tst @@ -0,0 +1,75 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// <-- Non-regression test for bug 3244 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=3244 +// +// <-- Short Description --> +// Bad outputs for the qpsolve/qp_solve functions +// ============================================================================= + +assert_checkfalse(execstr("qpsolve", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve", refMsg); + +assert_checkfalse(execstr("qpsolve(1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1)", refMsg); + +assert_checkfalse(execstr("qpsolve(1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1, 1)", refMsg); + +assert_checkfalse(execstr("qpsolve(1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1, 1, 1)", refMsg); + +assert_checkfalse(execstr("qpsolve(1, 1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1, 1, 1, 1)", refMsg); + +assert_checkfalse(execstr("qpsolve(1, 1, 1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1, 1, 1, 1, 1)", refMsg); + +assert_checkfalse(execstr("qpsolve(1, 1, 1, 1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7); +assert_checkerror("qpsolve(1, 1, 1, 1, 1, 1)", refMsg); + + +assert_checkfalse(execstr("qp_solve", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qp_solve", 5); +assert_checkerror("qp_solve", refMsg); + +assert_checkfalse(execstr("qp_solve(1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qp_solve", 5); +assert_checkerror("qp_solve(1)", refMsg); + +assert_checkfalse(execstr("qp_solve(1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qp_solve", 5); +assert_checkerror("qp_solve(1, 1)", refMsg); + +assert_checkfalse(execstr("qp_solve(1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qp_solve", 5); +assert_checkerror("qp_solve(1, 1, 1)", refMsg); + +assert_checkfalse(execstr("qp_solve(1, 1, 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "qp_solve", 5); +assert_checkerror("qp_solve(1, 1, 1, 1)", refMsg); + +assert_checkfalse(execstr("qp_solve(1, 1, [], 1, 1)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong size for input argument #%d: %d column(s) expected for matrix %s.\n"), "qp_solve", 3, 1, "C"); +assert_checkerror("qp_solve(1, 1, [], 1, 1)", refMsg); + +assert_checkfalse(execstr("qp_solve(1, 2, 3, 4, 5)", "errcatch") == 0); +refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be an integer in the range 0 to %d.\n"), "qp_solve", 5, "me", 1); +assert_checkerror("qp_solve(1, 2, 3, 4, 5)", refMsg); + diff --git a/modules/optimization/tests/nonreg_tests/bug_3348.dia.ref b/modules/optimization/tests/nonreg_tests/bug_3348.dia.ref new file mode 100755 index 000000000..6a4f2742c --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_3348.dia.ref @@ -0,0 +1,27 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr> +// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- Non-regression test for bug 3348 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=3348 +// +// <-- Short Description --> +// Missing tests in lsqrsolve +a=[1,2,4; + 7,8,3]; +b=[10;11]; +function y=f1(x,m),y=a*x+b;endfunction +assert_checkfalse(execstr('[xsol,v]=lsqrsolve([100;100;100],f1,2)','errcatch') == 0); +a=[1,7; + 2,8 + 4,3]; +b=[10;11;-1]; +function y=f1(x,m),y=a*x+b;endfunction +assert_checkfalse(execstr('[xsol,v]=lsqrsolve([100;100],f1,3,[-1.d-8,1.d-8,1.d-5,1000,0,100])','errcatch') == 0); +assert_checkfalse(execstr('[xsol,v]=lsqrsolve([100;100],f1,3,[1.d-8,1.d-8,1.d-5,1000,0,100],[0 1])','errcatch') == 0); diff --git a/modules/optimization/tests/nonreg_tests/bug_3348.tst b/modules/optimization/tests/nonreg_tests/bug_3348.tst new file mode 100755 index 000000000..9ad2f4f3e --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_3348.tst @@ -0,0 +1,33 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr> +// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// <-- Non-regression test for bug 3348 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=3348 +// +// <-- Short Description --> +// Missing tests in lsqrsolve + + +a=[1,2,4; + 7,8,3]; +b=[10;11]; +function y=f1(x,m),y=a*x+b;endfunction +assert_checkfalse(execstr('[xsol,v]=lsqrsolve([100;100;100],f1,2)','errcatch') == 0); + +a=[1,7; + 2,8 + 4,3]; +b=[10;11;-1]; +function y=f1(x,m),y=a*x+b;endfunction + +assert_checkfalse(execstr('[xsol,v]=lsqrsolve([100;100],f1,3,[-1.d-8,1.d-8,1.d-5,1000,0,100])','errcatch') == 0); +assert_checkfalse(execstr('[xsol,v]=lsqrsolve([100;100],f1,3,[1.d-8,1.d-8,1.d-5,1000,0,100],[0 1])','errcatch') == 0); diff --git a/modules/optimization/tests/nonreg_tests/bug_3770.dia.ref b/modules/optimization/tests/nonreg_tests/bug_3770.dia.ref new file mode 100755 index 000000000..246b88a34 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_3770.dia.ref @@ -0,0 +1,220 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - DIGITEO - Allan CORNET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// <-- Non-regression test for bug 3770 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=3770 +// +// <-- Short Description --> +// "qld" returns a error with scilab 5.0.2 and not with scilab 4.1.2 +// ============================================================================= +function [y]=cif4(x) + y(1)=127.d0-2.d0*x(1)^2-3.d0*x(2)^4-x(3)-4.d0*x(4)^2 -5.d0*x(5); + y(2)=282.d0-7.d0*x(1)-3.d0*x(2)-10.d0*x(3)^2-x(4)+x(5); + y(3)=196.d0-23.d0*x(1)-x(2)^2-6.d0*x(6)^2+8.d0*x(7); + y(4)=-4.d0*x(1)^2-x(2)^2+3.d0*x(1)*x(2)-2.d0*x(3)^2-5.d0*x(6) +11.d0*x(7); +endfunction +// ============================================================================= +function [y]=objf4(x) + y=(x(1)-10.d0)^2+5.d0*(x(2)-12.d0)^2+x(3)^4+3.d0*(x(4) ... + -11.d0)^2+10.d0*x(5)^6+7.d0*x(6)^2+x(7)^4-4.d0*x(6) ... + *x(7)-10.d0*x(6)-8.d0*x(7); +endfunction +// ============================================================================= +function [x,fx,ci,lambda,info,iter]=sqp(x,objf,cif,lb,ub,ni,maxiter,tol) + n = length(x); + x = max(x,lb); + x = min(x,ub); + iter = 0; + fx = objf(x); + g = numdiff(objf,x)'; + H = eye(n,n); + if (ni > 0) then + ci = cif(x) + if (length(ci) ~= ni) then + error("Ci pas de longueur ni") + end + A = numdiff(cif,x) + else + ci = []; + A = []; + end + [n1 n2] = size(A); + lambda = 100*ones(n1,1); + lambda = zeros(ni,1); + qp_iter = 1; + alpha = 1; + info = 0; + t0 = norm(g -A'*lambda); // t0 = norme du Langrangien df/dx - lambda*dc/dx + logic_t2 = and(ci >= -tol); + logic_t3 = and(lambda >=0); + t4 = norm(lambda .*ci); + if( logic_t2 & logic_t3 & max(t0,t4) < tol) then + break + end + eta = 0.25; + tau = 0.5; + for iter = 1:maxiter + dinf = lb-x; + dsup = ub-x; + [d,lambda_qp,info_qp]=qld(H,g,-A,ci,dinf,dsup,0,tol); + if (info_qp ~=0) then + info = 1000 + info_qp; + break + end + mu = 1/(sqrt(%eps) + norm(lambda,%inf)); + cia = ci(ci < - tol ); + phi = fx + norm(cia,1)/mu; + D_phi = g'*d - norm(cia,1)/mu; + alpha = 1; + while(1) + x_new = x + alpha*d; + obj_new = objf(x_new); + ci_new = cif(x_new); + cia_new = ci_new(ci_new < -tol); + phi_new = obj_new + norm(cia_new,1)/mu; + phi_armijo = phi + eta*alpha*D_phi; + if (phi_new <= phi_armijo) then + break + else + alpha = 0.45*alpha; + end + end + lambda = lambda + alpha*(lambda_qp(1:ni) - lambda); + g_new = numdiff(objf,x_new)'; + if(ni>0) then + A_new = numdiff(cif,x_new); + else + A_new = []; + end + t0 = norm(g_new -A_new'*lambda); // t0 = norme du Langrangien df/dx - lambda*dc/dx + logic_t2 = and(ci_new >= -tol); + logic_t3 = and(lambda >=0); + t4 = norm(lambda .*ci); + if( logic_t2 & logic_t3 & max(t0,t4) < tol) then + break + end + y = g_new - g; + if(~isempty(A)) then + t = ((A_new-A)'*lambda); + y = y - t; + end + delx = x_new - x; + if (norm(delx) < tol*norm(x)) then + info = 101; + break + end + d1 = delx'*H*delx; + t1 = 0.2*d1; + t2 = delx'*y; + if (t2<t1) then + theta = 0.8*d1/(d1-t2); + else + theta = 1; + end + r = theta*y + (1-theta)*H*delx; + d2 = delx'*r; + if (d1==0 | d2 ==0) then + info = 102; + break + end + H = H -H*delx*delx'*H/d1 + r*r'/d2; + x = x_new; + fx = obj_new; + g = g_new; + ci = ci_new; + A = A_new; + end + if(iter>=maxiter) + info = 103; + end +endfunction +// ============================================================================= +n = 7; +ni = 4; +x = ones(n,1); +ub = %inf*ones(x); +lb = -ub; +maxit = 20; +tol = 1e-3; +// ============================================================================= +[x,fx,ci,lambda_qp,info,iter]=sqp(x,objf4,cif4,lb,ub,ni,maxit,tol); +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +if size(x) <> [7 1] then bugmes();quit;end +if size(fx) <> [1 1] then bugmes();quit;end +if size(ci) <> [4 1] then bugmes();quit;end +if size(lambda_qp) <> [4 1] then bugmes();quit;end +if size(info) <> [1 1] then bugmes();quit;end +if size(iter) <> [1 1] then bugmes();quit;end +if info <> 101 then bugmes();quit;end +if iter <> 7 then bugmes();quit;end +// ============================================================================= diff --git a/modules/optimization/tests/nonreg_tests/bug_3770.tst b/modules/optimization/tests/nonreg_tests/bug_3770.tst new file mode 100755 index 000000000..ff804bfc1 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_3770.tst @@ -0,0 +1,190 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - DIGITEO - Allan CORNET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + +// <-- Non-regression test for bug 3770 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=3770 +// +// <-- Short Description --> +// "qld" returns a error with scilab 5.0.2 and not with scilab 4.1.2 +// ============================================================================= +function [y]=cif4(x) + y(1)=127.d0-2.d0*x(1)^2-3.d0*x(2)^4-x(3)-4.d0*x(4)^2 -5.d0*x(5); + y(2)=282.d0-7.d0*x(1)-3.d0*x(2)-10.d0*x(3)^2-x(4)+x(5); + y(3)=196.d0-23.d0*x(1)-x(2)^2-6.d0*x(6)^2+8.d0*x(7); + y(4)=-4.d0*x(1)^2-x(2)^2+3.d0*x(1)*x(2)-2.d0*x(3)^2-5.d0*x(6) +11.d0*x(7); +endfunction +// ============================================================================= +function [y]=objf4(x) + y=(x(1)-10.d0)^2+5.d0*(x(2)-12.d0)^2+x(3)^4+3.d0*(x(4) ... + -11.d0)^2+10.d0*x(5)^6+7.d0*x(6)^2+x(7)^4-4.d0*x(6) ... + *x(7)-10.d0*x(6)-8.d0*x(7); +endfunction +// ============================================================================= +function [x,fx,ci,lambda,info,iter]=sqp(x,objf,cif,lb,ub,ni,maxiter,tol) + n = length(x); + x = max(x,lb); + x = min(x,ub); + iter = 0; + fx = objf(x); + g = numdiff(objf,x)'; + H = eye(n,n); + if (ni > 0) then + ci = cif(x) + if (length(ci) ~= ni) then + error("Ci pas de longueur ni") + end + A = numdiff(cif,x) + else + ci = []; + A = []; + end + + [n1 n2] = size(A); + + lambda = 100*ones(n1,1); + lambda = zeros(ni,1); + + qp_iter = 1; + alpha = 1; + + info = 0; + + t0 = norm(g -A'*lambda); // t0 = norme du Langrangien df/dx - lambda*dc/dx + logic_t2 = and(ci >= -tol); + logic_t3 = and(lambda >=0); + + t4 = norm(lambda .*ci); + + if( logic_t2 & logic_t3 & max(t0,t4) < tol) then + break + end + + eta = 0.25; + tau = 0.5; + + for iter = 1:maxiter + dinf = lb-x; + dsup = ub-x; + [d,lambda_qp,info_qp]=qld(H,g,-A,ci,dinf,dsup,0,tol); + + if (info_qp ~=0) then + info = 1000 + info_qp; + break + end + + mu = 1/(sqrt(%eps) + norm(lambda,%inf)); + cia = ci(ci < - tol ); + phi = fx + norm(cia,1)/mu; + D_phi = g'*d - norm(cia,1)/mu; + + alpha = 1; + while(1) + x_new = x + alpha*d; + obj_new = objf(x_new); + ci_new = cif(x_new); + cia_new = ci_new(ci_new < -tol); + phi_new = obj_new + norm(cia_new,1)/mu; + phi_armijo = phi + eta*alpha*D_phi; + if (phi_new <= phi_armijo) then + break + else + alpha = 0.45*alpha; + end + end + + lambda = lambda + alpha*(lambda_qp(1:ni) - lambda); + + g_new = numdiff(objf,x_new)'; + + if(ni>0) then + A_new = numdiff(cif,x_new); + else + A_new = []; + end + + t0 = norm(g_new -A_new'*lambda); // t0 = norme du Langrangien df/dx - lambda*dc/dx + + logic_t2 = and(ci_new >= -tol); + logic_t3 = and(lambda >=0); + + t4 = norm(lambda .*ci); + + if( logic_t2 & logic_t3 & max(t0,t4) < tol) then + break + end + + y = g_new - g; + + if(~isempty(A)) then + t = ((A_new-A)'*lambda); + y = y - t; + end + + delx = x_new - x; + + if (norm(delx) < tol*norm(x)) then + info = 101; + break + end + + d1 = delx'*H*delx; + + t1 = 0.2*d1; + t2 = delx'*y; + + if (t2<t1) then + theta = 0.8*d1/(d1-t2); + else + theta = 1; + end + + r = theta*y + (1-theta)*H*delx; + d2 = delx'*r; + + if (d1==0 | d2 ==0) then + info = 102; + break + end + + H = H -H*delx*delx'*H/d1 + r*r'/d2; + + x = x_new; + fx = obj_new; + g = g_new; + ci = ci_new; + A = A_new; + end + + if(iter>=maxiter) + info = 103; + end + +endfunction +// ============================================================================= +n = 7; +ni = 4; +x = ones(n,1); +ub = %inf*ones(x); +lb = -ub; +maxit = 20; +tol = 1e-3; +// ============================================================================= +[x,fx,ci,lambda_qp,info,iter]=sqp(x,objf4,cif4,lb,ub,ni,maxit,tol); +if size(x) <> [7 1] then pause,end +if size(fx) <> [1 1] then pause,end +if size(ci) <> [4 1] then pause,end +if size(lambda_qp) <> [4 1] then pause,end +if size(info) <> [1 1] then pause,end +if size(iter) <> [1 1] then pause,end +if info <> 101 then pause,end +if iter <> 7 then pause,end +// ============================================================================= diff --git a/modules/optimization/tests/nonreg_tests/bug_4083.dia.ref b/modules/optimization/tests/nonreg_tests/bug_4083.dia.ref new file mode 100755 index 000000000..27f8aa2ec --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_4083.dia.ref @@ -0,0 +1,45 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// <-- Non-regression test for bug 4083 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=4083 +// +// <-- Short Description --> +// The numderivative function is created, which replaces both derivative and +// numdiff functions. +// ============================================================================= +function y = myfunction(x) + y = x^3; +endfunction +x = 1; +g = numdiff(myfunction, x); +WARNING: Feature numdiff is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +expectedJ = 3; +assert_checkalmostequal(g, expectedJ, [], 1.d-8); +[J, H] = derivative(myfunction, x); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +expectedH = 6; +assert_checkalmostequal(J, expectedJ, [], 1.d-8); +assert_checkequal(H, expectedH); +[J,H] = numderivative(myfunction, x) + H = + + 6. + J = + + 3. +assert_checkalmostequal(J, expectedJ, [], 1.d-8); +assert_checkequal(H, expectedH); diff --git a/modules/optimization/tests/nonreg_tests/bug_4083.tst b/modules/optimization/tests/nonreg_tests/bug_4083.tst new file mode 100755 index 000000000..0074063fe --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_4083.tst @@ -0,0 +1,37 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + +// <-- Non-regression test for bug 4083 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=4083 +// +// <-- Short Description --> +// The numderivative function is created, which replaces both derivative and +// numdiff functions. +// ============================================================================= + +function y = myfunction(x) + y = x^3; +endfunction + +x = 1; +g = numdiff(myfunction, x); +expectedJ = 3; +assert_checkalmostequal(g, expectedJ, [], 1.d-8); + +[J, H] = derivative(myfunction, x); +expectedH = 6; +assert_checkalmostequal(J, expectedJ, [], 1.d-8); +assert_checkequal(H, expectedH); + +[J,H] = numderivative(myfunction, x) +assert_checkalmostequal(J, expectedJ, [], 1.d-8); +assert_checkequal(H, expectedH); diff --git a/modules/optimization/tests/nonreg_tests/bug_4433.dia.ref b/modules/optimization/tests/nonreg_tests/bug_4433.dia.ref new file mode 100755 index 000000000..72a3659c0 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_4433.dia.ref @@ -0,0 +1,20 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2009 - DIGITEO - Allan CORNET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- Non-regression test for bug 4433 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=4433 +// +// <-- Short Description --> +// problem using optim. On some examples, the optim function makes scilab hangs. +// ============================================================================= +for i=1:10 + deff('[y,dy,imp] = testfunc(x,imp)','y=sum(x.^2); dy = 2*x;'); + x0=40*ones(100,1); + [f,xo]=optim(testfunc,x0,algo='gc',imp=0); +end +// ============================================================================= diff --git a/modules/optimization/tests/nonreg_tests/bug_4433.tst b/modules/optimization/tests/nonreg_tests/bug_4433.tst new file mode 100755 index 000000000..ecae4feeb --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_4433.tst @@ -0,0 +1,23 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2009 - DIGITEO - Allan CORNET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// <-- Non-regression test for bug 4433 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=4433 +// +// <-- Short Description --> +// problem using optim. On some examples, the optim function makes scilab hangs. +// ============================================================================= +for i=1:10 + deff('[y,dy,imp] = testfunc(x,imp)','y=sum(x.^2); dy = 2*x;'); + x0=40*ones(100,1); + [f,xo]=optim(testfunc,x0,algo='gc',imp=0); +end +// ============================================================================= diff --git a/modules/optimization/tests/nonreg_tests/bug_4638.dia.ref b/modules/optimization/tests/nonreg_tests/bug_4638.dia.ref new file mode 100755 index 000000000..e942d1ce3 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_4638.dia.ref @@ -0,0 +1,251 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2009 - DIGITEO - Allan CORNET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- Non-regression test for bug 4638 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=4638 +// +// <-- Short Description --> +// this example with optim freezes scilab +// ============================================================================= +function A = build_matrix_A() +A = spzeros(36,36); +A( 1, 1) = 12.356155 ; +A( 1, 2) = 1.8561553 ; +A( 1, 5) = - 5.25 ; +A( 1, 7) = - 1.8561553 ; +A( 1, 8) = - 1.8561553 ; +A( 2, 1) = 1.8561553 ; +A( 2, 2) = 7.1061553 ; +A( 2, 4) = - 5.25 ; +A( 2, 7) = - 1.8561553 ; +A( 2, 8) = - 1.8561553 ; +A( 3, 3) = 8.9623106 ; +A( 3, 5) = - 1.8561553 ; +A( 3, 6) = 1.8561553 ; +A( 3, 7) = - 5.25 ; +A( 4, 2) = - 5.25 ; +A( 4, 4) = 8.9623106 ; +A( 4, 5) = 1.8561553 ; +A( 4, 6) = - 1.8561553 ; +A( 5, 1) = - 5.25 ; +A( 5, 3) = - 1.8561553 ; +A( 5, 4) = 1.8561553 ; +A( 5, 5) = 14.212311 ; +A( 5, 9) = - 5.25 ; +A( 5, 11) = - 1.8561553 ; +A( 5, 12) = - 1.8561553 ; +A( 6, 3) = 1.8561553 ; +A( 6, 4) = - 1.8561553 ; +A( 6, 6) = 8.9623106 ; +A( 6, 8) = - 5.25 ; +A( 6, 11) = - 1.8561553 ; +A( 6, 12) = - 1.8561553 ; +A( 7, 1) = - 1.8561553 ; +A( 7, 2) = - 1.8561553 ; +A( 7, 3) = - 5.25 ; +A( 7, 7) = 14.212311 ; +A( 7, 9) = - 1.8561553 ; +A( 7, 10) = 1.8561553 ; +A( 7, 11) = - 5.25 ; +A( 8, 1) = - 1.8561553 ; +A( 8, 2) = - 1.8561553 ; +A( 8, 6) = - 5.25 ; +A( 8, 8) = 8.9623106 ; +A( 8, 9) = 1.8561553 ; +A( 8, 10) = - 1.8561553 ; +A( 9, 5) = - 5.25 ; +A( 9, 7) = - 1.8561553 ; +A( 9, 8) = 1.8561553 ; +A( 9, 9) = 14.212311 ; +A( 9, 13) = - 5.25 ; +A( 9, 15) = - 1.8561553 ; +A( 9, 16) = - 1.8561553 ; +A( 10, 7) = 1.8561553 ; +A( 10, 8) = - 1.8561553 ; +A( 10, 10) = 8.9623106 ; +A( 10, 12) = - 5.25 ; +A( 10, 15) = - 1.8561553 ; +A( 10, 16) = - 1.8561553 ; +A( 11, 5) = - 1.8561553 ; +A( 11, 6) = - 1.8561553 ; +A( 11, 7) = - 5.25 ; +A( 11, 11) = 14.212311 ; +A( 11, 13) = - 1.8561553 ; +A( 11, 14) = 1.8561553 ; +A( 11, 15) = - 5.25 ; +A( 12, 5) = - 1.8561553 ; +A( 12, 6) = - 1.8561553 ; +A( 12, 10) = - 5.25 ; +A( 12, 12) = 8.9623106 ; +A( 12, 13) = 1.8561553 ; +A( 12, 14) = - 1.8561553 ; +A( 13, 9) = - 5.25 ; +A( 13, 11) = - 1.8561553 ; +A( 13, 12) = 1.8561553 ; +A( 13, 13) = 14.212311 ; +A( 13, 17) = - 5.25 ; +A( 13, 19) = - 1.8561553 ; +A( 13, 20) = - 1.8561553 ; +A( 14, 11) = 1.8561553 ; +A( 14, 12) = - 1.8561553 ; +A( 14, 14) = 8.9623106 ; +A( 14, 16) = - 5.25 ; +A( 14, 19) = - 1.8561553 ; +A( 14, 20) = - 1.8561553 ; +A( 15, 9) = - 1.8561553 ; +A( 15, 10) = - 1.8561553 ; +A( 15, 11) = - 5.25 ; +A( 15, 15) = 14.212311 ; +A( 15, 17) = - 1.8561553 ; +A( 15, 18) = 1.8561553 ; +A( 15, 19) = - 5.25 ; +A( 16, 9) = - 1.8561553 ; +A( 16, 10) = - 1.8561553 ; +A( 16, 14) = - 5.25 ; +A( 16, 16) = 8.9623106 ; +A( 16, 17) = 1.8561553 ; +A( 16, 18) = - 1.8561553 ; +A( 17, 13) = - 5.25 ; +A( 17, 15) = - 1.8561553 ; +A( 17, 16) = 1.8561553 ; +A( 17, 17) = 14.212311 ; +A( 17, 21) = - 5.25 ; +A( 17, 23) = - 1.8561553 ; +A( 17, 24) = - 1.8561553 ; +A( 18, 15) = 1.8561553 ; +A( 18, 16) = - 1.8561553 ; +A( 18, 18) = 8.9623106 ; +A( 18, 20) = - 5.25 ; +A( 18, 23) = - 1.8561553 ; +A( 18, 24) = - 1.8561553 ; +A( 19, 13) = - 1.8561553 ; +A( 19, 14) = - 1.8561553 ; +A( 19, 15) = - 5.25 ; +A( 19, 19) = 14.212311 ; +A( 19, 21) = - 1.8561553 ; +A( 19, 22) = 1.8561553 ; +A( 19, 23) = - 5.25 ; +A( 20, 13) = - 1.8561553 ; +A( 20, 14) = - 1.8561553 ; +A( 20, 18) = - 5.25 ; +A( 20, 20) = 8.9623106 ; +A( 20, 21) = 1.8561553 ; +A( 20, 22) = - 1.8561553 ; +A( 21, 17) = - 5.25 ; +A( 21, 19) = - 1.8561553 ; +A( 21, 20) = 1.8561553 ; +A( 21, 21) = 14.212311 ; +A( 21, 25) = - 5.25 ; +A( 21, 27) = - 1.8561553 ; +A( 21, 28) = - 1.8561553 ; +A( 22, 19) = 1.8561553 ; +A( 22, 20) = - 1.8561553 ; +A( 22, 22) = 8.9623106 ; +A( 22, 24) = - 5.25 ; +A( 22, 27) = - 1.8561553 ; +A( 22, 28) = - 1.8561553 ; +A( 23, 17) = - 1.8561553 ; +A( 23, 18) = - 1.8561553 ; +A( 23, 19) = - 5.25 ; +A( 23, 23) = 14.212311 ; +A( 23, 25) = - 1.8561553 ; +A( 23, 26) = 1.8561553 ; +A( 23, 27) = - 5.25 ; +A( 24, 17) = - 1.8561553 ; +A( 24, 18) = - 1.8561553 ; +A( 24, 22) = - 5.25 ; +A( 24, 24) = 8.9623106 ; +A( 24, 25) = 1.8561553 ; +A( 24, 26) = - 1.8561553 ; +A( 25, 21) = - 5.25 ; +A( 25, 23) = - 1.8561553 ; +A( 25, 24) = 1.8561553 ; +A( 25, 25) = 14.212311 ; +A( 25, 29) = - 5.25 ; +A( 25, 31) = - 1.8561553 ; +A( 25, 32) = - 1.8561553 ; +A( 26, 23) = 1.8561553 ; +A( 26, 24) = - 1.8561553 ; +A( 26, 26) = 8.9623106 ; +A( 26, 28) = - 5.25 ; +A( 26, 31) = - 1.8561553 ; +A( 26, 32) = - 1.8561553 ; +A( 27, 21) = - 1.8561553 ; +A( 27, 22) = - 1.8561553 ; +A( 27, 23) = - 5.25 ; +A( 27, 27) = 14.212311 ; +A( 27, 29) = - 1.8561553 ; +A( 27, 30) = 1.8561553 ; +A( 27, 31) = - 5.25 ; +A( 28, 21) = - 1.8561553 ; +A( 28, 22) = - 1.8561553 ; +A( 28, 26) = - 5.25 ; +A( 28, 28) = 8.9623106 ; +A( 28, 29) = 1.8561553 ; +A( 28, 30) = - 1.8561553 ; +A( 29, 25) = - 5.25 ; +A( 29, 27) = - 1.8561553 ; +A( 29, 28) = 1.8561553 ; +A( 29, 29) = 14.212311 ; +A( 29, 33) = - 5.25 ; +A( 29, 35) = - 1.8561553 ; +A( 29, 36) = - 1.8561553 ; +A( 30, 27) = 1.8561553 ; +A( 30, 28) = - 1.8561553 ; +A( 30, 30) = 8.9623106 ; +A( 30, 32) = - 5.25 ; +A( 30, 35) = - 1.8561553 ; +A( 30, 36) = - 1.8561553 ; +A( 31, 25) = - 1.8561553 ; +A( 31, 26) = - 1.8561553 ; +A( 31, 27) = - 5.25 ; +A( 31, 31) = 14.212311 ; +A( 31, 33) = - 1.8561553 ; +A( 31, 34) = 1.8561553 ; +A( 31, 35) = - 5.25 ; +A( 32, 25) = - 1.8561553 ; +A( 32, 26) = - 1.8561553 ; +A( 32, 30) = - 5.25 ; +A( 32, 32) = 8.9623106 ; +A( 32, 33) = 1.8561553 ; +A( 32, 34) = - 1.8561553 ; +A( 33, 29) = - 5.25 ; +A( 33, 31) = - 1.8561553 ; +A( 33, 32) = 1.8561553 ; +A( 33, 33) = 12.356155 ; +A( 33, 34) = - 1.8561553 ; +A( 34, 31) = 1.8561553 ; +A( 34, 32) = - 1.8561553 ; +A( 34, 33) = - 1.8561553 ; +A( 34, 34) = 7.1061553 ; +A( 34, 36) = - 5.25 ; +A( 35, 29) = - 1.8561553 ; +A( 35, 30) = - 1.8561553 ; +A( 35, 31) = - 5.25 ; +A( 35, 35) = 8.9623106 ; +A( 36, 29) = - 1.8561553 ; +A( 36, 30) = - 1.8561553 ; +A( 36, 34) = - 5.25 ; +A( 36, 36) = 8.9623106 ; +A = A * 1.0D+08; +endfunction +function [y, dy, ind] = optim_test(x,ind) + printf('hello from optim_test\n'); + y = sum(x.^2); + dy = 2*x; + A = build_matrix_A(); + Ainv = inv(A); +endfunction +[f_opt, x_opt] = optim(optim_test,ones(10,1)); +hellofromoptim_test + +hellofromoptim_test + +hellofromoptim_test + +// ============================================================================= diff --git a/modules/optimization/tests/nonreg_tests/bug_4638.tst b/modules/optimization/tests/nonreg_tests/bug_4638.tst new file mode 100755 index 000000000..7c0717724 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_4638.tst @@ -0,0 +1,253 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2009 - DIGITEO - Allan CORNET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// <-- Non-regression test for bug 4638 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=4638 +// +// <-- Short Description --> +// this example with optim freezes scilab +// ============================================================================= +function A = build_matrix_A() + +A = spzeros(36,36); + +A( 1, 1) = 12.356155 ; +A( 1, 2) = 1.8561553 ; +A( 1, 5) = - 5.25 ; +A( 1, 7) = - 1.8561553 ; +A( 1, 8) = - 1.8561553 ; +A( 2, 1) = 1.8561553 ; +A( 2, 2) = 7.1061553 ; +A( 2, 4) = - 5.25 ; +A( 2, 7) = - 1.8561553 ; +A( 2, 8) = - 1.8561553 ; +A( 3, 3) = 8.9623106 ; +A( 3, 5) = - 1.8561553 ; +A( 3, 6) = 1.8561553 ; +A( 3, 7) = - 5.25 ; +A( 4, 2) = - 5.25 ; +A( 4, 4) = 8.9623106 ; +A( 4, 5) = 1.8561553 ; +A( 4, 6) = - 1.8561553 ; +A( 5, 1) = - 5.25 ; +A( 5, 3) = - 1.8561553 ; +A( 5, 4) = 1.8561553 ; +A( 5, 5) = 14.212311 ; +A( 5, 9) = - 5.25 ; +A( 5, 11) = - 1.8561553 ; +A( 5, 12) = - 1.8561553 ; +A( 6, 3) = 1.8561553 ; +A( 6, 4) = - 1.8561553 ; +A( 6, 6) = 8.9623106 ; +A( 6, 8) = - 5.25 ; +A( 6, 11) = - 1.8561553 ; +A( 6, 12) = - 1.8561553 ; +A( 7, 1) = - 1.8561553 ; +A( 7, 2) = - 1.8561553 ; +A( 7, 3) = - 5.25 ; +A( 7, 7) = 14.212311 ; +A( 7, 9) = - 1.8561553 ; +A( 7, 10) = 1.8561553 ; +A( 7, 11) = - 5.25 ; +A( 8, 1) = - 1.8561553 ; +A( 8, 2) = - 1.8561553 ; +A( 8, 6) = - 5.25 ; +A( 8, 8) = 8.9623106 ; +A( 8, 9) = 1.8561553 ; +A( 8, 10) = - 1.8561553 ; +A( 9, 5) = - 5.25 ; +A( 9, 7) = - 1.8561553 ; +A( 9, 8) = 1.8561553 ; +A( 9, 9) = 14.212311 ; +A( 9, 13) = - 5.25 ; +A( 9, 15) = - 1.8561553 ; +A( 9, 16) = - 1.8561553 ; +A( 10, 7) = 1.8561553 ; +A( 10, 8) = - 1.8561553 ; +A( 10, 10) = 8.9623106 ; +A( 10, 12) = - 5.25 ; +A( 10, 15) = - 1.8561553 ; +A( 10, 16) = - 1.8561553 ; +A( 11, 5) = - 1.8561553 ; +A( 11, 6) = - 1.8561553 ; +A( 11, 7) = - 5.25 ; +A( 11, 11) = 14.212311 ; +A( 11, 13) = - 1.8561553 ; +A( 11, 14) = 1.8561553 ; +A( 11, 15) = - 5.25 ; +A( 12, 5) = - 1.8561553 ; +A( 12, 6) = - 1.8561553 ; +A( 12, 10) = - 5.25 ; +A( 12, 12) = 8.9623106 ; +A( 12, 13) = 1.8561553 ; +A( 12, 14) = - 1.8561553 ; +A( 13, 9) = - 5.25 ; +A( 13, 11) = - 1.8561553 ; +A( 13, 12) = 1.8561553 ; +A( 13, 13) = 14.212311 ; +A( 13, 17) = - 5.25 ; +A( 13, 19) = - 1.8561553 ; +A( 13, 20) = - 1.8561553 ; +A( 14, 11) = 1.8561553 ; +A( 14, 12) = - 1.8561553 ; +A( 14, 14) = 8.9623106 ; +A( 14, 16) = - 5.25 ; +A( 14, 19) = - 1.8561553 ; +A( 14, 20) = - 1.8561553 ; +A( 15, 9) = - 1.8561553 ; +A( 15, 10) = - 1.8561553 ; +A( 15, 11) = - 5.25 ; +A( 15, 15) = 14.212311 ; +A( 15, 17) = - 1.8561553 ; +A( 15, 18) = 1.8561553 ; +A( 15, 19) = - 5.25 ; +A( 16, 9) = - 1.8561553 ; +A( 16, 10) = - 1.8561553 ; +A( 16, 14) = - 5.25 ; +A( 16, 16) = 8.9623106 ; +A( 16, 17) = 1.8561553 ; +A( 16, 18) = - 1.8561553 ; +A( 17, 13) = - 5.25 ; +A( 17, 15) = - 1.8561553 ; +A( 17, 16) = 1.8561553 ; +A( 17, 17) = 14.212311 ; +A( 17, 21) = - 5.25 ; +A( 17, 23) = - 1.8561553 ; +A( 17, 24) = - 1.8561553 ; +A( 18, 15) = 1.8561553 ; +A( 18, 16) = - 1.8561553 ; +A( 18, 18) = 8.9623106 ; +A( 18, 20) = - 5.25 ; +A( 18, 23) = - 1.8561553 ; +A( 18, 24) = - 1.8561553 ; +A( 19, 13) = - 1.8561553 ; +A( 19, 14) = - 1.8561553 ; +A( 19, 15) = - 5.25 ; +A( 19, 19) = 14.212311 ; +A( 19, 21) = - 1.8561553 ; +A( 19, 22) = 1.8561553 ; +A( 19, 23) = - 5.25 ; +A( 20, 13) = - 1.8561553 ; +A( 20, 14) = - 1.8561553 ; +A( 20, 18) = - 5.25 ; +A( 20, 20) = 8.9623106 ; +A( 20, 21) = 1.8561553 ; +A( 20, 22) = - 1.8561553 ; +A( 21, 17) = - 5.25 ; +A( 21, 19) = - 1.8561553 ; +A( 21, 20) = 1.8561553 ; +A( 21, 21) = 14.212311 ; +A( 21, 25) = - 5.25 ; +A( 21, 27) = - 1.8561553 ; +A( 21, 28) = - 1.8561553 ; +A( 22, 19) = 1.8561553 ; +A( 22, 20) = - 1.8561553 ; +A( 22, 22) = 8.9623106 ; +A( 22, 24) = - 5.25 ; +A( 22, 27) = - 1.8561553 ; +A( 22, 28) = - 1.8561553 ; +A( 23, 17) = - 1.8561553 ; +A( 23, 18) = - 1.8561553 ; +A( 23, 19) = - 5.25 ; +A( 23, 23) = 14.212311 ; +A( 23, 25) = - 1.8561553 ; +A( 23, 26) = 1.8561553 ; +A( 23, 27) = - 5.25 ; +A( 24, 17) = - 1.8561553 ; +A( 24, 18) = - 1.8561553 ; +A( 24, 22) = - 5.25 ; +A( 24, 24) = 8.9623106 ; +A( 24, 25) = 1.8561553 ; +A( 24, 26) = - 1.8561553 ; +A( 25, 21) = - 5.25 ; +A( 25, 23) = - 1.8561553 ; +A( 25, 24) = 1.8561553 ; +A( 25, 25) = 14.212311 ; +A( 25, 29) = - 5.25 ; +A( 25, 31) = - 1.8561553 ; +A( 25, 32) = - 1.8561553 ; +A( 26, 23) = 1.8561553 ; +A( 26, 24) = - 1.8561553 ; +A( 26, 26) = 8.9623106 ; +A( 26, 28) = - 5.25 ; +A( 26, 31) = - 1.8561553 ; +A( 26, 32) = - 1.8561553 ; +A( 27, 21) = - 1.8561553 ; +A( 27, 22) = - 1.8561553 ; +A( 27, 23) = - 5.25 ; +A( 27, 27) = 14.212311 ; +A( 27, 29) = - 1.8561553 ; +A( 27, 30) = 1.8561553 ; +A( 27, 31) = - 5.25 ; +A( 28, 21) = - 1.8561553 ; +A( 28, 22) = - 1.8561553 ; +A( 28, 26) = - 5.25 ; +A( 28, 28) = 8.9623106 ; +A( 28, 29) = 1.8561553 ; +A( 28, 30) = - 1.8561553 ; +A( 29, 25) = - 5.25 ; +A( 29, 27) = - 1.8561553 ; +A( 29, 28) = 1.8561553 ; +A( 29, 29) = 14.212311 ; +A( 29, 33) = - 5.25 ; +A( 29, 35) = - 1.8561553 ; +A( 29, 36) = - 1.8561553 ; +A( 30, 27) = 1.8561553 ; +A( 30, 28) = - 1.8561553 ; +A( 30, 30) = 8.9623106 ; +A( 30, 32) = - 5.25 ; +A( 30, 35) = - 1.8561553 ; +A( 30, 36) = - 1.8561553 ; +A( 31, 25) = - 1.8561553 ; +A( 31, 26) = - 1.8561553 ; +A( 31, 27) = - 5.25 ; +A( 31, 31) = 14.212311 ; +A( 31, 33) = - 1.8561553 ; +A( 31, 34) = 1.8561553 ; +A( 31, 35) = - 5.25 ; +A( 32, 25) = - 1.8561553 ; +A( 32, 26) = - 1.8561553 ; +A( 32, 30) = - 5.25 ; +A( 32, 32) = 8.9623106 ; +A( 32, 33) = 1.8561553 ; +A( 32, 34) = - 1.8561553 ; +A( 33, 29) = - 5.25 ; +A( 33, 31) = - 1.8561553 ; +A( 33, 32) = 1.8561553 ; +A( 33, 33) = 12.356155 ; +A( 33, 34) = - 1.8561553 ; +A( 34, 31) = 1.8561553 ; +A( 34, 32) = - 1.8561553 ; +A( 34, 33) = - 1.8561553 ; +A( 34, 34) = 7.1061553 ; +A( 34, 36) = - 5.25 ; +A( 35, 29) = - 1.8561553 ; +A( 35, 30) = - 1.8561553 ; +A( 35, 31) = - 5.25 ; +A( 35, 35) = 8.9623106 ; +A( 36, 29) = - 1.8561553 ; +A( 36, 30) = - 1.8561553 ; +A( 36, 34) = - 5.25 ; +A( 36, 36) = 8.9623106 ; + +A = A * 1.0D+08; +endfunction + +function [y, dy, ind] = optim_test(x,ind) + printf('hello from optim_test\n'); + y = sum(x.^2); + dy = 2*x; + A = build_matrix_A(); + Ainv = inv(A); +endfunction + +[f_opt, x_opt] = optim(optim_test,ones(10,1)); +// ============================================================================= diff --git a/modules/optimization/tests/nonreg_tests/bug_4925.dia.ref b/modules/optimization/tests/nonreg_tests/bug_4925.dia.ref new file mode 100755 index 000000000..854f8ddb9 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_4925.dia.ref @@ -0,0 +1,54 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2009 - DIGITEO - Allan CORNET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- NO CHECK REF --> +// <-- Non-regression test for bug 4925 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=4925 +// +// <-- Short Description --> +// this example with optim crashs 'optim' on windows +// +// ============================================================================= +xref=[1;2;3]; +x0=[1;-1;1]; +function [f,g,ind] = cost(x,ind) + f=0.5*norm(x-xref)^2; + g=x-xref; +endfunction +[f,xopt]=optim(cost,x0,imp=3) + +***** enters -qn code- (without bound cstr) +dimension= 3, epsq= 0.2220446049250313E-15, verbosity level: imp= 3 +max number of iterations allowed: iter= 100 +max number of calls to costf allowed: nap= 100 +------------------------------------------------ + iter num 1, nb calls= 1, f= 6.500 + linear search: initial derivative=-3.606 + step length=0.1000E-01, df=-.4261 , derivative=-3.485 + step length=0.1000 , df=-3.611 , derivative=-2.404 + iter num 2, nb calls= 3, f= 2.889 + linear search: initial derivative=-2.404 + step length= 1.000 , df=-2.889 , derivative=0.3695E-15 + iter num 3, nb calls= 4, f=0.9861E-30 + linear search: initial derivative=-.1380E-14 + step length= 1.000 , df=0.4142E-29, derivative=0.3192E-14 + step length=0.2996 , df=-.9861E-30, derivative=0.0000E+00 + iter num 4, nb calls= 6, f=0.0000E+00 +***** leaves -qn code-, gradient norm= 0.0000000000000000E+00 +Norm of projected gradient lower than 0.0000000D+00. + + xopt = + + 1. + 2. + 3. + f = + + 0. +// ============================================================================= diff --git a/modules/optimization/tests/nonreg_tests/bug_4925.tst b/modules/optimization/tests/nonreg_tests/bug_4925.tst new file mode 100755 index 000000000..5535e34fd --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_4925.tst @@ -0,0 +1,27 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2009 - DIGITEO - Allan CORNET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> +// <-- NO CHECK REF --> + +// <-- Non-regression test for bug 4925 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=4925 +// +// <-- Short Description --> +// this example with optim crashs 'optim' on windows (release mode) +// +// ============================================================================= +xref=[1;2;3]; +x0=[1;-1;1]; +function [f,g,ind] = cost(x,ind) + f=0.5*norm(x-xref)^2; + g=x-xref; +endfunction +[f,xopt]=optim(cost,x0,imp=3) +// ============================================================================= diff --git a/modules/optimization/tests/nonreg_tests/bug_632.dia.ref b/modules/optimization/tests/nonreg_tests/bug_632.dia.ref new file mode 100755 index 000000000..1a04dc852 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_632.dia.ref @@ -0,0 +1,51 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) ????-2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- Non-regression test for bug 632 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=632 +// +// <-- Short Description --> +// The function "lsqrsolve" makes the whole Scilab crash. +// It even does it with the example cited in the Scilab +// documentation: +// +// // Data fitting problem +// // 1 build the data +// a=34;b=12;c=14; +// deff('y=FF(x)','y=a*(x-b)+c*x.*x'); +// X=(0:.1:3)';Y=FF(X)+100*(rand()-.5); +// +// //solve +// function e=f1(abc,m) +// a=abc(1);b=abc(2),c=abc(3), +// e=Y-(a*(X-b)+c*X.*X); +// endfunction +// [abc,v]=lsqrsolve([10;10;10],f1,size(X,1)); +// abc +// norm(v) +// Data fitting problem +// 1 build the data +//exec("632.sce"); +// this test will fail if scilab crashes +a = 34; +b = 12; +c = 14; +deff('y=FF(x)','y=a*(x-b)+c*x.*x'); +X=(0:.1:3)'; +Y=FF(X)+100*(rand()-.5); +//solve +function e=f1(abc,m) + a = abc(1); + b = abc(2); + c = abc(3); + e = Y-(a*(X-b)+c*X.*X); +endfunction +[abc,v] = lsqrsolve([10;10;10],f1,size(X,1)); +if norm(abc - [ 34. ; 12.849045 ; 14. ] ) > 0.1 then bugmes();quit;end +if norm(v) - 2.814D-13 > 0.1 then bugmes();quit;end diff --git a/modules/optimization/tests/nonreg_tests/bug_632.tst b/modules/optimization/tests/nonreg_tests/bug_632.tst new file mode 100755 index 000000000..6d0d5ca56 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_632.tst @@ -0,0 +1,61 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) ????-2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// <-- Non-regression test for bug 632 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=632 +// +// <-- Short Description --> +// The function "lsqrsolve" makes the whole Scilab crash. +// It even does it with the example cited in the Scilab +// documentation: +// +// // Data fitting problem +// // 1 build the data +// a=34;b=12;c=14; +// deff('y=FF(x)','y=a*(x-b)+c*x.*x'); +// X=(0:.1:3)';Y=FF(X)+100*(rand()-.5); +// +// //solve +// function e=f1(abc,m) +// a=abc(1);b=abc(2),c=abc(3), +// e=Y-(a*(X-b)+c*X.*X); +// endfunction +// [abc,v]=lsqrsolve([10;10;10],f1,size(X,1)); +// abc +// norm(v) + + +// Data fitting problem +// 1 build the data +//exec("632.sce"); + +// this test will fail if scilab crashes + +a = 34; +b = 12; +c = 14; + +deff('y=FF(x)','y=a*(x-b)+c*x.*x'); +X=(0:.1:3)'; +Y=FF(X)+100*(rand()-.5); + +//solve + +function e=f1(abc,m) + a = abc(1); + b = abc(2); + c = abc(3); + e = Y-(a*(X-b)+c*X.*X); +endfunction + +[abc,v] = lsqrsolve([10;10;10],f1,size(X,1)); +if norm(abc - [ 34. ; 12.849045 ; 14. ] ) > 0.1 then pause,end +if norm(v) - 2.814D-13 > 0.1 then pause,end diff --git a/modules/optimization/tests/nonreg_tests/bug_6947.tst b/modules/optimization/tests/nonreg_tests/bug_6947.tst new file mode 100755 index 000000000..4dca384ca --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_6947.tst @@ -0,0 +1,24 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010 - DIGITEO - Allan CORNET +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- INTERACTIVE TEST --> +// +// <-- Non-regression test for bug 6947 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=6947 +// +// <-- Short Description --> +// Some demos in "Optimization and Simulation" failed, +// without write rights in SCI subdirectory. +// +// ============================================================================= +// Install Scilab in c:\Program files (on windows) +// (a directory where you have not right in standard use) +// +// Launch Scilab +// start demos "Optimization and Simulation" +// ============================================================================= diff --git a/modules/optimization/tests/nonreg_tests/bug_7093.dia.ref b/modules/optimization/tests/nonreg_tests/bug_7093.dia.ref new file mode 100755 index 000000000..79883fa07 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_7093.dia.ref @@ -0,0 +1,23 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 7093 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=7093 +// +// <-- Short Description --> +// The data structure generated by neldermead_new cannot be saved +// and reloaded. +// +nm = neldermead_new (); +save(fullfile(TMPDIR,"pb.dat"),"nm") +clear +load(fullfile(TMPDIR,"pb.dat")) +computed = exists("nm"); +assert_checkequal(computed,1); diff --git a/modules/optimization/tests/nonreg_tests/bug_7093.tst b/modules/optimization/tests/nonreg_tests/bug_7093.tst new file mode 100755 index 000000000..bb0763c8b --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_7093.tst @@ -0,0 +1,24 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 7093 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=7093 +// +// <-- Short Description --> +// The data structure generated by neldermead_new cannot be saved +// and reloaded. +// + +nm = neldermead_new (); +save(fullfile(TMPDIR,"pb.dat"),"nm") +clear +load(fullfile(TMPDIR,"pb.dat")) +computed = exists("nm"); +assert_checkequal(computed,1); diff --git a/modules/optimization/tests/nonreg_tests/bug_7093_v5.dia.ref b/modules/optimization/tests/nonreg_tests/bug_7093_v5.dia.ref new file mode 100755 index 000000000..54101db82 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_7093_v5.dia.ref @@ -0,0 +1,24 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 7093 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=7093 +// +// <-- Short Description --> +// The data structure generated by neldermead_new cannot be saved +// and reloaded. +// +warning("off"); +nm = neldermead_new (); +save(fullfile(TMPDIR,"pb.dat"),nm) +clear +load(fullfile(TMPDIR,"pb.dat")) +computed = exists("nm"); +assert_checkequal(computed,1); diff --git a/modules/optimization/tests/nonreg_tests/bug_7093_v5.tst b/modules/optimization/tests/nonreg_tests/bug_7093_v5.tst new file mode 100755 index 000000000..3bf71116c --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_7093_v5.tst @@ -0,0 +1,26 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 7093 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=7093 +// +// <-- Short Description --> +// The data structure generated by neldermead_new cannot be saved +// and reloaded. +// + +warning("off"); + +nm = neldermead_new (); +save(fullfile(TMPDIR,"pb.dat"),nm) +clear +load(fullfile(TMPDIR,"pb.dat")) +computed = exists("nm"); +assert_checkequal(computed,1); diff --git a/modules/optimization/tests/nonreg_tests/bug_8160.dia.ref b/modules/optimization/tests/nonreg_tests/bug_8160.dia.ref new file mode 100755 index 000000000..75b7b121b --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8160.dia.ref @@ -0,0 +1,52 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 8160 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8160 +// +// <-- Short Description --> +// The derivative function did not check for input argument #1, if it is a list. +// +x=[1;2;3]; +assert_checkfalse(execstr("derivative(list(),x)", "errcatch") == 0); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +refMsg = msprintf(_("%s: Wrong number of elements in input argument #%d: At least %d elements expected, but current number is %d.\n"), "derivative", 1, 2, 0); +assert_checkerror("derivative(list(),x)", refMsg); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkfalse(execstr("derivative(list(""foo""),x)", "errcatch") == 0); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +refMsg = msprintf(_("%s: Wrong number of elements in input argument #%d: At least %d elements expected, but current number is %d.\n"), "derivative", 1, 2, 1); +assert_checkerror("derivative(list(""foo""),x)", refMsg); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkfalse(execstr("derivative(list(""foo"",""aa""),x)", "errcatch") == 0); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +refMsg = msprintf(_("%s: Wrong type for element #%d in input argument #%d: A function is expected, but current type is %s.\n"), "derivative", 1, 1, typeof("a")); +assert_checkerror("derivative(list(""foo"",""aa""),x)", refMsg); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + diff --git a/modules/optimization/tests/nonreg_tests/bug_8160.tst b/modules/optimization/tests/nonreg_tests/bug_8160.tst new file mode 100755 index 000000000..1d07e8a4b --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8160.tst @@ -0,0 +1,40 @@ +// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- ENGLISH IMPOSED -->
+//
+// <-- Non-regression test for bug 8160 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8160
+//
+// <-- Short Description -->
+// The derivative function did not check for input argument #1, if it is a list.
+//
+
+
+
+x=[1;2;3];
+
+assert_checkfalse(execstr("derivative(list(),x)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of elements in input argument #%d: At least %d elements expected, but current number is %d.\n"), "derivative", 1, 2, 0);
+assert_checkerror("derivative(list(),x)", refMsg);
+
+assert_checkfalse(execstr("derivative(list(""foo""),x)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of elements in input argument #%d: At least %d elements expected, but current number is %d.\n"), "derivative", 1, 2, 1);
+assert_checkerror("derivative(list(""foo""),x)", refMsg);
+
+
+assert_checkfalse(execstr("derivative(list(""foo"",""aa""),x)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for element #%d in input argument #%d: A function is expected, but current type is %s.\n"), "derivative", 1, 1, typeof("a"));
+assert_checkerror("derivative(list(""foo"",""aa""),x)", refMsg);
+
+
+
+
+
diff --git a/modules/optimization/tests/nonreg_tests/bug_8546.dia.ref b/modules/optimization/tests/nonreg_tests/bug_8546.dia.ref new file mode 100755 index 000000000..f24b6501d --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8546.dia.ref @@ -0,0 +1,59 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8546 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8546 +// +// <-- Short Description --> +// The neldermead function may call f outside the bounds. +// +function [ f , index ] = myquad ( x , index ) + mprintf("index=%d, x=[%.2f %.2f]\n",index,x(1),x(2)) + if ( or(x < 1) | or(x > 2) ) then + error("Point not in bounds") + end + f = x(1)^2 + x(2)^2 +endfunction +rand("seed" , 0) +x0 = [1.2 1.9].'; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",[1 1]); +nm = neldermead_configure(nm,"-boundsmax",[2 2]); +nm = neldermead_configure(nm,"-simplex0length",0.1); +nm = neldermead_search(nm); +index=1, x=[1.20 1.90] +index=2, x=[1.20 1.90] +index=2, x=[1.20 1.90] +index=2, x=[1.30 1.90] +index=2, x=[1.20 2.00] +index=2, x=[1.31 1.77] +index=2, x=[1.20 1.75] +index=2, x=[1.33 1.58] +index=2, x=[1.21 1.53] +index=2, x=[1.36 1.30] +index=2, x=[1.22 1.20] +index=2, x=[1.40 1.00] +index=2, x=[1.24 1.00] +index=2, x=[1.01 1.22] +index=2, x=[1.00 1.00] +index=2, x=[1.00 1.26] +index=2, x=[1.00 1.19] +index=2, x=[1.00 1.00] +index=2, x=[1.00 1.00] +index=2, x=[1.00 1.00] +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal(xopt,[1;1],1.e-6); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal(fopt,2,1.e-4); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/nonreg_tests/bug_8546.tst b/modules/optimization/tests/nonreg_tests/bug_8546.tst new file mode 100755 index 000000000..308a84682 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8546.tst @@ -0,0 +1,40 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8546 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8546 +// +// <-- Short Description --> +// The neldermead function may call f outside the bounds. +// + +function [ f , index ] = myquad ( x , index ) + mprintf("index=%d, x=[%.2f %.2f]\n",index,x(1),x(2)) + if ( or(x < 1) | or(x > 2) ) then + error("Point not in bounds") + end + f = x(1)^2 + x(2)^2 +endfunction +rand("seed" , 0) +x0 = [1.2 1.9].'; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",[1 1]); +nm = neldermead_configure(nm,"-boundsmax",[2 2]); +nm = neldermead_configure(nm,"-simplex0length",0.1); +nm = neldermead_search(nm); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal(xopt,[1;1],1.e-6); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal(fopt,2,1.e-4); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/nonreg_tests/bug_8547.dia.ref b/modules/optimization/tests/nonreg_tests/bug_8547.dia.ref new file mode 100755 index 000000000..e486381b8 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8547.dia.ref @@ -0,0 +1,52 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8547 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8547 +// +// <-- Short Description --> +// The neldermead function may call f outside the constraints. +// +function [ f , c , index ] = myquad ( x , index ) + f = [] + c = [] + if ( index==2 | index==6 ) then + if ( or(x < 1) | or(x > 2) ) then + error("Point not in bounds") + end + f = x(1)^2 + x(2)^2 + end + if ( index==5 | index==6 ) then + c1 = x(1)-1 + c2 = x(2)-1 + c3 = 2-x(1) + c4 = 2-x(2) + c = [c1 c2 c3 c4] + end +endfunction +rand("seed" , 0) +x0 = [1.2 1.9].'; +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",myquad); +nm = nmplot_configure(nm,"-x0",x0); +nm = nmplot_configure(nm,"-method","box"); +nm = nmplot_configure(nm,"-boundsmin",[0 0]); +nm = nmplot_configure(nm,"-boundsmax",[3 3]); +nm = nmplot_configure(nm,"-nbineqconst",4); +nm = nmplot_configure(nm,"-simplex0method","randbounds"); +nm = nmplot_configure(nm,"-maxiter",200); +nm = nmplot_configure(nm,"-maxfunevals",300); +nm = nmplot_search(nm); +xopt = nmplot_get(nm,"-xopt"); +assert_checkalmostequal(xopt,[1;1],1.d-2); +fopt = nmplot_get(nm,"-fopt"); +assert_checkalmostequal(fopt,2,1.d-2); +nm = nmplot_destroy(nm); diff --git a/modules/optimization/tests/nonreg_tests/bug_8547.tst b/modules/optimization/tests/nonreg_tests/bug_8547.tst new file mode 100755 index 000000000..b7f53dad5 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8547.tst @@ -0,0 +1,54 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8547 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8547 +// +// <-- Short Description --> +// The neldermead function may call f outside the constraints. +// + +function [ f , c , index ] = myquad ( x , index ) + f = [] + c = [] + if ( index==2 | index==6 ) then + if ( or(x < 1) | or(x > 2) ) then + error("Point not in bounds") + end + f = x(1)^2 + x(2)^2 + end + if ( index==5 | index==6 ) then + c1 = x(1)-1 + c2 = x(2)-1 + c3 = 2-x(1) + c4 = 2-x(2) + c = [c1 c2 c3 c4] + end +endfunction + +rand("seed" , 0) +x0 = [1.2 1.9].'; +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",myquad); +nm = nmplot_configure(nm,"-x0",x0); +nm = nmplot_configure(nm,"-method","box"); +nm = nmplot_configure(nm,"-boundsmin",[0 0]); +nm = nmplot_configure(nm,"-boundsmax",[3 3]); +nm = nmplot_configure(nm,"-nbineqconst",4); +nm = nmplot_configure(nm,"-simplex0method","randbounds"); +nm = nmplot_configure(nm,"-maxiter",200); +nm = nmplot_configure(nm,"-maxfunevals",300); +nm = nmplot_search(nm); +xopt = nmplot_get(nm,"-xopt"); +assert_checkalmostequal(xopt,[1;1],1.d-2); +fopt = nmplot_get(nm,"-fopt"); +assert_checkalmostequal(fopt,2,1.d-2); +nm = nmplot_destroy(nm); diff --git a/modules/optimization/tests/nonreg_tests/bug_8549.dia.ref b/modules/optimization/tests/nonreg_tests/bug_8549.dia.ref new file mode 100755 index 000000000..e276e9644 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8549.dia.ref @@ -0,0 +1,29 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8549 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8549 +// +// <-- Short Description --> +// The neldermead function does not help to debug the cost function. +// +function [ f , index ] = myquad ( x , index ) + f = x(1)^2 + x(2)^2 + x(3)^2 +endfunction +x0 = [1.2 1.9].'; +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",myquad); +nm = nmplot_configure(nm,"-x0",x0); +instr = "nm = nmplot_search(nm)"; +lclmsg = gettext ( "%s: Cannot evaluate cost function with ""%s"": %s" ); +scimsg = msprintf(_("Invalid index.\n")); +assert_checkerror(instr, lclmsg , [], "optimbase_checkcostfun", "[f,index]=costf(x0,1)", scimsg); +nm = nmplot_destroy(nm); diff --git a/modules/optimization/tests/nonreg_tests/bug_8549.tst b/modules/optimization/tests/nonreg_tests/bug_8549.tst new file mode 100755 index 000000000..abf59501c --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8549.tst @@ -0,0 +1,30 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8549 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8549 +// +// <-- Short Description --> +// The neldermead function does not help to debug the cost function. +// + +function [ f , index ] = myquad ( x , index ) + f = x(1)^2 + x(2)^2 + x(3)^2 +endfunction +x0 = [1.2 1.9].'; +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",myquad); +nm = nmplot_configure(nm,"-x0",x0); +instr = "nm = nmplot_search(nm)"; +lclmsg = gettext ( "%s: Cannot evaluate cost function with ""%s"": %s" ); +scimsg = msprintf(_("Invalid index.\n")); +assert_checkerror(instr, lclmsg , [], "optimbase_checkcostfun", "[f,index]=costf(x0,1)", scimsg); +nm = nmplot_destroy(nm); diff --git a/modules/optimization/tests/nonreg_tests/bug_8719.dia.ref b/modules/optimization/tests/nonreg_tests/bug_8719.dia.ref new file mode 100755 index 000000000..fdb3545e3 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8719.dia.ref @@ -0,0 +1,31 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8719 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8719 +// +// <-- Short Description --> +// The karmarkar function prints unwanted messages. +// +c = [-20 -24 0 0]'; +a = [ +3 6 1 0 +4 2 0 1 +]; +b = [60 32]'; +expected = [4 8 0 0]'; +x0 = [ +4.1128205 +7.7333333 +1.2615385 +0.0820513 +]; +xopt=karmarkar(a,b,c,x0); +assert_checkalmostequal ( xopt , expected , 1.e-3, 1.e-3 ); diff --git a/modules/optimization/tests/nonreg_tests/bug_8719.tst b/modules/optimization/tests/nonreg_tests/bug_8719.tst new file mode 100755 index 000000000..7e59a25b0 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8719.tst @@ -0,0 +1,34 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8719 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8719 +// +// <-- Short Description --> +// The karmarkar function prints unwanted messages. +// + + +c = [-20 -24 0 0]'; +a = [ +3 6 1 0 +4 2 0 1 +]; +b = [60 32]'; +expected = [4 8 0 0]'; +x0 = [ +4.1128205 +7.7333333 +1.2615385 +0.0820513 +]; +xopt=karmarkar(a,b,c,x0); +assert_checkalmostequal ( xopt , expected , 1.e-3, 1.e-3 ); + diff --git a/modules/optimization/tests/nonreg_tests/bug_8720.dia.ref b/modules/optimization/tests/nonreg_tests/bug_8720.dia.ref new file mode 100755 index 000000000..7c4825281 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8720.dia.ref @@ -0,0 +1,26 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8720 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8720 +// +// <-- Short Description --> +// The karmarkar function may stop too early in the iterations. +// +c = 1.e-20 * [-20 -24 0 0]'; +a = [ +3 6 1 0 +4 2 0 1 +]; +b = [60 32]'; +x0 = [4.1128205 7.7333333 1.2615385 0.0820513]'; +expected = [4 8 0 0]'; +xopt = karmarkar(a,b,c,x0); +assert_checkalmostequal ( xopt , expected , 1.e-4, 1.e-3); diff --git a/modules/optimization/tests/nonreg_tests/bug_8720.tst b/modules/optimization/tests/nonreg_tests/bug_8720.tst new file mode 100755 index 000000000..54ef2d02f --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8720.tst @@ -0,0 +1,29 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8720 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8720 +// +// <-- Short Description --> +// The karmarkar function may stop too early in the iterations. +// + + +c = 1.e-20 * [-20 -24 0 0]'; +a = [ +3 6 1 0 +4 2 0 1 +]; +b = [60 32]'; +x0 = [4.1128205 7.7333333 1.2615385 0.0820513]'; +expected = [4 8 0 0]'; +xopt = karmarkar(a,b,c,x0); +assert_checkalmostequal ( xopt , expected , 1.e-4, 1.e-3); + diff --git a/modules/optimization/tests/nonreg_tests/bug_8726.dia.ref b/modules/optimization/tests/nonreg_tests/bug_8726.dia.ref new file mode 100755 index 000000000..dfb181472 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8726.dia.ref @@ -0,0 +1,27 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// <-- Non-regression test for bug 8726 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8726 +// +// <-- Short Description --> +// The karmarkar function may produce a division-by-zero error. +// +Aeq = [ +1 -1 0 +1 1 1 +]; +beq = [0;2]; +c = [-1;-1;0]; +x0 = [1;1;0]; +xopt=karmarkar(Aeq,beq,c,x0); +WARNING: karmarkar: The algorithm did not converge (exitflag= -3). +xexpected = [1;1;0]; +assert_checkequal ( xopt , xexpected ); diff --git a/modules/optimization/tests/nonreg_tests/bug_8726.tst b/modules/optimization/tests/nonreg_tests/bug_8726.tst new file mode 100755 index 000000000..03d8e0fdf --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8726.tst @@ -0,0 +1,31 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// <-- Non-regression test for bug 8726 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8726 +// +// <-- Short Description --> +// The karmarkar function may produce a division-by-zero error. +// + + + +Aeq = [ +1 -1 0 +1 1 1 +]; +beq = [0;2]; +c = [-1;-1;0]; +x0 = [1;1;0]; +xopt=karmarkar(Aeq,beq,c,x0); +xexpected = [1;1;0]; +assert_checkequal ( xopt , xexpected ); + + diff --git a/modules/optimization/tests/nonreg_tests/bug_8727.dia.ref b/modules/optimization/tests/nonreg_tests/bug_8727.dia.ref new file mode 100755 index 000000000..88aa418bd --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8727.dia.ref @@ -0,0 +1,40 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8727 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8727 +// +// <-- Short Description --> +// The karmarkar function requires the initial guess x0. +// +n=11; +Aeq = zeros(n,n+2); +Aeq(:,1) = 2*linspace(0,1,n)'; +Aeq(:,2) = ones(11,1); +Aeq(1:n,3:n+2) = eye(n,n); +beq = 1 + linspace(0,1,n)'.^2; +c=[-1;-1;zeros(n,1)]; +xopt=karmarkar(Aeq,beq,c); +xstar = [ + 0.5041940 + 0.7457937 + 0.2542063 + 0.1633675 + 0.0925287 + 0.0416899 + 0.0108511 + 0.0000123 + 0.0091735 + 0.0383347 + 0.0874959 + 0.1566571 + 0.2458183 +]; +assert_checkalmostequal ( xopt , xstar , 1.e-6, 1.e-6 ); diff --git a/modules/optimization/tests/nonreg_tests/bug_8727.tst b/modules/optimization/tests/nonreg_tests/bug_8727.tst new file mode 100755 index 000000000..08e5d4407 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8727.tst @@ -0,0 +1,46 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8727 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8727 +// +// <-- Short Description --> +// The karmarkar function requires the initial guess x0. +// + + + + +n=11; +Aeq = zeros(n,n+2); +Aeq(:,1) = 2*linspace(0,1,n)'; +Aeq(:,2) = ones(11,1); +Aeq(1:n,3:n+2) = eye(n,n); +beq = 1 + linspace(0,1,n)'.^2; +c=[-1;-1;zeros(n,1)]; +xopt=karmarkar(Aeq,beq,c); + +xstar = [ + 0.5041940 + 0.7457937 + 0.2542063 + 0.1633675 + 0.0925287 + 0.0416899 + 0.0108511 + 0.0000123 + 0.0091735 + 0.0383347 + 0.0874959 + 0.1566571 + 0.2458183 +]; +assert_checkalmostequal ( xopt , xstar , 1.e-6, 1.e-6 ); + diff --git a/modules/optimization/tests/nonreg_tests/bug_8775.dia.ref b/modules/optimization/tests/nonreg_tests/bug_8775.dia.ref new file mode 100755 index 000000000..04a9c09b6 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8775.dia.ref @@ -0,0 +1,26 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8775 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8775 +// +// <-- Short Description --> +// The karmarkar function might diverge toward a non-optimal point. +// +// An unbounded problem. +Aeq = [ + 2 -2 -1 1 0 +-1 -4 1 0 1 +]; +beq = [-1;-1]; +c = [2;9;3;0;0]; +x0 = [0.2;0.7;1;1;1]; +[xopt,fopt,exitflag]=karmarkar(Aeq,beq,c,x0,0,0.999); +assert_checkequal ( exitflag , -2 ); diff --git a/modules/optimization/tests/nonreg_tests/bug_8775.tst b/modules/optimization/tests/nonreg_tests/bug_8775.tst new file mode 100755 index 000000000..7238215c1 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8775.tst @@ -0,0 +1,30 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8775 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8775 +// +// <-- Short Description --> +// The karmarkar function might diverge toward a non-optimal point. +// + + + +// An unbounded problem. +Aeq = [ + 2 -2 -1 1 0 +-1 -4 1 0 1 +]; +beq = [-1;-1]; +c = [2;9;3;0;0]; +x0 = [0.2;0.7;1;1;1]; +[xopt,fopt,exitflag]=karmarkar(Aeq,beq,c,x0,0,0.999); +assert_checkequal ( exitflag , -2 ); + diff --git a/modules/optimization/tests/nonreg_tests/bug_8777.dia.ref b/modules/optimization/tests/nonreg_tests/bug_8777.dia.ref new file mode 100755 index 000000000..08c2355ae --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8777.dia.ref @@ -0,0 +1,70 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8777 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8777 +// +// <-- Short Description --> +// The neldermead function may fail to restart with bounds. +// +// Script #1 +function [ f , index ] = myquad ( x , index ) + f = x(1)^2 + x(2)^2 + x(3)^2 +endfunction +rand("seed" , 0) +x0 = [1.2 1.9,1.5].'; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",3); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",[1 1 1]); +nm = neldermead_configure(nm,"-boundsmax",[2 2 2]); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_search(nm); +optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",200); +instr = "nm = neldermead_restart(nm)"; +lclmsg = gettext("%s: The initial simplex method ""%s"" is not compatible with the restart simplex method ""%s"""); +assert_checkerror( instr, lclmsg , [], "neldermead_updatesimp", "randbounds" ,"oriented"); +nm = neldermead_destroy(nm); +// Script #2 +function [ f , index ] = myquad ( x , index ) + f = x(1)^2 + x(2)^2 + x(3)^2 +endfunction +rand("seed" , 0) +x0 = [1.2 1.9,1.5].'; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",3); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",[1 1 1]); +nm = neldermead_configure(nm,"-boundsmax",[2 2 2]); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_search(nm); +optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",200); +nm = neldermead_configure(nm,"-restartsimplexmethod","randbounds"); +nm = neldermead_restart(nm); +// +xopt = neldermead_get(nm,"-xopt"); +xstar = [1;1;1]; +assert_checkalmostequal(xopt,xstar,1.e-4); +// +fopt = neldermead_get(nm,"-fopt"); +fstar = 3; +assert_checkalmostequal(fopt,fstar,1.e-4); +// +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/nonreg_tests/bug_8777.tst b/modules/optimization/tests/nonreg_tests/bug_8777.tst new file mode 100755 index 000000000..dbcd6fbdc --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8777.tst @@ -0,0 +1,74 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8777 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8777 +// +// <-- Short Description --> +// The neldermead function may fail to restart with bounds. +// + +// Script #1 + +function [ f , index ] = myquad ( x , index ) + f = x(1)^2 + x(2)^2 + x(3)^2 +endfunction +rand("seed" , 0) +x0 = [1.2 1.9,1.5].'; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",3); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",[1 1 1]); +nm = neldermead_configure(nm,"-boundsmax",[2 2 2]); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_search(nm); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",200); +instr = "nm = neldermead_restart(nm)"; +lclmsg = gettext("%s: The initial simplex method ""%s"" is not compatible with the restart simplex method ""%s"""); +assert_checkerror( instr, lclmsg , [], "neldermead_updatesimp", "randbounds" ,"oriented"); +nm = neldermead_destroy(nm); + +// Script #2 + +function [ f , index ] = myquad ( x , index ) + f = x(1)^2 + x(2)^2 + x(3)^2 +endfunction +rand("seed" , 0) +x0 = [1.2 1.9,1.5].'; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",3); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",[1 1 1]); +nm = neldermead_configure(nm,"-boundsmax",[2 2 2]); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_search(nm); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",200); +nm = neldermead_configure(nm,"-restartsimplexmethod","randbounds"); +nm = neldermead_restart(nm); +// +xopt = neldermead_get(nm,"-xopt"); +xstar = [1;1;1]; +assert_checkalmostequal(xopt,xstar,1.e-4); +// +fopt = neldermead_get(nm,"-fopt"); +fstar = 3; +assert_checkalmostequal(fopt,fstar,1.e-4); +// +nm = neldermead_destroy(nm); + + + + diff --git a/modules/optimization/tests/nonreg_tests/bug_8805.dia.ref b/modules/optimization/tests/nonreg_tests/bug_8805.dia.ref new file mode 100755 index 000000000..81de19749 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8805.dia.ref @@ -0,0 +1,98 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8805 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8805 +// +// <-- Short Description --> +// The neldermead function, algorithm box, wrongly used +// the output function. +// Manually check that the .ref contains the good values for f and x. +// +function [ f , index ] = costf ( x , index ) + f = 100*(x(2) - x(1)^2)^2 + (1 - x(1))^2 +endfunction +function stop = myoutputcmd(state, data) + iter = data.iteration + if ( state == "init" ) then + mprintf ( "=================================\n"); + mprintf ( "Initialization\n"); + elseif ( state == "done" ) then + mprintf ( "=================================\n"); + mprintf ( "End of Optimization\n"); + end + fc = data.funccount + fval = data.fval + x = data.x + simplex = data.simplex + // Simplex is a data structure, which can be managed + // by the optimsimplex class. + ssize = optimsimplex_size ( simplex ) + if ( modulo(iter,10)==0 ) then + mprintf ( "Iteration #%d, Feval #%d, Fval = %s, x = %s, Size = %s\n", .. + iter,fc, string(fval), strcat(string(x)," "), string(ssize)); + end + stop = %f +endfunction +xopt = [1;1] + xopt = + + 1. + 1. +fopt = 0 + fopt = + + 0. +x0 = [-1.2 1.0]; +lower_bounds = [-2 -2]; +upper_bounds = [2. 2.]; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",costf); +nm = neldermead_configure(nm,"-x0",x0'); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",lower_bounds); +nm = neldermead_configure(nm,"-boundsmax",upper_bounds); +nm = neldermead_configure(nm,"-maxfunevals",400); +nm = neldermead_configure(nm,"-maxiter",250); +nm = neldermead_configure(nm,"-outputcommand",myoutputcmd); +nm = neldermead_search(nm); +================================= +Initialization +Iteration #0, Feval #5, Fval = 24.2, x = -1.2 1, Size = 1 +Iteration #10, Feval #21, Fval = 7.9162551, x = -1.0888039 0.9969959, Size = 0.4763039 +Iteration #20, Feval #38, Fval = 3.5785663, x = -0.7469755 0.4854023, Size = 0.3143594 +Iteration #30, Feval #58, Fval = 2.8441192, x = -0.6293793 0.4396203, Size = 0.0448992 +Iteration #40, Feval #68, Fval = 1.4592158, x = -0.2023866 0.0293490, Size = 0.1593684 +Iteration #50, Feval #87, Fval = 1.4248557, x = -0.1760318 0.0105409, Size = 0.0139912 +Iteration #60, Feval #97, Fval = 1.2862472, x = -0.1287556 0.0055517, Size = 0.0280765 +Iteration #70, Feval #110, Fval = 0.9998833, x = 0.0380809 -0.0258619, Size = 0.0603288 +Iteration #80, Feval #123, Fval = 0.5295656, x = 0.2750716 0.0693048, Size = 0.1059773 +Iteration #90, Feval #137, Fval = 0.3227594, x = 0.4479052 0.1872210, Size = 0.0543941 +Iteration #100, Feval #151, Fval = 0.2460534, x = 0.5394682 0.2725966, Size = 0.0972132 +Iteration #110, Feval #164, Fval = 0.0712614, x = 0.7533294 0.5572998, Size = 0.1683063 +Iteration #120, Feval #178, Fval = 0.0241643, x = 0.8601955 0.7331400, Size = 0.1201279 +Iteration #130, Feval #194, Fval = 0.0006215, x = 0.9932147 0.9888743, Size = 0.0910561 +Iteration #140, Feval #213, Fval = 0.0000914, x = 0.9907809 0.9818993, Size = 0.0191679 +Iteration #150, Feval #231, Fval = 0.0000080, x = 0.9973005 0.9945266, Size = 0.0036059 +Iteration #160, Feval #247, Fval = 0.0000018, x = 1.0006153 1.0013496, Size = 0.0024367 +Iteration #170, Feval #262, Fval = 0.0000001, x = 0.9997092 0.9993959, Size = 0.0014992 +Iteration #180, Feval #285, Fval = 7.121D-08, x = 1.0000349 1.0000433, Size = 0.0001173 +Iteration #190, Feval #296, Fval = 3.730D-08, x = 1.0001101 1.0002043, Size = 0.0002640 +Iteration #200, Feval #310, Fval = 8.015D-09, x = 1.0000652 1.0001242, Size = 0.0001581 +Iteration #210, Feval #325, Fval = 1.036D-09, x = 0.9999743 0.9999467, Size = 0.0001415 +Iteration #220, Feval #342, Fval = 6.061D-11, x = 1.0000017 1.0000041, Size = 0.0000291 +Iteration #230, Feval #360, Fval = 1.459D-11, x = 0.9999963 0.9999928, Size = 0.0000039 +Iteration #240, Feval #380, Fval = 1.048D-12, x = 0.9999990 0.9999980, Size = 0.0000005 +================================= +End of Optimization +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal(xopt,[1;1],1.d-1); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/nonreg_tests/bug_8805.tst b/modules/optimization/tests/nonreg_tests/bug_8805.tst new file mode 100755 index 000000000..cfa1522ff --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_8805.tst @@ -0,0 +1,70 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 8805 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=8805 +// +// <-- Short Description --> +// The neldermead function, algorithm box, wrongly used +// the output function. +// Manually check that the .ref contains the good values for f and x. +// + +function [ f , index ] = costf ( x , index ) + f = 100*(x(2) - x(1)^2)^2 + (1 - x(1))^2 +endfunction + + +function stop = myoutputcmd(state, data) + iter = data.iteration + if ( state == "init" ) then + mprintf ( "=================================\n"); + mprintf ( "Initialization\n"); + elseif ( state == "done" ) then + mprintf ( "=================================\n"); + mprintf ( "End of Optimization\n"); + end + fc = data.funccount + fval = data.fval + x = data.x + simplex = data.simplex + // Simplex is a data structure, which can be managed + // by the optimsimplex class. + ssize = optimsimplex_size ( simplex ) + if ( modulo(iter,10)==0 ) then + mprintf ( "Iteration #%d, Feval #%d, Fval = %s, x = %s, Size = %s\n", .. + iter,fc, string(fval), strcat(string(x)," "), string(ssize)); + end + stop = %f +endfunction + + +xopt = [1;1] +fopt = 0 +x0 = [-1.2 1.0]; +lower_bounds = [-2 -2]; +upper_bounds = [2. 2.]; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",costf); +nm = neldermead_configure(nm,"-x0",x0'); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",lower_bounds); +nm = neldermead_configure(nm,"-boundsmax",upper_bounds); +nm = neldermead_configure(nm,"-maxfunevals",400); +nm = neldermead_configure(nm,"-maxiter",250); +nm = neldermead_configure(nm,"-outputcommand",myoutputcmd); +nm = neldermead_search(nm); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal(xopt,[1;1],1.d-1); +nm = neldermead_destroy(nm); + + + diff --git a/modules/optimization/tests/nonreg_tests/bug_9208.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9208.dia.ref new file mode 100755 index 000000000..bcfa4a031 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9208.dia.ref @@ -0,0 +1,348 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9208 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9208 +// +// <-- Short Description --> +// Added three optional output arguments to optim(), to retrieve #iterations, +// #evaluations and a termination flag. +// +// Example 1 +a = 1.0; +b = 2.0; +c = 3.0; +d = 4.0; +x0 = [1 1]; +function [f, g, ind] = costfunction(x, ind, a, b, c, d) + f = a * ( x(1) - c ) ^2 + b * ( x(2) - d )^2; + g(1) = 2 * a * ( x(1) - c ); + g(2) = 2 * b * ( x(2) - d ); +endfunction +costf = list ( costfunction , a , b , c, d ); +[fopt, xopt, w, g, iters, evals, err] = optim ( costf , x0 ); +assert_checkequal([iters evals err], [10 11 1]); +[fopt, xopt, w, g, iters, evals, err] = optim ( costf , x0 , "ar",nap=5 ); +assert_checkequal([iters evals err], [4 5 4]); +[fopt, xopt, w, g, iters, evals, err] = optim ( costf , x0 , "ar",nap=100,iter=5 ); +assert_checkequal([iters evals err], [6 7 5]); +// Example 2 +x0 = [-1.2 1.0]; +function f = rosenbrock(x) + f = 100.0 *(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +function [f, g, ind] = rosenbrockCost2(x, ind) + f = rosenbrock ( x ); + g = derivative ( rosenbrock , x.' , order = 4 ); +endfunction +[fopt, xopt, w, g, iters, evals, err] = optim ( rosenbrockCost2 , x0 ); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkequal([iters evals err], [37 50 9]); +[fopt, xopt, w, g, iters, evals, err] = optim ( rosenbrockCost2 , x0 , "ar",nap=10 ); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkequal([iters evals err], [8 10 4]); +[fopt, xopt, w, g, iters, evals, err] = optim ( rosenbrockCost2 , x0 , "ar",nap=100,iter=10 ); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkequal([iters evals err], [11 14 5]); diff --git a/modules/optimization/tests/nonreg_tests/bug_9208.tst b/modules/optimization/tests/nonreg_tests/bug_9208.tst new file mode 100755 index 000000000..2c4def14b --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9208.tst @@ -0,0 +1,61 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9208 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9208 +// +// <-- Short Description --> +// Added three optional output arguments to optim(), to retrieve #iterations, +// #evaluations and a termination flag. +// + +// Example 1 +a = 1.0; +b = 2.0; +c = 3.0; +d = 4.0; +x0 = [1 1]; +function [f, g, ind] = costfunction(x, ind, a, b, c, d) + f = a * ( x(1) - c ) ^2 + b * ( x(2) - d )^2; + g(1) = 2 * a * ( x(1) - c ); + g(2) = 2 * b * ( x(2) - d ); +endfunction +costf = list ( costfunction , a , b , c, d ); + +[fopt, xopt, w, g, iters, evals, err] = optim ( costf , x0 ); +assert_checkequal([iters evals err], [10 11 1]); + +[fopt, xopt, w, g, iters, evals, err] = optim ( costf , x0 , "ar",nap=5 ); +assert_checkequal([iters evals err], [4 5 4]); + +[fopt, xopt, w, g, iters, evals, err] = optim ( costf , x0 , "ar",nap=100,iter=5 ); +assert_checkequal([iters evals err], [6 7 5]); + + +// Example 2 +x0 = [-1.2 1.0]; +function f = rosenbrock(x) + f = 100.0 *(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +function [f, g, ind] = rosenbrockCost2(x, ind) + f = rosenbrock ( x ); + g = derivative ( rosenbrock , x.' , order = 4 ); +endfunction + +[fopt, xopt, w, g, iters, evals, err] = optim ( rosenbrockCost2 , x0 ); +assert_checkequal([iters evals err], [37 50 9]); + +[fopt, xopt, w, g, iters, evals, err] = optim ( rosenbrockCost2 , x0 , "ar",nap=10 ); +assert_checkequal([iters evals err], [8 10 4]); + +[fopt, xopt, w, g, iters, evals, err] = optim ( rosenbrockCost2 , x0 , "ar",nap=100,iter=10 ); +assert_checkequal([iters evals err], [11 14 5]); diff --git a/modules/optimization/tests/nonreg_tests/bug_9537.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9537.dia.ref new file mode 100755 index 000000000..bc07c4f18 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9537.dia.ref @@ -0,0 +1,156 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9537 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9537 +// +// <-- Short Description --> +// optimbase_configure() only allowed row vector as initial value. +// Allowed column vector by transposing it. +// +// Load the program as it used to work. The fix for this bug does not apply to polygon.sce as it is. +exec("SCI/modules/optimization/demos/neldermead/polygon.sce", -1); +Finds the largest n-polygon with diameter smaller than 1. +Area =0.649519 (expected = 0.649519) +Maximum diameter=1.000000 (expected = 1.000000) +Minimum diameter=0.500000 (expected=0.500000) +Current area = 0.526110 +Constraint satisfaction = 0.100000 (expected positive) +================================= +Initialization +Iter. # 0, Feval #117, Fval = -0.526110, S = 3.3e+00 +Iter. # 10, Feval #149, Fval = -0.571672, S = 9.8e-01 +Iter. # 20, Feval #176, Fval = -0.584718, S = 7.3e-01 +Iter. # 30, Feval #205, Fval = -0.592284, S = 7.2e-01 +Iter. # 40, Feval #233, Fval = -0.610004, S = 8.8e-01 +Iter. # 50, Feval #257, Fval = -0.612820, S = 7.0e-01 +Iter. # 60, Feval #288, Fval = -0.623092, S = 5.3e-01 +Iter. # 70, Feval #320, Fval = -0.632069, S = 5.1e-01 +Iter. # 80, Feval #348, Fval = -0.635569, S = 4.4e-01 +Iter. # 90, Feval #379, Fval = -0.636657, S = 4.9e-01 +Iter. #100, Feval #411, Fval = -0.639412, S = 4.5e-01 +Iter. #110, Feval #440, Fval = -0.639412, S = 3.2e-01 +Iter. #120, Feval #466, Fval = -0.640097, S = 3.5e-01 +Iter. #130, Feval #495, Fval = -0.640335, S = 2.5e-01 +Iter. #140, Feval #521, Fval = -0.641007, S = 2.5e-01 +Iter. #150, Feval #548, Fval = -0.644861, S = 2.4e-01 +Iter. #160, Feval #572, Fval = -0.646347, S = 2.7e-01 +Iter. #170, Feval #603, Fval = -0.646644, S = 2.1e-01 +Iter. #180, Feval #636, Fval = -0.646644, S = 2.1e-01 +Iter. #190, Feval #662, Fval = -0.646644, S = 2.1e-01 +Iter. #200, Feval #689, Fval = -0.647695, S = 1.9e-01 +Iter. #210, Feval #714, Fval = -0.648022, S = 1.9e-01 +Iter. #220, Feval #748, Fval = -0.648301, S = 1.2e-01 +Iter. #230, Feval #778, Fval = -0.648713, S = 1.8e-01 +Iter. #240, Feval #804, Fval = -0.649005, S = 1.3e-01 +Iter. #250, Feval #831, Fval = -0.649595, S = 1.0e-01 +Iter. #260, Feval #856, Fval = -0.650127, S = 1.0e-01 +Iter. #270, Feval #886, Fval = -0.650340, S = 1.4e-01 +Iter. #280, Feval #920, Fval = -0.650416, S = 1.0e-01 +Iter. #290, Feval #950, Fval = -0.650418, S = 9.0e-02 +Iter. #300, Feval #976, Fval = -0.650418, S = 7.3e-02 +Iter. #310, Feval #1004, Fval = -0.650660, S = 6.5e-02 +Iter. #320, Feval #1028, Fval = -0.650867, S = 1.1e-01 +Iter. #330, Feval #1053, Fval = -0.650968, S = 6.3e-02 +Iter. #340, Feval #1075, Fval = -0.651196, S = 1.1e-01 +Iter. #350, Feval #1098, Fval = -0.651548, S = 9.0e-02 +Iter. #360, Feval #1118, Fval = -0.651910, S = 1.2e-01 +Iter. #370, Feval #1139, Fval = -0.652586, S = 1.2e-01 +Iter. #380, Feval #1159, Fval = -0.653251, S = 1.4e-01 +Iter. #390, Feval #1180, Fval = -0.654245, S = 1.8e-01 +Iter. #400, Feval #1202, Fval = -0.654807, S = 1.6e-01 +Iter. #410, Feval #1228, Fval = -0.656402, S = 1.6e-01 +Iter. #420, Feval #1258, Fval = -0.656840, S = 9.0e-02 +Iter. #430, Feval #1282, Fval = -0.658177, S = 1.0e-01 +Iter. #440, Feval #1304, Fval = -0.658639, S = 1.3e-01 +Iter. #450, Feval #1328, Fval = -0.660199, S = 9.9e-02 +Iter. #460, Feval #1357, Fval = -0.661001, S = 1.2e-01 +Iter. #470, Feval #1388, Fval = -0.661446, S = 1.1e-01 +Iter. #480, Feval #1411, Fval = -0.662733, S = 1.3e-01 +Iter. #490, Feval #1432, Fval = -0.663961, S = 1.5e-01 +Iter. #500, Feval #1461, Fval = -0.664566, S = 1.3e-01 +Iter. #510, Feval #1492, Fval = -0.664737, S = 1.5e-01 +Iter. #520, Feval #1523, Fval = -0.664981, S = 1.2e-01 +Iter. #530, Feval #1552, Fval = -0.665215, S = 7.5e-02 +Iter. #540, Feval #1577, Fval = -0.665463, S = 1.2e-01 +Iter. #550, Feval #1602, Fval = -0.665827, S = 1.3e-01 +Iter. #560, Feval #1632, Fval = -0.665933, S = 1.0e-01 +Iter. #570, Feval #1667, Fval = -0.666014, S = 9.1e-02 +Iter. #580, Feval #1692, Fval = -0.666103, S = 8.3e-02 +Iter. #590, Feval #1718, Fval = -0.666253, S = 6.6e-02 +Iter. #600, Feval #1745, Fval = -0.666335, S = 6.1e-02 +Iter. #610, Feval #1773, Fval = -0.666591, S = 7.3e-02 +Iter. #620, Feval #1801, Fval = -0.666626, S = 4.6e-02 +Iter. #630, Feval #1832, Fval = -0.666725, S = 2.9e-02 +Iter. #640, Feval #1861, Fval = -0.666726, S = 4.9e-02 +Iter. #650, Feval #1897, Fval = -0.666808, S = 2.0e-02 +Iter. #660, Feval #1925, Fval = -0.666819, S = 1.9e-02 +Iter. #670, Feval #1949, Fval = -0.666878, S = 1.6e-02 +Iter. #680, Feval #1972, Fval = -0.666962, S = 2.3e-02 +Iter. #690, Feval #1994, Fval = -0.667053, S = 2.1e-02 +================================= +End of Optimization +Maximum Area =0.667053 (expected = 0.677981) +// Now redefine largesmallpolygon() without transposing x0 in neldermead_configure(nm,"-x0",x0'); +// and check that we get the same result as before. +function [A,r,t] = findlargestpolygon (nv) + // Finds the largest smallest polygon with nv vertices + // A : a 1-by-1 matrix of doubles, the area + // r : a nv-by-1 matrix of doubles, the radius + // t : a nv-by-1 matrix of doubles, the angle + radius = 0.45; + [r,t] = polygon_regular (nv); + r = radius*r; + x0 = [r;t]; + index = 6; + [ f0 , c0 , index ] = largesmallpolygon ( x0 , index ); + mprintf("Current area = %f\n",-f0); + mprintf("Constraint satisfaction = %f (expected positive)\n",min(c0)); + // + // Setup bounds + rmin = zeros(nv,1); + rmax = ones(nv,1); + tmin = -ones(nv,1)*%pi; + tmax = ones(nv,1)*%pi; + xmin=[rmin;tmin]; + xmax=[rmax;tmax]; + // + nm = neldermead_new (); + nm = neldermead_configure(nm,"-numberofvariables",2*nv); + nm = neldermead_configure(nm,"-function",largesmallpolygon); + nm = neldermead_configure(nm,"-x0",x0); + nm = neldermead_configure(nm,"-maxiter",2000); + nm = neldermead_configure(nm,"-maxfunevals",2000); + nm = neldermead_configure(nm,"-method","box"); + nm = neldermead_configure(nm,"-boundsmin",xmin); + nm = neldermead_configure(nm,"-boundsmax",xmax); + nm = neldermead_configure(nm,"-nbineqconst",nv^2+nv-1); + // + // Check that the cost function is correctly connected. + [ nm , result ] = neldermead_function ( nm , x0 ); + // + // Perform optimization + nm = neldermead_search(nm, "off"); + fopt = neldermead_get(nm,"-fopt") + A = -fopt + xopt = neldermead_get(nm,"-xopt") + r = xopt(1:nv) + t = xopt(nv+1:$) + nm = neldermead_destroy(nm) +endfunction +Warning : redefining function: findlargestpolygon . Use funcprot(0) to avoid this message + +nv = 6; +rand("seed" , 0); +[A,r,t] = findlargestpolygon (nv); +Current area = 0.526110 +Constraint satisfaction = 0.100000 (expected positive) +assert_checkalmostequal(A, 0.677981, [], 1e-1); diff --git a/modules/optimization/tests/nonreg_tests/bug_9537.tst b/modules/optimization/tests/nonreg_tests/bug_9537.tst new file mode 100755 index 000000000..552ae412a --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9537.tst @@ -0,0 +1,76 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9537 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9537 +// +// <-- Short Description --> +// optimbase_configure() only allowed row vector as initial value. +// Allowed column vector by transposing it. +// + +// Load the program as it used to work. The fix for this bug does not apply to polygon.sce as it is. + +exec("SCI/modules/optimization/demos/neldermead/polygon.sce", -1); + +// Now redefine largesmallpolygon() without transposing x0 in neldermead_configure(nm,"-x0",x0'); +// and check that we get the same result as before. +function [A,r,t] = findlargestpolygon (nv) + // Finds the largest smallest polygon with nv vertices + // A : a 1-by-1 matrix of doubles, the area + // r : a nv-by-1 matrix of doubles, the radius + // t : a nv-by-1 matrix of doubles, the angle + radius = 0.45; + [r,t] = polygon_regular (nv); + r = radius*r; + x0 = [r;t]; + index = 6; + [ f0 , c0 , index ] = largesmallpolygon ( x0 , index ); + mprintf("Current area = %f\n",-f0); + mprintf("Constraint satisfaction = %f (expected positive)\n",min(c0)); + // + // Setup bounds + rmin = zeros(nv,1); + rmax = ones(nv,1); + tmin = -ones(nv,1)*%pi; + tmax = ones(nv,1)*%pi; + xmin=[rmin;tmin]; + xmax=[rmax;tmax]; + // + nm = neldermead_new (); + nm = neldermead_configure(nm,"-numberofvariables",2*nv); + nm = neldermead_configure(nm,"-function",largesmallpolygon); + nm = neldermead_configure(nm,"-x0",x0); + nm = neldermead_configure(nm,"-maxiter",2000); + nm = neldermead_configure(nm,"-maxfunevals",2000); + nm = neldermead_configure(nm,"-method","box"); + nm = neldermead_configure(nm,"-boundsmin",xmin); + nm = neldermead_configure(nm,"-boundsmax",xmax); + nm = neldermead_configure(nm,"-nbineqconst",nv^2+nv-1); + // + // Check that the cost function is correctly connected. + [ nm , result ] = neldermead_function ( nm , x0 ); + // + // Perform optimization + nm = neldermead_search(nm, "off"); + fopt = neldermead_get(nm,"-fopt") + A = -fopt + xopt = neldermead_get(nm,"-xopt") + r = xopt(1:nv) + t = xopt(nv+1:$) + nm = neldermead_destroy(nm) +endfunction + + +nv = 6; +rand("seed" , 0); +[A,r,t] = findlargestpolygon (nv); +assert_checkalmostequal(A, 0.677981, [], 1e-1); diff --git a/modules/optimization/tests/nonreg_tests/bug_9538.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9538.dia.ref new file mode 100755 index 000000000..1bdae061d --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9538.dia.ref @@ -0,0 +1,233 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9538 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9538 +// +// <-- Short Description --> +// optimbase_checkshape() only allowed row vectors as return from the cost function. +// Allowed column vectors. +// +// Load the program as it used to work. The fix for this bug does not apply to polygon.sce as it is. +exec("SCI/modules/optimization/demos/neldermead/polygon.sce", -1); +Finds the largest n-polygon with diameter smaller than 1. +Area =0.649519 (expected = 0.649519) +Maximum diameter=1.000000 (expected = 1.000000) +Minimum diameter=0.500000 (expected=0.500000) +Current area = 0.526110 +Constraint satisfaction = 0.100000 (expected positive) +================================= +Initialization +Iter. # 0, Feval #117, Fval = -0.526110, S = 3.3e+00 +Iter. # 10, Feval #149, Fval = -0.571672, S = 9.8e-01 +Iter. # 20, Feval #176, Fval = -0.584718, S = 7.3e-01 +Iter. # 30, Feval #205, Fval = -0.592284, S = 7.2e-01 +Iter. # 40, Feval #233, Fval = -0.610004, S = 8.8e-01 +Iter. # 50, Feval #257, Fval = -0.612820, S = 7.0e-01 +Iter. # 60, Feval #288, Fval = -0.623092, S = 5.3e-01 +Iter. # 70, Feval #320, Fval = -0.632069, S = 5.1e-01 +Iter. # 80, Feval #348, Fval = -0.635569, S = 4.4e-01 +Iter. # 90, Feval #379, Fval = -0.636657, S = 4.9e-01 +Iter. #100, Feval #411, Fval = -0.639412, S = 4.5e-01 +Iter. #110, Feval #440, Fval = -0.639412, S = 3.2e-01 +Iter. #120, Feval #466, Fval = -0.640097, S = 3.5e-01 +Iter. #130, Feval #495, Fval = -0.640335, S = 2.5e-01 +Iter. #140, Feval #521, Fval = -0.641007, S = 2.5e-01 +Iter. #150, Feval #548, Fval = -0.644861, S = 2.4e-01 +Iter. #160, Feval #572, Fval = -0.646347, S = 2.7e-01 +Iter. #170, Feval #603, Fval = -0.646644, S = 2.1e-01 +Iter. #180, Feval #636, Fval = -0.646644, S = 2.1e-01 +Iter. #190, Feval #662, Fval = -0.646644, S = 2.1e-01 +Iter. #200, Feval #689, Fval = -0.647695, S = 1.9e-01 +Iter. #210, Feval #714, Fval = -0.648022, S = 1.9e-01 +Iter. #220, Feval #748, Fval = -0.648301, S = 1.2e-01 +Iter. #230, Feval #778, Fval = -0.648713, S = 1.8e-01 +Iter. #240, Feval #804, Fval = -0.649005, S = 1.3e-01 +Iter. #250, Feval #831, Fval = -0.649595, S = 1.0e-01 +Iter. #260, Feval #856, Fval = -0.650127, S = 1.0e-01 +Iter. #270, Feval #886, Fval = -0.650340, S = 1.4e-01 +Iter. #280, Feval #920, Fval = -0.650416, S = 1.0e-01 +Iter. #290, Feval #950, Fval = -0.650418, S = 9.0e-02 +Iter. #300, Feval #976, Fval = -0.650418, S = 7.3e-02 +Iter. #310, Feval #1004, Fval = -0.650660, S = 6.5e-02 +Iter. #320, Feval #1028, Fval = -0.650867, S = 1.1e-01 +Iter. #330, Feval #1053, Fval = -0.650968, S = 6.3e-02 +Iter. #340, Feval #1075, Fval = -0.651196, S = 1.1e-01 +Iter. #350, Feval #1098, Fval = -0.651548, S = 9.0e-02 +Iter. #360, Feval #1118, Fval = -0.651910, S = 1.2e-01 +Iter. #370, Feval #1139, Fval = -0.652586, S = 1.2e-01 +Iter. #380, Feval #1159, Fval = -0.653251, S = 1.4e-01 +Iter. #390, Feval #1180, Fval = -0.654245, S = 1.8e-01 +Iter. #400, Feval #1202, Fval = -0.654807, S = 1.6e-01 +Iter. #410, Feval #1228, Fval = -0.656402, S = 1.6e-01 +Iter. #420, Feval #1258, Fval = -0.656840, S = 9.0e-02 +Iter. #430, Feval #1282, Fval = -0.658177, S = 1.0e-01 +Iter. #440, Feval #1304, Fval = -0.658639, S = 1.3e-01 +Iter. #450, Feval #1328, Fval = -0.660199, S = 9.9e-02 +Iter. #460, Feval #1357, Fval = -0.661001, S = 1.2e-01 +Iter. #470, Feval #1388, Fval = -0.661446, S = 1.1e-01 +Iter. #480, Feval #1411, Fval = -0.662733, S = 1.3e-01 +Iter. #490, Feval #1432, Fval = -0.663961, S = 1.5e-01 +Iter. #500, Feval #1461, Fval = -0.664566, S = 1.3e-01 +Iter. #510, Feval #1492, Fval = -0.664737, S = 1.5e-01 +Iter. #520, Feval #1523, Fval = -0.664981, S = 1.2e-01 +Iter. #530, Feval #1552, Fval = -0.665215, S = 7.5e-02 +Iter. #540, Feval #1577, Fval = -0.665463, S = 1.2e-01 +Iter. #550, Feval #1602, Fval = -0.665827, S = 1.3e-01 +Iter. #560, Feval #1632, Fval = -0.665933, S = 1.0e-01 +Iter. #570, Feval #1667, Fval = -0.666014, S = 9.1e-02 +Iter. #580, Feval #1692, Fval = -0.666103, S = 8.3e-02 +Iter. #590, Feval #1718, Fval = -0.666253, S = 6.6e-02 +Iter. #600, Feval #1745, Fval = -0.666335, S = 6.1e-02 +Iter. #610, Feval #1773, Fval = -0.666591, S = 7.3e-02 +Iter. #620, Feval #1801, Fval = -0.666626, S = 4.6e-02 +Iter. #630, Feval #1832, Fval = -0.666725, S = 2.9e-02 +Iter. #640, Feval #1861, Fval = -0.666726, S = 4.9e-02 +Iter. #650, Feval #1897, Fval = -0.666808, S = 2.0e-02 +Iter. #660, Feval #1925, Fval = -0.666819, S = 1.9e-02 +Iter. #670, Feval #1949, Fval = -0.666878, S = 1.6e-02 +Iter. #680, Feval #1972, Fval = -0.666962, S = 2.3e-02 +Iter. #690, Feval #1994, Fval = -0.667053, S = 2.1e-02 +================================= +End of Optimization +Maximum Area =0.667053 (expected = 0.677981) +// Now redefine largesmallpolygon() without the "transposition for neldermead" +// and check that we get the same result as before. +function [ f , c , index ] = largesmallpolygon ( x , index ) + // Bibliography + // "Benchmarking Optimization Software with Cops" + // Dolan, Moré, 2001 + // Section 1, "Largest Small Polygon" + // + // "Biggest Little Polygon" + // http://mathworld.wolfram.com/BiggestLittlePolygon.html + // + // Audet, C. "Optimisation globale structurée: propriétés, équivalences et résolution." + // Thèse de Doctorat. Montréal, Canada: École Polytechnique de Montréal, 1997. + // http://www.gerad.ca/Charles.Audet. + // + // Known optimal values are + // A6 = 0.677981 (Wolfram Mathworld) + // A8 = 0.726869 (Wolfram Mathworld) + // A25 = 0.77974 (Dolan & Moré - SNOPT) + // A50 = 0.784016 (Dolan & Moré - SNOPT) + // A75 = 0.784769 (Dolan & Moré - SNOPT) + // A100 = 0.785040 (Dolan & Moré - SNOPT) + // + nv = size(x,"*")/2 + f = [] + c = [] + // nv: number of vertices + // x : a (2*nv)-by-1 matrix of doubles, where + // r is in [0,1] + // t is in [0,pi] + r = x(1:nv) + t = x(nv+1:2*nv) + //polygon_draw(r ,t , nv); + //pause + if ( index == 2 | index == 6 ) then + f = polygon_area(r ,t , nv) + f = -f + end + if ( index == 5 | index == 6 ) then + c = zeros(nv^2+nv-1,1) + // Set the diameters + d = polygon_diameters(r ,t , nv) + d = matrix(d,nv^2,1) + c(1:nv^2) = 1-d + // Set the angles + c(nv^2+1:nv^2+nv-1) = t(2:nv)-t(1:nv-1) + // Transpose for neldermead + //c = c' + end +endfunction +Warning : redefining function: largesmallpolygon . Use funcprot(0) to avoid this message + +nv = 6; +rand("seed" , 0); +[A,r,t] = findlargestpolygon (nv); +Current area = 0.526110 +Constraint satisfaction = 0.100000 (expected positive) +================================= +Initialization +Iter. # 0, Feval #117, Fval = -0.526110, S = 3.3e+00 +Iter. # 10, Feval #149, Fval = -0.571672, S = 9.8e-01 +Iter. # 20, Feval #176, Fval = -0.584718, S = 7.3e-01 +Iter. # 30, Feval #205, Fval = -0.592284, S = 7.2e-01 +Iter. # 40, Feval #233, Fval = -0.610004, S = 8.8e-01 +Iter. # 50, Feval #257, Fval = -0.612820, S = 7.0e-01 +Iter. # 60, Feval #288, Fval = -0.623092, S = 5.3e-01 +Iter. # 70, Feval #320, Fval = -0.632069, S = 5.1e-01 +Iter. # 80, Feval #348, Fval = -0.635569, S = 4.4e-01 +Iter. # 90, Feval #379, Fval = -0.636657, S = 4.9e-01 +Iter. #100, Feval #411, Fval = -0.639412, S = 4.5e-01 +Iter. #110, Feval #440, Fval = -0.639412, S = 3.2e-01 +Iter. #120, Feval #466, Fval = -0.640097, S = 3.5e-01 +Iter. #130, Feval #495, Fval = -0.640335, S = 2.5e-01 +Iter. #140, Feval #521, Fval = -0.641007, S = 2.5e-01 +Iter. #150, Feval #548, Fval = -0.644861, S = 2.4e-01 +Iter. #160, Feval #572, Fval = -0.646347, S = 2.7e-01 +Iter. #170, Feval #603, Fval = -0.646644, S = 2.1e-01 +Iter. #180, Feval #636, Fval = -0.646644, S = 2.1e-01 +Iter. #190, Feval #662, Fval = -0.646644, S = 2.1e-01 +Iter. #200, Feval #689, Fval = -0.647695, S = 1.9e-01 +Iter. #210, Feval #714, Fval = -0.648022, S = 1.9e-01 +Iter. #220, Feval #748, Fval = -0.648301, S = 1.2e-01 +Iter. #230, Feval #778, Fval = -0.648713, S = 1.8e-01 +Iter. #240, Feval #804, Fval = -0.649005, S = 1.3e-01 +Iter. #250, Feval #831, Fval = -0.649595, S = 1.0e-01 +Iter. #260, Feval #856, Fval = -0.650127, S = 1.0e-01 +Iter. #270, Feval #886, Fval = -0.650340, S = 1.4e-01 +Iter. #280, Feval #920, Fval = -0.650416, S = 1.0e-01 +Iter. #290, Feval #950, Fval = -0.650418, S = 9.0e-02 +Iter. #300, Feval #976, Fval = -0.650418, S = 7.3e-02 +Iter. #310, Feval #1004, Fval = -0.650660, S = 6.5e-02 +Iter. #320, Feval #1028, Fval = -0.650867, S = 1.1e-01 +Iter. #330, Feval #1053, Fval = -0.650968, S = 6.3e-02 +Iter. #340, Feval #1075, Fval = -0.651196, S = 1.1e-01 +Iter. #350, Feval #1098, Fval = -0.651548, S = 9.0e-02 +Iter. #360, Feval #1118, Fval = -0.651910, S = 1.2e-01 +Iter. #370, Feval #1139, Fval = -0.652586, S = 1.2e-01 +Iter. #380, Feval #1159, Fval = -0.653251, S = 1.4e-01 +Iter. #390, Feval #1180, Fval = -0.654245, S = 1.8e-01 +Iter. #400, Feval #1202, Fval = -0.654807, S = 1.6e-01 +Iter. #410, Feval #1228, Fval = -0.656402, S = 1.6e-01 +Iter. #420, Feval #1258, Fval = -0.656840, S = 9.0e-02 +Iter. #430, Feval #1282, Fval = -0.658177, S = 1.0e-01 +Iter. #440, Feval #1304, Fval = -0.658639, S = 1.3e-01 +Iter. #450, Feval #1328, Fval = -0.660199, S = 9.9e-02 +Iter. #460, Feval #1357, Fval = -0.661001, S = 1.2e-01 +Iter. #470, Feval #1388, Fval = -0.661446, S = 1.1e-01 +Iter. #480, Feval #1411, Fval = -0.662733, S = 1.3e-01 +Iter. #490, Feval #1432, Fval = -0.663961, S = 1.5e-01 +Iter. #500, Feval #1461, Fval = -0.664566, S = 1.3e-01 +Iter. #510, Feval #1492, Fval = -0.664737, S = 1.5e-01 +Iter. #520, Feval #1523, Fval = -0.664981, S = 1.2e-01 +Iter. #530, Feval #1552, Fval = -0.665215, S = 7.5e-02 +Iter. #540, Feval #1577, Fval = -0.665463, S = 1.2e-01 +Iter. #550, Feval #1602, Fval = -0.665827, S = 1.3e-01 +Iter. #560, Feval #1632, Fval = -0.665933, S = 1.0e-01 +Iter. #570, Feval #1667, Fval = -0.666014, S = 9.1e-02 +Iter. #580, Feval #1692, Fval = -0.666103, S = 8.3e-02 +Iter. #590, Feval #1718, Fval = -0.666253, S = 6.6e-02 +Iter. #600, Feval #1745, Fval = -0.666335, S = 6.1e-02 +Iter. #610, Feval #1773, Fval = -0.666591, S = 7.3e-02 +Iter. #620, Feval #1801, Fval = -0.666626, S = 4.6e-02 +Iter. #630, Feval #1832, Fval = -0.666725, S = 2.9e-02 +Iter. #640, Feval #1861, Fval = -0.666726, S = 4.9e-02 +Iter. #650, Feval #1897, Fval = -0.666808, S = 2.0e-02 +Iter. #660, Feval #1925, Fval = -0.666819, S = 1.9e-02 +Iter. #670, Feval #1949, Fval = -0.666878, S = 1.6e-02 +Iter. #680, Feval #1972, Fval = -0.666962, S = 2.3e-02 +Iter. #690, Feval #1994, Fval = -0.667053, S = 2.1e-02 +================================= +End of Optimization +assert_checkalmostequal(A, 0.677981, [], 1e-1); diff --git a/modules/optimization/tests/nonreg_tests/bug_9538.tst b/modules/optimization/tests/nonreg_tests/bug_9538.tst new file mode 100755 index 000000000..bf84b9675 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9538.tst @@ -0,0 +1,81 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9538 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9538 +// +// <-- Short Description --> +// optimbase_checkshape() only allowed row vectors as return from the cost function. +// Allowed column vectors. +// + +// Load the program as it used to work. The fix for this bug does not apply to polygon.sce as it is. +exec("SCI/modules/optimization/demos/neldermead/polygon.sce", -1); + +// Now redefine largesmallpolygon() without the "transposition for neldermead" +// and check that we get the same result as before. +function [ f , c , index ] = largesmallpolygon ( x , index ) + // Bibliography + // "Benchmarking Optimization Software with Cops" + // Dolan, Moré, 2001 + // Section 1, "Largest Small Polygon" + // + // "Biggest Little Polygon" + // http://mathworld.wolfram.com/BiggestLittlePolygon.html + // + // Audet, C. "Optimisation globale structurée: propriétés, équivalences et résolution." + // Thèse de Doctorat. Montréal, Canada: École Polytechnique de Montréal, 1997. + // http://www.gerad.ca/Charles.Audet. + // + // Known optimal values are + // A6 = 0.677981 (Wolfram Mathworld) + // A8 = 0.726869 (Wolfram Mathworld) + // A25 = 0.77974 (Dolan & Moré - SNOPT) + // A50 = 0.784016 (Dolan & Moré - SNOPT) + // A75 = 0.784769 (Dolan & Moré - SNOPT) + // A100 = 0.785040 (Dolan & Moré - SNOPT) + // + nv = size(x,"*")/2 + f = [] + c = [] + // nv: number of vertices + // x : a (2*nv)-by-1 matrix of doubles, where + // r is in [0,1] + // t is in [0,pi] + r = x(1:nv) + t = x(nv+1:2*nv) + + //polygon_draw(r ,t , nv); + //pause + + if ( index == 2 | index == 6 ) then + f = polygon_area(r ,t , nv) + f = -f + end + if ( index == 5 | index == 6 ) then + c = zeros(nv^2+nv-1,1) + // Set the diameters + d = polygon_diameters(r ,t , nv) + d = matrix(d,nv^2,1) + c(1:nv^2) = 1-d + // Set the angles + c(nv^2+1:nv^2+nv-1) = t(2:nv)-t(1:nv-1) + // Transpose for neldermead + //c = c' + end +endfunction + + +nv = 6; +rand("seed" , 0); +[A,r,t] = findlargestpolygon (nv); + +assert_checkalmostequal(A, 0.677981, [], 1e-1); diff --git a/modules/optimization/tests/nonreg_tests/bug_9566.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9566.dia.ref new file mode 100755 index 000000000..5fe4fb56f --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9566.dia.ref @@ -0,0 +1,72 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 9566 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9566 +// +// <-- Short Description --> +// The tolvarianceflag, tolabsolutevariance, tolrelativevariance options of +// neldermead are unnecessary. +// +function stop = myoutputcmd ( state, data, tolrelativevariance, tolabsolutevariance, variancesimplex0 ) + simplex = data.simplex + stop = %f + if ( state == "iter") then + var = optimsimplex_fvvariance ( simplex ) + if ( var < tolrelativevariance * variancesimplex0 + tolabsolutevariance ) then + stop = %t; + end + end +endfunction +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test with my own termination criteria +// +x0 = [1.1 1.1]'; +simplex0 = optimsimplex_new ( "axes" , x0.' ); +coords0 = optimsimplex_getallx(simplex0); +variancesimplex0 = optimsimplex_fvvariance ( simplex0 ); +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +// Disable default terminations +nm = neldermead_configure(nm,"-maxiter",%inf); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-tolxmethod",%f); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%f); +tolabsolutevariance = 1.e-6; +tolrelativevariance = 1.e-6; +stopfun = list(myoutputcmd, tolrelativevariance, tolabsolutevariance, variancesimplex0); +nm = neldermead_configure(nm,"-outputcommand",stopfun); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0 1.0]', 1e-2 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , [] , 1e-3 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "userstop" ); +// Check simplex variance +simplex = neldermead_get(nm,"-simplexopt"); +var = optimsimplex_fvvariance ( simplex ); +ssize = optimsimplex_size ( simplex , "sigmaplus" ); +assert_checktrue ( var < tolrelativevariance * variancesimplex0 + tolabsolutevariance ); +// Check function evaluations +funevals = neldermead_get(nm,"-funevals"); +assert_checkequal ( funevals<200 , %t ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/nonreg_tests/bug_9566.tst b/modules/optimization/tests/nonreg_tests/bug_9566.tst new file mode 100755 index 000000000..135958fb5 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9566.tst @@ -0,0 +1,75 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 9566 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9566 +// +// <-- Short Description --> +// The tolvarianceflag, tolabsolutevariance, tolrelativevariance options of +// neldermead are unnecessary. +// + +function stop = myoutputcmd ( state, data, tolrelativevariance, tolabsolutevariance, variancesimplex0 ) + simplex = data.simplex + stop = %f + if ( state == "iter") then + var = optimsimplex_fvvariance ( simplex ) + if ( var < tolrelativevariance * variancesimplex0 + tolabsolutevariance ) then + stop = %t; + end + end +endfunction + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test with my own termination criteria +// +x0 = [1.1 1.1]'; +simplex0 = optimsimplex_new ( "axes" , x0.' ); +coords0 = optimsimplex_getallx(simplex0); +variancesimplex0 = optimsimplex_fvvariance ( simplex0 ); +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +// Disable default terminations +nm = neldermead_configure(nm,"-maxiter",%inf); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-tolxmethod",%f); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%f); +tolabsolutevariance = 1.e-6; +tolrelativevariance = 1.e-6; +stopfun = list(myoutputcmd, tolrelativevariance, tolabsolutevariance, variancesimplex0); +nm = neldermead_configure(nm,"-outputcommand",stopfun); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0 1.0]', 1e-2 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , [] , 1e-3 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "userstop" ); +// Check simplex variance +simplex = neldermead_get(nm,"-simplexopt"); +var = optimsimplex_fvvariance ( simplex ); +ssize = optimsimplex_size ( simplex , "sigmaplus" ); +assert_checktrue ( var < tolrelativevariance * variancesimplex0 + tolabsolutevariance ); +// Check function evaluations +funevals = neldermead_get(nm,"-funevals"); +assert_checkequal ( funevals<200 , %t ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/nonreg_tests/bug_9577.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9577.dia.ref new file mode 100755 index 000000000..7f62ffaf0 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9577.dia.ref @@ -0,0 +1,26 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 9577 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9577 +// +// <-- Short Description --> +// neldermead_configure(): if -x0 is set, -numberofvariables is now optional. +// It was redundant to call neldermead_configure(nm, "-numberofvariables", X) if +// neldermead_configure(nm, "-x0", x0) had been set beforehand. +// +x0 = [1.2 1.9,1.5]'; +nm = neldermead_new (); +nm = neldermead_configure(nm, "-x0", x0); +numberOfVar = neldermead_cget(nm, "-numberofvariables"); +assert_checkequal(numberOfVar, 3); diff --git a/modules/optimization/tests/nonreg_tests/bug_9577.tst b/modules/optimization/tests/nonreg_tests/bug_9577.tst new file mode 100755 index 000000000..9e93969d6 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9577.tst @@ -0,0 +1,27 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 9577 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9577 +// +// <-- Short Description --> +// neldermead_configure(): if -x0 is set, -numberofvariables is now optional. +// It was redundant to call neldermead_configure(nm, "-numberofvariables", X) if +// neldermead_configure(nm, "-x0", x0) had been set beforehand. +// + +x0 = [1.2 1.9,1.5]'; +nm = neldermead_new (); +nm = neldermead_configure(nm, "-x0", x0); +numberOfVar = neldermead_cget(nm, "-numberofvariables"); +assert_checkequal(numberOfVar, 3); diff --git a/modules/optimization/tests/nonreg_tests/bug_9627.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9627.dia.ref new file mode 100755 index 000000000..e98210222 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9627.dia.ref @@ -0,0 +1,139 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 9627 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9627 +// +// <-- Short Description --> +// The optimsimplex_set*() functions did not check any arguments: +// +// optimsimplex_check +s1 = optimsimplex_new (); +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_check", 1); +assert_checkerror("s1 = optimsimplex_check(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_check(%t);",refMsg); +// optimsimplex_getall +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getall", 1); +assert_checkerror("s1 = optimsimplex_getall(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getall(%t);",refMsg); +// optimsimplex_getallfv +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getallfv", 1); +assert_checkerror("s1 = optimsimplex_getallfv(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getallfv(%t);",refMsg); +// optimsimplex_getallx +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getallx", 1); +assert_checkerror("s1 = optimsimplex_getallx(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getallx(%t);",refMsg); +// optimsimplex_getfv +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getfv", 1); +assert_checkerror("s1 = optimsimplex_getfv(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getfv(%t);",refMsg); +// optimsimplex_getn +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getn", 1); +assert_checkerror("s1 = optimsimplex_getn(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getn(%t);",refMsg); +// optimsimplex_getnbve +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getnbve", 1); +assert_checkerror("s1 = optimsimplex_getnbve(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getnbve(%t);",refMsg); +// optimsimplex_getve +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getve", 1); +assert_checkerror("s1 = optimsimplex_getve(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getve(%t);",refMsg); +// optimsimplex_getx +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getx", 1); +assert_checkerror("s1 = optimsimplex_getx(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getx(%t);",refMsg); +// optimsimplex_setall +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setall", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "optimsimplex_setall", 2); +assert_checkerror("s1 = optimsimplex_setall(1, s1);",refMsg); +assert_checkerror("s1 = optimsimplex_setall(""s1"", s1);",refMsg); +assert_checkerror("s1 = optimsimplex_setall(s1, %i);",refMsg2); +assert_checkerror("s1 = optimsimplex_setall(s1, ""s1"");",refMsg2); +// optimsimplex_setallfv +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setallfv", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real vector expected.\n"), "optimsimplex_setallfv", 2); +assert_checkerror("s1 = optimsimplex_setallfv(1, [1 2]);",refMsg); +assert_checkerror("s1 = optimsimplex_setallfv(""s1"", [1 2]);",refMsg); +assert_checkerror("s1 = optimsimplex_setallfv(s1, ""1"");",refMsg2); +assert_checkerror("s1 = optimsimplex_setallfv(s1, %t);",refMsg2); +// optimsimplex_setallx +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setallx", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "optimsimplex_setallx", 2); +assert_checkerror("s1 = optimsimplex_setallx(1, [1 2]);",refMsg); +assert_checkerror("s1 = optimsimplex_setallx(""s1"", [1 2]);",refMsg); +assert_checkerror("s1 = optimsimplex_setallx(s1, ""1"");",refMsg2); +assert_checkerror("s1 = optimsimplex_setallx(s1, %t);",refMsg2); +// optimsimplex_setfv +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setfv", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "optimsimplex_setfv", 2); +refMsg3 = msprintf(_("%s: Wrong size for input argument #%d: A real scalar expected.\n"), "optimsimplex_setfv", 2); +refMsg4 = msprintf(_("%s: Wrong value for input argument #%d: An integer expected.\n"), "optimsimplex_setfv", 2); +refMsg5 = msprintf(_("%s: Wrong type for input argument #%d: A real vector expected.\n"), "optimsimplex_setfv", 3); +assert_checkerror("s1 = optimsimplex_setfv(1, 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setfv(""s1"", 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setfv(s1, ""1"", 1);",refMsg2); +assert_checkerror("s1 = optimsimplex_setfv(s1, [1 1], 1);",refMsg3); +assert_checkerror("s1 = optimsimplex_setfv(s1, 1.5, 1);",refMsg4); +assert_checkerror("s1 = optimsimplex_setfv(s1, 1, ""1"");",refMsg5); +assert_checkerror("s1 = optimsimplex_setfv(s1, 1, %t);",refMsg5); +// optimsimplex_setn +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setn", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "optimsimplex_setn", 2); +refMsg3 = msprintf(_("%s: Wrong size for input argument #%d: A real scalar expected.\n"), "optimsimplex_setn", 2); +refMsg4 = msprintf(_("%s: Wrong value for input argument #%d: An integer expected.\n"), "optimsimplex_setn", 2); +assert_checkerror("s1 = optimsimplex_setn(1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setn(""s1"", 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setn(s1, ""1"");",refMsg2); +assert_checkerror("s1 = optimsimplex_setn(s1, [1 1]);",refMsg3); +assert_checkerror("s1 = optimsimplex_setn(s1, 1.5);",refMsg4); +// optimsimplex_setnbve +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setnbve", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "optimsimplex_setnbve", 2); +refMsg3 = msprintf(_("%s: Wrong size for input argument #%d: A real scalar expected.\n"), "optimsimplex_setnbve", 2); +refMsg4 = msprintf(_("%s: Wrong value for input argument #%d: An integer expected.\n"), "optimsimplex_setnbve", 2); +assert_checkerror("s1 = optimsimplex_setnbve(1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setnbve(""s1"", 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setnbve(s1, ""1"");",refMsg2); +assert_checkerror("s1 = optimsimplex_setnbve(s1, [1 1]);",refMsg3); +assert_checkerror("s1 = optimsimplex_setnbve(s1, 1.5);",refMsg4); +// optimsimplex_setve +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setve", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "optimsimplex_setve", 2); +refMsg3 = msprintf(_("%s: Wrong size for input argument #%d: A real scalar expected.\n"), "optimsimplex_setve", 2); +refMsg4 = msprintf(_("%s: Wrong value for input argument #%d: An integer expected.\n"), "optimsimplex_setve", 2); +refMsg5 = msprintf(_("%s: Wrong type for input argument #%d: A real vector expected.\n"), "optimsimplex_setve", 3); +refMsg6 = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "optimsimplex_setve", 4); +assert_checkerror("s1 = optimsimplex_setve(1, 1, 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setve(""s1"", 1, 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setve(s1, ""1"", 1, 1);",refMsg2); +assert_checkerror("s1 = optimsimplex_setve(s1, [1 1], 1, 1);",refMsg3); +assert_checkerror("s1 = optimsimplex_setve(s1, 1.5, 1, 1);",refMsg4); +assert_checkerror("s1 = optimsimplex_setve(s1, 1, ""1"", 1);",refMsg5); +assert_checkerror("s1 = optimsimplex_setve(s1, 1, %t, 1);",refMsg5); +assert_checkerror("s1 = optimsimplex_setve(s1, 1, 1, ""1"");",refMsg6); +assert_checkerror("s1 = optimsimplex_setve(s1, 1, 1, %t);",refMsg6); +// optimsimplex_setx +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setx", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "optimsimplex_setx", 2); +refMsg3 = msprintf(_("%s: Wrong size for input argument #%d: A real scalar expected.\n"), "optimsimplex_setx", 2); +refMsg4 = msprintf(_("%s: Wrong value for input argument #%d: An integer expected.\n"), "optimsimplex_setx", 2); +refMsg5 = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "optimsimplex_setx", 3); +assert_checkerror("s1 = optimsimplex_setx(1, 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setx(""s1"", 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setx(s1, ""1"", 1);",refMsg2); +assert_checkerror("s1 = optimsimplex_setx(s1, [1 1], 1);",refMsg3); +assert_checkerror("s1 = optimsimplex_setx(s1, 1.5, 1);",refMsg4); +assert_checkerror("s1 = optimsimplex_setx(s1, 1, ""1"");",refMsg5); +assert_checkerror("s1 = optimsimplex_setx(s1, 1, %t);",refMsg5); diff --git a/modules/optimization/tests/nonreg_tests/bug_9627.tst b/modules/optimization/tests/nonreg_tests/bug_9627.tst new file mode 100755 index 000000000..fcd9c9c3f --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9627.tst @@ -0,0 +1,156 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 9627 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9627 +// +// <-- Short Description --> +// The optimsimplex_set*() functions did not check any arguments: +// + +// optimsimplex_check +s1 = optimsimplex_new (); +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_check", 1); +assert_checkerror("s1 = optimsimplex_check(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_check(%t);",refMsg); + +// optimsimplex_getall +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getall", 1); +assert_checkerror("s1 = optimsimplex_getall(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getall(%t);",refMsg); + +// optimsimplex_getallfv +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getallfv", 1); +assert_checkerror("s1 = optimsimplex_getallfv(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getallfv(%t);",refMsg); + +// optimsimplex_getallx +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getallx", 1); +assert_checkerror("s1 = optimsimplex_getallx(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getallx(%t);",refMsg); + +// optimsimplex_getfv +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getfv", 1); +assert_checkerror("s1 = optimsimplex_getfv(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getfv(%t);",refMsg); + +// optimsimplex_getn +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getn", 1); +assert_checkerror("s1 = optimsimplex_getn(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getn(%t);",refMsg); + +// optimsimplex_getnbve +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getnbve", 1); +assert_checkerror("s1 = optimsimplex_getnbve(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getnbve(%t);",refMsg); + +// optimsimplex_getve +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getve", 1); +assert_checkerror("s1 = optimsimplex_getve(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getve(%t);",refMsg); + +// optimsimplex_getx +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_getx", 1); +assert_checkerror("s1 = optimsimplex_getx(""1"");",refMsg); +assert_checkerror("s1 = optimsimplex_getx(%t);",refMsg); + +// optimsimplex_setall +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setall", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "optimsimplex_setall", 2); +assert_checkerror("s1 = optimsimplex_setall(1, s1);",refMsg); +assert_checkerror("s1 = optimsimplex_setall(""s1"", s1);",refMsg); +assert_checkerror("s1 = optimsimplex_setall(s1, %i);",refMsg2); +assert_checkerror("s1 = optimsimplex_setall(s1, ""s1"");",refMsg2); + +// optimsimplex_setallfv +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setallfv", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real vector expected.\n"), "optimsimplex_setallfv", 2); +assert_checkerror("s1 = optimsimplex_setallfv(1, [1 2]);",refMsg); +assert_checkerror("s1 = optimsimplex_setallfv(""s1"", [1 2]);",refMsg); +assert_checkerror("s1 = optimsimplex_setallfv(s1, ""1"");",refMsg2); +assert_checkerror("s1 = optimsimplex_setallfv(s1, %t);",refMsg2); + +// optimsimplex_setallx +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setallx", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "optimsimplex_setallx", 2); +assert_checkerror("s1 = optimsimplex_setallx(1, [1 2]);",refMsg); +assert_checkerror("s1 = optimsimplex_setallx(""s1"", [1 2]);",refMsg); +assert_checkerror("s1 = optimsimplex_setallx(s1, ""1"");",refMsg2); +assert_checkerror("s1 = optimsimplex_setallx(s1, %t);",refMsg2); + +// optimsimplex_setfv +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setfv", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "optimsimplex_setfv", 2); +refMsg3 = msprintf(_("%s: Wrong size for input argument #%d: A real scalar expected.\n"), "optimsimplex_setfv", 2); +refMsg4 = msprintf(_("%s: Wrong value for input argument #%d: An integer expected.\n"), "optimsimplex_setfv", 2); +refMsg5 = msprintf(_("%s: Wrong type for input argument #%d: A real vector expected.\n"), "optimsimplex_setfv", 3); +assert_checkerror("s1 = optimsimplex_setfv(1, 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setfv(""s1"", 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setfv(s1, ""1"", 1);",refMsg2); +assert_checkerror("s1 = optimsimplex_setfv(s1, [1 1], 1);",refMsg3); +assert_checkerror("s1 = optimsimplex_setfv(s1, 1.5, 1);",refMsg4); +assert_checkerror("s1 = optimsimplex_setfv(s1, 1, ""1"");",refMsg5); +assert_checkerror("s1 = optimsimplex_setfv(s1, 1, %t);",refMsg5); + +// optimsimplex_setn +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setn", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "optimsimplex_setn", 2); +refMsg3 = msprintf(_("%s: Wrong size for input argument #%d: A real scalar expected.\n"), "optimsimplex_setn", 2); +refMsg4 = msprintf(_("%s: Wrong value for input argument #%d: An integer expected.\n"), "optimsimplex_setn", 2); +assert_checkerror("s1 = optimsimplex_setn(1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setn(""s1"", 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setn(s1, ""1"");",refMsg2); +assert_checkerror("s1 = optimsimplex_setn(s1, [1 1]);",refMsg3); +assert_checkerror("s1 = optimsimplex_setn(s1, 1.5);",refMsg4); + +// optimsimplex_setnbve +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setnbve", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "optimsimplex_setnbve", 2); +refMsg3 = msprintf(_("%s: Wrong size for input argument #%d: A real scalar expected.\n"), "optimsimplex_setnbve", 2); +refMsg4 = msprintf(_("%s: Wrong value for input argument #%d: An integer expected.\n"), "optimsimplex_setnbve", 2); +assert_checkerror("s1 = optimsimplex_setnbve(1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setnbve(""s1"", 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setnbve(s1, ""1"");",refMsg2); +assert_checkerror("s1 = optimsimplex_setnbve(s1, [1 1]);",refMsg3); +assert_checkerror("s1 = optimsimplex_setnbve(s1, 1.5);",refMsg4); + +// optimsimplex_setve +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setve", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "optimsimplex_setve", 2); +refMsg3 = msprintf(_("%s: Wrong size for input argument #%d: A real scalar expected.\n"), "optimsimplex_setve", 2); +refMsg4 = msprintf(_("%s: Wrong value for input argument #%d: An integer expected.\n"), "optimsimplex_setve", 2); +refMsg5 = msprintf(_("%s: Wrong type for input argument #%d: A real vector expected.\n"), "optimsimplex_setve", 3); +refMsg6 = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "optimsimplex_setve", 4); +assert_checkerror("s1 = optimsimplex_setve(1, 1, 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setve(""s1"", 1, 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setve(s1, ""1"", 1, 1);",refMsg2); +assert_checkerror("s1 = optimsimplex_setve(s1, [1 1], 1, 1);",refMsg3); +assert_checkerror("s1 = optimsimplex_setve(s1, 1.5, 1, 1);",refMsg4); +assert_checkerror("s1 = optimsimplex_setve(s1, 1, ""1"", 1);",refMsg5); +assert_checkerror("s1 = optimsimplex_setve(s1, 1, %t, 1);",refMsg5); +assert_checkerror("s1 = optimsimplex_setve(s1, 1, 1, ""1"");",refMsg6); +assert_checkerror("s1 = optimsimplex_setve(s1, 1, 1, %t);",refMsg6); + +// optimsimplex_setx +refMsg = msprintf(_("%s: Wrong type for input argument #%d: TSIMPLEX expected.\n"), "optimsimplex_setx", 1); +refMsg2 = msprintf(_("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "optimsimplex_setx", 2); +refMsg3 = msprintf(_("%s: Wrong size for input argument #%d: A real scalar expected.\n"), "optimsimplex_setx", 2); +refMsg4 = msprintf(_("%s: Wrong value for input argument #%d: An integer expected.\n"), "optimsimplex_setx", 2); +refMsg5 = msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "optimsimplex_setx", 3); +assert_checkerror("s1 = optimsimplex_setx(1, 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setx(""s1"", 1, 1);",refMsg); +assert_checkerror("s1 = optimsimplex_setx(s1, ""1"", 1);",refMsg2); +assert_checkerror("s1 = optimsimplex_setx(s1, [1 1], 1);",refMsg3); +assert_checkerror("s1 = optimsimplex_setx(s1, 1.5, 1);",refMsg4); +assert_checkerror("s1 = optimsimplex_setx(s1, 1, ""1"");",refMsg5); +assert_checkerror("s1 = optimsimplex_setx(s1, 1, %t);",refMsg5); diff --git a/modules/optimization/tests/nonreg_tests/bug_9688.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9688.dia.ref new file mode 100755 index 000000000..65cb1c034 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9688.dia.ref @@ -0,0 +1,41 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9688 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9688 +// +// <-- Short Description --> +// optim could crash when "imp" option was < 0 +// +function [ f , g , ind ] = woodFG ( x , ind ) + f = [] + g = [] + if ind == 2 | ind == 3 | ind == 4 then + A = x(2)-x(1)^2 + B = x(4)-x(3)^2 + end + if ind == 2 | ind == 4 then + f = 100*A^2+(1-x(1))^2+90*B^2+(1-x(3))^2+... + 10.1*((x(2)-1)^2+(x(4)-1)^2)+19.8*(x(2)-1)*(x(4)-1) + end + if ind == 3 | ind == 4 then + g(1) = -2*(200*x(1)*A+1-x(1)) + g(2) = 2*(100*A+10.1*(x(2)-1)+9.9*(x(4)-1)) + g(3) = -2*(180*x(3)*B+1.-x(3)) + g(4) = 2*(90*B+10.1*(x(4)-1)+9.9*(x(2)-1)) + end +endfunction +x0 = [-3 -1 -3 -1]; +refMsg = msprintf(_("Variable returned by scilab argument function is incorrect.")); +assert_checkerror("[ fopt, xopt, gopt ] = optim ( woodFG, x0, ""qn"", imp=-1);", refMsg); +assert_checkerror("[ fopt, xopt, gopt ] = optim ( woodFG, x0, ""gc"", imp=-1);", refMsg); +assert_checkerror("[ fopt, xopt, gopt ] = optim ( woodFG, x0, ""nd"", imp=-1);", refMsg); diff --git a/modules/optimization/tests/nonreg_tests/bug_9688.tst b/modules/optimization/tests/nonreg_tests/bug_9688.tst new file mode 100755 index 000000000..3e6a5904f --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9688.tst @@ -0,0 +1,42 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9688 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9688 +// +// <-- Short Description --> +// optim could crash when "imp" option was < 0 +// +function [ f , g , ind ] = woodFG ( x , ind ) + f = [] + g = [] + if ind == 2 | ind == 3 | ind == 4 then + A = x(2)-x(1)^2 + B = x(4)-x(3)^2 + end + if ind == 2 | ind == 4 then + f = 100*A^2+(1-x(1))^2+90*B^2+(1-x(3))^2+... + 10.1*((x(2)-1)^2+(x(4)-1)^2)+19.8*(x(2)-1)*(x(4)-1) + end + if ind == 3 | ind == 4 then + g(1) = -2*(200*x(1)*A+1-x(1)) + g(2) = 2*(100*A+10.1*(x(2)-1)+9.9*(x(4)-1)) + g(3) = -2*(180*x(3)*B+1.-x(3)) + g(4) = 2*(90*B+10.1*(x(4)-1)+9.9*(x(2)-1)) + end +endfunction +x0 = [-3 -1 -3 -1]; + +refMsg = msprintf(_("Variable returned by scilab argument function is incorrect.")); +assert_checkerror("[ fopt, xopt, gopt ] = optim ( woodFG, x0, ""qn"", imp=-1);", refMsg); +assert_checkerror("[ fopt, xopt, gopt ] = optim ( woodFG, x0, ""gc"", imp=-1);", refMsg); +assert_checkerror("[ fopt, xopt, gopt ] = optim ( woodFG, x0, ""nd"", imp=-1);", refMsg); diff --git a/modules/optimization/tests/nonreg_tests/bug_9690.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9690.dia.ref new file mode 100755 index 000000000..390b154aa --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9690.dia.ref @@ -0,0 +1,2487 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9690 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9690 +// +// <-- Short Description --> +// optim(): option "imp"=5 could crash Scilab +// +function f = rosenbrock(x) + f = 100.0 * (x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +function [f, g, ind] = rosenbrockCost(x, ind) + if ((ind == 1) | (ind == 4)) then + f = rosenbrock ( x ); + end + if ((ind == 1) | (ind == 4)) then + g = derivative ( rosenbrock , x(:) ); + end +endfunction +x0 = [-1.2 1.0]; +lines(0); +for impval = 1:5 + [ fopt , xopt ] = optim ( rosenbrockCost , x0 , "gc" , imp=impval); +end +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 1 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783322D-16 -0.623D-30 + nlis0 0.37536580D+01 0.53783325D-16 0.187D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.11D-15 + norm of x = 0.14142135D+01 + f = 0.53783322D-16 + norm of x = 0.74770897D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 2 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 26, simul 34, f= 0.93394213D-01, h'(0)=-0.12026D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 27, simul 35, f= 0.68247218D-01, h'(0)=-0.20762D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 30, simul 39, f= 0.28635824D-01, h'(0)=-0.25872D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 32, simul 41, f= 0.47312383D-02, h'(0)=-0.12658D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 33, simul 43, f= 0.27115836D-02, h'(0)=-0.27047D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 34, simul 44, f= 0.78628305D-03, h'(0)=-0.10616D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 36, simul 46, f= 0.65777622D-05, h'(0)=-0.12835D-04 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 37, simul 47, f= 0.65293786D-06, h'(0)=-0.24132D-05 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 38, simul 48, f= 0.48527539D-06, h'(0)=-0.97036D-06 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 39, simul 49, f= 0.73398571D-12, h'(0)=-0.14314D-11 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 40, simul 50, f= 0.20622707D-15, h'(0)=-0.99085D-16 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 41, simul 51, f= 0.53783589D-16, h'(0)=-0.47026D-24 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 42, simul 52, f= 0.53783322D-16, h'(0)=-0.62345D-30 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783322D-16 -0.623D-30 + nlis0 0.37536580D+01 0.53783325D-16 0.187D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.11D-15 + norm of x = 0.14142135D+01 + f = 0.53783322D-16 + norm of x = 0.74770897D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 3 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + ------------------------------------------------------------------------------- + + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + + n1qn3: iter 26, simul 34, f= 0.93394213D-01, h'(0)=-0.12026D+00 + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + + n1qn3: iter 27, simul 35, f= 0.68247218D-01, h'(0)=-0.20762D-01 + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + + n1qn3: iter 30, simul 39, f= 0.28635824D-01, h'(0)=-0.25872D-01 + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + + n1qn3: iter 32, simul 41, f= 0.47312383D-02, h'(0)=-0.12658D-01 + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + + n1qn3: iter 33, simul 43, f= 0.27115836D-02, h'(0)=-0.27047D-02 + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + + n1qn3: iter 34, simul 44, f= 0.78628305D-03, h'(0)=-0.10616D-02 + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + + n1qn3: iter 36, simul 46, f= 0.65777622D-05, h'(0)=-0.12835D-04 + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + + n1qn3: iter 37, simul 47, f= 0.65293786D-06, h'(0)=-0.24132D-05 + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + + n1qn3: iter 38, simul 48, f= 0.48527539D-06, h'(0)=-0.97036D-06 + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + + n1qn3: iter 39, simul 49, f= 0.73398571D-12, h'(0)=-0.14314D-11 + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + + n1qn3: iter 40, simul 50, f= 0.20622707D-15, h'(0)=-0.99085D-16 + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.806D-21 + + n1qn3: iter 41, simul 51, f= 0.53783589D-16, h'(0)=-0.47026D-24 + nlis0 fpn=-0.470D-24 d2= 0.75D-26 tmin= 0.26D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.267D-21 -0.536D-27 + + n1qn3: iter 42, simul 52, f= 0.53783322D-16, h'(0)=-0.62345D-30 + nlis0 fpn=-0.623D-30 d2= 0.68D-32 tmin= 0.38D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.375D+01 0.326D-23 0.187D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783322D-16 -0.623D-30 + nlis0 0.37536580D+01 0.53783325D-16 0.187D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.11D-15 + norm of x = 0.14142135D+01 + f = 0.53783322D-16 + norm of x = 0.74770897D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 4 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394213D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247218D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635824D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312383D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115836D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628305D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777622D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65293786D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527539D-06, h'(0)=-0.97036D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27051D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11218D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73398571D-12, h'(0)=-0.14314D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61628D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53526D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20622707D-15, h'(0)=-0.99085D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.806D-21 + n1qn3: stopping criterion on g: 0.92929D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84645D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 75.5 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53783589D-16, h'(0)=-0.47026D-24 + n1qn3: line search + nlis0 fpn=-0.470D-24 d2= 0.75D-26 tmin= 0.26D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.267D-21 -0.536D-27 + n1qn3: stopping criterion on g: 0.10705D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.55083D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.349D-02 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783322D-16, h'(0)=-0.62345D-30 + n1qn3: line search + nlis0 fpn=-0.623D-30 d2= 0.68D-32 tmin= 0.38D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.375D+01 0.326D-23 0.187D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783322D-16 -0.623D-30 + nlis0 0.37536580D+01 0.53783325D-16 0.187D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.11D-15 + norm of x = 0.14142135D+01 + f = 0.53783322D-16 + norm of x = 0.74770897D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 5 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394213D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247218D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635824D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312383D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115836D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628305D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777622D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65293786D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527539D-06, h'(0)=-0.97036D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27051D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11218D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73398571D-12, h'(0)=-0.14314D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61628D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53526D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20622707D-15, h'(0)=-0.99085D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.806D-21 + n1qn3: stopping criterion on g: 0.92929D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84645D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 75.5 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53783589D-16, h'(0)=-0.47026D-24 + n1qn3: line search + nlis0 fpn=-0.470D-24 d2= 0.75D-26 tmin= 0.26D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.267D-21 -0.536D-27 + n1qn3: stopping criterion on g: 0.10705D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.55083D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.349D-02 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783322D-16, h'(0)=-0.62345D-30 + n1qn3: line search + nlis0 fpn=-0.623D-30 d2= 0.68D-32 tmin= 0.38D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.375D+01 0.326D-23 0.187D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783322D-16 -0.623D-30 + nlis0 0.37536580D+01 0.53783325D-16 0.187D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.11D-15 + norm of x = 0.14142135D+01 + f = 0.53783322D-16 + norm of x = 0.74770897D-13 +Optimization stops because too small variations for x. + diff --git a/modules/optimization/tests/nonreg_tests/bug_9690.linux32.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9690.linux32.dia.ref new file mode 100755 index 000000000..fcd26e147 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9690.linux32.dia.ref @@ -0,0 +1,2763 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9690 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9690 +// +// <-- Short Description --> +// optim(): option "imp"=5 could crash Scilab +// +function f = rosenbrock(x) + f = 100.0 * (x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +function [f, g, ind] = rosenbrockCost(x, ind) + if ((ind == 1) | (ind == 4)) then + f = rosenbrock ( x ); + end + if ((ind == 1) | (ind == 4)) then + g = derivative ( rosenbrock , x(:) ); + end +endfunction +x0 = [-1.2 1.0]; +lines(0); +for impval = 1:5 + [ fopt , xopt ] = optim ( rosenbrockCost , x0 , "gc" , imp=impval); +end +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 1 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783159D-16 -0.250D-27 + nlis0 0.31381060D-01 0.53783164D-16 0.254D-27 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 65 + realized relative precision on g: 0.20D-15 + norm of x = 0.14142135D+01 + f = 0.53783159D-16 + norm of x = 0.11121981D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 2 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 26, simul 34, f= 0.93394210D-01, h'(0)=-0.12026D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 27, simul 35, f= 0.68247216D-01, h'(0)=-0.20762D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 28, simul 36, f= 0.49926692D-01, h'(0)=-0.55493D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 29, simul 38, f= 0.36768989D-01, h'(0)=-0.91754D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 30, simul 39, f= 0.28635822D-01, h'(0)=-0.25872D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 31, simul 40, f= 0.11210317D-01, h'(0)=-0.94861D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 32, simul 41, f= 0.47312377D-02, h'(0)=-0.12658D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 33, simul 43, f= 0.27115840D-02, h'(0)=-0.27047D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 34, simul 44, f= 0.78628279D-03, h'(0)=-0.10616D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 35, simul 45, f= 0.10596352D-03, h'(0)=-0.16466D-03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 36, simul 46, f= 0.65777570D-05, h'(0)=-0.12835D-04 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 37, simul 47, f= 0.65292577D-06, h'(0)=-0.24132D-05 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 38, simul 48, f= 0.48527840D-06, h'(0)=-0.97037D-06 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 39, simul 49, f= 0.73389661D-12, h'(0)=-0.14313D-11 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 40, simul 50, f= 0.20623400D-15, h'(0)=-0.99092D-16 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 41, simul 51, f= 0.53783590D-16, h'(0)=-0.47240D-24 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 42, simul 52, f= 0.53783159D-16, h'(0)=-0.24956D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783159D-16 -0.250D-27 + nlis0 0.31381060D-01 0.53783164D-16 0.254D-27 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 65 + realized relative precision on g: 0.20D-15 + norm of x = 0.14142135D+01 + f = 0.53783159D-16 + norm of x = 0.11121981D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 3 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + ------------------------------------------------------------------------------- + + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + + n1qn3: iter 26, simul 34, f= 0.93394210D-01, h'(0)=-0.12026D+00 + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + + n1qn3: iter 27, simul 35, f= 0.68247216D-01, h'(0)=-0.20762D-01 + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + + n1qn3: iter 28, simul 36, f= 0.49926692D-01, h'(0)=-0.55493D-01 + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + + n1qn3: iter 29, simul 38, f= 0.36768989D-01, h'(0)=-0.91754D-02 + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + + n1qn3: iter 30, simul 39, f= 0.28635822D-01, h'(0)=-0.25872D-01 + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + + n1qn3: iter 31, simul 40, f= 0.11210317D-01, h'(0)=-0.94861D-02 + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + + n1qn3: iter 32, simul 41, f= 0.47312377D-02, h'(0)=-0.12658D-01 + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + + n1qn3: iter 33, simul 43, f= 0.27115840D-02, h'(0)=-0.27047D-02 + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + + n1qn3: iter 34, simul 44, f= 0.78628279D-03, h'(0)=-0.10616D-02 + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + + n1qn3: iter 35, simul 45, f= 0.10596352D-03, h'(0)=-0.16466D-03 + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + + n1qn3: iter 36, simul 46, f= 0.65777570D-05, h'(0)=-0.12835D-04 + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + + n1qn3: iter 37, simul 47, f= 0.65292577D-06, h'(0)=-0.24132D-05 + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + + n1qn3: iter 38, simul 48, f= 0.48527840D-06, h'(0)=-0.97037D-06 + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + + n1qn3: iter 39, simul 49, f= 0.73389661D-12, h'(0)=-0.14313D-11 + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + + n1qn3: iter 40, simul 50, f= 0.20623400D-15, h'(0)=-0.99092D-16 + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.965D-21 + + n1qn3: iter 41, simul 51, f= 0.53783590D-16, h'(0)=-0.47240D-24 + nlis0 fpn=-0.472D-24 d2= 0.12D-25 tmin= 0.21D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.432D-21 0.118D-27 + + n1qn3: iter 42, simul 52, f= 0.53783159D-16, h'(0)=-0.24956D-27 + nlis0 fpn=-0.250D-27 d2= 0.62D-27 tmin= 0.10D-01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.163D-21 -0.218D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+00 0.163D-22 -0.225D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.900D-01 0.147D-22 0.269D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.810D-01 0.130D-22 -0.230D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.729D-01 0.114D-22 0.155D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.656D-01 0.114D-22 0.191D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.590D-01 0.977D-23 -0.235D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.531D-01 0.814D-23 0.105D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.478D-01 0.814D-23 0.259D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.430D-01 0.651D-23 -0.488D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D-01 0.651D-23 -0.240D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.349D-01 0.489D-23 0.558D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.314D-01 0.489D-23 0.254D-27 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783159D-16 -0.250D-27 + nlis0 0.31381060D-01 0.53783164D-16 0.254D-27 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 65 + realized relative precision on g: 0.20D-15 + norm of x = 0.14142135D+01 + f = 0.53783159D-16 + norm of x = 0.11121981D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 4 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394210D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247216D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926692D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768989D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635822D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210317D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312377D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115840D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628279D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596352D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777570D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65292577D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527840D-06, h'(0)=-0.97037D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27052D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11217D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73389661D-12, h'(0)=-0.14313D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61636D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53527D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20623400D-15, h'(0)=-0.99092D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.965D-21 + n1qn3: stopping criterion on g: 0.92949D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84653D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 78.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53783590D-16, h'(0)=-0.47240D-24 + n1qn3: line search + nlis0 fpn=-0.472D-24 d2= 0.12D-25 tmin= 0.21D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.432D-21 0.118D-27 + n1qn3: stopping criterion on g: 0.19705D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.70730D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.351D-02 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.209D-02 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783159D-16, h'(0)=-0.24956D-27 + n1qn3: line search + nlis0 fpn=-0.250D-27 d2= 0.62D-27 tmin= 0.10D-01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.163D-21 -0.218D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+00 0.163D-22 -0.225D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.900D-01 0.147D-22 0.269D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.810D-01 0.130D-22 -0.230D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.729D-01 0.114D-22 0.155D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.656D-01 0.114D-22 0.191D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.590D-01 0.977D-23 -0.235D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.531D-01 0.814D-23 0.105D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.478D-01 0.814D-23 0.259D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.430D-01 0.651D-23 -0.488D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D-01 0.651D-23 -0.240D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.349D-01 0.489D-23 0.558D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.314D-01 0.489D-23 0.254D-27 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783159D-16 -0.250D-27 + nlis0 0.31381060D-01 0.53783164D-16 0.254D-27 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 65 + realized relative precision on g: 0.20D-15 + norm of x = 0.14142135D+01 + f = 0.53783159D-16 + norm of x = 0.11121981D-13 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 5 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394210D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247216D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926692D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768989D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635822D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210317D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312377D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115840D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628279D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596352D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777570D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65292577D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527840D-06, h'(0)=-0.97037D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27052D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11217D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73389661D-12, h'(0)=-0.14313D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61636D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53527D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20623400D-15, h'(0)=-0.99092D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.965D-21 + n1qn3: stopping criterion on g: 0.92949D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84653D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 78.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53783590D-16, h'(0)=-0.47240D-24 + n1qn3: line search + nlis0 fpn=-0.472D-24 d2= 0.12D-25 tmin= 0.21D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.432D-21 0.118D-27 + n1qn3: stopping criterion on g: 0.19705D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.70730D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.351D-02 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.209D-02 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783159D-16, h'(0)=-0.24956D-27 + n1qn3: line search + nlis0 fpn=-0.250D-27 d2= 0.62D-27 tmin= 0.10D-01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.163D-21 -0.218D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+00 0.163D-22 -0.225D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.900D-01 0.147D-22 0.269D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.810D-01 0.130D-22 -0.230D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.729D-01 0.114D-22 0.155D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.656D-01 0.114D-22 0.191D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.590D-01 0.977D-23 -0.235D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.531D-01 0.814D-23 0.105D-28 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.478D-01 0.814D-23 0.259D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.430D-01 0.651D-23 -0.488D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D-01 0.651D-23 -0.240D-27 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.349D-01 0.489D-23 0.558D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.314D-01 0.489D-23 0.254D-27 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783159D-16 -0.250D-27 + nlis0 0.31381060D-01 0.53783164D-16 0.254D-27 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 65 + realized relative precision on g: 0.20D-15 + norm of x = 0.14142135D+01 + f = 0.53783159D-16 + norm of x = 0.11121981D-13 +Optimization stops because too small variations for x. + diff --git a/modules/optimization/tests/nonreg_tests/bug_9690.tst b/modules/optimization/tests/nonreg_tests/bug_9690.tst new file mode 100755 index 000000000..86ff3513c --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9690.tst @@ -0,0 +1,39 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9690 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9690 +// +// <-- Short Description --> +// optim(): option "imp"=5 could crash Scilab +// + +function f = rosenbrock(x) + f = 100.0 * (x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +function [f, g, ind] = rosenbrockCost(x, ind) + if ((ind == 1) | (ind == 4)) then + f = rosenbrock ( x ); + end + if ((ind == 1) | (ind == 4)) then + g = derivative ( rosenbrock , x(:) ); + end +endfunction + +x0 = [-1.2 1.0]; +lines(0); + +for impval = 1:5 + [ fopt , xopt ] = optim ( rosenbrockCost , x0 , "gc" , imp=impval); +end diff --git a/modules/optimization/tests/nonreg_tests/bug_9690.win.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9690.win.dia.ref new file mode 100755 index 000000000..1d34a6ad2 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9690.win.dia.ref @@ -0,0 +1,2487 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9690 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9690 +// +// <-- Short Description --> +// optim(): option "imp"=5 could crash Scilab +// +function f = rosenbrock(x) + f = 100.0 * (x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +function [f, g, ind] = rosenbrockCost(x, ind) + if ((ind == 1) | (ind == 4)) then + f = rosenbrock ( x ); + end + if ((ind == 1) | (ind == 4)) then + g = derivative ( rosenbrock , x(:) ); + end +endfunction +x0 = [-1.2 1.0]; +lines(0); +for impval = 1:5 + [ fopt , xopt ] = optim ( rosenbrockCost , x0 , "gc" , imp=impval); +end +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 1 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783484D-16 -0.248D-29 + nlis0 0.38722999D+01 0.53783488D-16 0.743D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.21D-15 + norm of x = 0.14142135D+01 + f = 0.53783484D-16 + norm of x = 0.14924691D-12 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 2 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 26, simul 34, f= 0.93394212D-01, h'(0)=-0.12026D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 27, simul 35, f= 0.68247217D-01, h'(0)=-0.20762D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 30, simul 39, f= 0.28635823D-01, h'(0)=-0.25872D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 32, simul 41, f= 0.47312381D-02, h'(0)=-0.12658D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 33, simul 43, f= 0.27115837D-02, h'(0)=-0.27047D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 34, simul 44, f= 0.78628297D-03, h'(0)=-0.10616D-02 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 36, simul 46, f= 0.65777606D-05, h'(0)=-0.12835D-04 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 37, simul 47, f= 0.65293408D-06, h'(0)=-0.24132D-05 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 38, simul 48, f= 0.48527633D-06, h'(0)=-0.97036D-06 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 39, simul 49, f= 0.73395789D-12, h'(0)=-0.14314D-11 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 40, simul 50, f= 0.20622903D-15, h'(0)=-0.99086D-16 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 41, simul 51, f= 0.53784084D-16, h'(0)=-0.47400D-24 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: iter 42, simul 52, f= 0.53783484D-16, h'(0)=-0.24769D-29 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783484D-16 -0.248D-29 + nlis0 0.38722999D+01 0.53783488D-16 0.743D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.21D-15 + norm of x = 0.14142135D+01 + f = 0.53783484D-16 + norm of x = 0.14924691D-12 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 3 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + ------------------------------------------------------------------------------- + + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + + n1qn3: iter 26, simul 34, f= 0.93394212D-01, h'(0)=-0.12026D+00 + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + + n1qn3: iter 27, simul 35, f= 0.68247217D-01, h'(0)=-0.20762D-01 + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + + n1qn3: iter 30, simul 39, f= 0.28635823D-01, h'(0)=-0.25872D-01 + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + + n1qn3: iter 32, simul 41, f= 0.47312381D-02, h'(0)=-0.12658D-01 + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + + n1qn3: iter 33, simul 43, f= 0.27115837D-02, h'(0)=-0.27047D-02 + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + + n1qn3: iter 34, simul 44, f= 0.78628297D-03, h'(0)=-0.10616D-02 + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + + n1qn3: iter 36, simul 46, f= 0.65777606D-05, h'(0)=-0.12835D-04 + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + + n1qn3: iter 37, simul 47, f= 0.65293408D-06, h'(0)=-0.24132D-05 + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + + n1qn3: iter 38, simul 48, f= 0.48527633D-06, h'(0)=-0.97036D-06 + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + + n1qn3: iter 39, simul 49, f= 0.73395789D-12, h'(0)=-0.14314D-11 + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + + n1qn3: iter 40, simul 50, f= 0.20622903D-15, h'(0)=-0.99086D-16 + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.112D-20 + + n1qn3: iter 41, simul 51, f= 0.53784084D-16, h'(0)=-0.47400D-24 + nlis0 fpn=-0.474D-24 d2= 0.19D-25 tmin= 0.17D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.599D-21 -0.107D-26 + + n1qn3: iter 42, simul 52, f= 0.53783484D-16, h'(0)=-0.24769D-29 + nlis0 fpn=-0.248D-29 d2= 0.33D-32 tmin= 0.39D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D+01 0.326D-23 0.743D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783484D-16 -0.248D-29 + nlis0 0.38722999D+01 0.53783488D-16 0.743D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.21D-15 + norm of x = 0.14142135D+01 + f = 0.53783484D-16 + norm of x = 0.14924691D-12 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 4 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394212D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247217D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635823D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312381D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115837D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628297D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777606D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65293408D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527633D-06, h'(0)=-0.97036D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27051D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11218D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73395789D-12, h'(0)=-0.14314D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61631D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53526D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20622903D-15, h'(0)=-0.99086D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.112D-20 + n1qn3: stopping criterion on g: 0.92861D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84647D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 80.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53784084D-16, h'(0)=-0.47400D-24 + n1qn3: line search + nlis0 fpn=-0.474D-24 d2= 0.19D-25 tmin= 0.17D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.599D-21 -0.107D-26 + n1qn3: stopping criterion on g: 0.21365D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.86648D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.352D-02 + Oren-Spedicato factor (not used) = 0.102D-02 diagonal: average value = 0.198D-02 + n1qn3: descent direction d: angle(-g,d) = 29.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783484D-16, h'(0)=-0.24769D-29 + n1qn3: line search + nlis0 fpn=-0.248D-29 d2= 0.33D-32 tmin= 0.39D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D+01 0.326D-23 0.743D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783484D-16 -0.248D-29 + nlis0 0.38722999D+01 0.53783488D-16 0.743D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.21D-15 + norm of x = 0.14142135D+01 + f = 0.53783484D-16 + norm of x = 0.14924691D-12 +Optimization stops because too small variations for x. + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 5 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + n1qn3a: descent direction -g: precon = 0.369D-04 + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: line search + nlis0 fpn=-0.200D+01 d2= 0.74D-04 tmin= 0.28D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.194D+01 -0.189D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.147D+02 -0.973D+00 + n1qn3: stopping criterion on g: 0.48674D+00 + n1qn3: matrix update: + Oren-Spedicato factor (not used) = 0.718D-03 diagonal: average value = 0.718D-03 + n1qn3: descent direction d: angle(-g,d) = 0.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: line search + nlis0 fpn=-0.924D+01 d2= 0.66D-02 tmin= 0.30D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.520D+01 -0.138D+01 + n1qn3: stopping criterion on g: 0.73079D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.94908D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.118D+01 + Oren-Spedicato factor (not used) = 0.846D-03 diagonal: average value = 0.846D-03 + n1qn3: descent direction d: angle(-g,d) = 0.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: line search + nlis0 fpn=-0.245D+00 d2= 0.21D-03 tmin= 0.16D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.135D+00 -0.256D-01 + n1qn3: stopping criterion on g: 0.10270D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.17647D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.111D+01 + Oren-Spedicato factor (not used) = 0.935D-03 diagonal: average value = 0.942D-03 + n1qn3: descent direction d: angle(-g,d) = 1.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: line search + nlis0 fpn=-0.581D-02 d2= 0.59D-05 tmin= 0.98D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.435D-02 -0.290D-02 + n1qn3: stopping criterion on g: 0.76379D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.16885D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.969D+00 + Oren-Spedicato factor (not used) = 0.952D-03 diagonal: average value = 0.915D-03 + n1qn3: descent direction d: angle(-g,d) = 23.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: line search + nlis0 fpn=-0.833D-02 d2= 0.26D-04 tmin= 0.61D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.690D-02 -0.549D-02 + n1qn3: stopping criterion on g: 0.11072D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.21032D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.985D+00 + Oren-Spedicato factor (not used) = 0.954D-03 diagonal: average value = 0.102D-02 + n1qn3: descent direction d: angle(-g,d) = 56.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: line search + nlis0 fpn=-0.278D-01 d2= 0.37D-03 tmin= 0.14D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.228D-01 -0.180D-01 + n1qn3: stopping criterion on g: 0.23226D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.37768D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.113D+01 + Oren-Spedicato factor (not used) = 0.941D-03 diagonal: average value = 0.127D-02 + n1qn3: descent direction d: angle(-g,d) = 76.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: line search + nlis0 fpn=-0.828D-01 d2= 0.40D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.713D-01 -0.624D-01 + n1qn3: stopping criterion on g: 0.44894D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.32918D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.817D+00 + Oren-Spedicato factor (not used) = 0.762D-03 diagonal: average value = 0.106D-02 + n1qn3: descent direction d: angle(-g,d) = 83.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: line search + nlis0 fpn=-0.405D+00 d2= 0.11D+00 tmin= 0.79D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.531D+00 -0.721D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 0.500D+03 0.222D+03 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.398D+01 0.333D+01 0.774D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.249D+01 -0.140D+01 0.190D+00 + n1qn3: stopping criterion on g: 0.60049D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.12764D+02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.287D+01 + Oren-Spedicato factor (not used) = 0.248D-02 diagonal: average value = 0.292D-02 + n1qn3: descent direction d: angle(-g,d) = 87.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: line search + nlis0 fpn=-0.161D+00 d2= 0.57D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.285D+00 0.571D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.140D+00 -0.107D-01 0.342D-02 + n1qn3: stopping criterion on g: 0.48319D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41360D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.102D+01 + Oren-Spedicato factor (not used) = 0.293D-02 diagonal: average value = 0.285D-02 + n1qn3: descent direction d: angle(-g,d) = 76.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: line search + nlis0 fpn=-0.384D-01 d2= 0.21D-03 tmin= 0.21D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.376D-01 -0.369D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+02 -0.318D+00 -0.257D-01 + n1qn3: stopping criterion on g: 0.41045D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43358D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.193D+02 + Oren-Spedicato factor (not used) = 0.403D-01 diagonal: average value = 0.645D-01 + n1qn3: descent direction d: angle(-g,d) = 75.7 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: line search + nlis0 fpn=-0.627D+00 d2= 0.71D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.315D+00 0.212D+00 + n1qn3: stopping criterion on g: 0.60708D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.18312D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.259D+00 + Oren-Spedicato factor (not used) = 0.251D-01 diagonal: average value = 0.248D-01 + n1qn3: descent direction d: angle(-g,d) = 15.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: line search + nlis0 fpn=-0.707D+00 d2= 0.27D-02 tmin= 0.52D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.402D+00 -0.117D+00 + n1qn3: stopping criterion on g: 0.11240D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.19476D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.190D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.468D-02 + n1qn3: descent direction d: angle(-g,d) = 33.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: line search + nlis0 fpn=-0.499D+00 d2= 0.52D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.225D+00 0.427D+00 + n1qn3: stopping criterion on g: 0.43961D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43931D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.364D+01 + Oren-Spedicato factor (not used) = 0.102D-01 diagonal: average value = 0.311D-01 + n1qn3: descent direction d: angle(-g,d) = 56.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 14, simul 20, f= 0.13542804D+01, h'(0)=-0.33867D+00 + n1qn3: line search + nlis0 fpn=-0.339D+00 d2= 0.36D-02 tmin= 0.47D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.151D+00 0.252D-01 + n1qn3: stopping criterion on g: 0.12127D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.26394D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.759D+00 + Oren-Spedicato factor (not used) = 0.522D-02 diagonal: average value = 0.235D-01 + n1qn3: descent direction d: angle(-g,d) = 36.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 15, simul 21, f= 0.12033041D+01, h'(0)=-0.20678D+00 + n1qn3: line search + nlis0 fpn=-0.207D+00 d2= 0.84D-02 tmin= 0.24D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.186D+00 -0.162D+00 + n1qn3: stopping criterion on g: 0.11958D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.15231D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.493D+01 + Oren-Spedicato factor (not used) = 0.996D-01 diagonal: average value = 0.118D+00 + n1qn3: descent direction d: angle(-g,d) = 47.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: line search + nlis0 fpn=-0.650D+00 d2= 0.12D+00 tmin= 0.64D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.169D+01 0.738D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.374D+00 -0.132D+00 0.166D+00 + n1qn3: stopping criterion on g: 0.29691D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14137D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.211D+00 + Oren-Spedicato factor (not used) = 0.105D-01 diagonal: average value = 0.372D-01 + n1qn3: descent direction d: angle(-g,d) = 53.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 17, simul 24, f= 0.88479943D+00, h'(0)=-0.18657D+00 + n1qn3: line search + nlis0 fpn=-0.187D+00 d2= 0.20D-02 tmin= 0.62D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.149D+00 -0.115D+00 + n1qn3: stopping criterion on g: 0.15621D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.34738D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.123D+01 + Oren-Spedicato factor (not used) = 0.634D-02 diagonal: average value = 0.386D-01 + n1qn3: descent direction d: angle(-g,d) = 62.6 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 18, simul 25, f= 0.73594993D+00, h'(0)=-0.31085D+00 + n1qn3: line search + nlis0 fpn=-0.311D+00 d2= 0.34D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.102D+00 0.268D+00 + n1qn3: stopping criterion on g: 0.42709D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.41295D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.285D+00 + Oren-Spedicato factor (not used) = 0.108D-01 diagonal: average value = 0.841D-02 + n1qn3: descent direction d: angle(-g,d) = 17.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 19, simul 26, f= 0.63444382D+00, h'(0)=-0.42075D+00 + n1qn3: line search + nlis0 fpn=-0.421D+00 d2= 0.20D-02 tmin= 0.51D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.181D+00 0.576D-01 + n1qn3: stopping criterion on g: 0.94247D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23849D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.526D+00 + Oren-Spedicato factor (not used) = 0.345D-02 diagonal: average value = 0.461D-02 + n1qn3: descent direction d: angle(-g,d) = 57.2 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 20, simul 27, f= 0.45317916D+00, h'(0)=-0.12594D+00 + n1qn3: line search + nlis0 fpn=-0.126D+00 d2= 0.11D-01 tmin= 0.25D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.110D+00 -0.725D-01 + n1qn3: stopping criterion on g: 0.67714D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.23948D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.105D+01 + Oren-Spedicato factor (not used) = 0.489D-02 diagonal: average value = 0.547D-02 + n1qn3: descent direction d: angle(-g,d) = 59.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 21, simul 28, f= 0.34356278D+00, h'(0)=-0.22838D+00 + n1qn3: line search + nlis0 fpn=-0.228D+00 d2= 0.83D-01 tmin= 0.95D-15 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.601D+00 0.234D+01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.321D+00 -0.373D-01 0.472D-01 + n1qn3: stopping criterion on g: 0.24287D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.87291D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.807D+00 + Oren-Spedicato factor (not used) = 0.458D-02 diagonal: average value = 0.431D-02 + n1qn3: descent direction d: angle(-g,d) = 73.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 22, simul 30, f= 0.30624976D+00, h'(0)=-0.55446D-01 + n1qn3: line search + nlis0 fpn=-0.554D-01 d2= 0.12D-02 tmin= 0.80D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.477D-01 -0.406D-01 + n1qn3: stopping criterion on g: 0.15832D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.36912D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.894D+00 + Oren-Spedicato factor (not used) = 0.380D-02 diagonal: average value = 0.392D-02 + n1qn3: descent direction d: angle(-g,d) = 77.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 23, simul 31, f= 0.25851794D+00, h'(0)=-0.14344D+00 + n1qn3: line search + nlis0 fpn=-0.143D+00 d2= 0.30D-01 tmin= 0.17D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.878D-01 -0.226D-01 + n1qn3: stopping criterion on g: 0.23266D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.51063D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.865D+01 + Oren-Spedicato factor (not used) = 0.318D-01 diagonal: average value = 0.403D-01 + n1qn3: descent direction d: angle(-g,d) = 75.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 24, simul 32, f= 0.17073490D+00, h'(0)=-0.12793D+00 + n1qn3: line search + nlis0 fpn=-0.128D+00 d2= 0.84D-02 tmin= 0.27D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.619D-01 -0.487D-02 + n1qn3: stopping criterion on g: 0.10083D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.52582D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.572D-01 + Oren-Spedicato factor (not used) = 0.208D-02 diagonal: average value = 0.227D-02 + n1qn3: descent direction d: angle(-g,d) = 78.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: line search + nlis0 fpn=-0.100D+00 d2= 0.49D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.155D-01 0.179D+00 + n1qn3: stopping criterion on g: 0.37918D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.24062D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.120D+01 + Oren-Spedicato factor (not used) = 0.224D-02 diagonal: average value = 0.267D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 26, simul 34, f= 0.93394212D-01, h'(0)=-0.12026D+00 + n1qn3: line search + nlis0 fpn=-0.120D+00 d2= 0.12D-01 tmin= 0.26D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.251D-01 0.437D-01 + n1qn3: stopping criterion on g: 0.43947D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.50600D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.757D+00 + Oren-Spedicato factor (not used) = 0.170D-02 diagonal: average value = 0.201D-02 + n1qn3: descent direction d: angle(-g,d) = 72.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 27, simul 35, f= 0.68247217D-01, h'(0)=-0.20762D-01 + n1qn3: line search + nlis0 fpn=-0.208D-01 d2= 0.45D-02 tmin= 0.41D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.183D-01 -0.148D-01 + n1qn3: stopping criterion on g: 0.21889D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.59772D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.170D+01 + Oren-Spedicato factor (not used) = 0.290D-02 diagonal: average value = 0.351D-02 + n1qn3: descent direction d: angle(-g,d) = 63.1 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 28, simul 36, f= 0.49926693D-01, h'(0)=-0.55493D-01 + n1qn3: line search + nlis0 fpn=-0.555D-01 d2= 0.58D-01 tmin= 0.11D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.507D-01 0.260D+00 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.413D+00 -0.132D-01 0.278D-02 + n1qn3: stopping criterion on g: 0.14651D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.14924D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.980D+00 + Oren-Spedicato factor (not used) = 0.274D-02 diagonal: average value = 0.355D-02 + n1qn3: descent direction d: angle(-g,d) = 84.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 29, simul 38, f= 0.36768990D-01, h'(0)=-0.91754D-02 + n1qn3: line search + nlis0 fpn=-0.918D-02 d2= 0.87D-03 tmin= 0.86D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.813D-02 -0.718D-02 + n1qn3: stopping criterion on g: 0.11306D-01 + n1qn3: convergence rate, s(k)/s(k-1) = 0.29590D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.112D+01 + Oren-Spedicato factor (not used) = 0.329D-02 diagonal: average value = 0.403D-02 + n1qn3: descent direction d: angle(-g,d) = 85.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 30, simul 39, f= 0.28635823D-01, h'(0)=-0.25872D-01 + n1qn3: line search + nlis0 fpn=-0.259D-01 d2= 0.13D-01 tmin= 0.22D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.174D-01 -0.109D-01 + n1qn3: stopping criterion on g: 0.64294D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.38281D+01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.337D+01 + Oren-Spedicato factor (not used) = 0.116D-01 diagonal: average value = 0.134D-01 + n1qn3: descent direction d: angle(-g,d) = 84.3 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 31, simul 40, f= 0.11210318D-01, h'(0)=-0.94861D-02 + n1qn3: line search + nlis0 fpn=-0.949D-02 d2= 0.41D-02 tmin= 0.39D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.648D-02 -0.412D-02 + n1qn3: stopping criterion on g: 0.32255D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.56905D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.218D+00 + Oren-Spedicato factor (not used) = 0.229D-02 diagonal: average value = 0.316D-02 + n1qn3: descent direction d: angle(-g,d) = 28.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 32, simul 41, f= 0.47312381D-02, h'(0)=-0.12658D-01 + n1qn3: line search + nlis0 fpn=-0.127D-01 d2= 0.37D-01 tmin= 0.13D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 0.236D-01 0.889D-01 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.308D+00 -0.202D-02 0.129D-02 + n1qn3: stopping criterion on g: 0.59635D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.92424D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.995D+00 + Oren-Spedicato factor (not used) = 0.211D-02 diagonal: average value = 0.320D-02 + n1qn3: descent direction d: angle(-g,d) = 86.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 33, simul 43, f= 0.27115837D-02, h'(0)=-0.27047D-02 + n1qn3: line search + nlis0 fpn=-0.270D-02 d2= 0.13D-02 tmin= 0.68D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.193D-02 -0.124D-02 + n1qn3: stopping criterion on g: 0.26088D-02 + n1qn3: convergence rate, s(k)/s(k-1) = 0.61219D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.107D+01 + Oren-Spedicato factor (not used) = 0.240D-02 diagonal: average value = 0.346D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 34, simul 44, f= 0.78628297D-03, h'(0)=-0.10616D-02 + n1qn3: line search + nlis0 fpn=-0.106D-02 d2= 0.11D-02 tmin= 0.73D-14 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.680D-03 -0.342D-03 + n1qn3: stopping criterion on g: 0.93209D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.93175D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.195D+01 + Oren-Spedicato factor (not used) = 0.472D-02 diagonal: average value = 0.669D-02 + n1qn3: descent direction d: angle(-g,d) = 87.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 35, simul 45, f= 0.10596353D-03, h'(0)=-0.16466D-03 + n1qn3: line search + nlis0 fpn=-0.165D-03 d2= 0.22D-03 tmin= 0.17D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.994D-04 -0.378D-04 + n1qn3: stopping criterion on g: 0.13605D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.43415D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.797D+00 + Oren-Spedicato factor (not used) = 0.369D-02 diagonal: average value = 0.540D-02 + n1qn3: descent direction d: angle(-g,d) = 86.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 36, simul 46, f= 0.65777606D-05, h'(0)=-0.12835D-04 + n1qn3: line search + nlis0 fpn=-0.128D-04 d2= 0.34D-04 tmin= 0.43D-13 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.592D-05 0.983D-06 + n1qn3: stopping criterion on g: 0.15294D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.39644D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.278D+03 + Oren-Spedicato factor (not used) = 0.637D+00 diagonal: average value = 0.256D+01 + n1qn3: descent direction d: angle(-g,d) = 77.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 37, simul 47, f= 0.65293408D-06, h'(0)=-0.24132D-05 + n1qn3: line search + nlis0 fpn=-0.241D-05 d2= 0.96D-07 tmin= 0.92D-12 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.168D-06 0.208D-05 + n1qn3: stopping criterion on g: 0.13388D-03 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53137D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.794D-03 + Oren-Spedicato factor (not used) = 0.101D-02 diagonal: average value = 0.159D-02 + n1qn3: descent direction d: angle(-g,d) = 26.4 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 38, simul 48, f= 0.48527633D-06, h'(0)=-0.97036D-06 + n1qn3: line search + nlis0 fpn=-0.970D-06 d2= 0.12D-08 tmin= 0.80D-11 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.485D-06 -0.183D-09 + n1qn3: stopping criterion on g: 0.27051D-07 + n1qn3: convergence rate, s(k)/s(k-1) = 0.11218D+00 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.866D+00 + Oren-Spedicato factor (not used) = 0.999D-03 diagonal: average value = 0.137D-02 + n1qn3: descent direction d: angle(-g,d) = 83.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 39, simul 49, f= 0.73395789D-12, h'(0)=-0.14314D-11 + n1qn3: line search + nlis0 fpn=-0.143D-11 d2= 0.35D-11 tmin= 0.13D-09 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.734D-12 -0.116D-13 + n1qn3: stopping criterion on g: 0.61631D-10 + n1qn3: convergence rate, s(k)/s(k-1) = 0.53526D-01 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.399D+02 + Oren-Spedicato factor (not used) = 0.356D-01 diagonal: average value = 0.717D-01 + n1qn3: descent direction d: angle(-g,d) = 64.0 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 40, simul 50, f= 0.20622903D-15, h'(0)=-0.99086D-16 + n1qn3: line search + nlis0 fpn=-0.991D-16 d2= 0.25D-15 tmin= 0.16D-07 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.152D-15 -0.112D-20 + n1qn3: stopping criterion on g: 0.92861D-13 + n1qn3: convergence rate, s(k)/s(k-1) = 0.84647D-02 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.571D+01 + Oren-Spedicato factor (not used) = 0.482D+00 diagonal: average value = 0.356D+00 + n1qn3: descent direction d: angle(-g,d) = 80.8 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 41, simul 51, f= 0.53784084D-16, h'(0)=-0.47400D-24 + n1qn3: line search + nlis0 fpn=-0.474D-24 d2= 0.19D-25 tmin= 0.17D-02 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.100D+01 -0.599D-21 -0.107D-26 + n1qn3: stopping criterion on g: 0.21365D-15 + n1qn3: convergence rate, s(k)/s(k-1) = 0.86648D-05 + n1qn3: matrix update: + fitting the ellipsoid: factor 0.352D-02 + Oren-Spedicato factor (not used) = 0.102D-02 diagonal: average value = 0.198D-02 + n1qn3: descent direction d: angle(-g,d) = 29.9 degrees + ------------------------------------------------------------------------------- + + n1qn3: iter 42, simul 52, f= 0.53783484D-16, h'(0)=-0.24769D-29 + n1qn3: line search + nlis0 fpn=-0.248D-29 d2= 0.33D-32 tmin= 0.39D+01 tmax= 0.10D+21 +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + + nlis0 0.387D+01 0.326D-23 0.743D-29 + nlis0 fin sur tmin pas fonctions derivees + nlis0 0.00000000D+00 0.53783484D-16 -0.248D-29 + nlis0 0.38722999D+01 0.53783488D-16 0.743D-29 + ------------------------------------------------------------------------------- + n1qn3: output mode is 6 + number of iterations: 42 + number of simulations: 53 + realized relative precision on g: 0.21D-15 + norm of x = 0.14142135D+01 + f = 0.53783484D-16 + norm of x = 0.14924691D-12 +Optimization stops because too small variations for x. + diff --git a/modules/optimization/tests/nonreg_tests/bug_9697.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9697.dia.ref new file mode 100755 index 000000000..43735c3f8 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9697.dia.ref @@ -0,0 +1,65 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9697 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9697 +// +// <-- Short Description --> +// The optim/"qn" /"gc" with bounds and imp=1 did not print the basic information of the problem. +// +function [f, g, ind] = woodFG(x, ind) + if ind == 2 | ind == 3 | ind == 4 then + A = x(2)-x(1)^2 + B = x(4)-x(3)^2 + end + if ind == 2 | ind == 4 then + f = 100*A^2+(1-x(1))^2+90*B^2+(1-x(3))^2+... + 10.1*((x(2)-1)^2+(x(4)-1)^2)+19.8*(x(2)-1)*(x(4)-1) + else + f = 0 + end + if ind == 3 | ind == 4 then + g(1) = -2*(200*x(1)*A+1.-x(1)) + g(2) = 2*(100*A+10.1*(x(2)-1)+9.9*(x(4)-1)) + g(3) = -2*(180*x(3)*B+1.-x(3)) + g(4) = 2*(90*B+10.1*(x(4)-1)+9.9*(x(2)-1)) + else + g = zeros(x) + end +endfunction +x0 = [-3 -1 -3 -1]; +binf = [-10 -10 -10 -10]; +bsup = [0 0 0 0]; +[fopt, xopt, gopt] = optim(woodFG, "b", binf, bsup, x0, "qn", imp=1); + + *********** qnbd (with bound cstr) **************** +dimension= 4, epsq= 0.2220446049250313E-15, verbosity level: imp= 1 +max number of iterations allowed: iter= 100 +max number of calls to costf allowed: nap= 100 +------------------------------------------------ + qnbd : retour cause gradient projete petit= 0.0000D+00 + qnbd : indqn= 1 +Norm of projected gradient lower than 0.2220446D-15. + +[fopt, xopt, gopt] = optim(woodFG, "b", binf, bsup, x0, "gc", imp=1); + gcdb: entry point + dimension of the problem (n): 4 + expected decrease for f (df0): 0.10D+01 + relative precision on g (epsg): 0.22D-15 + maximal number of iterations (itmax): 100 + maximal number of simulations (napmax): 100 + printing level (imp): 1 + gcbd : retour avec indgc= 1 + f,norme grad,nap,iter,indgc= 0.4200E+02 0.0000E+00 4 3 1 +Norm of projected gradient lower than 0.2220446D-15. + diff --git a/modules/optimization/tests/nonreg_tests/bug_9697.tst b/modules/optimization/tests/nonreg_tests/bug_9697.tst new file mode 100755 index 000000000..87406f779 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9697.tst @@ -0,0 +1,47 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9697 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9697 +// +// <-- Short Description --> +// The optim/"qn" /"gc" with bounds and imp=1 did not print the basic information of the problem. +// + +function [f, g, ind] = woodFG(x, ind) + if ind == 2 | ind == 3 | ind == 4 then + A = x(2)-x(1)^2 + B = x(4)-x(3)^2 + end + if ind == 2 | ind == 4 then + f = 100*A^2+(1-x(1))^2+90*B^2+(1-x(3))^2+... + 10.1*((x(2)-1)^2+(x(4)-1)^2)+19.8*(x(2)-1)*(x(4)-1) + else + f = 0 + end + if ind == 3 | ind == 4 then + g(1) = -2*(200*x(1)*A+1.-x(1)) + g(2) = 2*(100*A+10.1*(x(2)-1)+9.9*(x(4)-1)) + g(3) = -2*(180*x(3)*B+1.-x(3)) + g(4) = 2*(90*B+10.1*(x(4)-1)+9.9*(x(2)-1)) + else + g = zeros(x) + end +endfunction + +x0 = [-3 -1 -3 -1]; +binf = [-10 -10 -10 -10]; +bsup = [0 0 0 0]; + +[fopt, xopt, gopt] = optim(woodFG, "b", binf, bsup, x0, "qn", imp=1); +[fopt, xopt, gopt] = optim(woodFG, "b", binf, bsup, x0, "gc", imp=1); diff --git a/modules/optimization/tests/nonreg_tests/bug_9701.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9701.dia.ref new file mode 100755 index 000000000..3ff33a6ad --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9701.dia.ref @@ -0,0 +1,36 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9701 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9701 +// +// <-- Short Description --> +// optim gateway was failing for large problems. +// +function [f, g, ind] = optimCost(x, ind, n) + xref = (1:n)' + if ind == 1 | ind == 4 then + f = 0.5*sum((x-xref).^2) + else + f = 0 + end + if ind == 1 | ind == 4 then + g = x-xref + else + g = zeros(x) + end +endfunction +stacksize("max"); +n = 50000; +x0 = ones(n, 1); +try optim(list(optimCost, n), x0, "qn", "ar",1000,1000, imp=2); catch msg = lasterror(); end +refMsg = "stack size exceeded!"; +assert_checkequal(msg(1), refMsg); diff --git a/modules/optimization/tests/nonreg_tests/bug_9701.tst b/modules/optimization/tests/nonreg_tests/bug_9701.tst new file mode 100755 index 000000000..5cc952d3e --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9701.tst @@ -0,0 +1,40 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9701 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9701 +// +// <-- Short Description --> +// optim gateway was failing for large problems. +// + +function [f, g, ind] = optimCost(x, ind, n) + xref = (1:n)' + if ind == 1 | ind == 4 then + f = 0.5*sum((x-xref).^2) + else + f = 0 + end + if ind == 1 | ind == 4 then + g = x-xref + else + g = zeros(x) + end +endfunction + +stacksize("max"); +n = 50000; +x0 = ones(n, 1); + +try optim(list(optimCost, n), x0, "qn", "ar",1000,1000, imp=2); catch msg = lasterror(); end +refMsg = "stack size exceeded!"; + +assert_checkequal(msg(1), refMsg); diff --git a/modules/optimization/tests/nonreg_tests/bug_9788.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9788.dia.ref new file mode 100755 index 000000000..92a431af8 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9788.dia.ref @@ -0,0 +1,51 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9788 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9788 +// +// <-- Short Description --> +// neldermead did not print warning messages when maxfuneval or maxiter was attained. +// The status could only be retrieved in the -status field. +// +function [f, index] = quadratic(x, index) + f = x(1)^2 + x(2)^2; +endfunction +x0 = [1; 1]; +nm = neldermead_new (); +nm = neldermead_configure(nm, "-numberofvariables", 2); +nm = neldermead_configure(nm, "-function", quadratic); +nm = neldermead_configure(nm, "-x0", x0); +nm = neldermead_search(nm); +optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. +nm = neldermead_configure(nm, "-maxfunevals", 10); +nm = neldermead_search(nm, 0); +nm = neldermead_search(nm, "off"); +nm = neldermead_search(nm, 1); +optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. +nm = neldermead_search(nm, "on"); +optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. +nm = neldermead_configure(nm, "-maxiter", 2); +nm = neldermead_search(nm, 0); +nm = neldermead_search(nm, "off"); +nm = neldermead_search(nm, 1); +optimbase_terminate: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. +nm = neldermead_search(nm, "on"); +optimbase_terminate: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. +refMsg = msprintf(_("%s: Wrong value for input argument #%d: ""%s"", ""%s"", %d or %d expected.\n"),.. +"neldermead_search", 2, "off", "on", 0, 1); +assert_checkerror("neldermead_search(nm, ""k"");", refMsg); +assert_checkerror("neldermead_search(nm, 2);", refMsg); diff --git a/modules/optimization/tests/nonreg_tests/bug_9788.tst b/modules/optimization/tests/nonreg_tests/bug_9788.tst new file mode 100755 index 000000000..299eba0fb --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9788.tst @@ -0,0 +1,45 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- ENGLISH IMPOSED --> +// +// <-- Non-regression test for bug 9788 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9788 +// +// <-- Short Description --> +// neldermead did not print warning messages when maxfuneval or maxiter was attained. +// The status could only be retrieved in the -status field. +// + +function [f, index] = quadratic(x, index) + f = x(1)^2 + x(2)^2; +endfunction + +x0 = [1; 1]; + +nm = neldermead_new (); +nm = neldermead_configure(nm, "-numberofvariables", 2); +nm = neldermead_configure(nm, "-function", quadratic); +nm = neldermead_configure(nm, "-x0", x0); +nm = neldermead_search(nm); +nm = neldermead_configure(nm, "-maxfunevals", 10); +nm = neldermead_search(nm, 0); +nm = neldermead_search(nm, "off"); +nm = neldermead_search(nm, 1); +nm = neldermead_search(nm, "on"); +nm = neldermead_configure(nm, "-maxiter", 2); +nm = neldermead_search(nm, 0); +nm = neldermead_search(nm, "off"); +nm = neldermead_search(nm, 1); +nm = neldermead_search(nm, "on"); + +refMsg = msprintf(_("%s: Wrong value for input argument #%d: ""%s"", ""%s"", %d or %d expected.\n"),.. +"neldermead_search", 2, "off", "on", 0, 1); +assert_checkerror("neldermead_search(nm, ""k"");", refMsg); +assert_checkerror("neldermead_search(nm, 2);", refMsg); diff --git a/modules/optimization/tests/nonreg_tests/bug_9811.dia.ref b/modules/optimization/tests/nonreg_tests/bug_9811.dia.ref new file mode 100755 index 000000000..9896f8805 --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9811.dia.ref @@ -0,0 +1,40 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - Ruben Bibas +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 9811 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9811 +// +// <-- Short Description --> +// fminsearch may produce a warning, but output.message is wrong +// +function y=banana(x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// regular ending +[x,fval,exitflag,output] = fminsearch ( banana , [-1.2 1] ); +assert_checkfalse(isempty(strstr(output.message,"satisfies"))); +// maximum number of iterations exceeded +opt = optimset ( "MaxIter" , 10 ); +[x,fval,exitflag,output] = fminsearch ( banana , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +assert_checkfalse(isempty(strstr(output.message,"iterations"))); +// maximum number of funevals exceeded +opt = optimset ( "MaxFunEvals" , 10 ); +[x,fval,exitflag,output] = fminsearch ( banana , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. + Current function value: 4.3813601 +assert_checkfalse(isempty(strstr(output.message,"function evaluations"))); +// user stop (don't really know what that means) +//opt = optimset ( "MaxFunEvals" , 10 ); +//[x,fval,exitflag,output] = fminsearch ( banana , [-1.2 1] , opt ); +//test4 = isempty(strstr(output.message,"user stop")); diff --git a/modules/optimization/tests/nonreg_tests/bug_9811.tst b/modules/optimization/tests/nonreg_tests/bug_9811.tst new file mode 100755 index 000000000..36e0e33ba --- /dev/null +++ b/modules/optimization/tests/nonreg_tests/bug_9811.tst @@ -0,0 +1,40 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - Ruben Bibas +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// +// <-- Non-regression test for bug 9811 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=9811 +// +// <-- Short Description --> +// fminsearch may produce a warning, but output.message is wrong +// + +function y=banana(x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// regular ending +[x,fval,exitflag,output] = fminsearch ( banana , [-1.2 1] ); +assert_checkfalse(isempty(strstr(output.message,"satisfies"))); + +// maximum number of iterations exceeded +opt = optimset ( "MaxIter" , 10 ); +[x,fval,exitflag,output] = fminsearch ( banana , [-1.2 1] , opt ); +assert_checkfalse(isempty(strstr(output.message,"iterations"))); + +// maximum number of funevals exceeded +opt = optimset ( "MaxFunEvals" , 10 ); +[x,fval,exitflag,output] = fminsearch ( banana , [-1.2 1] , opt ); +assert_checkfalse(isempty(strstr(output.message,"function evaluations"))); + +// user stop (don't really know what that means) +//opt = optimset ( "MaxFunEvals" , 10 ); +//[x,fval,exitflag,output] = fminsearch ( banana , [-1.2 1] , opt ); +//test4 = isempty(strstr(output.message,"user stop")); + diff --git a/modules/optimization/tests/unit_tests/25FV47.SIF b/modules/optimization/tests/unit_tests/25FV47.SIF new file mode 100755 index 000000000..980e6dec9 --- /dev/null +++ b/modules/optimization/tests/unit_tests/25FV47.SIF @@ -0,0 +1,6937 @@ +*************************** +* SET UP THE INITIAL DATA * +*************************** + +NAME 25FV47 + +* Problem: +* ******** + +* An LP, contributed by John Reid. +* This problem is sometimes called BP or BP1. + +* Source: +* The NETLIB collection of test problems. + +* SIF input: (already in MPS format) + +* classification LLR2-AN-1571-822 + +ROWS + N R0000 + E F1X.0 + E 2SF145 + E 2SF089 + E 2SF129 + E 30M00 + E 30M94 + E 30M91 + E 30ATK + E 30PGK + E 30G30 + E 30G17 + E 30G44 + E 30G22 + E 30D22 + E 30D30 + E 30121 + E 30F52 + E 30F48 + E 30128 + E RB017 + E 2RB018 + E 1RB019 + E 2RB020 + E RC0ST + L RCRFT + E RMSEX + E RLDEX + E RPKEX + E RRKEX + E RG0EX + E RF0EX + E KW1RC + E RA001 + E RA002 + E 1RA002 + E RA004 + E RA005 + E 2RA005 + E RA006 + E RA007 + E RA008 + E RA009 + E RA010 + E RA011 + E RA012 + E RA013 + E RA014 + E RA015 + E RA016 + E RA017 + E RA018 + E RA019 + E RA020 + E 1RA020 + E RA022 + E RA023 + E RA024 + E RA026 + E RA027 + E RA028 + E RA029 + E 1RA029 + E RA031 + E RA032 + E RA033 + E RA034 + E 1RA034 + E 2RA034 + E RA035 + E RA036 + L RA037 + E RA038 + E RA039 + E RA040 + E RA041 + E RA043 + E 1RA043 + E RA044 + E RA045 + E RA046 + E RA047 + E 1RA047 + E RA048 + E RA049 + E RA051 + E RA052 + E 1RA052 + E 1RA053 + E RA054 + L RA055 + L 1RA055 + L RA056 + L RA057 + L RA058 + E 1RA058 + L RA059 + L RA060 + L 2RA060 + L 3RA060 + L RA061 + L RA062 + L RA063 + L RA064 + L RA065 + L RA066 + L RA067 + L RA068 + L RA069 + L RA070 + L RA072 + L RA075 + L 1RA075 + L RA076 + L 1RA076 + L RA077 + L RA078 + L 1RA078 + L RA079 + L 1RA079 + L RA081 + L 1RA081 + L RA082 + L RA083 + L RA084 + L RA085 + L RA086 + L RA087 + L RA088 + L RA089 + L RA090 + L RA091 + L RA092 + L RA093 + L RA094 + L RA095 + L RA096 + E RA097 + E 1RA099 + L RA100 + E RB001 + E 1RB001 + E RB002 + E RB003 + E 1RB003 + E RB004 + E 1RB004 + E RB005 + E 1RB005 + E 2RB005 + E RB006 + E 1RB006 + E RB007 + E 1RB007 + E 2RB007 + E RB008 + E 1RB008 + E 2RB008 + E 3RB008 + E RB009 + E RB010 + E RB011 + E RB012 + E RB013 + E 1RB013 + E RB014 + E RB015 + E 1RB015 + E 2RB015 + E RB016 + E 1RB016 + E RB018 + E 1RB018 + E RB019 + E RB020 + E 1RB020 + E 1RB021 + E RB022 + E 1RB022 + E 1RB023 + E RB024 + E 1RB024 + E RB025 + E 1RB025 + E 2RB025 + E RB026 + E RB027 + E RB028 + E RB029 + E RB030 + E 1RB030 + E 2RB030 + E RB031 + E 1RB031 + E RB033 + E RB034 + E RB035 + E RB036 + E RB037 + E RB038 + E 1RB038 + E RB039 + E RB040 + E 1RB040 + E 2RB040 + E RB041 + E RB042 + E 1RB043 + E 1RB044 + E RB045 + E 1RB045 + E 4RB045 + L RB046 + E RB047 + E 2RB047 + E 3RB047 + E RB048 + E 2RB049 + E RB050 + E 1RB050 + E RB051 + E 1RB051 + E 2RB051 + E RB052 + E RB053 + E 1RB053 + E RB054 + E 1RB054 + E RB055 + L RB057 + L RB058 + L 1RB058 + L RB059 + L RB060 + L RB061 + L RB062 + L RB063 + E RB064 + L RB065 + L RB066 + L RB067 + E RB068 + L RB069 + L RB070 + L RB071 + L RB072 + E RB073 + L RB074 + L RB075 + L RB076 + L RB077 + L RB078 + L RB079 + L RB080 + L RB081 + L RB082 + L RB083 + L RB084 + L RB085 + L RB086 + L RB087 + L 1RB087 + L RB088 + L RB089 + L RB090 + L 1RB090 + L RB091 + L RB092 + L 1RB092 + L RB093 + L 1RB093 + L RB094 + L RB095 + L RB096 + L RB097 + L RB098 + L RB099 + L RB100 + L RB101 + L RB102 + L RB103 + L RB104 + L RB105 + L RB106 + E RCLD4 + E RCF35 + E RCF80 + E RDBMS + E RDLD4 + E RDK19 + E RDG55 + E RDF35 + E RE001 + E RE002 + E RE004 + L RE005 + E RE008 + E RE009 + E RE010 + E RE011 + E RE012 + E RE013 + E RE014 + E RE015 + E RE016 + E RE017 + E RE018 + E RE019 + E RE021 + E RE022 + E RE024 + E RE025 + E RE026 + E RE028 + E RE030 + E RE035 + E RE036 + E RE037 + E RE039 + E RE040 + E RE044 + E RE045 + E RE046 + E RE047 + E RE048 + E RE049 + E RE050 + E RE051 + E RE055 + E 1RE056 + E RE057 + E RE058 + E RE060 + L RE061 + L 1RE061 + L 2RE061 + L RE062 + L RE063 + L RE064 + L RE066 + L RE068 + L RE069 + L RE070 + L RE071 + L RE072 + L RE073 + L RE074 + L RE075 + L RE084 + L RE085 + L RE086 + L RE087 + L RE088 + L RE089 + L RE090 + L RE091 + L RE092 + L RE098 + L RE099 + L RE100 + L RE101 + L RE102 + E RE103 + L RE104 + L RH001 + E 1RH001 + E 2RH001 + E RH002 + E RH003 + E RH004 + E RH005 + E 1RH005 + E RH006 + E 1RH006 + E RH007 + E RH008 + E 1RH008 + E RH009 + E RH010 + E RH011 + E RH012 + E RH013 + E RH014 + E RH015 + E RH016 + E RH017 + E 1RH017 + E 2RH017 + E RH018 + E 1RH018 + E 2RH018 + E 3RH018 + E RH019 + E 1RH019 + E RH020 + E RH021 + E 1RH021 + E RH022 + E 1RH022 + E 2RH022 + E 3RH022 + E 4RH022 + E RH023 + E 2RH023 + E RH024 + E 1RH024 + E RH025 + E 1RH025 + E 2RH025 + E RH026 + E 1RH026 + E 2RH026 + E RH027 + E 1RH027 + E RH028 + E 1RH028 + E 2RH028 + E RH029 + E 1RH029 + E RH030 + E 1RH030 + E 2RH030 + E 3RH030 + E 4RH030 + E RH031 + E RH032 + E 1RH033 + E 2RH033 + E RH034 + E 1RH034 + E RH035 + E 1RH035 + E RH036 + E 1RH036 + E RH038 + E 1RH038 + E 2RH038 + E RH039 + E 2RH039 + E RH041 + E RH042 + E 2RH042 + E RH043 + E 2RH043 + E RH046 + E RH048 + E 2RH048 + E 3RH048 + E RH050 + E RH051 + E 1RH051 + E 2RH051 + E RH052 + E 2RH052 + E 3RH052 + E 4RH052 + E RH053 + E 2RH053 + E 3RH053 + L RH054 + L 1RH054 + L RH055 + L RH056 + L RH057 + L RH058 + L RH059 + L RH060 + L 1RH060 + L RH061 + L RH062 + E RH063 + L RH064 + L RH065 + L RH066 + L 1RH066 + E RH067 + L RH068 + L RH069 + L RH070 + L RH071 + E RH072 + L RH073 + L RH074 + L RH075 + L RH080 + L RH081 + L RH082 + L RH083 + L RH084 + L RH085 + L RH086 + L RH087 + L RH088 + L RH089 + L 1RH089 + L 2RH089 + L 3RH089 + L RH090 + L 1RH090 + L 2RH090 + L RH091 + L RH093 + L 1RH093 + L RH094 + E RH095 + E RH096 + L RH099 + L RH103 + L RH105 + L RH106 + L 1RH106 + L 2RH106 + L RH107 + L 1RH107 + L 2RH107 + L RH108 + E RH109 + L 1RH109 + L 2RH109 + L RH110 + E RH113 + E RH114 + L RH115 + L RH116 + L RH117 + L RH118 + L 1RH118 + E R1002 + E R1003 + E R1004 + E 1R1004 + E R1005 + E 1R1006 + L 2R1006 + E R1007 + E 1R1007 + E R1008 + E R1009 + L 1R1009 + E R1010 + E R1012 + E R1013 + E R1014 + E R1015 + E R1016 + E R1017 + E R1018 + E R1019 + E 1R1019 + E R1020 + E 1R1020 + E R1021 + E 1R1021 + E 2R1021 + E 3R1021 + E R1022 + E R1023 + E R1024 + E R1025 + E R1026 + E R1027 + E 1R1027 + E R1028 + E 1R1028 + E 2R1028 + E 3R1028 + E R1029 + E R1030 + E R1031 + E R1032 + E R1033 + E 1R1033 + E 2R1033 + E 3R1033 + E R1034 + E R1035 + E R1036 + E R1037 + E R1038 + E 1R1038 + E 2R1038 + E R1039 + L 1R1039 + E R1040 + E R1041 + L R1042 + E R1043 + E R1045 + E R1046 + E R1047 + E R1050 + E R1051 + E R1054 + E R1055 + E R1057 + L 1R1057 + E R1058 + E R1060 + E R1061 + E R1062 + E 2R1062 + E R1063 + E 1R1063 + E 2R1063 + E R1064 + E 1R1064 + E R1065 + E R1066 + E R1068 + E 1R1068 + E R1069 + L R1070 + L R1071 + L 1R1071 + L 2R1071 + L R1072 + L R1073 + L R1074 + E R1075 + L R1076 + L R1077 + L R1078 + E R1079 + L R1080 + L R1081 + L R1082 + L R1086 + L R1087 + L R1088 + L R1089 + L R1090 + L R1091 + L R1092 + L R1093 + L R1094 + L R1095 + L R1096 + L R1097 + L R1098 + L R1099 + L R1100 + L R1101 + L R1102 + L 1R1102 + L R1103 + L R1104 + L R1105 + L R1106 + L R1107 + L R1108 + L R1109 + L R1110 + L R1111 + L R1112 + L R1113 + L R1114 + L R1115 + E RJ001 + E 1RJ001 + E RJ002 + E RJ003 + E RJ004 + E RJ005 + E RJ006 + E 1RJ006 + E RJ007 + E 1RJ007 + E RJ008 + E 1RJ008 + E RJ009 + E RJ010 + E RJ011 + E 1RJ011 + E RJ012 + E RJ013 + E RJ014 + E RJ015 + E RJ016 + E RJ018 + E RJ019 + E RJ020 + E RJ021 + E RJ024 + E RJ025 + E RJ026 + E RJ027 + E RJ028 + E RJ029 + E RJ030 + E RJ031 + E RJ032 + E RJ033 + L RJ034 + E RJ035 + E RJ036 + E 1RJ036 + E 1RJ037 + L 2RJ037 + E RJ038 + E RJ039 + E RJ040 + E 1RJ041 + E RJ042 + E RJ043 + E RJ045 + E 2RJ045 + E RJ046 + E 2RJ046 + E RJ047 + L RJ048 + L RJ049 + L RJ050 + L 1RJ050 + L RJ051 + E RJ052 + L RJ053 + L RJ054 + E RJ055 + L RJ056 + L RJ057 + L RJ061 + L RJ062 + L RJ063 + L RJ064 + L RJ065 + L RJ066 + L RJ067 + L RJ068 + L RJ069 + L RJ070 + L RJ071 + L RJ072 + L RJ073 + L 1RJ073 + L RJ074 + L 1RJ074 + L RJ075 + L RJ076 + L 1RJ076 + L RJ077 + L RJ078 + L RJ079 + L RJ080 + E RJ081 + E RJ082 + E RJ083 + E RJ084 + E 1RJ084 + E RJ089 + E RJ091 + E RJ092 + L RJ095 + L RJ096 + E RJ097 + E 1RJ097 + E RJ098 + E 1RJ098 + L RJ099 + L RJ100 + L RJ102 + L RJ103 + L RJ104 + L RJ105 + L RJ106 + L 1RM001 + E RM002 + E 1RM003 + E 2RM003 + E RM004 + E RM005 + E RM006 + E 1RM006 + E 2RM006 + E RM011 + E RM012 + E RN009 + E 1RN014 + E RR010 + E RR021 + E RRG29 + L UKLDF + L HSPMS + L HSRMS + L HSLDF + L HSATK + L NSG17 + L HSG58 + L HSF80 + E RT005 + E RT006 + E 3RT006 + E 4RT006 + E RV001 + E RV002 + E RV003 + E RXATG + E RXF72 + E RY001 + E 1RY001 + E RY002 + E RY004 + L RY005 + E RZ001 + E RZ002 + E RZ004 + E RZ005 + E RZ006 + E RZ012 + E RZ016 + E RZ019 + E RZ020 + L RABDH + E RAGJA + L RGACH + L RHN1G + L RK1RK + E RKUWT + L RL1BY + L RMN1G + L RMURB + L RQATR + L RT1JA +COLUMNS + MSEXP R0000 -.1 RMSEX -1. + MS1MP R0000 .101 RMSEX 1. + LDEXP R0000 -.075 RLDEX -1. + LD1MP R0000 .076 RLDEX 1. + PKEXP R0000 -.1 RPKEX -1. + PK1MP R0000 .101 RPKEX 1. + RKEXP R0000 -.0875 RRKEX -1. + RK1MP R0000 .0885 RRKEX 1. + 1G0EXP RG0EX -1. + 1G01MP RG0EX 1. + 1F0EXP RF0EX -1. + 1F01MP RF0EX 1. + 5C0ST R0000 .2 RC0ST -1. + 6C0ST R0000 .25 RC0ST -1. + CCRFT R0000 .001 RCRFT -1. + CRUDE R0000 2.275 RKUWT -1. + AABDH R0000 -1.5303 1RA002 -1. + AABDH RABDH 1. + HABDH R0000 .9632 RH006 -1. + HABDH RABDH 1. + JABDH R0000 .3687 RJ006 -1. + JABDH RABDH 1. + 1AAGJA R0000 -1.4254 RA001 -1. + 1AAGJA RAGJA 1. + 1BAGJA R0000 1.007 RB001 -1. + 1BAGJA RAGJA 1. + EAGJA R0000 -1.1387 RE002 -1. + EAGJA RAGJA 1. + 1HAGJA R0000 .9839 RH002 -1. + 1HAGJA RAGJA 1. + 11AGJA R0000 1.0109 R1004 -1. + 11AGJA RAGJA 1. + 1JAGJA R0000 .3969 RJ002 -1. + 1JAGJA RAGJA 1. + AGACH R0000 -1.2464 RA004 -1. + AGACH RGACH 1. + BGACH R0000 1.007 RB003 -1. + BGACH RGACH 1. + EGACH R0000 -1.0122 RE004 -1. + EGACH RGACH 1. + 1GACH R0000 1.0109 R1005 -1. + 1GACH RGACH 1. + JGACH R0000 .3969 RJ005 -1. + JGACH RGACH 1. + BHN1G R0000 .8625 RB004 -1. + BHN1G RHN1G 1. + HHN1G R0000 .6674 RH005 -1. + HHN1G RHN1G 1. + 1HN1G R0000 .6943 R1007 -1. + 1HN1G RHN1G 1. + BK1RK R0000 .3075 1RB001 -1. + BK1RK 1RB038 -.02 RB042 -.02 + BK1RK RB047 -.02 RB052 .06 + BK1RK RK1RK 1. + HK1RK R0000 .4249 RH003 -1. + HK1RK RH039 -.02 RH042 -.02 + HK1RK RH048 -.02 3RH052 .06 + HK1RK RK1RK 1. + 1K1RK R0000 .3059 R1002 -1. + 1K1RK R1055 -.02 R1057 -.02 + 1K1RK 1R1057 -.02 R1062 -.02 + 1K1RK R1068 .06 RK1RK 1. + AKUWT R0000 -1.2063 RA005 -1. + AKUWT RKUWT 1. + BKUWT R0000 1.0114 RB002 -1. + BKUWT RKUWT 1. + EKUWT R0000 -.9791 RE001 -1. + EKUWT RKUWT 1. + HKUWT R0000 .9886 1RH001 -1. + HKUWT RKUWT 1. + 1KUWT R0000 1.0154 R1003 -1. + 1KUWT RKUWT 1. + JKUWT R0000 .4033 RJ001 -1. + JKUWT RKUWT 1. + BL1BY R0000 .3657 1RB003 -1. + BL1BY RL1BY 1. + HL1BY R0000 .345 1RH006 -1. + HL1BY RL1BY 1. + 1L1BY R0000 .6832 1R1006 -1. + 1L1BY RL1BY 1. + BMN1G R0000 .8625 1RB004 -1. + BMN1G RMN1G 1. + HMN1G R0000 .6674 1RH005 -1. + HMN1G RMN1G 1. + 1MN1G R0000 .6943 1R1004 -1. + 1MN1G RMN1G 1. + 1MURB R0000 1.0199 1R1007 -1. + 1MURB RMURB 1. + JMURB R0000 .4094 1RJ006 -1. + JMURB RMURB 1. + AQATR R0000 -1.6519 RA002 -1. + AQATR RQATR 1. + JQATR R0000 .4001 RJ004 -1. + JQATR RQATR 1. + ASPKU R0000 -1.3823 2RA005 -1. + ASPKU RY001 .15 RKUWT .85 + HSPKU R0000 .9886 2RH001 -1. + HSPKU RY001 .1 RKUWT .9 + JSPKU R0000 .4033 1RJ001 -1. + JSPKU RY001 .1 RKUWT .9 + BT1JA R0000 .4183 RB005 -1. + BT1JA RT1JA 1. + HT1JA R0000 .4022 RH004 -1. + HT1JA RT1JA 1. + HC3 R0000 100. 1RH008 1. + AVGAS R0000 20.8248 RC0ST 1.658 + AVGAS RMSEX -1. RH031 1. + KWPMS R0000 20. RA039 1. + PMS R0000 13.9748 RC0ST 1.658 + PMS RMSEX -1. 1RH035 1. + RMS R0000 11.5968 RC0ST 1.658 + RMS RMSEX -1. 1RH036 1. + PGB0 R0000 12.0848 RC0ST 1.658 + PGB0 RPKEX -1. RH041 1. + ATK R0000 11.1467 RC0ST 1.658 + ATK RRKEX -1. RH042 1. + KWG20 R0000 15. RA044 1. + G29 R0000 7.9067 RC0ST 1.646 + G29 RRG29 1. + G44 R0000 9.5828 RC0ST 1.658 + G44 RG0EX -1. RH043 1. + G44 RH082 -5. + G58 R0000 8.0198 RC0ST 1.658 + G58 RG0EX -1. 2RH048 1. + F28 R0000 5.9417 RC0ST 1.658 + F28 RF0EX -1. 1RH051 1. + F80 R0000 4.6059 RC0ST 1.658 + F80 RF0EX -1. 2RH052 1. + F81 R0000 5.535 RC0ST 1.562 + F81 RF0EX -1. RB054 1. + ADDAE R0000 .6374 KW1RC 1. + CA001 R0000 .0174 1RA002 1.0125 + CA001 RA009 .167 RA011 .06 + CA001 RA012 .045 RA013 .1 + CA001 RA014 .09 RA016 .116 + CA001 1RA020 .404 RA035 .018 + CA001 RA036 -.0223 RA055 1.13 + CA001 1RA055 1.13 + CA002 R0000 .0111 RA001 1.0115 + CA002 RA008 .037 RA009 .151 + CA002 RA010 .053 RA013 .088 + CA002 RA014 .08 RA016 .104 + CA002 RA018 .467 RA035 .02 + CA002 RA036 -.0217 RA055 1.02 + CA002 1RA055 1.02 + CA003 R0000 .0088 RA005 1.0085 + CA003 RA009 .131 RA011 .042 + CA003 RA012 .033 RA013 .076 + CA003 RA015 .091 RA017 .06 + CA003 RA019 .546 RA035 .021 + CA003 RA036 -.0223 RA055 1. + CA003 RA072 -.101 + CA004 R0000 .0174 RA002 1.0125 + CA004 RA009 .192 RA011 .07 + CA004 RA012 .048 RA013 .115 + CA004 RA014 .113 RA016 .074 + CA004 RA020 .355 RA035 .033 + CA004 RA036 -.0223 RA055 1.25 + CA006 R0000 .0114 RA004 1.0115 + CA006 RA006 .533 RA008 .037 + CA006 RA009 .147 RA010 .037 + CA006 RA013 .08 RA014 .074 + CA006 RA016 .073 RA035 .019 + CA006 RA036 -.0223 RA055 1. + CA006 1RA055 1. + CA008 R0000 .2564 RA061 -10.52 + CA008 RA062 1. + CA009 R0000 .2564 RA066 -15.27 + CA009 RA067 1. + CA010 R0000 .0819 RA035 -1. + CA010 RA039 1. RA061 5.17 + CA010 RA062 -.541 RA063 -155.159897 + CA010 RA064 218.259996 RA065 95.509999 + CA011 R0000 .0495 RA035 -1. + CA011 RA040 1. RA066 -18.96 + CA011 RA067 -.734 RA068 -155.159897 + CA011 RA069 218.259996 RA070 95.509999 + CA012 R0000 .0404 RA009 -1. + CA012 RA040 1. RA066 33.79 + CA012 RA067 -.599 RA068 -14.08 + CA012 RA069 -14.78 RA070 -6.899 + CA013 R0000 .1593 RA009 -1. + CA013 RA013 .02 RA022 .149 + CA013 RA035 .241 RA036 -.115 + CA013 RA039 .59 RA056 1.405 + CA013 RA061 .39 RA062 -.242 + CA013 RA063 -3.855 RA064 -4.7 + CA013 RA065 -3.55 + CA014 R0000 .0543 RA009 -1. + CA014 RA013 .02 RA022 .149 + CA014 RA035 .112 RA036 -.082 + CA014 RA040 .719 RA056 1.117 + CA014 RA066 -.78 RA067 -.414 + CA014 RA068 .972 RA069 -13.22 + CA014 RA070 -4.471 + CA015 R0000 .1001 RA009 -1. + CA015 RA013 .02 RA023 .446 + CA015 RA035 .153 RA036 -.074 + CA015 RA039 .381 RA056 .801 + CA015 RA061 .24 RA062 -.153 + CA015 RA063 7.32 RA064 -4. + CA015 RA065 -2.24 + CA016 R0000 .0382 RA009 -1. + CA016 RA013 .02 RA023 .446 + CA016 RA035 .043 RA036 -.0527 + CA016 RA040 .491 RA056 .879 + CA016 RA066 -.52 RA067 -.277 + CA016 RA068 16.25 RA069 -10.4 + CA016 RA070 -2.99 + CA017 R0000 .1087 RA009 -1. + CA017 RA013 .02 RA022 .149 + CA017 RA035 .191 RA036 -.1099 + CA017 RA039 .64 RA056 1.245 + CA017 RA061 3.73 RA062 -.266 + CA017 RA063 -1.696 RA064 -8.06 + CA017 RA065 -3.9 + CA018 R0000 .0928 RA009 -1. + CA018 RA013 .02 RA022 .149 + CA018 RA035 .191 RA036 -.1099 + CA018 RA040 .64 RA056 1.245 + CA018 RA066 -7.97 RA067 -.361 + CA018 RA068 -1.696 RA069 -8.06 + CA018 RA070 -3.9 + CA019 R0000 .071 RA009 -1. + CA019 RA013 .02 RA023 .446 + CA019 RA035 .083 RA036 -.0706 + CA019 RA039 .451 RA056 .939 + CA019 RA061 2.58 RA062 -.184 + CA019 RA063 11.72 RA064 -6.91 + CA019 RA065 -2.695 + CA020 R0000 .06 RA009 -1. + CA020 RA013 .02 RA023 .446 + CA020 RA035 .083 RA036 -.0706 + CA020 RA040 .451 RA056 .939 + CA020 RA066 -5.51 RA067 -.249 + CA020 RA068 11.72 RA069 -6.91 + CA020 RA070 -2.695 + CA021 R0000 .1724 RA009 -.745 + CA021 RA010 -.255 RA013 .02 + CA021 RA022 .083 RA035 .207 + CA021 RA036 -.124 RA039 .69 + CA021 RA056 1.447 RA061 .45 + CA021 RA062 -.279 RA063 3.56 + CA021 RA064 -8.72 RA065 -4.09 + CA022 R0000 .065 RA009 -.745 + CA022 RA010 -.255 RA013 .02 + CA022 RA022 .083 RA035 .069 + CA022 RA036 -.088 RA040 .828 + CA022 RA056 1.068 RA066 -.88 + CA022 RA067 -.47 RA068 8.832 + CA022 RA069 -20.2 RA070 -5.078 + CA024 R0000 .1417 RA009 -.745 + CA024 RA010 -.255 RA013 .02 + CA024 RA023 .25 RA035 .125 + CA024 RA036 -.101 RA039 .605 + CA024 RA056 1.162 RA061 .38 + CA024 RA062 -.24 RA063 20.682 + CA024 RA064 -9.12 RA065 -3.52 + CA025 R0000 .053 RA009 -.745 + CA025 RA010 -.255 RA013 .02 + CA025 RA023 .25 RA035 .039 + CA025 RA036 -.072 RA040 .691 + CA025 RA056 .858 RA066 -.72 + CA025 RA067 -.384 RA068 29.8 + CA025 RA069 -18.69 RA070 -4.153 + CA027 R0000 .1138 RA009 -.747 + CA027 RA011 -.253 RA013 .02 + CA027 RA022 .1 RA035 .185 + CA027 RA036 -.116 RA039 .695 + CA027 RA056 1.239 RA061 4. + CA027 RA062 -.285 RA063 3.632 + CA027 RA064 -11.26 RA065 -4.177 + CA028 R0000 .0968 RA009 -.747 + CA028 RA011 -.253 RA013 .02 + CA028 RA022 .1 RA035 .185 + CA028 RA036 -.116 RA040 .695 + CA028 RA056 1.239 RA066 -8.54 + CA028 RA067 -.386 RA068 3.632 + CA028 RA069 -11.26 RA070 -4.177 + CA029 R0000 .1033 RA009 -.747 + CA029 RA011 -.253 RA013 .02 + CA029 RA022 .1 RA035 .185 + CA029 RA036 -.131 RA039 .347 + CA029 RA040 .348 RA056 1.239 + CA029 RA061 -2.07 RA062 -.129 + CA029 RA063 18.585 RA064 -12.06 + CA029 RA065 -3.965 RA066 2.96 + CA029 RA067 -.21 RA068 -7.26 + CA029 RA069 -1.63 RA070 -.79 + CA030 R0000 .0977 RA009 -.745 + CA030 RA010 -.255 RA013 .02 + CA030 RA023 .25 RA035 .088 + CA030 RA036 -.0966 RA039 .642 + CA030 RA056 1. RA061 3.62 + CA030 RA062 -.258 RA063 23.86 + CA030 RA064 -12.67 RA065 -3.786 + CA031 R0000 .0823 RA009 -.745 + CA031 RA010 -.255 RA013 .02 + CA031 RA023 .25 RA035 .088 + CA031 RA036 -.0966 RA040 .642 + CA031 RA056 1. RA066 -7.74 + CA031 RA067 -.35 RA068 23.86 + CA031 RA069 -12.67 RA070 -3.786 + CA032 R0000 .0976 RA009 -.745 + CA032 RA010 -.255 RA013 .02 + CA032 RA023 .25 RA035 .088 + CA032 RA036 -.1086 RA039 .321 + CA032 RA040 .321 RA056 1. + CA032 RA061 -1.88 RA062 -.118 + CA032 RA063 20.625 RA064 -10.95 + CA032 RA065 -3.6 RA066 2.23 + CA032 RA067 -.19 RA068 -2.23 + CA032 RA069 -3.08 RA070 -.714 + CA033 R0000 .1655 RA009 -.747 + CA033 RA011 -.253 RA013 .02 + CA033 RA022 .1 RA035 .249 + CA033 RA036 -.122 RA039 .631 + CA033 RA056 1.438 RA061 .41 + CA033 RA062 -.255 RA063 2.442 + CA033 RA064 -5.7 RA065 -3.74 + CA034 R0000 .0621 RA009 -.747 + CA034 RA011 -.253 RA013 .02 + CA034 RA022 .1 RA035 .099 + CA034 RA036 -.087 RA040 .781 + CA034 RA056 1.062 RA066 -.83 + CA034 RA067 -.443 RA068 7.287 + CA034 RA069 -18.43 RA070 -4.789 + CA035 R0000 .1291 RA009 -.747 + CA035 RA011 -.253 RA013 .02 + CA035 RA023 .3 RA035 .139 + CA035 RA036 -.094 RA039 .541 + CA035 RA056 1.172 RA061 .34 + CA035 RA062 -.215 RA063 17.125 + CA035 RA064 -7.54 RA065 -3.15 + CA036 R0000 .0491 RA009 -.747 + CA036 RA011 -.253 RA013 .02 + CA036 RA023 .3 RA035 .045 + CA036 RA036 -.0671 RA040 .635 + CA036 RA056 .872 RA066 -.66 + CA036 RA067 -.353 RA068 25.73 + CA036 RA069 -16.68 RA070 -3.818 + CA037 R0000 .1181 RA009 -.745 + CA037 RA010 -.255 RA013 .02 + CA037 RA022 .083 RA035 .162 + CA037 RA036 -.119 RA039 .735 + CA037 RA056 1.246 RA061 4.23 + CA037 RA062 -.301 RA063 4.805 + CA037 RA064 -12.49 RA065 -4.421 + CA038 R0000 .1 RA009 -.745 + CA038 RA010 -.255 RA013 .02 + CA038 RA022 .083 RA035 .162 + CA038 RA036 -.119 RA040 .735 + CA038 RA056 1.246 RA066 -9.03 + CA038 RA067 -.409 RA068 4.805 + CA038 RA069 -12.59 RA070 -4.421 + CA039 R0000 .118 RA009 -.745 + CA039 RA010 -.255 RA013 .02 + CA039 RA022 .083 RA035 .162 + CA039 RA036 -.133 RA039 .367 + CA039 RA040 .368 RA056 1.246 + CA039 RA061 -2.18 RA062 -.137 + CA039 RA063 19.62 RA064 -12.73 + CA039 RA065 -4.186 RA066 3.13 + CA039 RA067 -.222 RA068 -7.83 + CA039 RA069 -2.35 RA070 -.835 + CA040 R0000 .0906 RA009 -.747 + CA040 RA011 -.253 RA013 .02 + CA040 RA023 .3 RA035 .09 + CA040 RA036 -.09 RA039 .59 + CA040 RA056 1. RA061 3.33 + CA040 RA062 -.237 RA063 20.412 + CA040 RA064 -11.19 RA065 -3.478 + CA041 R0000 .0764 RA009 -.747 + CA041 RA011 -.253 RA013 .02 + CA041 RA023 .3 RA035 .09 + CA041 RA036 -.09 RA040 .59 + CA041 RA056 1. RA066 -7.11 + CA041 RA067 -.322 RA068 20.412 + CA041 RA069 -11.19 RA070 -3.478 + CA042 R0000 .0905 RA009 -.747 + CA042 RA011 -.253 RA013 .02 + CA042 RA023 .3 RA035 .09 + CA042 RA036 -.1011 RA039 .295 + CA042 RA040 .295 RA056 1. + CA042 RA061 -1.73 RA062 -.108 + CA042 RA063 18.975 RA064 -10.07 + CA042 RA065 -3.312 RA066 2.05 + CA042 RA067 -.174 RA068 -2.05 + CA042 RA069 -2.34 RA070 -.656 + CA043 RA010 -1. RA043 1. + CA043 RA075 -9.27 RA076 7.82 + CA043 RA077 -3.5 RA078 33.89 + CA043 RA079 -16. + 1CA043 RA010 -1. RA044 1. + 1CA043 1RA075 -9.27 1RA076 7.82 + 1CA043 1RA078 33.89 1RA079 -16. + CA044 RA010 -1. RA046 1. + CA044 RA082 -13.98 RA083 10.15 + CA044 RA084 33.89 RA085 -13.5 + CA044 RA086 -20. RA087 -14. + CA044 RA088 -21.5 + CA045 R0000 .0095 RA009 .27 + CA045 RA011 -.42 RA012 -.33 + CA045 RA013 -.52 RA041 1. + CA045 RA072 .5 + 1CA045 R0000 .0095 RA009 -.07 + 1CA045 RA011 -.29 RA012 -.23 + 1CA045 RA013 -.41 RA041 1. + 1CA045 RA055 .6 RA072 .5 + CA046 RA011 -1. RA043 1. + CA046 RA075 -9.27 RA076 7.82 + CA046 RA077 -3.5 RA078 33.89 + CA046 RA079 -16. + 1CA046 RA011 -1. RA044 1. + 1CA046 1RA075 -9.27 1RA076 7.82 + 1CA046 1RA078 33.89 1RA079 -16. + CA048 RA011 -1. RA046 1. + CA048 RA082 -13.98 RA083 10.15 + CA048 RA084 33.89 RA085 -13.5 + CA048 RA086 -20. RA087 -14. + CA048 RA088 -21.5 + CA049 RA012 -1. RA013 1. + 1CA050 R0000 .0104 RA012 -.44 + 1CA050 RA013 -.65 RA015 .09 + 1CA050 1RA043 1. + CA051 R0000 .0218 RA013 -1. + CA051 RA036 -.0409 RA044 .997 + CA051 RA059 .933 1RA075 -4.76 + CA051 1RA076 3.31 1RA078 2.3 + CA051 1RA079 -11.96 + CA052 RA013 -1. RA043 1. + CA052 RA075 -4.46 RA076 3.01 + CA052 RA077 -2. RA078 2.3 + CA052 RA079 -12. + CA053 RA013 -1. RA046 1. + CA053 RA082 -9.15 RA083 5.32 + CA053 RA084 2.3 RA085 -12. + CA053 RA086 -16. RA087 -14. + CA053 RA088 -19. + CA054 RA013 -1. RA048 1. + CA054 RA089 -26.96 RA090 26.15 + CA054 RA091 -22. RA092 -69. + CA055 RA013 -1. RA051 1. + CA055 RA093 -26.96 RA094 26.15 + CA055 RA095 -30.5 RA096 -60. + CA056 R0000 .0218 RA014 -1. + CA056 RA036 -.0409 RA044 .987 + CA056 RA059 1. 1RA075 -.286 + CA056 1RA076 -1.14 1RA078 -3.13 + CA056 1RA079 -.987 + CA057 RA014 -1. RA043 1. + CA057 RA075 .71 RA076 -2.16 + CA057 RA077 2.75 RA078 -3.17 + CA057 RA079 -1. + CA058 RA014 -1. RA046 1. + CA058 RA082 -3.98 RA083 .15 + CA058 RA084 -3.17 RA085 -7.25 + CA058 RA086 -5. RA087 -14. + CA058 RA088 -15. + CA059 RA014 -1. RA048 1. + CA059 RA089 -19.06 RA090 18.25 + CA059 RA091 -17.25 RA092 -53. + CA060 RA014 -1. RA051 1. + CA060 RA093 -19.06 RA094 18.25 + CA060 RA095 -25.75 RA096 -44. + CA061 R0000 .0218 RA015 -1. + CA061 RA036 -.0409 RA044 .98 + CA061 RA059 1.005 1RA075 -1.57 + CA061 1RA076 .14 1RA078 -3.19 + CA061 1RA079 -1.47 + CA062 RA015 -1. RA043 1. + CA062 RA076 -1.45 RA077 6.5 + CA062 RA078 -3.26 RA079 -1.5 + CA063 RA015 -1. RA046 1. + CA063 RA082 -4.69 RA083 .86 + CA063 RA084 -3.26 RA085 -3.5 + CA063 RA086 -5.5 RA087 -14. + CA063 RA088 -16. + CA064 RA015 -1. RA048 1. + CA064 RA089 -18.96 RA090 18.15 + CA064 RA091 -13.5 RA092 -54. + CA065 RA015 -1. RA051 1. + CA065 RA093 -18.96 RA094 18.15 + CA065 RA095 -22. RA096 -45. + CA066 R0000 -.0027 RA016 -1. + CA066 RA026 1. RA032 -.054 + CA066 RA034 .023 RA035 .031 + CA068 R0000 .0218 RA016 -1. + CA068 RA036 -.0409 RA044 .976 + CA068 RA059 1.835 1RA075 2.33 + CA068 1RA076 -3.75 1RA078 -3.51 + CA068 1RA079 20.5 + CA069 RA016 -1. RA043 1. + CA069 RA075 4.15 RA076 -5.6 + CA069 RA077 8.5 RA078 -3.6 + CA069 RA079 21. + CA070 RA016 -1. RA046 1. + CA070 RA082 -.54 RA083 -3.29 + CA070 RA084 -3.6 RA085 -1.5 + CA070 RA086 17. RA087 -14. + CA070 RA088 -9. + CA071 RA016 -1. RA048 1. + CA071 RA089 -12.36 RA090 11.55 + CA071 RA091 -11.5 RA092 -30. + CA072 RA016 -1. RA051 1. + CA072 RA093 -12.36 RA094 11.55 + CA072 RA095 -20. RA096 -21. + CA073 R0000 -.0027 RA017 -1. + CA073 RA026 1. RA032 -.054 + CA073 RA034 .023 RA035 .031 + CA075 R0000 .0218 RA017 -1. + CA075 RA036 -.0409 RA044 .964 + CA075 RA059 1.835 1RA075 6.63 + CA075 1RA076 -2.77 1RA078 -3.46 + CA075 1RA079 25.06 + CA076 RA017 -1. RA043 1. + CA076 RA075 4.15 RA076 -5.6 + CA076 RA077 14.5 RA078 -3.59 + CA076 RA079 26. + CA077 RA017 -1. RA046 1. + CA077 RA082 -.54 RA083 -3.29 + CA077 RA084 -3.59 RA085 4.5 + CA077 RA086 22. RA087 -14. + CA077 RA088 -6. + CA078 RA017 -1. RA048 1. + CA078 RA089 -11.56 RA090 10.75 + CA078 RA091 -5.5 RA092 -25. + CA079 RA017 -1. RA051 1. + CA079 RA093 -11.56 RA094 10.75 + CA079 RA095 -14. RA096 -16. + CA080 R0000 .0075 RA018 -1. + CA080 RA024 .081 RA026 .508 + CA080 RA027 .401 RA034 .01 + CA080 RA036 -.0029 RA057 1. + CA081 RA018 -1. RA048 1. + CA081 RA089 3.44 RA090 -4.25 + CA081 RA091 .5 RA092 15. + CA082 RA018 -1. RA051 1. + CA082 RA093 3.44 RA094 -4.25 + CA082 RA095 -8. RA096 24. + CA083 R0000 .0075 RA019 -1. + CA083 RA024 .068 RA026 .427 + CA083 RA028 .495 RA034 .01 + CA083 RA036 -.0029 RA057 .949 + CA084 RA019 -1. RA051 1. + CA084 RA093 5.64 RA094 -6.45 + CA084 RA095 8.5 RA096 4. + CA085 R0000 .0075 RA020 -1. + CA085 RA024 .113 RA026 .545 + CA085 RA029 .332 RA034 .01 + CA085 RA036 -.0032 RA057 1.074 + 1CA085 R0000 .0075 1RA020 -1. + 1CA085 RA024 .109 RA026 .51 + 1CA085 1RA029 .371 RA034 .01 + 1CA085 RA036 -.0032 RA057 1.008 + CA086 RA020 -1. RA048 1. + CA086 RA089 -.56 RA090 -.25 + CA086 RA091 .5 RA092 22. + 1CA086 1RA020 -1. RA048 1. + 1CA086 RA089 1.34 RA090 -2.15 + 1CA086 RA091 3.5 RA092 8. + CA087 RA020 -1. RA051 1. + CA087 RA093 -.56 RA094 -.25 + CA087 RA095 -8. RA096 31. + 1CA087 1RA020 -1. RA051 1. + 1CA087 RA093 1.34 RA094 -2.15 + 1CA087 RA095 -5. RA096 17. + CA091 R0000 .0748 RA022 -1. + CA091 RA039 1. RA061 29.91 + CA091 RA062 -.494 RA063 -102.3101 + CA091 RA064 83.580099 RA065 10.074 + CA092 R0000 .0453 RA022 -1. + CA092 RA040 1. RA066 7.87 + CA092 RA067 -.67 RA068 -102.3101 + CA092 RA069 83.580099 RA070 10.074 + CA093 R0000 .0709 RA023 -1. + CA093 RA039 1. RA061 45.54 + CA093 RA062 -.468 RA063 -74.649899 + CA093 RA064 41.8 RA065 -1.642 + CA094 R0000 .0429 RA023 -1. + CA094 RA040 1. RA066 24.63 + CA094 RA067 -.635 RA068 -74.649899 + CA094 RA069 41.8 RA070 -1.642 + 1CA095 R0000 -.0017 RA024 -1. + 1CA095 RA026 1. RA032 -.034 + 1CA095 RA034 .015 RA035 .019 + CA096 RA024 -1. RA043 1. + CA096 RA075 6.13 RA076 -7.58 + CA096 RA077 16.5 RA078 -3.52 + CA096 RA079 17. + CA097 RA024 -1. RA046 1. + CA097 RA082 1.43 RA083 -5.26 + CA097 RA084 -3.52 RA085 6.5 + CA097 RA086 13. RA087 -14. + CA097 RA088 1. + CA098 RA024 -1. RA048 1. + CA098 RA089 -12.56 RA090 11.75 + CA098 RA091 -3.5 RA092 -35. + CA099 RA024 -1. RA051 1. + CA099 RA093 -12.56 RA094 11.75 + CA099 RA095 -12. RA096 -26. + CA100 R0000 .0534 RA026 -1. + CA100 RA031 .255 RA032 .058 + CA100 RA033 .24 RA034 .082 + CA100 1RA034 .065 2RA034 .076 + CA100 RA035 .154 RA058 1.17 + CA100 1RA058 1. + CA101 R0000 .0521 RA026 -1. + CA101 RA031 .182 RA032 .059 + CA101 RA033 .24 RA034 .253 + CA101 1RA034 .07 2RA034 .076 + CA101 RA035 .065 RA058 .92 + CA102 R0000 .0067 RA031 .37 + CA102 1RA034 -1. RA035 .48 + CA102 RA058 2.5 + 1CA102 RA034 1. 1RA034 -1. + CA103 R0000 .0155 RA031 .55 + CA103 RA032 .11 2RA034 -1. + CA103 RA035 .17 RA058 2.83 + 1CA103 RA034 1. 2RA034 -1. + CA104 R0000 .036 RA019 -1. + CA104 RA024 .077 RA026 .193 + CA104 RA028 .328 RA034 .008 + CA104 RA035 .001 RA036 -.006 + CA104 RA051 .276 RA054 .117 + CA104 RA093 2.88 RA094 -3.1 + CA104 RA095 6.35 RA096 1.1 + CA106 RA027 -1. RA048 1. + CA106 RA089 14.23 RA090 -15.04 + CA106 RA091 8.7 RA092 -34. + 1CA106 RA026 -.154 RA027 -.846 + 1CA106 RA036 .0002 RA048 1. + 1CA106 RA057 -.078 RA089 12.39 + 1CA106 RA090 -13.2 RA091 7. + 1CA106 RA092 -21. + CA107 RA027 -1. RA051 1. + CA107 RA093 14.23 RA094 -15.04 + CA107 RA095 .2 RA096 -25. + 1CA107 RA026 -.154 RA027 -.846 + 1CA107 RA036 .0002 RA051 1. + 1CA107 RA057 -.078 RA093 12.39 + 1CA107 RA094 -13.2 RA095 -1.5 + 1CA107 RA096 -12. + CA108 RA028 -1. RA051 1. + CA108 RA093 14.47 RA094 -15.28 + CA108 RA095 19.5 RA096 -31. + 1CA108 RA026 -.13 RA028 -.87 + 1CA108 RA036 .0002 RA051 1. + 1CA108 RA057 -.132 RA093 12.73 + 1CA108 RA094 -13.54 RA095 17.2 + 1CA108 RA096 -17. + CA109 RA029 -1. RA048 1. + CA109 RA089 9.13 RA090 -9.94 + CA109 RA091 6.8 RA092 -38. + 1CA109 RA026 -.186 RA029 -.814 + 1CA109 RA036 .0004 RA048 1. + 1CA109 RA057 -.05 RA089 7.8 + 1CA109 RA090 -8.61 RA091 5.2 + 1CA109 RA092 -28. + 2CA109 1RA029 -1. RA048 1. + 2CA109 RA089 9.04 RA090 -9.85 + 2CA109 RA091 10.5 RA092 -40. + 3CA109 RA026 -.176 1RA029 -.824 + 3CA109 RA036 .0004 RA048 1. + 3CA109 RA057 -.09 RA089 7.94 + 3CA109 RA090 -8.75 RA091 9.3 + 3CA109 RA092 -30. + CA110 RA029 -1. RA051 1. + CA110 RA093 9.13 RA094 -9.94 + CA110 RA095 -1.7 RA096 -29. + 1CA110 RA026 -.186 RA029 -.814 + 1CA110 RA036 .0004 RA051 1. + 1CA110 RA057 -.05 RA093 7.8 + 1CA110 RA094 -8.61 RA095 -3.3 + 1CA110 RA096 -19. + 2CA110 1RA029 -1. RA051 1. + 2CA110 RA093 9.04 RA094 -9.85 + 2CA110 RA095 2. RA096 -31. + 3CA110 RA026 -.176 1RA029 -.824 + 3CA110 RA036 .0004 RA051 1. + 3CA110 RA057 -.09 RA093 7.94 + 3CA110 RA094 -8.75 RA095 .8 + 3CA110 RA096 -21. + CA113 R0000 .0674 RA031 -1. + CA113 RA039 1. RA061 -.28 + CA113 RA062 -.445 RA063 -34.03 + CA113 RA064 18. RA065 4.112 + CA114 R0000 .0407 RA031 -1. + CA114 RA040 1. RA066 -20.14 + CA114 RA067 -.604 RA068 -34.032 + CA114 RA069 18. RA070 4.112 + CA115 R0000 .0576 RA032 -1. + CA115 RA039 1. RA061 -.24 + CA115 RA062 -.38 RA063 90.899899 + CA115 RA064 -32.8 RA065 -9.938 + 1CA115 R0000 .0601 RA032 -1. + 1CA115 RA033 .25 RA039 .75 + 1CA115 RA061 -.19 RA062 -.298 + 1CA115 RA063 42.7 RA064 -24.5 + 1CA115 RA065 -8.16 + CA116 R0000 .0348 RA032 -1. + CA116 RA040 1. RA066 -17.21 + CA116 RA067 -.516 RA068 90.899899 + CA116 RA069 -32.8 RA070 -9.938 + 1CA116 R0000 .0363 RA032 -1. + 1CA116 RA033 .25 RA040 .75 + 1CA116 RA066 -13.48 RA067 -.404 + 1CA116 RA068 42.7 RA069 -24.5 + 1CA116 RA070 -8.16 + CA117 R0000 .0218 RA033 -1. + CA117 RA036 -.0409 RA044 .97 + CA117 RA059 1.97 1RA075 6.93 + CA117 1RA076 -8.3 1RA078 -2.96 + CA117 1RA079 3.88 1RA081 100. + CA118 RA033 -1. RA043 1. + CA118 RA075 9.26 RA076 -10.71 + CA118 RA077 14.5 RA078 -3.05 + CA118 RA079 4. RA081 100. + CA120 RA033 -1. RA046 1. + CA120 RA082 4.57 RA083 -8.4 + CA120 RA084 -3.05 RA085 4.5 + CA120 RA087 -13.7 RA088 22. + CA121 RA033 -1. RA048 1. + CA121 RA089 -18.06 RA090 17.25 + CA121 RA091 -5.5 RA092 -48. + CA122 RA033 -1. RA051 1. + CA122 RA093 -18.06 RA094 17.25 + CA122 RA095 -14. RA096 -39. + CA123 RA046 1. RA048 -1. + CA123 RA082 9.81 RA083 -13.64 + CA123 RA085 10. RA086 -2. + CA123 RA087 71. RA088 16. + CA124 RA035 -1. RA037 1. + CA125 RA035 -1. RA036 1.175 + CA126 RA036 1. RA052 -1. + CA127 RA043 1. RA044 -1. + CA127 RA077 -3.7 + CA128 R0000 4.1767 RA044 -1. + CA128 RA045 1. 1RA081 -15. + CA129 RA044 -1. RA046 1. + CA129 RA082 -4.69 RA083 2.31 + CA129 RA085 -13.5 RA086 -4. + CA129 RA087 -14. RA088 -14. + CA130 RA046 -1. RA047 1. + CA130 RA082 -1.3 RA086 -6. + CA130 RA087 13. RA088 11. + 1CA130 RA045 -.75 RA047 -.25 + 1CA130 1RA047 1. + CA131 RA013 -.06 RA016 -.13 + CA131 RA018 -.81 1RA053 1. + CA133 RA051 -1. RA052 1. + CA133 RA093 -2.94 RA094 1.75 + CA133 RA095 -6. RA096 -11. + 2CA133 RA051 -1. 1RA052 1. + 2CA133 RA093 -2.26 RA094 2.01 + 2CA133 RA095 -6. RA096 -11. + 1CA134 RA013 -.25 RA018 -.75 + 1CA134 RA049 1. + 2CA134 RA006 -.74 RA013 -.26 + 2CA134 RA049 1. + CA135 RA008 -1. RA010 1. + CA136 RA008 -1. RA013 1. + CA137 RA011 1. RA012 -1. + CA138 RA026 -1. RA051 1. + CA138 RA093 -3.13 RA094 2.32 + CA138 RA095 -6. RA096 67. + CA139 R0000 10. RA018 -1. + CA139 RA024 .115 RA026 .194 + CA139 RA027 .401 RA034 .04 + CA139 RA035 .001 RA036 -.022 + CA139 RA051 .129 RA054 .12 + CA139 RA093 .378 RA094 -.482 + CA139 RA095 -.194 RA096 12. + CA140 R0000 .0431 RA020 -1. + CA140 RA024 .069 RA026 .273 + CA140 RA034 .013 RA035 .001 + CA140 RA036 -.01 RA051 .4 + CA140 RA054 .244 RA093 3.38 + CA140 RA094 -3.7 RA095 2.8 + CA140 RA096 1.6 + CA142 RA027 -1. RA038 .98 + CA143 RA007 -1. RA038 .98 + CA144 R0000 .0075 RA006 -1. + CA144 RA007 .488 RA024 .075 + CA144 RA026 .427 RA034 .01 + CA144 RA036 -.0029 RA057 .944 + CA145 RA006 -1. RA048 1. + CA145 RA089 5.14 RA090 -5.95 + CA145 RA091 .9 RA092 3. + CA146 RA006 -1. RA051 1. + CA146 RA093 5.14 RA094 -5.95 + CA146 RA095 -7.6 RA096 12. + CA147 RA007 -1. RA048 1. + CA147 RA089 15.26 RA090 -16.07 + CA147 RA091 8.9 RA092 -27. + 1CA147 RA007 -.897 RA026 -.103 + 1CA147 RA036 .0002 RA048 1. + 1CA147 RA057 -.165 RA089 13.86 + 1CA147 RA090 -14.67 RA091 7.7 + 1CA147 RA092 -4. + CA148 RA007 -1. RA051 1. + CA148 RA093 15.26 RA094 -16.07 + CA148 RA095 .4 RA096 -18. + 1CA148 RA007 -.897 RA026 -.103 + 1CA148 RA036 .0002 RA051 1. + 1CA148 RA057 -.165 RA093 13.86 + 1CA148 RA094 -14.67 RA095 -.8 + 1CA148 RA096 5. + CA154 R0000 .01 2RA005 1.008 + CA154 RA009 .241 RA011 .056 + CA154 RA012 .028 RA013 .065 + CA154 RA015 .077 RA017 .051 + CA154 RA019 .464 RA035 .018 + CA154 RA036 -.0316 RA055 1.17 + CA154 1RA055 1.17 + CA155 RA034 -1. RA048 1. + CA155 RA089 -11.76 RA090 10.95 + CA155 RA091 -4.5 RA092 -5. + CA156 RA034 -1. RA051 1. + CA156 RA093 -11.76 RA094 10.95 + CA156 RA095 -13. RA096 4. + CA157 RA034 -1. RA036 1. + CA158 RA039 -1. RA064 -2.684 + CA158 RA065 -1.61 RA097 1. + CA166 RA040 -1. RA066 5.4 + CA166 RA069 -1.379 RA070 -1.655 + CA166 1RA099 1. + CA168 RA028 -1. RA038 .98 + CB001 RB001 1.01 1RB005 .004 + CB001 RB006 .01 RB007 .028 + CB001 RB008 .135 RB010 .085 + CB001 RB012 .11 RB013 .09 + CB001 RB022 .23 RB031 -.038 + CB001 1RB031 .003 RB051 .3 + CB001 RB057 1. RB091 .405 + CB001 RB092 -1.056 1RB092 -1.8 + CB001 RB093 -.174 1RB093 -4.95 + CB001 RB101 .969 + 2CB001 RB001 1.01 1RB005 .004 + 2CB001 RB006 .01 RB007 .028 + 2CB001 RB008 .135 RB010 .085 + 2CB001 RB012 .11 RB013 .09 + 2CB001 RB022 .23 RB031 -.038 + 2CB001 1RB031 .003 1RB053 .3 + 2CB001 RB057 1. RB101 .969 + 2CB001 RB102 .633 RB103 -1.16 + 2CB001 RB104 -4.8 RB105 -.174 + 2CB001 RB106 -.45 + CB002 RB004 1.01 RB006 .003 + CB002 2RB007 .075 2RB008 .076 + CB002 RB010 .095 RB012 .14 + CB002 RB015 .13 RB022 .169 + CB002 RB025 .311 RB031 -.021 + CB002 1RB031 .001 RB058 1. + CB002 1RB058 1. RB099 .075 + CB002 RB101 1.012 UKLDF -.075 + 1CB002 RB001 1.01 1RB005 .004 + 1CB002 RB006 .01 RB007 .018 + 1CB002 RB008 .145 RB009 .044 + 1CB002 RB011 .151 RB013 .09 + 1CB002 RB016 .035 RB018 .5 + 1CB002 RB031 -.026 1RB031 .003 + 1CB002 RB058 1. 1RB058 1. + 1CB002 RB101 .969 + CB003 RB004 1.01 RB006 .003 + CB003 1RB007 .011 3RB008 .14 + CB003 RB010 .095 RB012 .14 + CB003 RB015 .13 RB022 .166 + CB003 RB025 .311 RB031 -.054 + CB003 1RB031 .001 RB057 1. + CB003 RB101 1.012 + 1CB003 RB004 1.01 RB006 .003 + 1CB003 1RB007 .011 3RB008 .14 + 1CB003 RB010 .095 RB012 .14 + 1CB003 RB015 .13 RB022 .169 + 1CB003 RB025 .311 RB031 -.021 + 1CB003 1RB031 .001 RB058 1. + 1CB003 1RB058 1. RB100 -.56 + 1CB003 RB101 1.012 + 2CB003 RB003 1.01 1RB005 .002 + 2CB003 RB006 .012 RB007 .056 + 2CB003 RB008 .089 RB010 .076 + 2CB003 RB012 .09 1RB013 .1 + 2CB003 RB016 .032 1RB020 .541 + 2CB003 RB031 -.023 1RB031 .002 + 2CB003 RB058 1. 1RB058 1. + 2CB003 RB101 1.021 + 1CB004 1RB001 1.01 RB006 .008 + 1CB004 2RB007 .1 2RB008 .09 + 1CB004 RB009 .047 RB011 .161 + 1CB004 1RB013 .09 1RB016 .04 + 1CB004 1RB018 .463 RB031 -.025 + 1CB004 1RB031 .001 RB058 1. + 1CB004 RB099 .1 RB101 .969 + 1CB004 UKLDF -.1 + 2CB004 1RB001 1.01 RB006 .008 + 2CB004 1RB007 .047 1RB008 .143 + 2CB004 RB009 .047 RB011 .161 + 2CB004 1RB013 .09 1RB016 .04 + 2CB004 1RB018 .463 RB031 -.0251 + 2CB004 1RB031 .001 RB058 1. + 2CB004 RB101 .969 + 1CB005 RB002 1.01 1RB005 .004 + 1CB005 RB006 .011 1RB007 .04 + 1CB005 1RB008 .102 RB009 .035 + 1CB005 RB011 .121 1RB013 .083 + 1CB005 1RB016 .04 RB019 .56 + 1CB005 RB031 -.023 1RB031 .004 + 1CB005 RB058 1. RB101 1. + 2CB005 RB002 1.01 1RB005 .004 + 2CB005 RB006 .011 2RB007 .077 + 2CB005 2RB008 .065 RB009 .035 + 2CB005 RB011 .121 1RB013 .083 + 2CB005 1RB016 .04 RB019 .56 + 2CB005 RB031 -.023 1RB031 .004 + 2CB005 RB058 1. RB099 .077 + 2CB005 RB101 1. UKLDF -.077 + CB006 RB005 1.01 1RB005 .001 + CB006 RB006 .004 1RB007 .024 + CB006 RB008 .073 RB010 .059 + CB006 RB012 .083 RB014 .096 + CB006 RB020 .509 RB022 .146 + CB006 RB031 -.038 1RB031 .001 + CB006 RB057 1. RB101 1.05 + 1CB006 RB005 1.01 1RB005 .001 + 1CB006 RB006 .004 1RB007 .024 + 1CB006 RB008 .073 RB010 .059 + 1CB006 RB012 .083 RB014 .096 + 1CB006 RB020 .659 RB031 -.021 + 1CB006 1RB031 .001 RB058 1. + 1CB006 1RB058 1. RB101 1.05 + 2CB006 1RB005 -1. 2RB005 1. + 3CB006 RB005 1.01 1RB005 .001 + 3CB006 RB006 .004 2RB007 .071 + 3CB006 2RB008 .026 RB010 .059 + 3CB006 RB012 .083 RB014 .096 + 3CB006 RB020 .659 RB031 -.021 + 3CB006 1RB031 .001 RB058 1. + 3CB006 1RB058 1. RB099 .071 + 3CB006 RB101 1.05 UKLDF -.071 + CB007 1RB004 1.01 RB006 .005 + CB007 1RB007 .025 3RB008 .058 + CB007 RB010 .06 RB012 .07 + CB007 1RB015 .311 1RB025 .47 + CB007 RB031 -.026 1RB031 .001 + CB007 RB058 1. 1RB058 1. + CB007 RB101 1.012 + 1CB007 1RB004 1.01 RB006 .005 + 1CB007 2RB007 .06 2RB008 .023 + 1CB007 RB010 .06 RB012 .07 + 1CB007 1RB015 .311 1RB025 .47 + 1CB007 RB031 -.026 1RB031 .001 + 1CB007 RB058 1. 1RB058 1. + 1CB007 RB099 .06 RB101 1.012 + 1CB007 UKLDF -.06 + 2CB007 R0000 100. 1RB005 1. + 2CB008 R0000 7.5 2RB005 1. + 2CB009 RB006 -1. 1RB031 1. + 2CB010 1RB006 -1. 1RB031 1. + CB011 RB009 -.227 RB010 .461 + CB011 RB011 -.773 RB012 .539 + 2CB012 R0000 7. 1RB006 1. + 1CB013 1RB007 -1. 2RB007 1. + 1CB013 RB099 1. UKLDF -1. + 2CB013 RB031 1.16 1RB031 -1. + 3CB013 R0000 .221 RB007 -1. + 3CB013 RB031 -.067 RB034 .96 + 3CB013 RB063 1.143 RB064 30.51 + 3CB013 RB065 -70.73 RB066 45.47 + 3CB013 RB067 -.404 + 1CB014 RB007 1. 1RB007 -1. + 2CB014 RB009 -.046 RB010 -.622 + 2CB014 RB011 -.288 RB013 -.08 + 2CB014 2RB040 1. + 3CB014 R0000 .097 RB007 -1. + 3CB014 RB031 -.067 RB036 .96 + 3CB014 RB063 1.143 RB068 17.03 + 3CB014 RB069 -70.73 RB070 45.47 + 3CB014 RB071 -.647 + CB015 RB007 -1. RB038 1. + CB015 UKLDF -1. + 1CB015 RB007 -.5 2RB008 -.5 + 1CB015 RB038 1. UKLDF -1. + 2CB015 RB009 -.046 RB010 -.622 + 2CB015 RB011 -.288 1RB013 -.08 + 2CB015 2RB040 1. + 1CB016 RB007 -1. RB031 -.067 + 1CB016 RB039 .96 RB063 1.143 + 1CB016 RB072 16.7 RB073 -10.46 + 1CB016 RB074 -33.6 + 2CB016 2RB005 -1. 1RB031 1. + CB017 RB007 -1. RB031 1.11 + 2CB017 2RB005 -.1 RB006 -.9 + 2CB017 1RB006 1. + CB018 R0000 .087 3RB008 -1. + CB018 RB036 .99 RB068 14.05 + CB018 RB069 23.7 RB070 -31.1 + CB018 RB071 -.588 + 1CB018 RB007 -.4 3RB008 -.6 + 1CB018 RB038 1. UKLDF -1. + CB019 RB007 -.4 RB008 -.6 + CB019 RB038 1. UKLDF -1. + 1CB019 RB007 -.4 1RB008 -.6 + 1CB019 RB038 1. UKLDF -1. + CB020 3RB008 -1. RB039 .99 + CB020 RB072 -.396 RB073 .54 + CB020 RB074 -34.65 + 1CB020 RB008 -1. RB031 -.067 + 1CB020 RB039 .98 RB063 1.667 + 1CB020 RB072 2.06 RB073 .539 + 1CB020 RB074 -34.3 + 2CB020 1RB008 -1. RB031 -.067 + 2CB020 RB039 .98 RB063 1. + 2CB020 RB072 3.92 RB073 .539 + 2CB020 RB074 -34.3 + CB021 R0000 .088 RB008 -1. + CB021 RB031 -.067 RB036 .98 + CB021 RB063 1.667 RB068 21.58 + CB021 RB069 14.56 RB070 -30.46 + CB021 RB071 -.593 + 1CB021 R0000 .089 1RB008 -1. + 1CB021 RB031 -.067 RB036 .98 + 1CB021 RB063 1. RB068 21.88 + 1CB021 RB069 14.76 RB070 -30.87 + 1CB021 RB071 -.601 + 2CB021 RB030 -1. 2RB030 1. + 2CB022 1RB030 -1. 2RB030 1. + CB029 RB008 -1. RB031 1.11 + 1CB029 1RB008 -1. RB031 1.11 + 2CB029 2RB008 -1. RB031 1.1 + 2CB030 R0000 .056 2RB005 .036 + 2CB030 RB006 .052 RB007 .029 + 2CB030 RB008 -1. RB024 .765 + 2CB030 RB031 .027 1RB031 .009 + 2CB030 RB060 1. + 2CB031 R0000 .094 2RB005 .044 + 2CB031 RB006 .075 RB007 .029 + 2CB031 RB008 -1. 1RB024 .714 + 2CB031 RB031 .027 1RB031 .024 + 2CB031 RB060 1. + 1CB032 R0000 .058 2RB005 .017 + 1CB032 RB006 .024 RB007 .029 + 1CB032 3RB008 -1. RB024 .861 + 1CB032 RB031 .027 1RB031 -.04 + 1CB032 RB060 1.712 + 2CB032 R0000 .06 2RB005 .046 + 2CB032 RB006 .077 1RB007 .029 + 2CB032 1RB008 -1. RB024 .706 + 2CB032 RB031 .027 1RB031 .033 + 2CB032 RB060 1.022 + 1CB033 R0000 .096 2RB005 .026 + 1CB033 RB006 .044 RB007 .029 + 1CB033 3RB008 -1. 1RB024 .81 + 1CB033 RB031 .027 1RB031 -.023 + 1CB033 RB060 1.712 + 2CB033 R0000 .1 2RB005 .055 + 2CB033 RB006 .101 1RB007 .029 + 2CB033 1RB008 -1. 1RB024 .65 + 2CB033 RB031 .027 1RB031 .051 + 2CB033 RB060 1.022 + CB034 RB009 -1. RB039 .97 + CB034 RB072 -3.01 RB073 1.84 + CB034 RB074 -33.95 + 1CB034 R0000 .213 2RB005 .034 + 1CB034 RB006 .0415 1RB007 .01 + 1CB034 2RB008 -1. RB031 .037 + 1CB034 1RB031 .004 RB034 .7925 + 1CB034 RB060 .9915 RB064 3.7 + 1CB034 RB065 7.773 RB066 -10.527 + 1CB034 RB067 -.287 + 2CB034 R0000 .22 2RB005 .028 + 2CB034 RB006 .022 RB007 .01 + 2CB034 RB008 -.766 RB009 -.234 + 2CB034 RB031 .037 1RB031 -.012 + 2CB034 RB034 .834 RB060 .983 + 2CB034 RB064 3.86 RB065 9.648 + 2CB034 RB066 -11.888 RB067 -.3 + 1CB035 R0000 .0585 2RB005 .034 + 1CB035 RB006 .0415 1RB007 .01 + 1CB035 2RB008 -1. RB026 .355 + 1CB035 RB027 .4375 RB031 .0255 + 1CB035 1RB031 .004 RB060 .9915 + 2CB035 R0000 .058 2RB005 .028 + 2CB035 RB006 .022 RB007 .01 + 2CB035 RB008 -.766 RB009 -.234 + 2CB035 RB026 .374 RB027 .46 + 2CB035 RB031 .025 1RB031 -.012 + 2CB035 RB060 .983 + 1CB036 R0000 .239 2RB005 .0435 + 1CB036 RB006 .064 1RB007 .01 + 1CB036 2RB008 -1. RB031 .037 + 1CB036 1RB031 .0225 RB034 .737 + 1CB036 RB060 .9915 RB064 -.2815 + 1CB036 RB065 5.696 RB066 -8.554 + 1CB036 RB067 -.263 + 2CB036 R0000 .248 2RB005 .035 + 2CB036 RB006 .04 RB007 .01 + 2CB036 RB008 -.766 RB009 -.234 + 2CB036 RB031 .037 1RB031 .001 + 2CB036 RB034 .791 RB060 .983 + 2CB036 RB064 -.3 RB065 7.007 + 2CB036 RB066 -10.218 RB067 -.28 + 1CB037 R0000 .098 2RB005 .0435 + 1CB037 RB006 .064 1RB007 .01 + 1CB037 2RB008 -1. RB026 .2375 + 1CB037 RB027 .4995 RB031 .026 + 1CB037 1RB031 .0225 RB060 .9915 + 2CB037 R0000 .097 2RB005 .035 + 2CB037 RB006 .04 RB007 .01 + 2CB037 RB008 -.766 RB009 -.234 + 2CB037 RB026 .255 RB027 .536 + 2CB037 RB031 .025 1RB031 .001 + 2CB037 RB060 .983 + 2CB038 R0000 .207 2RB005 .04 + 2CB038 RB006 .061 1RB007 .01 + 2CB038 1RB008 -.676 RB009 -.324 + 2CB038 RB031 .037 1RB031 .02 + 2CB038 RB034 .751 RB060 1. + 2CB038 RB064 3.54 RB065 5.898 + 2CB038 RB066 -9.167 RB067 -.275 + CB039 RB010 -1. RB039 .97 + CB039 RB072 -5.43 RB073 1.73 + CB039 RB074 -33.95 + 1CB039 RB010 -1. RB047 1. + 1CB039 RB081 3. RB082 -24.5 + 1CB039 RB083 -9.22 RB084 .3 + 1CB039 RB085 23.573 RB086 11.42 + 2CB039 R0000 .059 2RB005 .04 + 2CB039 RB006 .061 1RB007 .01 + 2CB039 1RB008 -.676 RB009 -.324 + 2CB039 RB026 .336 RB027 .415 + 2CB039 RB031 .026 1RB031 .02 + 2CB039 RB060 1. + CB040 RB010 -1. RB012 .034 + CB040 RB031 .025 RB040 .88 + 1CB040 RB010 -1. RB045 1. + 1CB040 RB075 2.2 RB076 -9. + 1CB040 RB077 -9.22 RB078 .3 + 1CB040 RB079 23.573 RB080 -10. + 2CB040 R0000 .231 2RB005 .052 + 2CB040 RB006 .088 1RB007 .01 + 2CB040 1RB008 -.676 RB009 -.324 + 2CB040 RB031 .037 1RB031 .044 + 2CB040 RB034 .683 RB060 1. + 2CB040 RB064 -.263 RB065 4.385 + 2CB040 RB066 -6.89 RB067 -.246 + CB041 RB008 .049 RB009 -.194 + CB041 RB010 -.15 RB011 -.704 + CB041 RB042 .965 + 2CB041 R0000 .099 2RB005 .052 + 2CB041 RB006 .088 1RB007 .01 + 2CB041 1RB008 -.676 RB009 -.324 + 2CB041 RB026 .22 RB027 .463 + 2CB041 RB031 .027 1RB031 .044 + 2CB041 RB060 1. + CB043 RB009 -.227 RB011 -.773 + CB043 RB012 .2 RB031 -.027 + CB043 RB041 .772 RB062 1. + CB044 RB009 -.227 RB011 -.773 + CB044 RB045 1. RB075 3.3 + CB044 RB076 -9.1 RB077 -7.2 + CB044 RB078 -1.2 RB079 6.36 + CB044 RB080 -10. + CB045 RB009 -.227 RB011 -.773 + CB045 RB047 1. RB081 4.1 + CB045 RB082 -24.6 RB083 -7.2 + CB045 RB084 -1.2 RB085 6.36 + CB045 RB086 8.8 + CB046 RB009 -.227 RB011 -.773 + CB046 RB046 1. 1RB050 1. + CB046 RB087 -22.9 1RB087 21.4 + CB046 RB088 -29.7 RB089 5.097 + CB046 RB090 -25. 1RB090 -31. + CB047 RB009 -.227 RB011 -.773 + CB047 RB051 1. RB091 -30.43 + CB047 RB092 29.26 1RB092 -67. + CB047 RB093 5.097 1RB093 -37.7 + 1CB047 RB009 -.227 RB011 -.773 + 1CB047 1RB053 1. RB102 -29.67 + 1CB047 RB103 27.92 RB104 -77. + 1CB047 RB105 5.097 RB106 -22.7 + CB048 RB009 -.227 RB011 -.773 + CB048 RB053 1. RB094 -31.3 + CB048 RB095 30.59 RB096 -17.7 + CB048 RB097 -83. + CB049 RB011 -1. RB039 .97 + CB049 RB072 -8.54 RB073 1.55 + CB049 RB074 63.05 + CB051 RB011 -1. RB012 .2 + CB051 RB031 -.027 RB041 .772 + CB051 RB062 1. + CB052 RB011 -1. RB045 1. + CB052 RB075 2.5 RB076 -9.1 + CB052 RB077 -6.9 RB078 -1.2 + CB052 RB079 2.069 RB080 -10. + CB053 RB011 -1. RB047 1. + CB053 RB081 3.3 RB082 -24.5 + CB053 RB083 -6.9 RB084 -1.2 + CB053 RB085 2.069 RB086 8.8 + CB054 RB011 -1. RB046 1. + CB054 1RB050 1. RB087 -22.69 + CB054 1RB087 21.19 RB088 -29.4 + CB054 RB089 2.069 RB090 -25. + CB054 1RB090 -31. + CB055 RB011 -1. RB051 1. + CB055 RB091 -30.22 RB092 29.05 + CB055 1RB092 -67. RB093 2.069 + CB055 1RB093 -37.4 + 1CB055 RB011 -1. 1RB053 1. + 1CB055 RB102 -29.46 RB103 27.71 + 1CB055 RB104 -77. RB105 2.069 + 1CB055 RB106 -22.4 + CB056 RB011 -1. RB053 1. + CB056 RB094 -29.9 RB095 29.19 + CB056 RB096 -17.4 RB097 -83. + 1CB057 RB012 -.865 RB031 -.027 + 1CB057 RB041 .386 1RB043 .386 + 1CB057 RB062 2. + 2CB057 RB010 -1. RB012 .216 + 2CB057 RB031 -.012 RB040 .364 + 2CB057 1RB040 .364 RB062 1.82 + CB058 RB012 -1. RB045 1. + CB058 RB075 1. RB076 -9. + CB058 RB077 -6.1 RB078 -1.2 + CB058 RB079 1.52 RB080 -10. + CB059 RB012 -1. RB047 1. + CB059 RB081 1.8 RB082 -24.1 + CB059 RB083 -6.1 RB084 -1.2 + CB059 RB085 1.52 RB086 7.42 + CB060 RB012 -1. RB046 1. + CB060 1RB050 1. RB087 -22.69 + CB060 1RB087 21.19 RB088 -28.6 + CB060 RB089 1.52 RB090 -25. + CB060 1RB090 -31. + CB061 RB012 -1. RB051 1. + CB061 RB091 -30.22 RB092 29.05 + CB061 1RB092 -67. RB093 1.52 + CB061 1RB093 -36.6 + 1CB061 RB012 -1. 1RB053 1. + 1CB061 RB102 -29.46 RB103 27.71 + 1CB061 RB104 -77. RB105 1.52 + 1CB061 RB106 -21.6 + CB062 RB012 -1. RB053 1. + CB062 RB094 -27.9 RB095 27.19 + CB062 RB096 -16.6 RB097 -83. + CB063 RB013 -1. RB045 1. + CB063 RB075 -3.4 RB076 12.9 + CB063 RB077 -1.5 RB078 -.25 + CB063 RB079 -4.15 RB080 -10. + 1CB063 1RB013 -1. RB045 1. + 1CB063 RB075 -2.7 RB076 7.6 + 1CB063 RB077 2.4 RB078 -.25 + 1CB063 RB079 -4.07 RB080 -10. + CB064 RB013 -1. RB047 1. + CB064 RB081 -2.6 RB082 -1.7 + CB064 RB083 -1.5 RB084 -.25 + CB064 RB085 -4.15 RB086 2.16 + 1CB064 1RB013 -1. RB047 1. + 1CB064 RB081 -1.9 RB082 -7.1 + 1CB064 RB083 2.4 RB084 -.25 + 1CB064 RB085 -4.07 RB086 2.16 + CB065 RB013 -1. RB046 1. + CB065 1RB050 1. RB087 -14.9 + CB065 1RB087 13.4 RB088 -26. + CB065 RB089 -4.41 RB090 -25. + CB065 1RB090 -22. + 1CB065 1RB013 -1. RB046 1. + 1CB065 1RB050 1. RB087 -14.9 + 1CB065 1RB087 13.4 RB088 -23.3 + 1CB065 RB089 -4.41 RB090 -25. + 1CB065 1RB090 -22. + CB066 RB014 -1. RB045 1. + CB066 RB075 -6.1 RB076 19. + CB066 RB077 -1. RB078 .2 + CB066 RB079 -3.959 RB080 -10. + CB067 RB014 -1. RB047 1. + CB067 RB081 -5.3 RB082 4.6 + CB067 RB083 -1. RB084 .2 + CB067 RB085 -3.959 RB086 -2.33 + CB068 RB014 -1. RB046 1. + CB068 1RB050 1. RB087 -12.03 + CB068 1RB087 10.53 RB088 -23. + CB068 RB089 -3.959 RB090 -25. + CB068 1RB090 -17. + CB069 RB015 -1. RB045 1. + CB069 RB075 -5.3 RB076 14.4 + CB069 RB077 -8.3 RB078 .3 + CB069 RB079 -3.43 RB080 -10. + 1CB069 RB012 -.174 RB013 -.16 + 1CB069 RB014 -.186 RB015 -.4 + 1CB069 RB016 -.08 RB031 -.025 + 1CB069 1RB045 1. + 3CB069 RB012 -.25 1RB013 -.15 + 3CB069 RB014 -.15 RB015 -.4 + 3CB069 1RB016 -.05 RB031 -.025 + 3CB069 1RB045 1. + CB070 RB015 -1. RB047 1. + CB070 RB081 -4.5 RB083 -8.3 + CB070 RB084 .3 RB085 -3.43 + CB070 RB086 -2.05 + 1CB070 1RB015 -1. RB045 1. + 1CB070 RB075 -8.9 RB076 -.6 + 1CB070 RB077 -7.8 RB078 1.6 + 1CB070 RB079 -3.43 RB080 -10. + 2CB070 1RB015 -1. RB047 1. + 2CB070 RB081 -8.1 RB082 -14.6 + 2CB070 RB083 -7.8 RB084 1.6 + 2CB070 RB085 -3.43 RB086 -1.76 + CB071 RB015 -1. RB046 1. + CB071 1RB050 1. RB087 -12.24 + CB071 1RB087 10.74 RB088 -29.9 + CB071 RB089 -3.526 RB090 -25. + CB071 1RB090 -18. + 1CB071 2RB015 -1. RB045 1. + 1CB071 RB075 .1 RB076 19.4 + 1CB071 RB077 -8.7 RB078 -1.8 + 1CB071 RB079 -4.41 RB080 -5. + 2CB071 2RB015 -1. RB047 1. + 2CB071 RB081 .9 RB082 5.5 + 2CB071 RB083 -8.7 RB084 -1.8 + 2CB071 RB085 -4.41 RB086 .7 + CB072 RB015 -1. RB051 1. + CB072 RB091 -19.77 RB092 18.6 + CB072 1RB092 -54. RB093 -3.526 + CB072 1RB093 -39.06 + 1CB072 RB015 -1. 1RB053 1. + 1CB072 RB102 -19.01 RB103 17.26 + 1CB072 RB104 -64. RB105 -3.526 + 1CB072 RB106 -24.06 + CB073 RB015 -1. RB053 1. + CB073 RB094 -20.57 RB095 19.86 + CB073 RB096 -19.1 RB097 -70. + CB074 RB016 -1. RB047 1. + CB074 RB081 -5.3 RB082 120.2 + CB074 RB083 4. RB084 -.3 + CB074 RB085 -3.56 RB086 -2.05 + 1CB074 1RB016 -1. RB047 1. + 1CB074 RB081 -6. RB082 119.5 + 1CB074 RB083 9.8 RB084 -.45 + 1CB074 RB085 -3.56 RB086 -2.6 + CB075 RB016 -1. RB051 1. + CB075 RB091 -19.77 RB092 18.6 + CB075 1RB092 -32. RB093 -3.856 + CB075 1RB093 -29. + 1CB075 1RB016 -1. RB051 1. + 1CB075 RB091 -19.19 RB092 18.02 + 1CB075 1RB092 -32. RB093 -3.856 + 1CB075 1RB093 -24. + 2CB075 RB016 -1. 1RB053 1. + 2CB075 RB102 -19.01 RB103 17.26 + 2CB075 RB104 -42. RB105 -3.856 + 2CB075 RB106 -14. + 3CB075 1RB016 -1. 1RB053 1. + 3CB075 RB102 -18.43 RB103 16.68 + 3CB075 RB104 -42. RB105 -3.856 + 3CB075 RB106 -9. + CB076 R0000 .095 2RB005 .028 + CB076 RB006 .08 RB016 -1. + CB076 RB028 .126 RB029 .155 + CB076 RB030 .405 RB031 -.051 + CB076 1RB031 .087 RB051 .058 + CB076 RB061 1.467 RB091 -1.269 + CB076 RB092 1.2 1RB092 3.2 + CB076 RB093 -.164 1RB093 -1.288 + 1CB076 R0000 .095 2RB005 .032 + 1CB076 RB006 .068 1RB016 -1. + 1CB076 RB028 .126 RB029 .155 + 1CB076 1RB030 .405 RB031 -.051 + 1CB076 1RB031 .095 RB051 .058 + 1CB076 RB061 1.467 RB091 -1.269 + 1CB076 RB092 1.2 1RB092 3.2 + 1CB076 RB093 -.164 1RB093 -1.288 + CB077 RB025 -1. RB051 1. + CB077 RB091 -2.61 RB092 1.44 + CB077 1RB092 82. RB093 -.643 + CB077 1RB093 -35.8 + 1CB077 RB025 -1. 1RB053 1. + 1CB077 RB102 -1.85 RB103 .1 + 1CB077 RB104 72. RB105 -.643 + 1CB077 RB106 -20.8 + CB078 1RB025 -1. RB053 1. + CB078 RB095 -.71 RB096 -15. + CB078 RB097 -10. + 1CB078 1RB025 -1. RB051 1. + 1CB078 RB091 -.76 RB092 -.41 + 1CB078 1RB092 6. RB093 -.643 + 1CB078 1RB093 -35. + 2CB078 2RB025 -1. RB051 1. + 2CB078 RB091 -1.52 RB092 .35 + 2CB078 1RB092 25.7 RB093 -.803 + 2CB078 1RB093 -36. + 3CB078 2RB025 -1. RB053 1. + 3CB078 RB094 -.76 RB095 .05 + 3CB078 RB096 -16. RB097 9.7 + 4CB078 1RB025 -1. 1RB053 1. + 4CB078 RB103 -1.75 RB104 -4. + 4CB078 RB105 -.643 RB106 -20. + CB079 1RB020 -1. RB053 1. + CB079 RB094 1.34 RB095 -2.05 + CB079 RB096 5.4 RB097 -15. + 1CB079 2RB025 -1. 1RB053 1. + 1CB079 RB102 -.76 RB103 -.99 + 1CB079 RB104 15.7 RB105 -.803 + 1CB079 RB106 -21. + CB080 1RB020 -1. RB051 1. + CB080 RB091 .58 RB092 -1.75 + CB080 1RB092 1. RB093 -1.93 + CB080 1RB093 -14.6 + 1CB080 1RB020 -1. 1RB053 1. + 1CB080 RB102 1.34 RB103 -3.09 + 1CB080 RB104 -9. RB105 -1.93 + 1CB080 RB106 .4 + CB081 RB018 -1. RB051 1. + CB081 RB091 -2.41 RB092 1.24 + CB081 1RB092 1. RB093 -.803 + CB081 1RB093 -18. + 1CB081 1RB018 -1. RB051 1. + 1CB081 RB091 -2.05 RB092 .88 + 1CB081 1RB092 -7. RB093 -.803 + 1CB081 1RB093 -4. + 2CB081 RB019 -1. RB051 1. + 2CB081 RB091 -.03 RB092 -1.14 + 2CB081 1RB092 -11. RB093 -.803 + 2CB081 1RB093 -.7 + 3CB081 RB018 -1. 1RB053 1. + 3CB081 RB102 -1.41 RB103 -.34 + 3CB081 RB104 -9. RB105 -.803 + 3CB081 RB106 -3. + 4CB081 1RB018 -1. 1RB053 1. + 4CB081 RB102 -1.32 RB103 -.43 + 4CB081 RB104 -14. RB105 -.803 + 4CB081 RB106 11. + CB082 RB018 -1. RB053 1. + CB082 RB094 -1.65 RB095 .94 + CB082 RB096 2. RB097 -15. + 1CB082 1RB018 -1. RB053 1. + 1CB082 RB094 -1.29 RB095 .58 + 1CB082 RB096 16. RB097 -23. + 2CB082 RB019 -1. RB053 1. + 2CB082 RB094 .73 RB095 -1.44 + 2CB082 RB096 19.3 RB097 -27. + 3CB082 RB019 -1. 1RB053 1. + 3CB082 RB102 .73 RB103 -2.48 + 3CB082 RB104 -21. RB105 -.803 + 3CB082 RB106 14.3 + 1CB083 1RB018 -1. 1RB021 .059 + 1CB083 1RB022 .358 1RB023 .42 + 1CB083 1RB030 -.054 RB031 -.075 + 1CB083 RB048 .135 RB051 .1 + 1CB083 RB059 1.026 RB091 -.374 + 1CB083 RB092 .162 1RB092 4.3 + 1CB083 RB093 -.159 1RB093 .996 + 2CB083 RB019 -1. 1RB021 .063 + 2CB083 1RB022 .317 1RB023 .484 + 2CB083 1RB030 -.063 RB031 -.074 + 2CB083 RB048 .135 RB051 .082 + 2CB083 RB059 1.025 RB091 -.317 + 2CB083 RB092 .115 1RB092 3.5 + 2CB083 RB093 -.156 1RB093 1.232 + 1CB085 1RB018 -1. 1RB021 .057 + 1CB085 1RB022 .308 1RB023 .396 + 1CB085 1RB030 -.06 RB031 -.094 + 1CB085 RB048 .189 RB051 .14 + 1CB085 RB059 1.036 RB091 -.524 + 1CB085 RB092 .361 1RB092 6. + 1CB085 RB093 -.223 1RB093 1.4 + 2CB085 RB019 -1. 1RB021 .061 + 2CB085 1RB022 .273 1RB023 .456 + 2CB085 1RB030 -.07 RB031 -.094 + 2CB085 RB048 .193 RB051 .117 + 2CB085 RB059 1.036 RB091 -.453 + 2CB085 RB092 .316 1RB092 5. + 2CB085 RB093 -.223 1RB093 1.76 + CB086 RB016 -1. RB045 1. + CB086 RB075 -6.1 RB076 134.6001 + CB086 RB077 4. RB078 -.3 + CB086 RB079 -3.56 RB080 -10. + 1CB086 1RB016 -1. RB045 1. + 1CB086 RB075 -6.8 RB076 133.699999 + 1CB086 RB077 9.8 RB078 -.45 + 1CB086 RB079 -3.56 RB080 -10. + CB089 RB018 -1. RB046 1. + CB089 1RB050 1. RB087 5.4 + CB089 1RB087 -6.9 RB088 -10. + CB089 RB089 -.803 RB090 75. + CB089 1RB090 37. + CB090 1RB018 -1. RB046 1. + CB090 1RB050 1. RB087 5.59 + CB090 1RB087 -7.09 RB088 4. + CB090 RB089 -.803 RB090 75. + CB090 1RB090 29. + 1CB090 RB019 -1. RB046 1. + 1CB090 1RB050 1. RB087 7.64 + 1CB090 1RB087 -9.04 RB088 7.3 + 1CB090 RB089 -.803 RB090 75. + 1CB090 1RB090 25. + CB091 RB011 -.018 RB020 -1. + CB091 1RB021 .055 RB022 .359 + CB091 RB031 -.046 2RB049 .222 + CB091 RB051 .364 RB091 3.83 + CB091 RB092 -4.26 1RB092 -12.7 + CB091 RB093 -.234 1RB093 -4.11 + CB092 RB020 -1. RB046 1. + CB092 1RB050 1. RB087 8.97 + CB092 1RB087 -10.47 RB088 -8.5 + CB092 RB089 -.803 RB090 -25. + CB092 1RB090 15. + CB093 RB020 -1. RB051 1. + CB093 RB091 1.3 RB092 -2.47 + CB093 1RB092 -21. RB093 -.803 + CB093 1RB093 -16.5 + 1CB093 RB020 -1. 1RB053 1. + 1CB093 RB102 2.06 RB103 -3.81 + 1CB093 RB104 -31. RB105 -.803 + 1CB093 RB106 -1.5 + CB094 RB020 -1. RB053 1. + CB094 RB094 2.06 RB095 -2.77 + CB094 RB096 3.5 RB097 -37. + 2CB097 R0000 .095 2RB005 .021 + 2CB097 RB006 .065 RB022 -1. + 2CB097 RB028 .139 RB029 .171 + 2CB097 RB030 .278 RB031 -.036 + 2CB097 1RB031 .06 RB051 .207 + 2CB097 RB061 1. RB091 -2.637 + 2CB097 RB092 2.395 1RB092 4.1 + 2CB097 RB093 -.406 1RB093 -4.93 + 2CB098 R0000 .095 2RB005 .021 + 2CB098 RB006 .065 RB022 -1. + 2CB098 RB028 .139 RB029 .171 + 2CB098 RB030 .278 RB031 .102 + 2CB098 1RB031 .06 RB051 .069 + 2CB098 RB061 1. RB091 -.574 + 2CB098 RB092 .493 1RB092 3.9 + 2CB098 1RB093 -1.53 + 3CB098 1RB021 -1. 1RB053 1. + 3CB098 RB102 -17.62 RB103 15.87 + 3CB098 RB104 -47. RB105 -3.404 + 3CB098 RB106 -5.2 + 2CB099 R0000 .095 2RB005 .031 + 2CB099 RB006 .082 RB022 -1. + 2CB099 RB028 .15 RB029 .185 + 2CB099 RB030 .231 RB031 -.036 + 2CB099 1RB031 .082 RB051 .167 + 2CB099 RB061 1.412 RB091 -2.194 + 2CB099 RB092 1.994 1RB092 3.3 + 2CB099 RB093 -.356 1RB093 -3.99 + 1CB100 R0000 .095 2RB005 .024 + 1CB100 RB006 .059 1RB021 -1. + 1CB100 RB028 .125 RB029 .155 + 1CB100 1RB030 .398 RB031 -.051 + 1CB100 1RB031 .085 RB051 .1 + 1CB100 RB061 1. RB091 -2.188 + 1CB100 RB092 2.07 1RB092 5.6 + 1CB100 RB093 -.284 1RB093 -2.34 + 2CB100 R0000 .095 2RB005 .031 + 2CB100 RB006 .082 RB022 -1. + 2CB100 RB028 .15 RB029 .185 + 2CB100 RB030 .231 RB031 .085 + 2CB100 1RB031 .082 RB051 .046 + 2CB100 RB061 1.412 RB091 -.382 + 2CB100 RB092 .329 1RB092 2.6 + 2CB100 1RB093 -1.02 + 1CB101 R0000 .095 2RB005 .036 + 1CB101 RB006 .075 1RB021 -1. + 1CB101 RB028 .136 RB029 .167 + 1CB101 1RB030 .336 RB031 -.051 + 1CB101 1RB031 .106 RB051 .077 + 1CB101 RB061 1.1 RB091 -1.684 + 1CB101 RB092 1.59 1RB092 4.3 + 1CB101 RB093 -.218 1RB093 -1.8 + 2CB101 R0000 .095 2RB005 .024 + 2CB101 RB006 .055 1RB022 -1. + 2CB101 RB028 .139 RB029 .171 + 2CB101 1RB030 .278 RB031 -.036 + 2CB101 1RB031 .065 RB051 .207 + 2CB101 RB061 1. RB091 -2.636 + 2CB101 RB092 2.395 1RB092 4.1 + 2CB101 RB093 -.406 1RB093 -3.79 + CB102 RB022 -1. RB051 1. + CB102 RB091 -9.08 RB092 7.91 + CB102 1RB092 43. RB093 -2.549 + CB102 1RB093 -18. + 1CB102 1RB022 -1. RB051 1. + 1CB102 RB091 -8.42 RB092 7.25 + 1CB102 1RB092 43. RB093 -2.549 + 1CB102 1RB093 -12. + 2CB102 R0000 .095 2RB005 .024 + 2CB102 RB006 .055 1RB022 -1. + 2CB102 RB028 .139 RB029 .171 + 2CB102 1RB030 .278 RB031 .102 + 2CB102 1RB031 .065 RB051 .069 + 2CB102 RB061 1. RB091 -.574 + 2CB102 RB092 .493 1RB092 3.9 + 2CB102 1RB093 -1.1 + 3CB102 RB022 -1. 1RB053 1. + 3CB102 RB102 -8.32 RB103 6.57 + 3CB102 RB104 33. RB105 -2.549 + 3CB102 RB106 -3. + 4CB102 1RB022 -1. 1RB053 1. + 4CB102 RB102 -7.66 RB103 5.91 + 4CB102 RB104 33. RB105 -2.549 + 4CB102 RB106 3. + 2CB103 R0000 .095 2RB005 .035 + 2CB103 RB006 .07 1RB022 -1. + 2CB103 RB028 .15 RB029 .185 + 2CB103 1RB030 .231 RB031 -.036 + 2CB103 1RB031 .088 RB051 .167 + 2CB103 RB061 1.412 RB091 -2.194 + 2CB103 RB092 1.999 1RB092 3.3 + 2CB103 RB093 -.356 1RB093 -3.09 + 2CB104 R0000 .095 2RB005 .035 + 2CB104 RB006 .07 1RB022 -1. + 2CB104 RB028 .15 RB029 .185 + 2CB104 1RB030 .231 RB031 .085 + 2CB104 1RB031 .088 RB051 .046 + 2CB104 RB061 1.412 RB091 -.382 + 2CB104 RB092 .329 1RB092 2.6 + 2CB104 1RB093 -.74 + 1CB105 1RB023 -1. RB046 1. + 1CB105 1RB050 1. RB087 11.93 + 1CB105 1RB087 -14.46 RB088 21. + 1CB105 RB089 -.175 RB090 -25. + 1CB105 1RB090 17. + 1CB106 1RB023 -1. RB051 1. + 1CB106 RB091 4.4 RB092 -5.57 + 1CB106 1RB092 -19. RB093 -.175 + 1CB106 1RB093 13. + CB111 RB025 -1. RB053 1. + CB111 RB094 -1.85 RB095 1.14 + CB111 RB096 -15.8 RB097 66. + CB112 RB053 -.322 RB054 1. + CB112 1RB054 -.678 + 1CB112 1RB025 -.714 RB053 -.286 + 1CB112 RB054 1. + CB113 RB025 -1. 1RB054 1. + CB114 2RB025 -1. 1RB054 1. + 1CB114 1RB025 -1. 1RB054 1. + 2CB114 R0000 .197 RB024 -1. + 2CB114 RB034 1. RB064 4.046 + 2CB114 RB065 -5.22 RB066 -11.403 + 2CB114 RB067 -.365 + 2CB115 R0000 .086 RB024 -1. + 2CB115 RB036 1. RB068 -11.223 + 2CB115 RB069 -5.22 RB070 -11.403 + 2CB115 RB071 -.585 + 2CB116 RB024 -1. RB026 .448 + 2CB116 RB027 .552 RB031 -.016 + CB117 R0000 .222 RB028 -1. + CB117 RB034 .99 RB064 -1.174 + CB117 RB065 -71.8799 RB066 56.63 + CB117 RB067 -.411 + 2CB117 R0000 .194 1RB024 -1. + 2CB117 RB034 1. RB064 -.897 + 2CB117 RB065 1.282 RB066 -7.81 + 2CB117 RB067 -.359 + CB118 R0000 .097 RB028 -1. + CB118 RB036 .99 RB068 -20.098 + CB118 RB069 -71.8799 RB070 56.63 + CB118 RB071 -.657 + 2CB118 R0000 .085 1RB024 -1. + 2CB118 RB036 1. RB068 -17.179 + 2CB118 RB069 1.282 RB070 -7.81 + 2CB118 RB071 -.574 + 1CB119 R0000 .17 RB029 -1. + 1CB119 RB030 .12 RB034 .88 + 1CB119 RB064 1.013 RB065 40.5 + 1CB119 RB066 -32.321 RB067 -.315 + 2CB119 1RB024 -1. RB026 .322 + 2CB119 RB027 .678 RB031 -.016 + CB120 R0000 .074 RB029 -1. + CB120 RB030 .12 RB036 .88 + CB120 RB068 -13.612 RB069 40.5 + CB120 RB070 -32.321 RB071 -.504 + 2CB120 R0000 .224 RB026 -1. + 2CB120 RB034 1. RB064 19.1 + 2CB120 RB065 -69.606899 RB066 28.206 + 2CB120 RB067 -.415 + CB121 R0000 .19 RB029 -1. + CB121 RB034 1. RB064 2.39 + CB121 RB065 52.5 RB066 -37.5 + CB121 RB067 -.352 + 2CB121 R0000 .098 RB026 -1. + 2CB121 RB036 1. RB068 6.664 + 2CB121 RB069 -69.606899 RB070 28.206 + 2CB121 RB071 -.663 + CB122 R0000 .083 RB029 -1. + CB122 RB036 1. RB068 -15.125 + CB122 RB069 52.5 RB070 -37.5 + CB122 RB071 -.56 + 1CB122 2RB007 1. RB026 -1. + 1CB122 RB099 1. UKLDF -1. + 2CB122 RB026 -1. RB038 1. + 2CB122 UKLDF -1. + CB123 RB030 -1. RB045 1. + CB123 RB075 -10.6 RB076 24.3 + CB123 RB077 -8. RB078 1.75 + CB123 RB079 -1.24 RB080 90. + 1CB123 1RB030 -1. RB045 1. + 1CB123 RB075 -9.3 RB076 24.6 + 1CB123 RB077 10.5 RB078 1.75 + 1CB123 RB079 -1.24 RB080 90. + 2CB123 RB026 -1. RB039 1. + 2CB123 RB072 15.148 RB073 -10.588 + 2CB123 RB074 -35. + CB124 RB030 -1. RB047 1. + CB124 RB081 -9.8 RB082 10.6 + CB124 RB083 -8. RB084 1.75 + CB124 RB085 -1.24 RB086 -3.31 + 1CB124 1RB030 -1. RB047 1. + 1CB124 RB081 -8.5 RB082 10.7 + 1CB124 RB083 10.5 RB084 1.75 + 1CB124 RB085 -1.24 RB086 -6.87 + 2CB124 RB026 -1. RB031 1.114 + CB125 RB030 -1. RB046 1. + CB125 1RB050 1. RB087 -10.75 + CB125 1RB087 9.25 RB088 -21. + CB125 RB090 -25. 1RB090 -8. + 1CB125 1RB030 -1. RB046 1. + 1CB125 1RB050 1. RB087 -10.26 + 1CB125 1RB087 8.76 RB088 -11. + 1CB125 RB090 -25. 1RB090 -8. + CB126 RB030 -1. RB051 1. + CB126 RB091 -18.28 RB092 17.11 + CB126 1RB092 -44. 1RB093 -30. + 1CB126 1RB030 -1. RB051 1. + 1CB126 RB091 -17.79 RB092 16.62 + 1CB126 1RB092 -44. 1RB093 -20. + 2CB126 RB030 -1. 1RB053 1. + 2CB126 RB102 -17.52 RB103 15.77 + 2CB126 RB104 -54. RB106 -15. + 3CB126 1RB030 -1. 1RB053 1. + 3CB126 RB102 -17.03 RB103 15.28 + 3CB126 RB104 -54. RB106 -5. + CB127 R0000 .201 RB034 1. + CB127 RB055 1. RB064 1.066 + CB127 RB065 -4.17 RB066 4.86 + CB127 RB067 -.373 + CB128 R0000 .085 RB036 1. + CB128 RB055 1. RB068 -16.666 + CB128 RB069 -4.17 RB070 4.86 + CB128 RB071 -.574 + CB130 R0000 .794 RB064 -11.16 + CB130 RB067 1. + CB131 R0000 .591 RB068 -11.161 + CB131 RB071 1. + CB133 R0000 .356 RB027 -.5 + CB133 RB028 -.505 RB033 1. + 1CB133 R0000 .354 RB024 -.23 + 1CB133 RB027 -.37 RB028 -.404 + 1CB133 RB033 1. + 2CB133 R0000 .355 RB007 -.071 + 2CB133 RB027 -.51 RB028 -.424 + 2CB133 RB033 1. + CB135 RB034 -1. RB035 1. + CB135 RB064 1.745 + CB138 RB036 -1. RB037 1. + CB138 RB068 6.85 + CB139 RB016 -1. RB031 1.051 + 1CB139 1RB016 -1. RB031 1.049 + CB140 RB031 1. RB051 -1. + CB140 RB091 2.1 RB092 -.93 + CB140 1RB093 10. + CB141 RB038 -1. 1RB038 1. + CB142 RB047 -1. 2RB047 1. + CB142 RB083 -2. RB084 -1.3 + CB142 RB086 -7.42 + 1CB142 RB047 -1. 3RB047 1. + 1CB142 RB081 .7 RB082 -27.2 + 1CB142 RB083 -2. RB084 -1.3 + 1CB142 RB086 -7.42 + CB143 RB009 -.68 RB010 1.31 + CB143 RB011 -2.32 RB012 1.69 + CB143 RB013 -.46 RB016 -.54 + CB143 1RB044 1. + 1CB143 RB009 -.72 RB010 1.55 + 1CB143 RB011 -2.47 RB012 1.65 + 1CB143 1RB013 -.38 1RB016 -.63 + 1CB143 1RB044 1. + CB144 4RB045 1. RB047 -1. + CB144 RB081 -.8 RB082 -5.4 + CB144 RB083 2.5 RB084 -.5 + CB144 RB086 -7.42 + CB146 1RB001 1. RB031 1.088 + CB146 RB101 .969 + CB147 RB002 1. RB031 1.081 + CB147 RB101 1. + CB149 RB010 -1. RB031 1.09 + CB150 RB012 -1. RB031 1.08 + CB151 RB031 1.06 RB047 -1. + CBF28 RB050 .933 1RB050 -1. + CBF28 RB051 .067 RB088 2. + CBF28 1RB090 -5. RB091 -.514 + CBF28 RB092 .436 1RB092 -2.5 + CBF28 1RB093 -.67 + 1CBF29 RB051 -.916 1RB051 1. + 1CBF29 1RB053 -.084 RB091 -.35 + 1CBF29 RB092 .38 1RB092 -2.75 + 1CBF29 1RB093 5.5 RB102 .28 + 1CBF29 RB103 -.26 RB104 .59 + 1CBF29 RB106 -.76 + CBF35 RB051 -.344 RB052 1. + CBF35 1RB053 -.656 RB091 .4 + CBF35 RB092 .14 1RB093 2.58 + CBF35 RB102 2.22 RB103 -2.04 + CBF35 RB104 6.56 RB106 -4.92 + CBF80 RB051 -1. 2RB051 1. + CBF80 RB092 .41 1RB093 6. + ADDEA R0000 .6374 KW1RC -1. + CE001 RE001 1.01 RE008 .0018 + CE001 RE010 .0044 RE011 .0122 + CE001 RE012 .0426 RE013 .089 + CE001 RE015 .058 RE017 .093 + CE001 RE018 .117 RE021 .037 + CE001 RE024 .545 RE060 -.0282 + CE001 RE061 1. 1RE061 -1. + CE001 2RE061 1. RE062 .208 + CE002 RE002 1.01 RE008 .0015 + CE002 RE010 .0038 RE011 .0114 + CE002 RE012 .0403 RE014 .115 + CE002 RE016 .068 RE017 .115 + CE002 RE019 .136 RE022 .047 + CE002 RE025 .462 RE060 -.0331 + CE002 RE061 1. 1RE061 -1. + CE002 2RE061 1. RE062 .24 + CE004 RE004 1.01 RE008 .0013 + CE004 RE010 .0028 RE011 .0125 + CE004 RE012 .0404 RE014 .105 + CE004 RE016 .064 RE017 .101 + CE004 RE019 .082 RE022 .081 + CE004 RE026 .51 RE060 -.0308 + CE004 RE061 1. 1RE061 -1. + CE004 2RE061 1. RE062 .208 + CE005 RE008 -.9 RE009 1. + CE005 RE010 -.1 + CE006 RE008 -1. RE060 1.19 + CE008 RE008 -1. RE066 1. + CE009 RE008 1. RE010 -1. + CE010 RE008 1. RE011 -1. + CE011 R0000 .108 RE011 -1. + CE011 RE035 1. RE068 -2.24 + CE011 RE069 164.1001 RE070 -100. + CE011 RE071 -.367 + CE012 R0000 .049 RE011 -1. + CE012 RE037 1. RE072 -13.1 + CE012 RE073 164.1001 RE074 -100. + CE012 RE075 -.734 + CE013 R0000 .095 RE012 -1. + CE013 RE035 1. RE063 1. + CE013 RE068 36.97 RE069 55. + CE013 RE070 -87.899899 RE071 -.323 + CE014 R0000 .044 RE012 -1. + CE014 RE037 1. RE063 1. + CE014 RE072 31.06 RE073 55. + CE014 RE074 -87.899899 RE075 -.645 + CE015 RE012 -1. RE039 1. + CE017 RE012 -1. RE060 1.11 + CE018 R0000 .113 RE008 .115 + CE018 RE010 .077 RE011 .115 + CE018 RE013 -1. RE035 .693 + CE018 RE060 -.12 RE063 1. + CE018 RE068 -.98 RE069 -4.3 + CE018 RE070 -8. RE071 -.19 + CE019 R0000 .139 RE008 .128 + CE019 RE010 .086 RE011 .127 + CE019 RE013 -1. RE035 .659 + CE019 RE060 -.126 RE063 1. + CE019 RE068 -2.5 RE069 -3.1 + CE019 RE070 -3.8 RE071 -.178 + CE020 R0000 .176 RE008 .137 + CE020 RE010 .091 RE011 .137 + CE020 RE013 -1. RE035 .635 + CE020 RE060 -.13 RE063 1.1 + CE020 RE068 -4.61 RE069 -2.9 + CE020 RE071 -.169 + CE021 R0000 .066 RE008 .097 + CE021 RE010 .065 RE011 .097 + CE021 RE013 -1. RE037 .741 + CE021 RE060 -.113 RE063 .91 + CE021 RE072 -3.02 RE073 -8.3 + CE021 RE074 -12.7 RE075 -.415 + 1CE021 R0000 .049 RE008 .073 + 1CE021 RE010 .04 RE011 .063 + 1CE021 RE013 -1. RE037 .824 + 1CE021 RE060 -.11 RE063 .91 + 1CE021 RE072 7.47 RE073 -16.1 + 1CE021 RE074 -2.2 RE075 -.475 + CE022 R0000 .083 RE008 .115 + CE022 RE010 .077 RE011 .115 + CE022 RE013 -1. RE037 .693 + CE022 RE060 -.12 RE063 1. + CE022 RE072 -6.33 RE073 -4.3 + CE022 RE074 -8. RE075 -.38 + CE023 R0000 .116 RE008 .092 + CE023 RE010 .062 RE011 .094 + CE023 RE014 -1. RE035 .752 + CE023 RE060 -.12 RE063 1. + CE023 RE068 -1.06 RE069 -6.8 + CE023 RE070 -4.8 RE071 -.204 + CE024 R0000 .151 RE008 .104 + CE024 RE010 .07 RE011 .104 + CE024 RE014 -1. RE035 .722 + CE024 RE060 -.126 RE063 1. + CE024 RE068 -2.74 RE069 -5.1 + CE024 RE070 -1.4 RE071 -.194 + CE025 R0000 .177 RE008 .114 + CE025 RE010 .076 RE011 .113 + CE025 RE014 -1. RE035 .697 + CE025 RE060 -.13 RE063 1.1 + CE025 RE068 -5.02 RE069 -4.4 + CE025 RE070 -1.7 RE071 -.184 + CE026 R0000 .066 RE008 .072 + CE026 RE010 .048 RE011 .081 + CE026 RE014 -1. RE037 .799 + CE026 RE060 -.113 RE063 .91 + CE026 RE072 -3.21 RE073 -11. + CE026 RE074 -8.3 RE075 -.441 + 1CE026 R0000 .055 RE008 .056 + 1CE026 RE010 .032 RE011 .05 + 1CE026 RE014 -1. RE037 .862 + 1CE026 RE060 -.11 RE063 .91 + 1CE026 RE072 7.67 RE073 -21.2 + 1CE026 RE074 -1.1 RE075 -.488 + CE027 R0000 .084 RE008 .092 + CE027 RE010 .062 RE011 .094 + CE027 RE014 -1. RE037 .752 + CE027 RE060 -.12 RE063 1. + CE027 RE072 -6.81 RE073 -6.8 + CE027 RE074 -4.8 RE075 -.409 + CE029 RE013 -1. RE039 1. + CE032 RE013 1. RE014 -1. + CE033 R0000 .136 RE008 .096 + CE033 RE010 .064 RE011 .095 + CE033 RE013 -.62 RE015 -.38 + CE033 RE035 .745 RE060 -.12 + CE033 RE063 1. RE068 -.67 + CE033 RE069 -8.1 RE070 -1.4 + CE033 RE071 -.204 + CE034 R0000 .18 RE008 .11 + CE034 RE010 .074 RE011 .109 + CE034 RE013 -.62 RE015 -.38 + CE034 RE035 .707 RE060 -.126 + CE034 RE063 1. RE068 -2.68 + CE034 RE069 -6. RE070 -.9 + CE034 RE071 -.19 + CE035 R0000 .224 RE008 .124 + CE035 RE010 .074 RE011 .119 + CE035 RE013 -.62 RE015 -.38 + CE035 RE035 .683 RE060 -.13 + CE035 RE063 1.1 RE068 -4.52 + CE035 RE069 -4.8 RE070 4.3 + CE035 RE071 -.182 + CE036 R0000 .079 RE008 .076 + CE036 RE010 .05 RE011 .077 + CE036 RE013 -.62 RE015 -.38 + CE036 RE037 .797 RE060 -.113 + CE036 RE063 .91 RE072 -2.81 + CE036 RE073 -11.4 RE075 -.444 + 1CE036 R0000 .062 RE008 .05 + 1CE036 RE010 .027 RE011 .043 + 1CE036 RE013 -.62 RE015 -.38 + 1CE036 RE037 .88 RE060 -.11 + 1CE036 RE063 .91 RE072 8.02 + 1CE036 RE073 -15.4 RE074 16.8 + 1CE036 RE075 -.51 + CE037 R0000 .104 RE008 .096 + CE037 RE010 .064 RE011 .095 + CE037 RE013 -.62 RE015 -.38 + CE037 RE037 .745 RE060 -.12 + CE037 RE063 1. RE072 -6.6 + CE037 RE073 -8.1 RE074 -1.4 + CE037 RE075 -.407 + CE038 R0000 .137 RE008 .076 + CE038 RE010 .05 RE011 .076 + CE038 RE014 -.625 RE016 -.375 + CE038 RE035 .798 RE060 -.12 + CE038 RE063 1. RE068 -.71 + CE038 RE069 -13. RE070 2. + CE038 RE071 -.215 + CE039 R0000 .181 RE008 .085 + CE039 RE010 .057 RE011 .086 + CE039 RE014 -.625 RE016 -.375 + CE039 RE035 .772 RE060 -.126 + CE039 RE063 1. RE068 -2.9 + CE039 RE069 -10.2 RE070 3.9 + CE039 RE071 -.206 + CE040 R0000 .183 RE008 .096 + CE040 RE010 .058 RE011 .091 + CE040 RE014 -.625 RE016 -.375 + CE040 RE035 .755 RE060 -.13 + CE040 RE063 1.1 RE068 -4.95 + CE040 RE069 -8.5 RE070 5.6 + CE040 RE071 -.198 + CE041 R0000 .079 RE008 .061 + CE041 RE010 .041 RE011 .062 + CE041 RE014 -.625 RE016 -.375 + CE041 RE037 .836 RE060 -.113 + CE041 RE063 .91 RE072 -2.9 + CE041 RE073 -15.6 RE074 4.3 + CE041 RE075 -.458 + 1CE041 R0000 .061 RE008 .039 + 1CE041 RE010 .021 RE011 .034 + 1CE041 RE014 -.625 RE016 -.375 + 1CE041 RE037 .906 RE060 -.11 + 1CE041 RE063 .91 RE072 7.99 + 1CE041 RE073 -19.1 RE074 9.5 + 1CE041 RE075 -.508 + CE042 R0000 .104 RE008 .076 + CE042 RE010 .05 RE011 .076 + CE042 RE014 -.625 RE016 -.375 + CE042 RE037 .798 RE060 -.12 + CE042 RE063 1. RE072 -6.97 + CE042 RE073 -13. RE074 2. + CE042 RE075 -.43 + 1CE042 RE015 1. RE016 -1. + CE046 RE017 -1. RE045 1. + CE046 RE084 3.74 RE085 -9. + CE046 RE086 -59.07 RE087 .56 + CE047 RE017 -1. RE048 1. + CE047 RE088 -29.9 RE089 26.8 + CE047 RE090 -37. RE091 -93. + CE047 RE092 .56 + CE049 RE017 -1. RE058 1. + CE049 RE098 -23.96 RE099 21.2 + CE049 RE100 -15. RE101 -83. + CE049 RE102 .56 + CE051 RE018 -1. RE045 1. + CE051 RE084 -1.86 RE085 1.3 + CE051 RE086 -29.85 RE087 -4. + CE052 RE018 -1. RE048 1. + CE052 RE088 -22.22 RE089 19.13 + CE052 RE090 -27.2 RE091 -64. + CE052 RE092 -4. + CE054 RE018 -1. RE058 1. + CE054 RE098 -16.28 RE099 13.52 + CE054 RE100 -5.2 RE101 -54. + CE054 RE102 -4. + CE056 RE019 -1. RE045 1. + CE056 RE084 -2.56 RE085 -2.9 + CE056 RE086 -31.85 RE087 -4. + CE057 RE019 -1. RE048 1. + CE057 RE088 -22.22 RE089 19.13 + CE057 RE090 -31.4 RE091 -64. + CE057 RE092 -4. + CE059 RE019 -1. RE058 1. + CE059 RE098 -16.28 RE099 13.52 + CE059 RE100 -9.4 RE101 -54. + CE059 RE102 -4. + CE067 RE021 -1. RE045 1. + CE067 RE084 -5.14 RE085 7.3 + CE067 RE086 55.07 RE087 -3.47 + CE068 RE021 -1. RE048 1. + CE068 RE088 -16.96 RE089 13.87 + CE068 RE090 -21.2 RE091 -42. + CE068 RE092 -3.47 + CE070 RE021 -1. RE058 1. + CE070 RE098 -11.02 RE099 8.26 + CE070 RE100 .8 RE101 -32. + CE070 RE102 -3.47 + CE072 RE022 -1. RE045 1. + CE072 RE084 -6.58 RE085 3.5 + CE072 RE086 68.049998 RE087 -3.47 + CE073 RE022 -1. RE048 1. + CE073 RE088 -16.96 RE089 13.87 + CE073 RE090 -25. RE091 -31. + CE073 RE092 -3.47 + CE075 RE022 -1. RE058 1. + CE075 RE098 -11.02 RE099 8.26 + CE075 RE100 -3. RE101 -21. + CE075 RE102 -3.47 + CE081 RE024 -1. RE028 .468 + CE081 RE030 .532 RE060 -.027 + CE081 RE064 1. + CE082 RE024 -1. RE048 1. + CE082 RE088 .9 RE089 -3.99 + CE082 RE090 .7 RE091 -17. + CE082 RE092 -.8 + CE084 RE024 -1. RE058 1. + CE084 RE098 6.84 RE099 -9.6 + CE084 RE100 22.7 RE101 -7. + CE084 RE102 -.8 + CE086 RE025 -1. RE048 1. + CE086 RE088 -.73 RE089 -2.36 + CE086 RE090 -16. RE091 3. + CE086 RE092 -.8 + CE088 RE025 -1. RE058 1. + CE088 RE098 5.21 RE099 -7.97 + CE088 RE100 6. RE101 13. + CE088 RE102 -.8 + CE090 RE026 -1. RE048 1. + CE090 RE088 1.69 RE089 -4.78 + CE090 RE090 -14. RE091 -4. + CE090 RE092 -.8 + CE092 RE026 -1. RE058 1. + CE092 RE098 7.63 RE099 -10.39 + CE092 RE100 8. RE101 6. + CE092 RE102 -.8 + CE102 RE017 -.147 RE026 -.853 + CE102 1RE056 1. + CE103 RE019 -.234 RE026 -.766 + CE103 1RE056 1. + CE104 RE017 -.178 RE026 -.822 + CE104 1RE056 1. + CE105 RE019 -.284 RE026 -.716 + CE105 1RE056 1. + CE107 RE028 -1. RE048 1. + CE107 RE088 -7.65 RE089 4.56 + CE107 RE090 -15. RE091 46. + CE107 RE092 -.8 + CE108 RE048 -1. RE060 1. + CE112 RE030 -1. RE103 .98 + CE124 R0000 .2793 RE068 -9.821 + CE124 RE071 1. + CE125 R0000 .2564 RE072 -15.27 + CE125 RE075 1. + CE126 RE035 -1. RE036 1. + CE126 RE068 -1.31 RE069 -5.23 + CE130 RE037 -1. RE040 1. + CE130 RE072 -4.73 RE073 -5.4 + CE134 RE045 -1. RE046 1. + CE135 RE045 -1. RE047 1. + CE135 RE085 7. + CE136 RE048 -1. RE049 1. + CE136 RE088 5.94 RE089 -5.6 + CE136 RE090 7. RE091 21. + CE137 RE048 -1. RE050 1. + CE137 RE088 4.12 RE089 -2.85 + CE137 RE090 7. RE091 21. + CE138 RE017 -.06 RE022 -.13 + CE138 RE025 -.81 RE051 1. + CE142 RE055 1. RE058 -1. + CE142 RE098 -1.82 RE099 2.76 + CE142 RE100 -5. RE101 8. + CE143 RE017 .13 RE044 -.4 + CE143 RE057 1. RE058 -.73 + CH002 RH001 1. 1RH001 1.01 + CH002 RH007 .0024 RH008 .0099 + CH002 1RH008 .0022 RH010 .0382 + CH002 RH016 .1081 RH018 .0242 + CH002 RH019 .101 RH020 .0929 + CH002 2RH025 .005 RH026 .6093 + CH002 RH096 -.017 RH107 1. + CH002 1RH107 -1. RH113 .0048 + 1CH002 R0000 .001 RH001 3. + 1CH002 RH106 -1. + 2CH002 RH001 1.111 1RH001 1.01 + 2CH002 RH007 .0024 RH008 .0099 + 2CH002 1RH008 .0022 RH010 .0432 + 2CH002 RH016 .1011 RH018 .0242 + 2CH002 RH019 .103 RH020 .1029 + 2CH002 2RH025 .005 RH026 .6063 + 2CH002 RH028 -.007 RH096 -.016 + 2CH002 RH107 1. 1RH107 -1. + 2CH002 RH113 .0048 + 3CH002 RH001 1.126 1RH001 .505 + 3CH002 RH003 .505 RH007 .0031 + 3CH002 RH008 .0095 1RH008 .0013 + 3CH002 RH010 .049 RH016 .1182 + 3CH002 RH018 .0283 RH019 .1182 + 3CH002 RH020 .1101 2RH025 .005 + 3CH002 RH026 .304 RH027 .2556 + 3CH002 RH028 -.007 RH096 -.016 + 3CH002 RH107 1.126 1RH107 -1. + 3CH002 RH113 .0027 + 4CH002 RH001 1. 1RH001 1.01 + 4CH002 RH007 .0024 RH008 .0099 + 4CH002 1RH008 .0022 RH010 .0382 + 4CH002 RH016 .1081 RH018 .0242 + 4CH002 RH019 .101 RH020 .0929 + 4CH002 2RH025 .005 RH026 .6093 + 4CH002 RH096 -.017 RH113 .0048 + CH003 RH001 1.1 RH002 1.01 + CH003 RH007 .0024 RH008 .009 + CH003 1RH008 .0019 RH010 .0259 + CH003 RH015 .1192 RH017 .5324 + CH003 RH018 .0354 2RH018 .1273 + CH003 RH021 .1333 2RH025 .005 + CH003 RH096 -.0145 RH107 1.1 + CH003 1RH107 -1. RH113 .0062 + 1CH003 1RH001 1. RH096 1. + 2CH003 RH003 1. RH096 1. + CH004 RH001 1.027 RH003 1.01 + CH004 RH007 .0039 RH008 .0092 + CH004 1RH008 .0004 RH010 .0485 + CH004 RH016 .1344 RH018 .0394 + CH004 RH019 .1273 RH020 .107 + CH004 2RH025 .005 RH027 .5223 + CH004 RH096 -.015 RH113 .0006 + 1CH004 RH001 1.027 RH003 1.01 + 1CH004 RH007 .0039 RH008 .0092 + 1CH004 1RH008 .0004 RH010 .0485 + 1CH004 RH016 .1344 RH018 .0394 + 1CH004 RH019 .1373 RH020 .107 + 1CH004 2RH025 .005 RH027 .5223 + 1CH004 RH096 -.015 RH107 1. + 1CH004 1RH107 -1. RH113 .0006 + CH005 RH001 1.067 RH004 1.01 + CH005 RH007 .0015 RH008 .0049 + CH005 1RH008 .0009 RH010 .0137 + CH005 RH015 .0687 1RH017 .6486 + CH005 RH018 .0253 1RH019 .101 + CH005 RH024 .1243 2RH025 .005 + CH005 RH096 -.017 RH107 1.067 + CH005 RH113 .0041 + 1CH005 RH001 1.067 RH004 1.01 + 1CH005 RH007 .0015 RH008 .0049 + 1CH005 1RH008 .0009 RH010 .0137 + 1CH005 RH015 .0687 1RH017 .3684 + 1CH005 RH018 .0253 1RH019 .101 + 1CH005 RH024 .1243 2RH025 .005 + 1CH005 1RH028 .0168 RH029 .1107 + 1CH005 1RH030 .1527 1RH060 .2802 + 1CH005 RH096 -.024 RH107 1.067 + 1CH005 RH113 .0041 + 2CH005 RH001 1.1 1RH005 1.01 + 2CH005 RH007 .0002 RH008 .0004 + 2CH005 1RH008 .0003 RH010 .0236 + 2CH005 RH015 .07 RH018 .03 + 2CH005 RH019 .15 RH023 .22 + 2CH005 2RH025 .005 2RH026 .5 + 2CH005 RH096 -.017 RH107 1.1 + 2CH005 1RH107 -1. RH113 .0005 + 4CH005 RH001 1.1 RH006 1.01 + 4CH005 RH007 .002 RH008 .0072 + 4CH005 1RH008 .0005 RH010 .0378 + 4CH005 RH016 .1495 2RH017 .5009 + 4CH005 RH018 .0436 3RH018 .1228 + 4CH005 RH021 .1257 2RH025 .005 + 4CH005 RH096 -.017 RH107 1.1 + 4CH005 1RH107 -1. RH113 .003 + CH006 RH001 1.1 RH006 1.01 + CH006 RH007 .002 RH008 .0072 + CH006 1RH008 .0005 RH010 .0378 + CH006 RH016 .1495 2RH017 .5009 + CH006 RH018 .0436 3RH018 .1228 + CH006 RH021 .1257 2RH025 .005 + CH006 RH096 -.017 RH113 .003 + 1CH006 R0000 .001 1RH008 1. + 1CH006 RH055 1. RH114 -1. + 2CH006 RH001 15.401 RH006 14.14 + 2CH006 RH007 .028 RH008 .101 + 2CH006 1RH008 .007 RH010 .529 + 2CH006 RH016 2.093 RH018 .61 + 2CH006 3RH018 1.719 RH021 1.76 + 2CH006 4RH022 1.777 2RH025 .07 + 2CH006 RH028 .933 RH029 2.195 + 2CH006 3RH030 1.088 RH050 1. + 2CH006 RH060 7.062 RH096 -.641 + 2CH006 RH113 .042 + CH007 RH007 -1. RH008 1. + CH008 R0000 .38 RH008 -1. + CH008 RH034 1. RH063 4.665 + CH008 RH064 -89.655 RH065 238.949997 + CH008 RH066 -206.899897 1RH066 -.579 + CH008 RH096 -.002 + CH009 R0000 .247 RH008 -1. + CH009 RH035 1. RH067 -1.379 + CH009 RH068 -89.655 RH069 238.949997 + CH009 RH070 -206.899897 RH071 -.425 + CH009 RH096 -.002 + CH010 R0000 .114 RH008 -1. + CH010 RH036 1. RH072 -22.586 + CH010 RH073 187.751997 RH074 95. + CH010 RH075 -.772 RH096 -.002 + CH012 RH008 -1. RH114 1. + CH013 R0000 .026 RH007 -.544 + CH013 RH009 -.49 RH010 -.07 + CH013 RH014 1. RH059 1. + CH013 RH096 -.146 RH114 .033 + CH014 RH008 1. RH009 -1. + CH015 R0000 .353 RH010 -1. + CH015 RH034 1. RH054 1. + CH015 RH063 .96 RH064 -99.2 + CH015 RH065 132.080097 RH066 -128. + CH015 1RH066 -.538 RH096 -.222 + CH016 R0000 .229 RH010 -1. + CH016 RH035 1. RH054 1. + CH016 RH067 -3.2 RH068 -99.2 + CH016 RH069 132.080097 RH070 -128. + CH016 RH071 -.394 RH096 -.222 + CH017 R0000 .102 RH010 -1. + CH017 RH036 1. RH072 18.154 + CH017 RH073 58.074 RH074 -5. + CH017 RH075 -.689 RH096 -.003 + CH018 RH010 -1. RH039 1. + CH018 UKLDF -1. + 1CH019 R0000 .221 RH010 -1. + 1CH019 RH035 1. RH067 29.23 + 1CH019 RH068 -80. RH069 61.13 + 1CH019 RH070 -30.77 RH071 -.38 + 1CH019 RH096 -.003 + CH020 RH011 1. 2RH038 -1. + CH021 RH011 1. RH038 -1. + CH022 RH023 -1. RH048 1. + CH022 RH085 -7.833 RH086 -14.97 + CH022 RH087 -8.4 RH088 13. + CH022 RH089 -2.729 + 1CH022 RH023 -1. RH043 1. + 1CH022 RH080 -10.08 RH081 4.88 + 1CH022 RH082 -8.4 RH083 13. + 1CH022 RH084 -2.729 + 2CH022 RH023 -1. RH046 1. + 2CH022 RH062 -.0014 1RH089 -5.67 + 2CH022 2RH089 14. 3RH089 -20.07 + CH024 R0000 .092 RH036 1. + CH024 RH072 -5.587 RH073 4.268 + CH024 RH074 -5. RH075 -.626 + CH024 RH095 -1. + 1CH024 R0000 .2 RH035 1. + 1CH024 RH067 10.475 RH068 -33.519 + 1CH024 RH069 7.06 RH070 -6.98 + 1CH024 RH071 -.344 RH095 -1. + CH025 RH095 -1. RH096 1.11 + 1CH025 R0000 .308 RH034 1. + 1CH025 RH063 13.966 RH064 -33.519 + 1CH025 RH065 7.06 RH066 -6.98 + 1CH025 1RH066 -.469 RH095 -1. + CH026 R0000 .254 RH011 -1. + CH026 RH034 1. RH063 -10.957 + CH026 RH064 78.4309 RH065 -46.88 + CH026 RH066 34.6 1RH066 -.387 + CH027 R0000 .165 RH011 -1. + CH027 RH035 1. RH067 -15.34 + CH027 RH068 78.4309 RH069 -46.88 + CH027 RH070 34.6 RH071 -.284 + CH028 R0000 .324 RH012 -1. + CH028 RH034 1. RH063 5.294 + CH028 RH064 -69.1179 RH065 44.198 + CH028 RH066 -26.47 1RH066 -.494 + CH028 RH096 -.003 + CH029 R0000 .211 RH012 -1. + CH029 RH035 1. RH067 -1.03 + CH029 RH068 -69.1179 RH069 44.198 + CH029 RH070 -26.47 RH071 -.362 + CH029 RH096 -.003 + CH030 R0000 .097 RH012 -1. + CH030 RH036 1. RH072 -20.147 + CH030 RH073 41.244 RH074 -5. + CH030 RH075 -.659 RH096 -.003 + CH031 R0000 .18 RH013 -1. + CH031 RH035 1. RH067 3.015 + CH031 RH068 45.226 RH069 -50.89 + CH031 RH070 25.13 RH071 -.31 + CH031 RH096 -.002 + CH032 R0000 .083 RH013 -1. + CH032 RH036 1. RH072 -15.201 + CH032 RH073 -53.41 RH074 -5. + CH032 RH075 -.563 RH096 -.002 + CH033 R0000 1.039 RH010 -.124 + CH033 RH014 -.709 RH031 1. + CH033 RH054 .124 RH095 -.167 + CH033 RH096 -.031 + CH034 R0000 .662 RH010 -.122 + CH034 RH014 -.472 RH032 1. + CH034 RH054 .122 RH095 -.406 + CH034 RH096 -.038 + CH035 R0000 .315 RH014 -1. + CH035 RH034 1. RH064 1.429 + CH035 RH065 -24.49 RH066 -5. + CH035 1RH066 -.48 + CH036 R0000 .205 RH014 -1. + CH036 RH035 1. RH067 -3.143 + CH036 RH068 1.429 RH069 -24.49 + CH036 RH070 -5. RH071 -.352 + 1CH036 R0000 .591 RH063 -6.25 + 1CH036 1RH066 1. + CH037 R0000 .591 RH067 -10.268 + CH037 RH071 1. + CH038 R0000 .591 RH072 -11.16 + CH038 RH075 1. + CH039 R0000 .09 RH016 -1. + CH039 RH036 1. RH072 27.459 + CH039 RH073 -36.543 RH074 -5. + CH039 RH075 -.612 RH096 -.002 + CH040 RH010 -.25 RH016 -.75 + CH040 RH039 1. UKLDF -1. + CH042 RH010 -1. 2RH039 1. + CH042 1RH106 1. UKLDF -1. + CH043 RH010 -.7 RH016 -.3 + CH043 2RH039 1. 1RH106 1. + CH043 UKLDF -1. + CH044 R0000 .089 RH015 -1. + CH044 RH036 1. RH072 25.706 + CH044 RH073 -36.248 RH074 -5. + CH044 RH075 -.603 RH096 -.002 + CH045 RH010 -.25 RH015 -.75 + CH045 RH039 1. UKLDF -1. + CH046 RH010 -.7 RH015 -.3 + CH046 2RH039 1. 1RH106 1. + CH046 UKLDF -1. + CH048 R0000 .12 RH007 .029 + CH048 RH008 .043 RH016 -1. + CH048 RH036 .755 RH057 .883 + CH048 RH072 -8.657 RH073 -12.314 + CH048 RH074 -2.265 RH075 -.451 + CH048 RH096 -.12 RH113 .087 + CH048 RH114 .086 + CH050 R0000 .364 RH007 .042 + CH050 RH008 .071 RH016 -1. + CH050 RH034 .621 RH057 1.533 + CH050 RH058 1. RH063 -1.611 + CH050 RH064 4.832 RH065 -4.213 + CH050 RH066 2.42 1RH066 -.271 + CH050 RH096 -.133 RH113 .133 + CH050 RH114 .133 + CH051 R0000 .304 RH007 .042 + CH051 RH008 .071 RH016 -1. + CH051 RH035 .621 RH057 1.533 + CH051 RH058 1. RH067 -4.026 + CH051 RH068 4.832 RH069 -4.213 + CH051 RH070 2.42 RH071 -.198 + CH051 RH096 -.133 RH113 .133 + CH051 RH114 .133 + CH056 R0000 .123 RH007 .023 + CH056 RH008 .031 RH016 -.75 + CH056 RH018 -.25 RH036 .806 + CH056 RH057 .872 RH072 -8.685 + CH056 RH073 -15.602 RH074 -2.418 + CH056 RH075 -.474 RH096 -.12 + CH056 RH113 .07 RH114 .07 + CH057 R0000 .306 RH007 .03 + CH057 RH008 .044 RH016 -.75 + CH057 RH018 -.25 RH034 .73 + CH057 RH057 .982 RH063 3.189 + CH057 RH064 4.832 RH065 -10.03 + CH057 RH066 5.8 1RH066 -.325 + CH057 RH096 -.12 RH113 .098 + CH057 RH114 .098 + CH058 R0000 .233 RH007 .03 + CH058 RH008 .044 RH016 -.75 + CH058 RH018 -.25 RH035 .73 + CH058 RH057 .982 RH067 .097 + CH058 RH068 4.832 RH069 -10.03 + CH058 RH070 5.8 RH071 -.238 + CH058 RH096 -.12 RH113 .098 + CH058 RH114 .098 + CH062 R0000 .295 RH007 .023 + CH062 RH008 .03 RH015 -.74 + CH062 RH018 -.26 RH034 .776 + CH062 RH057 .963 RH063 3.371 + CH062 RH064 8.683 RH065 -15.57 + CH062 RH066 7.15 1RH066 -.343 + CH062 RH096 -.114 RH113 .086 + CH062 RH114 .085 + CH063 R0000 .219 RH007 .023 + CH063 RH008 .03 RH015 -.74 + CH063 RH018 -.26 RH035 .776 + CH063 RH057 .963 RH067 .102 + CH063 RH068 8.683 RH069 -15.57 + CH063 RH070 7.15 RH071 -.252 + CH063 RH096 -.114 RH113 .086 + CH063 RH114 .085 + CH065 R0000 .18 RH007 .04 + CH065 RH008 .06 RH010 -.3 + CH065 RH016 -.7 1RH038 .66 + CH065 RH057 1.15 RH096 -.12 + CH065 RH113 .12 RH114 .12 + CH066 R0000 .099 RH007 .035 + CH066 RH008 .055 RH016 -1. + CH066 1RH038 .684 RH057 1. + CH066 RH096 -.12 RH113 .113 + CH066 RH114 .113 + CH067 R0000 .349 RH007 .042 + CH067 RH008 .071 RH011 .214 + CH067 RH016 -1. RH034 .36 + CH067 RH038 .019 2RH038 .028 + CH067 RH057 1.533 RH058 1. + CH067 RH063 2.675 RH064 -11.675 + CH067 RH065 2.457 RH066 -2.43 + CH067 1RH066 -.163 RH096 -.133 + CH067 RH113 .133 RH114 .133 + CH068 R0000 .262 RH007 .042 + CH068 RH008 .071 RH011 .214 + CH068 RH016 -1. RH035 .36 + CH068 RH038 .019 2RH038 .028 + CH068 RH057 1.533 RH058 1. + CH068 RH067 .973 RH068 -11.676 + CH068 RH069 2.457 RH070 -2.43 + CH068 RH071 -.119 RH096 -.133 + CH068 RH113 .133 RH114 .133 + CH069 R0000 .079 RH007 .028 + CH069 RH008 .04 RH015 -1. + CH069 1RH038 .735 RH057 .977 + CH069 RH096 -.114 RH113 .098 + CH069 RH114 .099 + CH070 R0000 .294 RH007 .034 + CH070 RH008 .054 RH011 .236 + CH070 RH015 -1. RH034 .395 + CH070 RH038 .019 2RH038 .03 + CH070 RH057 1.498 RH058 .977 + CH070 RH063 2.936 RH064 -12.811 + CH070 RH065 2.7 RH066 -2.67 + CH070 1RH066 -.179 RH096 -.126 + CH070 RH113 .116 RH114 .116 + CH071 R0000 .264 RH007 .034 + CH071 RH008 .054 RH011 .236 + CH071 RH015 -1. RH035 .395 + CH071 RH038 .019 2RH038 .03 + CH071 RH057 1.498 RH058 .977 + CH071 RH067 1.067 RH068 -12.81 + CH071 RH069 2.7 RH070 -2.67 + CH071 RH071 -.131 RH096 -.126 + CH071 RH113 .116 RH114 .116 + CH072 R0000 .098 RH007 .03 + CH072 RH008 .044 RH011 .26 + CH072 RH016 -.75 RH018 -.25 + CH072 RH038 .014 2RH038 .023 + CH072 RH057 .982 RH095 .433 + CH072 RH096 -.12 RH113 .098 + CH072 RH114 .098 + CH074 R0000 .15 RH007 .035 + CH074 RH008 .055 RH011 .142 + CH074 RH016 -1. RH038 .051 + CH074 RH057 1.359 RH095 .491 + CH074 RH096 -.171 RH113 .113 + CH074 RH114 .113 + 1CH074 R0000 .133 RH007 .035 + 1CH074 RH008 .055 RH011 .104 + 1CH074 RH016 -1. RH038 .038 + 1CH074 2RH038 .06 RH057 1.21 + 1CH074 RH095 .482 RH096 -.15 + 1CH074 RH113 .113 RH114 .113 + 2CH074 R0000 .133 RH007 .035 + 2CH074 RH008 .055 RH011 .17 + 2CH074 RH016 -1. RH038 .032 + 2CH074 RH057 1.21 RH095 .482 + 2CH074 RH096 -.15 RH113 .113 + 2CH074 RH114 .113 + CH075 R0000 .121 RH007 .028 + CH075 RH008 .04 RH011 .16 + CH075 RH015 -1. RH038 .052 + CH075 RH057 1.336 RH095 .523 + CH075 RH096 -.163 RH113 .098 + CH075 RH114 .099 + 1CH075 R0000 .108 RH007 .028 + 1CH075 RH008 .04 RH011 .12 + 1CH075 RH015 -1. RH038 .039 + 1CH075 2RH038 .062 RH057 1.188 + 1CH075 RH095 .514 RH096 -.142 + 1CH075 RH113 .099 RH114 .098 + 2CH075 R0000 .108 RH007 .028 + 2CH075 RH008 .04 RH011 .188 + 2CH075 RH015 -1. RH038 .033 + 2CH075 RH057 1.188 RH095 .514 + 2CH075 RH096 -.142 RH113 .099 + 2CH075 RH114 .098 + CH076 R0000 .078 RH007 .023 + CH076 RH008 .03 RH011 .257 + CH076 RH015 -.74 RH018 -.26 + CH076 RH038 .015 2RH038 .024 + CH076 RH057 .963 RH095 .48 + CH076 RH096 -.114 RH113 .086 + CH076 RH114 .085 + CH077 R0000 .284 RH034 1. + CH077 1RH038 -1. RH063 3.732 + CH077 RH064 .644 RH065 -10.936 + CH077 RH066 6.43 1RH066 -.432 + 1CH077 R0000 .185 RH035 1. + 1CH077 1RH038 -1. RH067 .257 + 1CH077 RH068 .643 RH069 -10.936 + 1CH077 RH070 6.43 RH071 -.317 + CH078 RH011 .268 RH038 .024 + CH078 1RH038 -1. 2RH038 .038 + CH078 RH095 .67 + 1CH078 RH011 .31 RH038 .02 + 1CH078 1RH038 -1. RH095 .67 + 3CH078 1RH025 -1.02 RH046 1. + 3CH078 RH062 .007 1RH089 -3.481 + 3CH078 2RH089 47.3 3RH089 -31.567 + 3CH078 RH096 -.023 RH113 .013 + 4CH078 RH019 -1.02 RH046 1. + 4CH078 RH062 .0002 1RH089 6.108 + 4CH078 2RH089 -13. 3RH089 -34.293 + 4CH078 RH096 -.023 RH113 .013 + CH079 RH019 -1.02 RH046 1. + CH079 RH062 -.0008 1RH089 4.409 + CH079 2RH089 -9.7 3RH089 -33.827 + CH079 RH096 -.023 RH113 .013 + 1CH079 1RH019 -1.02 RH046 1. + 1CH079 RH062 -.0013 1RH089 4.257 + 1CH079 2RH089 -5.5 3RH089 -33.785 + 1CH079 RH096 -.023 RH113 .013 + 2CH079 RH020 -1.02 RH046 1. + 2CH079 RH062 .0083 1RH089 1.871 + 2CH079 2RH089 -11.1 3RH089 -15.719 + 2CH079 RH096 -.023 RH113 .013 + 3CH079 RH021 -1.02 RH046 1. + 3CH079 RH062 .0055 1RH089 .569 + 3CH079 2RH089 -7.1 3RH089 -15.55 + 3CH079 RH096 -.023 RH113 .013 + 4CH079 RH024 -1.02 RH046 1. + 4CH079 RH062 .0048 1RH089 -1.677 + 4CH079 2RH089 -.8 3RH089 -11.972 + 4CH079 RH096 -.023 RH113 .013 + CH080 RH028 -1.02 RH046 1. + CH080 RH062 .0155 1RH089 -1.677 + CH080 2RH089 -.4 3RH089 2.934 + CH080 RH096 -.023 RH113 .013 + 1CH080 1RH028 -1.02 RH046 1. + 1CH080 RH062 .013 1RH089 -3.039 + 1CH080 2RH089 6.1 3RH089 2.9 + 1CH080 RH096 -.023 RH113 .013 + 2CH080 RH028 -.8 RH029 -.2 + 2CH080 RH046 1. RH062 .0162 + 2CH080 1RH089 -1.951 2RH089 .45 + 2CH080 3RH089 28.92 RH096 -.023 + 2CH080 RH113 .013 + 3CH080 1RH028 -.612 RH029 -.408 + 3CH080 RH046 1. RH062 .014 + 3CH080 1RH089 -3.575 2RH089 6.7 + 3CH080 3RH089 54.272 RH096 -.023 + 3CH080 RH113 .013 + 4CH080 RH025 -1.02 RH046 1. + 4CH080 RH062 .022 1RH089 -7.066 + 4CH080 2RH089 33.2 3RH089 -11.422 + 4CH080 RH096 -.023 RH113 .013 + CH081 RH025 -.714 RH046 1. + CH081 RH052 -.306 RH062 .023 + CH081 1RH089 -7.813 2RH089 33.8 + CH081 3RH089 9.455 RH093 6.343 + CH081 1RH093 5.5 RH094 3.978 + CH081 RH096 -.023 RH110 -6.138 + CH081 RH113 .013 + 1CH081 1RH021 -1.02 RH046 1. + 1CH081 RH062 .0025 1RH089 -.705 + 1CH081 2RH089 -1.5 3RH089 -13.728 + 1CH081 RH096 -.023 RH113 .013 + CH086 RH018 -.2 RH019 -.8 + CH086 1RH025 .2 RH041 .8 + CH086 RH056 1. RH096 -.021 + 1CH086 1RH025 -1. RH043 1. + 1CH086 RH080 -9.171 RH081 -6.286 + 1CH086 RH083 49. RH084 5.623 + CH087 1RH025 -1. RH048 1. + CH087 RH085 -6.926 RH086 -26.286 + CH087 RH088 49. RH089 5.623 + CH089 RH018 -.2 RH019 -.8 + CH089 RH043 1. RH080 2.487 + CH089 RH081 -6.927 RH082 -7.4 + CH089 RH083 -15. RH084 7.987 + 1CH089 RH018 -.18 2RH018 -.82 + 1CH089 RH043 1. RH080 1.076 + 1CH089 RH081 -6.849 RH082 -8. + 1CH089 RH083 -14. RH084 7.987 + 2CH089 RH018 -.18 1RH019 -.82 + 2CH089 RH043 1. RH080 .921 + 2CH089 RH081 -6.841 RH082 -8.5 + 2CH089 RH083 -8. RH084 7.987 + CH090 RH018 -.2 RH019 -.8 + CH090 RH048 1. RH085 4.782 + CH090 RH086 -28.967 RH087 -7.4 + CH090 RH088 -15. RH089 7.987 + 1CH090 RH018 -.18 2RH018 -.82 + 1CH090 RH048 1. RH085 3.321 + 1CH090 RH086 -28.643 RH087 -8. + 1CH090 RH088 -14. RH089 7.987 + 2CH090 RH018 -.18 1RH019 -.82 + 2CH090 RH048 1. RH085 3.166 + 2CH090 RH086 -28.607 RH087 -8.5 + 2CH090 RH088 -8. RH089 7.987 + CH093 RH018 -.22 2RH018 -.78 + CH093 1RH025 .2 RH041 .8 + CH093 RH056 1.488 RH096 -.021 + 1CH093 RH018 -.22 3RH018 -.78 + 1CH093 1RH025 .2 RH041 .8 + 1CH093 RH056 1.488 RH096 -.021 + CH097 RH019 -1. RH043 1. + CH097 RH080 1.699 RH081 -6.884 + CH097 RH082 -6.8 RH083 -14. + CH097 RH084 2.987 + 1CH097 2RH018 -1. RH043 1. + 1CH097 RH080 .152 RH081 -6.799 + 1CH097 RH082 -7.8 RH083 -11. + 1CH097 RH084 2.987 + 2CH097 1RH019 -1. RH043 1. + 2CH097 RH081 -6.79 RH082 -8.3 + 2CH097 RH083 -6.5 RH084 2.987 + CH098 RH019 -1. RH048 1. + CH098 RH085 3.944 RH086 -28.786 + CH098 RH087 -6.8 RH088 -14. + CH098 RH089 2.987 + 1CH098 2RH018 -1. RH048 1. + 1CH098 RH085 2.397 RH086 -28.43 + 1CH098 RH087 -7.8 RH088 -11. + 1CH098 RH089 2.987 + 2CH098 1RH019 -1. RH048 1. + 2CH098 RH085 2.244 RH086 -28.395 + 2CH098 RH087 -8.3 RH088 -6.5 + 2CH098 RH089 2.987 + CH101 RH020 -1. RH043 1. + CH101 RH080 -3.697 RH081 10.778 + CH101 RH082 1.3 RH083 -9. + CH101 RH084 -2.795 + 1CH101 RH020 -1. RH043 .98 + 1CH101 RH062 .0098 RH080 -2.488 + 1CH101 RH081 10.665 RH082 -8.33 + 1CH101 RH083 -11.76 RH084 -2.674 + 1CH101 RH096 -.023 RH113 .013 + CH102 RH020 -1. RH048 1. + CH102 RH085 -1.452 RH086 -10.18 + CH102 RH087 1.3 RH088 -9. + CH102 RH089 -2.795 + 1CH102 RH020 -1. RH048 .98 + 1CH102 RH062 .0098 RH085 -.288 + 1CH102 RH086 -10.073 RH087 -8.33 + 1CH102 RH088 -11.76 RH089 -2.674 + 1CH102 RH096 -.023 RH113 .013 + CH105 RH021 -1. RH043 1. + CH105 RH080 -4.551 RH081 10.702 + CH105 RH082 -1.5 RH083 -6. + CH105 RH084 -2.729 + CH106 RH021 -1. RH048 1. + CH106 RH085 -2.306 RH086 -10.107 + CH106 RH087 -1.5 RH088 -4.5 + CH106 RH089 -2.729 + CH112 1RH021 -1. RH043 1. + CH112 RH080 -5.532 RH081 12.264 + CH112 RH082 -4.5 RH083 -2.5 + CH112 RH084 -2.729 + CH113 1RH021 -1. RH048 1. + CH113 RH085 -3.287 RH086 -8.373 + CH113 RH087 -4.5 RH088 -2.5 + CH113 RH089 -2.729 + CH114 RH024 -1. RH043 1. + CH114 RH080 -6.77 RH081 13.769 + CH114 RH082 -2.2 RH084 -2.729 + CH115 RH024 -1. RH048 1. + CH115 RH085 -4.526 RH086 -6.651 + CH115 RH087 -2.2 RH089 -2.729 + CH119 RH026 -1. RH028 .07 + CH119 RH029 .459 RH030 .471 + CH119 RH060 1. RH096 -.027 + 2CH119 2RH017 -1. RH028 .08 + 2CH119 RH029 .537 3RH030 .383 + 2CH119 RH060 1. RH096 -.027 + CH121 RH027 -1. RH028 .113 + CH121 RH029 .525 RH030 .362 + CH121 RH060 1.007 RH096 -.027 + CH122 4RH022 1.777 RH026 -8.174 + CH122 RH028 .572 RH029 2.195 + CH122 RH030 2.61 RH050 1. + CH122 RH060 8.174 RH096 -.651 + CH124 4RH022 1.777 RH027 -7.147 + CH124 RH028 .808 RH029 2.195 + CH124 RH030 1.347 RH050 1. + CH124 RH060 7.2 RH096 -.624 + CH126 RH028 -1. RH048 1. + CH126 RH085 -6.005 RH086 8.065 + CH126 RH087 8.5 RH088 4.5 + CH126 RH089 -3.281 + 1CH126 1RH028 -1. RH048 1. + 1CH126 RH085 -6.926 RH086 8. + 1CH126 RH087 6. RH088 10. + 1CH126 RH089 -3.281 + 2CH126 1RH028 -.6 RH029 -.4 + 2CH126 RH048 1. RH085 -7.576 + 2CH126 RH086 58.523 RH087 7. + 2CH126 RH088 11. RH089 -2.95 + 3CH126 RH028 -.8 RH029 -.2 + 3CH126 RH048 1. RH085 -6.334 + 3CH126 RH086 21. RH087 9.25 + 3CH126 RH088 5.25 RH089 -2.953 + CH128 RH028 -1. RH043 1. + CH128 RH080 -8.25 RH081 28.226 + CH128 RH082 8.5 RH083 4.5 + CH128 RH084 -3.281 + 1CH128 1RH028 -1. RH043 1. + 1CH128 RH080 -9.171 RH081 28. + 1CH128 RH082 6. RH083 10. + 1CH128 RH084 -3.281 + 1CH130 R0000 .15 RH007 .022 + 1CH130 RH008 .007 RH009 .037 + 1CH130 RH012 .157 RH013 .119 + 1CH130 RH025 .222 2RH025 .322 + 1CH130 RH029 -1. RH061 1. + 1CH130 RH096 -.047 RH114 .069 + 1CH131 R0000 .15 RH007 .028 + 1CH131 RH008 .009 RH009 .049 + 1CH131 RH012 .176 RH013 .122 + 1CH131 RH025 .227 2RH025 .268 + 1CH131 RH029 -1. RH061 1.138 + 1CH131 RH096 -.047 RH114 .073 + 2CH131 R0000 .15 RH007 .035 + 2CH131 RH008 .011 RH009 .06 + 2CH131 RH012 .195 RH013 .126 + 2CH131 RH025 .228 2RH025 .216 + 2CH131 RH029 -1. RH061 1.222 + 2CH131 RH096 -.047 RH114 .077 + CH134 RH025 -1. RH043 1. + CH134 RH080 -14.168 RH081 12.896 + CH134 RH082 15. RH083 40.5 + CH134 RH084 -2.729 + CH135 RH025 -1. RH048 1. + CH135 RH085 -11.923 RH086 -6.23 + CH135 RH087 15. RH088 40.5 + CH135 RH089 -2.729 + 1CH140 RH048 -1. 2RH048 1. + 1CH140 RH085 -.739 RH086 6.951 + 1CH140 RH087 3. RH088 -5. + 2CH140 RH048 -1. 3RH048 1. + 2CH140 RH085 -.739 RH086 -5.732 + 2CH140 RH087 3. RH088 -5. + CH143 1RH018 -1. RH096 1. + CH144 RH020 -1. RH096 1. + CH145 RH025 -1. RH096 1. + CH146 RH028 -1. RH096 1. + CH150 RH039 -1. RH096 1.11 + CH150 UKLDF 1. + CH151 RH052 -1. RH096 1. + 1CH151 RH029 -1. RH096 1. + 2CH151 RH013 -1. RH096 1.1 + CH153 RH042 -1. 2RH042 1. + CH155 RH018 -.49 3RH018 -.51 + CH155 RH042 1. RH096 -.002 + CH156 RH018 -.64 RH019 -.36 + CH156 RH042 1. RH096 -.002 + 1CH156 1RH018 1. 2RH018 -1. + 2CH156 2RH018 1. 3RH018 -1. + 3CH156 1RH018 1. RH019 -1. + 4CH156 1RH018 1. 1RH019 -1. + CH180 RH001 1.151 2RH001 1.01 + CH180 RH007 .0022 RH008 .0088 + CH180 1RH008 .002 RH010 .065 + CH180 RH016 .157 RH018 .03 + CH180 RH019 .09 RH020 .083 + CH180 2RH025 .005 RH026 .551 + CH180 RH096 -.017 RH107 1.151 + CH180 1RH107 -1. RH113 .004 + 1CH180 RH001 1.151 2RH001 1.01 + 1CH180 RH007 .0022 RH008 .0088 + 1CH180 1RH008 .002 RH010 .065 + 1CH180 RH016 .157 RH018 .03 + 1CH180 RH019 .09 RH020 .083 + 1CH180 2RH025 .005 RH026 .551 + 1CH180 RH096 -.017 RH113 .004 + CH183 RH001 1.1 RH005 1.01 + CH183 RH007 .0012 RH008 .0018 + CH183 1RH008 .0003 RH010 .025 + CH183 RH015 .138 RH018 .037 + CH183 RH019 .161 1RH021 .178 + CH183 2RH025 .014 1RH026 .441 + CH183 RH096 -.017 RH107 1.1 + CH183 1RH107 1. RH113 .0007 + CH188 1RH008 -1. RH113 1. + CH189 RH096 1.16 RH113 -1. + CH190 RH096 1.16 RH114 -1. + CH196 RH034 -1. 1RH034 1. + CH196 RH063 -.94 2RH106 1. + CH197 RH035 -1. 1RH035 1. + CH197 RH067 1.745 2RH106 1. + CH200 RH036 -1. 1RH036 1. + CH200 RH072 7.31 2RH106 1. + CH300 RH052 -1. 4RH052 1. + CH300 1RH093 -5. RH094 11. + 1CH302 R0000 .15 RH007 .014 + 1CH302 RH008 .007 RH009 .039 + 1CH302 RH012 .15 RH013 .14 + 1CH302 1RH024 .215 2RH025 .27 + 1CH302 1RH029 -1. RH061 1.138 + 1CH302 RH096 -.047 RH114 .08 + CH303 2RH023 -1. RH046 1. + CH303 1RH089 2.457 2RH089 -17. + CH303 3RH089 -3.04 + CH304 1RH024 -1. RH046 1. + CH304 1RH089 -5.8 2RH089 34. + CH304 3RH089 -11.422 + CH305 2RH028 -1. RH046 1. + CH305 1RH089 -.85 2RH089 -16. + CH305 3RH089 2.934 + CH306 2RH023 -1. RH043 1. + CH306 RH080 -1.95 RH081 23.69 + CH306 RH082 -9.2 RH083 -18. + CH306 RH084 -3.486 + CH307 2RH023 -1. RH048 1. + CH307 RH085 .295 RH086 2.43 + CH307 RH087 -9.2 RH088 -18. + CH307 RH089 -3.486 + CH310 1RH024 -1. RH048 1. + CH310 RH085 -7.96 RH086 -6.23 + CH310 RH087 -8.3 RH088 33. + CH310 RH089 -2.733 + CH311 1RH024 -1. RH043 1. + CH311 RH080 -10.21 RH081 12.896 + CH311 RH082 -8.3 RH083 33. + CH311 RH084 -2.733 + CH314 2RH028 -1. RH048 1. + CH314 RH085 -3.01 RH086 8.065 + CH314 RH087 -8. RH088 -17. + CH314 RH089 -3.281 + CH360 RH018 .0235 1RH019 -.4382 + CH360 RH024 -.5393 1RH025 -.046 + CH360 2RH043 1. + CH361 RH018 .0235 1RH019 -.4842 + CH361 RH024 -.5393 2RH043 1. + CH362 RH018 .0275 2RH018 -.5444 + CH362 RH021 -.5576 2RH043 1. + CH362 RH048 .0745 RH085 -2.445 + CH362 RH087 -.0745 RH088 -.447 + CH363 RH018 .0275 3RH018 -.5444 + CH363 RH021 -.5576 2RH043 1. + CH363 RH048 .0745 RH085 -2.445 + CH363 RH087 -.0745 RH088 -.447 + CH401 RH018 -1. RH053 1. + CH401 RH115 -32.68 RH116 31.2 + CH401 RH117 -78. RH118 -38. + CH401 1RH118 95. + CH404 RH018 -1. RH052 1. + CH404 RH093 -36.73 1RH093 -25. + CH404 RH094 -38. RH110 36.06 + CH406 1RH018 -1. RH053 1. + CH406 RH115 -25.16 RH116 24.68 + CH406 RH117 -71. RH118 -36.2 + CH406 1RH118 -5. + CH408 1RH018 -1. RH109 1. + CH408 1RH109 -25.15 2RH109 -18.43 + CH409 1RH018 -1. RH052 1. + CH409 RH093 -29.21 1RH093 -32. + CH409 RH094 -35.8 RH110 28.54 + CH410 RH048 -1. RH051 1. + CH410 RH085 1.88 RH086 -5.609 + CH410 RH087 -1. RH088 2. + CH410 RH090 -16.58 1RH090 -16. + CH410 2RH090 15.25 RH091 -18. + CH410 RH103 1. RH108 -30. + CH411 RH048 -1. RH053 1. + CH411 RH085 1.88 RH086 -5.609 + CH411 RH087 -1. RH088 2. + CH411 RH115 -20.38 RH116 18.9 + CH411 RH117 -48. RH118 28. + CH411 1RH118 -5. + CH413 RH048 -1. RH085 1.88 + CH413 RH086 -5.609 RH087 -1. + CH413 RH088 2. RH109 1. + CH413 1RH109 -20.38 2RH109 18.9 + CH414 RH048 -1. RH052 1. + CH414 RH085 1.88 RH086 -5.609 + CH414 RH087 -1. RH088 2. + CH414 RH093 -24.43 1RH093 -53. + CH414 RH094 -28. RH110 23.76 + CH415 2RH025 -1. RH053 1. + CH415 RH115 -9.11 RH116 7.63 + CH415 RH117 -10. RH118 -10. + CH415 1RH118 -5. + CH417 2RH025 -1. RH052 1. + CH417 RH093 -13.16 1RH093 -15. + CH417 RH094 -10. RH110 12.49 + CH419 RH026 -1. RH053 1. + CH419 RH115 2.54 RH116 -4.02 + CH419 RH117 -6. RH118 -.9 + CH419 1RH118 -5. + CH421 RH026 -1. RH052 1. + CH421 RH093 -1.51 1RH093 -11. + CH421 RH094 -.9 RH110 .84 + CH423 RH027 -1. RH053 1. + CH423 RH115 .55 RH116 -2.03 + CH423 RH117 1. RH118 -3.9 + CH423 1RH118 -5. + CH425 RH027 -1. RH052 1. + CH425 RH093 -3.5 1RH093 -4. + CH425 RH094 -3.9 RH110 2.83 + CH427 2RH017 -1. RH053 1. + CH427 RH115 -1.82 RH116 .34 + CH427 RH117 11. RH118 -14. + CH427 1RH118 -5. + CH430 2RH017 -1. RH052 1. + CH430 RH093 -5.87 1RH093 6. + CH430 RH094 -14. RH110 5.2 + CH432 RH017 -1. RH053 1. + CH432 RH115 .86 RH116 -2.34 + CH432 RH117 1. RH118 -16. + CH432 1RH118 -5. + CH434 RH017 -1. RH052 1. + CH434 RH093 -3.19 1RH093 -4. + CH434 RH094 -16. RH110 2.52 + CH435 1RH017 -1. RH051 1. + CH435 RH090 8.9 1RH090 16. + CH435 2RH090 -10.15 RH091 -4.5 + CH435 RH103 1. RH108 -30. + CH437 1RH017 -1. RH109 1. + CH437 1RH109 5.02 2RH109 -6.5 + CH438 1RH017 -1. RH052 1. + CH438 RH093 .97 1RH093 -21. + CH438 RH094 -14.5 RH110 -1.64 + CH442 2RH026 -1. RH053 1. + CH442 RH115 2.57 RH116 -4.05 + CH442 RH117 34. RH118 -35.5 + CH442 1RH118 -5. + CH444 2RH026 -1. RH052 1. + CH444 RH093 -1.48 1RH093 29. + CH444 RH094 -35.5 RH110 .81 + CH445 1RH026 -1. RH053 1. + CH445 RH115 -2.03 RH116 .55 + CH445 RH117 57. RH118 -35.5 + CH445 1RH118 -5. + CH447 1RH026 -1. RH052 1. + CH447 RH093 -6.08 1RH093 52. + CH447 RH094 -35.5 RH110 5.41 + CH448 1RH027 -1. RH053 1. + CH448 RH115 .52 RH116 -2. + CH448 RH117 71. RH118 -36.7 + CH448 1RH118 -5. + CH450 1RH027 -1. RH052 1. + CH450 RH093 -3.53 1RH093 66. + CH450 RH094 -36.7 RH110 2.86 + CH451 RH030 -1. RH051 1. + CH451 RH090 17.72 1RH090 3. + CH451 2RH090 -19.05 RH091 23. + CH451 RH103 1. RH108 -30. + CH452 RH030 -1. RH053 1. + CH452 RH115 13.92 RH116 -15.4 + CH452 RH117 -29. RH118 13. + CH452 1RH118 -5. + CH454 RH030 -1. RH052 1. + CH454 RH093 9.87 1RH093 -34. + CH454 RH094 13. RH110 -10.54 + CH455 3RH030 -1. RH051 1. + CH455 RH090 13.23 2RH090 -14.56 + CH455 RH091 6. RH103 1. + CH455 RH108 -30. + CH456 3RH030 -1. RH053 1. + CH456 RH115 9.43 RH116 -10.91 + CH456 RH117 -32. RH118 -4. + CH456 1RH118 -5. + CH459 3RH030 -1. RH052 1. + CH459 RH093 5.38 1RH093 -37. + CH459 RH094 -4. RH110 -6.05 + CH460 2RH030 -1. RH051 1. + CH460 RH090 16.41 1RH090 11. + CH460 2RH090 -17.74 RH091 2.6 + CH460 RH103 1. RH108 -30. + CH461 2RH030 -1. RH053 1. + CH461 RH115 12.61 RH116 -14.09 + CH461 RH117 -21. RH118 -7.4 + CH461 1RH118 -5. + CH464 2RH030 -1. RH052 1. + CH464 RH093 8.56 1RH093 -26. + CH464 RH094 -7.4 RH110 -9.23 + CH465 1RH030 -1. RH051 1. + CH465 RH090 18.45 1RH090 2. + CH465 2RH090 -19.79 RH103 1. + CH465 RH108 -30. + CH467 1RH030 -1. RH109 1. + CH467 1RH109 14.66 2RH109 -16.14 + CH468 1RH030 -1. RH052 1. + CH468 RH093 10.61 1RH093 -35. + CH468 RH094 -10. RH110 -11.28 + CH472 1RH033 -1. RH053 1. + CH472 RH115 9.82 RH116 -11.3 + CH472 RH117 51. RH118 -34.2 + CH472 1RH118 -5. + CH474 1RH033 -1. RH052 1. + CH474 RH093 5.77 1RH093 46. + CH474 RH094 -34.2 RH110 -6.44 + CH475 2RH033 -1. RH053 1. + CH475 RH115 7.32 RH116 -8.8 + CH475 RH117 59. RH118 -34.5 + CH475 1RH118 -5. + CH477 2RH033 -1. RH052 1. + CH477 RH093 3.27 1RH093 54. + CH477 RH094 -34.5 RH110 -3.94 + CH478 4RH030 -1. RH053 1. + CH478 RH115 11.19 RH116 -12.67 + CH478 RH117 71. RH118 -35. + CH478 1RH118 -5. + CH480 4RH030 -1. RH052 1. + CH480 RH093 7.14 1RH093 66. + CH480 RH094 -35. RH110 -7.81 + CH481 RH022 .934 RH030 -1. + CH481 RH096 .032 RH099 1. + CH481 RH113 .016 + CH482 RH022 .467 RH030 -1. + CH482 RH051 .467 RH090 10.409 + CH482 1RH090 3.736 2RH090 -6.361 + CH482 RH091 10.04 RH096 .032 + CH482 RH099 1. RH103 .467 + CH482 RH108 32.69 RH113 .016 + CH483 RH022 -1. RH053 1. + CH483 RH115 8.49 RH116 -9.97 + CH483 RH117 -24. RH118 11.5 + CH483 1RH118 -5. + CH485 RH022 -1. RH052 1. + CH485 RH093 4.44 1RH093 -29. + CH485 RH094 11.5 RH110 -5.11 + CH486 1RH022 .934 3RH030 -1. + CH486 RH096 .032 RH099 1. + CH486 RH113 .016 + CH487 1RH022 .467 3RH030 -1. + CH487 RH051 .467 RH090 5.193 + CH487 1RH090 1.401 2RH090 -5.814 + CH487 RH091 3.876 RH096 .032 + CH487 RH099 1. RH103 .467 + CH487 RH108 32.69 RH113 .016 + CH488 1RH022 -1. RH053 1. + CH488 RH115 7.32 RH116 -8.8 + CH488 RH117 -29. RH118 -1.7 + CH488 1RH118 -5. + CH491 1RH022 -1. RH052 1. + CH491 RH093 3.27 1RH093 -34. + CH491 RH094 -1.7 RH110 -3.94 + CH492 2RH022 .934 2RH030 -1. + CH492 RH096 .032 RH099 1. + CH492 RH113 .016 + CH493 2RH022 .467 2RH030 -1. + CH493 RH051 .467 RH090 10.656 + CH493 1RH090 6.071 2RH090 -6.608 + CH493 RH091 2.148 RH096 .032 + CH493 RH099 1. RH103 .467 + CH493 RH108 32.69 RH113 .016 + CH494 2RH022 -1. RH053 1. + CH494 RH115 9.02 RH116 -10.05 + CH494 RH117 -19. RH118 -5.4 + CH494 1RH118 -5. + CH497 2RH022 -1. RH052 1. + CH497 RH093 4.97 1RH093 -24. + CH497 RH094 -5.4 RH110 -5.64 + CH498 3RH022 .934 1RH030 -1. + CH498 RH096 .032 RH099 1. + CH498 RH113 .016 + CH499 3RH022 .467 1RH030 -1. + CH499 RH051 .467 RH090 10.676 + CH499 1RH090 1.401 2RH090 -6.627 + CH499 RH091 .934 RH096 .032 + CH499 RH099 1. RH103 .467 + CH499 RH108 32.69 RH113 .016 + CH501 3RH022 -1. RH109 1. + CH501 1RH109 9.06 2RH109 -10.54 + CH502 3RH022 -1. RH052 1. + CH502 RH093 5.03 1RH093 -34. + CH502 RH094 -8. RH110 -5.68 + CH503 RH029 -1. RH053 1. + CH503 RH115 -5.18 RH116 3.7 + CH503 RH117 48. RH118 -16. + CH503 1RH118 -5. + CH505 RH029 -1. RH052 1. + CH505 RH093 -9.23 1RH093 43. + CH505 RH094 -16. RH110 8.56 + CH506 1RH029 -1. RH053 1. + CH506 RH115 -6.03 RH116 4.55 + CH506 RH117 91. RH118 -37.6 + CH506 1RH118 -5. + CH508 1RH029 -1. RH052 1. + CH508 RH093 -10.08 1RH093 86. + CH508 RH094 -37.7 RH110 9.41 + CH509 RH020 .09 RH029 -1. + CH509 RH053 .78 RH096 .076 + CH509 RH099 1. RH113 .04 + CH509 RH115 -6.29 RH116 5. + CH509 RH117 5.22 RH118 -11.31 + CH509 1RH118 -4.35 + CH511 RH020 .09 RH029 -1. + CH511 RH052 .78 RH093 -9.81 + CH511 1RH093 .87 RH094 -11.31 + CH511 RH096 .076 RH099 1. + CH511 RH110 9.23 RH113 .04 + CH512 2RH023 .09 1RH029 -1. + CH512 RH053 .78 RH096 .076 + CH512 RH099 1. RH113 .04 + CH512 RH115 -8.74 RH116 8.33 + CH512 RH117 31.3 RH118 -32.45 + CH512 1RH118 -4.35 + CH514 2RH023 .09 1RH029 -1. + CH514 RH052 .78 RH093 -12.27 + CH514 1RH093 27. RH094 -32.45 + CH514 RH096 .076 RH099 1. + CH514 RH110 11.68 RH113 .04 + CH515 4RH022 -1. RH053 1. + CH515 RH115 10.17 RH116 -11.65 + CH515 RH117 -12. RH118 15. + CH515 1RH118 -5. + CH517 4RH022 -1. RH052 1. + CH517 RH093 6.12 1RH093 -17. + CH517 RH094 15. RH110 -6.79 + CH518 RH001 1. 1RH001 1.01 + CH518 RH007 .0024 RH008 .0099 + CH518 1RH008 .0022 RH010 .0382 + CH518 RH016 .1081 RH018 .0242 + CH518 RH019 .101 RH020 .0929 + CH518 2RH025 .005 RH026 .394 + CH518 1RH028 .0151 RH029 .0988 + CH518 RH030 .1014 1RH060 .2153 + CH518 RH096 -.0228 RH107 1. + CH518 1RH107 -1. RH113 .0048 + CH519 RH001 1.151 2RH001 1.01 + CH519 RH007 .0022 RH008 .0088 + CH519 1RH008 .002 RH010 .065 + CH519 RH016 .157 RH018 .03 + CH519 RH019 .09 RH020 .083 + CH519 2RH025 .007 RH026 .3019 + CH519 1RH028 .0174 RH029 .1143 + CH519 RH030 .1174 1RH060 .2491 + CH519 RH096 -.0237 RH107 1.151 + CH519 1RH107 -1. RH113 .004 + CH520 RH001 1.027 RH003 1.01 + CH520 RH007 .0039 RH008 .0092 + CH520 1RH008 .0004 RH010 .0485 + CH520 RH016 .1344 RH018 .0394 + CH520 RH019 .1373 RH020 .107 + CH520 2RH025 .005 RH027 .2999 + CH520 1RH028 .0251 RH029 .1168 + CH520 RH030 .0805 1RH060 .2224 + CH520 RH096 -.023 RH107 1.027 + CH520 1RH107 -1. RH113 .0006 + CH521 RH001 1.1 RH006 1.01 + CH521 RH007 .002 RH008 .0072 + CH521 1RH008 .0005 RH010 .0378 + CH521 RH016 .1495 2RH017 .2627 + CH521 RH018 .0436 3RH018 .1228 + CH521 RH021 .1257 2RH025 .005 + CH521 1RH028 .0191 RH029 .1279 + CH521 3RH030 .0912 1RH060 .2382 + CH521 RH096 -.0234 RH107 1.1 + CH521 1RH107 -1. RH113 .003 + CH522 RH001 1.1 RH002 1.01 + CH522 RH007 .0024 RH008 .009 + CH522 1RH008 .0019 RH010 .0259 + CH522 RH015 .1192 RH017 .2843 + CH522 RH018 .0354 2RH018 .1273 + CH522 RH021 .1333 2RH025 .005 + CH522 1RH028 .0198 RH029 .1327 + CH522 2RH030 .0956 1RH060 .2481 + CH522 RH096 -.0237 RH107 1.1 + CH522 1RH107 -1. RH113 .0062 + CH524 RH001 1.1 1RH005 1.01 + CH524 RH007 .0002 RH008 .0004 + CH524 1RH008 .0003 RH010 .0236 + CH524 RH015 .07 RH018 .03 + CH524 RH019 .15 RH023 .22 + CH524 2RH025 .005 2RH026 .2619 + CH524 1RH028 .019 1RH029 .0834 + CH524 1RH033 .1357 1RH060 .2381 + CH524 RH096 -.0234 RH107 1.1 + CH524 1RH107 -1. RH113 .0005 + CH525 RH001 1.1 RH005 1.01 + CH525 RH007 .0012 RH008 .0018 + CH525 1RH008 .0003 RH010 .025 + CH525 RH015 .138 RH018 .037 + CH525 RH019 .161 1RH021 .178 + CH525 2RH025 .014 1RH026 .2032 + CH525 1RH028 .026 1RH029 .1424 + CH525 2RH033 .069 1RH060 .2378 + CH525 RH096 -.0234 RH107 1.1 + CH525 1RH107 1. RH113 .0007 + CHF28 RH051 -1. 1RH051 1. + CHF28 RH091 3. + 1CHF29 2RH051 1. RH052 -1. + 1CHF29 1RH093 -3. RH094 5. + CHF35 RH052 -1. 3RH052 1. + CHF35 RH093 3.08 RH094 5. + CHF35 RH110 -3.19 + CHF48 RH053 -1. 3RH053 1. + CHF48 RH117 -3. RH118 5. + CHF80 RH052 -1. 2RH052 1. + CHF80 RH094 5. + CHF82 RH053 -1. 2RH053 1. + CHF82 RH115 -1.05 RH116 1.67 + CHF82 RH117 -5. RH118 15. + C1002 R1002 1.01 R1008 .0005 + C1002 R1012 .012 R1013 .0775 + C1002 R1015 .09 R1016 .031 + C1002 R1017 .026 R1018 .134 + C1002 R1019 .141 R1022 .051 + C1002 R1025 .437 R1039 -.026 + C1002 R1071 1.028 1R1071 .973 + C1002 2R1071 1. + C1003 R1003 1.01 R1008 .0025 + C1003 R1010 .003 R1012 .011 + C1003 R1013 .0635 R1015 .064 + C1003 R1016 .022 R1017 .022 + C1003 R1018 .103 R1019 .118 + C1003 R1022 .044 R1026 .547 + C1003 R1039 -.0212 R1071 1. + C1003 1R1071 1. 2R1071 1. + C1004 R1004 1.01 R1008 .0025 + C1004 R1010 .0025 R1012 .01 + C1004 R1014 .065 R1015 .082 + C1004 R1016 .026 R1017 .026 + C1004 R1018 .127 R1020 .141 + C1004 R1023 .054 R1027 .464 + C1004 R1039 -.0247 R1071 1.018 + C1004 1R1071 .973 2R1071 1. + C1005 R1005 1.01 R1008 .0016 + C1005 R1010 .0022 R1012 .011 + C1005 R1014 .0642 R1015 .081 + C1005 R1016 .02 R1017 .025 + C1005 R1018 .112 1R1019 .127 + C1005 R1022 .046 R1028 .51 + C1005 R1039 -.0212 R1071 .999 + C1005 1R1071 1. 2R1071 1. + 1C1005 R1005 .808 1R1006 .202 + 1C1005 2R1006 .202 R1008 .0017 + 1C1005 R1010 .002 R1012 .0104 + 1C1005 R1014 .0621 R1015 .0778 + 1C1005 R1016 .021 R1017 .025 + 1C1005 R1018 .1096 3R1021 .1256 + 1C1005 R1023 .0498 1R1027 .515 + 1C1005 R1039 -.0213 R1071 1.004 + 1C1005 1R1071 1.0032 2R1071 1. + 1C1006 1R1007 1.01 R1008 .0035 + 1C1006 R1010 .0005 R1012 .007 + 1C1006 R1013 .067 R1015 .107 + 1C1006 R1016 .032 R1017 .033 + 1C1006 R1018 .17 1R1020 .158 + 1C1006 R1023 .057 1R1028 .365 + 1C1006 R1039 -.0247 R1071 1.052 + 1C1006 1R1071 .95 2R1071 1. + C1007 R1007 1.01 R1008 .001 + C1007 R1012 .004 R1013 .044 + C1007 R1015 .093 R1016 .027 + C1007 R1017 .03 R1018 .141 + C1007 1R1021 .193 R1024 .069 + C1007 R1029 .398 R1039 -.0264 + C1007 R1071 1.024 1R1071 .992 + C1007 2R1071 1. + C1008 1R1004 1.01 R1008 .001 + C1008 R1010 .001 R1012 .002 + C1008 R1013 .037 R1015 .048 + C1008 R1016 .02 R1017 .02 + C1008 R1018 .138 2R1021 .266 + C1008 R1024 .031 2R1028 .436 + C1008 R1039 -.0264 R1071 .973 + C1008 1R1071 .992 2R1071 1. + 1C1008 1R1004 .808 1R1006 .202 + 1C1008 2R1006 .202 R1008 .0012 + 1C1008 R1010 .001 R1012 .0032 + 1C1008 R1013 .0404 R1015 .0514 + 1C1008 R1016 .021 R1017 .021 + 1C1008 R1018 .1304 R1021 .2368 + 1C1008 R1024 .0378 2R1028 .4558 + 1C1008 R1039 -.0254 R1071 .9834 + 1C1008 1R1071 .9968 2R1071 1. + C1009 R1002 .7575 1R1006 .2525 + C1009 2R1006 .2525 R1008 .0009 + C1009 R1010 .0003 R1012 .011 + C1009 R1013 .0716 R1015 .0838 + C1009 R1016 .0296 R1017 .0258 + C1009 R1018 .1255 3R1021 .1357 + C1009 R1023 .0546 3R1028 .4612 + C1009 R1039 -.0248 R1071 1.0273 + C1009 1R1071 .9838 2R1071 1. + 2C1009 R1003 .7575 1R1006 .2525 + 2C1009 2R1006 .2525 R1008 .0024 + 2C1009 R1010 .0026 R1012 .0103 + 2C1009 R1013 .0611 R1015 .0643 + 2C1009 R1016 .0228 R1017 .0228 + 2C1009 R1018 .1022 3R1021 .1185 + 2C1009 R1023 .0493 3R1028 .5437 + 2C1009 R1039 -.0212 R1071 1.0063 + 2C1009 1R1071 1.004 2R1071 1. + C1012 R1008 -1. R1039 1.19 + C1013 R1009 -1. R1039 1.19 + 1C1013 R0000 -16. R1009 -1. + 1C1013 1R1009 1. + C1015 R0000 16.7 R1010 1. + 1C1015 R1009 1. R1010 -1. + C1016 R0000 -11.5 1R1009 1. + C1016 R1012 -1. + C1017 R1008 1. R1010 -1. + C1018 R0000 12. R1012 1. + C1020 R1008 1. R1012 -1. + C1021 R0000 .228 R1012 -1. + C1021 R1046 1. R1075 -6.38 + C1021 R1076 -.579 R1077 -91.399899 + C1021 R1078 225.899897 + C1022 R0000 .114 R1012 -1. + C1022 R1050 1. R1079 -23.8 + C1022 R1080 -.772 R1081 -91.399899 + C1022 R1082 225.899897 + C1023 R1014 -1. R1039 1.11 + C1023 1R1039 1. R1042 -1. + 1C1023 R1013 -1. R1014 1. + C1024 R0000 .196 R1014 -1. + C1024 R1046 1. R1075 18.22 + C1024 R1076 -.498 R1077 -63.7 + C1024 R1078 28.1 + C1025 R0000 .098 R1014 -1. + C1025 R1050 1. R1079 9.33 + C1025 R1080 -.664 R1081 -63.7 + C1025 R1082 28.1 + C1026 R1014 -1. R1055 1. + C1026 UKLDF -1. + 1C1027 R1013 -1. R1054 1. + 1C1027 R1070 1. UKLDF -1. + C1028 R1015 -1. R1039 1.11 + C1028 1R1039 1. R1042 -1. + C1029 R0000 .09 R1015 -1. + C1029 R1050 1. R1079 22.2 + C1029 R1080 -.61 R1081 30. + C1029 R1082 -36.8 + C1030 R1015 -1. R1055 1. + C1030 UKLDF -1. + C1032 R1016 -1. R1055 1. + C1032 UKLDF -1. + C1034 R1016 -1. R1062 1. + C1034 R1091 10.58 R1092 -8.5 + C1034 R1093 -21.48 R1094 56.8 + C1034 R1095 -7. R1096 -100. + C1035 R1016 -1. R1063 1. + C1035 R1097 13.41 R1098 -13.5 + C1035 R1099 -30.52 R1100 56.8 + C1035 R1101 14.88 + C1036 R1016 -1. R1065 1. + C1036 R1106 -36.06 R1107 35.35 + C1036 R1108 -18.5 R1109 56.8 + C1036 R1110 -117. + C1037 R1016 -1. R1068 1. + C1037 R1111 -35.54 R1112 34.85 + C1037 R1113 -38.5 R1114 56.8 + C1037 R1115 -104. + C1038 R1016 -.52 R1017 -.48 + C1038 R1055 1. UKLDF -1. + C1040 R1016 -.52 R1017 -.48 + C1040 R1062 1. R1091 8.89 + C1040 R1092 -8.5 R1093 -21.16 + C1040 R1094 38.71 R1095 -7. + C1040 R1096 -100. + C1041 R1016 -.52 R1017 -.48 + C1041 R1063 1. R1097 11.72 + C1041 R1098 -13.5 R1099 -30.06 + C1041 R1100 38.71 R1101 14.88 + C1042 R1016 -.52 R1017 -.48 + C1042 R1065 1. R1106 -36.06 + C1042 R1107 35.35 R1108 -18.5 + C1042 R1109 38.71 R1110 -117. + C1043 R1016 -.52 R1017 -.48 + C1043 R1068 1. R1111 -35.54 + C1043 R1112 34.85 R1113 -38.5 + C1043 R1114 38.71 R1115 -104. + 1C1043 R1016 -.52 R1017 -.48 + 1C1043 R1039 1.09 1R1039 1. + 1C1043 R1042 -1. + C1044 R1016 -.26 R1017 -.24 + C1044 R1018 -.5 R1057 1. + C1044 1R1057 1. + C1045 R1017 -.6 R1018 -.4 + C1045 R1057 1. 1R1057 1. + C1047 R1017 -.185 R1018 -.575 + C1047 R1039 -.0194 R1058 .76 + C1047 R1074 1. + C1048 R1017 -.16 R1018 -.84 + C1048 R1060 1. R1086 1.96 + C1048 R1087 -7. R1088 -5.78 + C1048 R1089 6.62 R1090 -7. + C1049 R1017 -.16 R1018 -.84 + C1049 R1062 1. R1091 3.28 + C1049 R1092 -7. R1093 -18.67 + C1049 R1094 6.62 R1095 -7. + C1049 R1096 -100. + C1050 R1017 -.16 R1018 -.84 + C1050 R1063 1. R1097 6.11 + C1050 R1098 -12. R1099 -27.23 + C1050 R1100 6.62 R1101 9.08 + C1052 R1017 -.16 R1018 -.84 + C1052 R1065 1. R1106 -30.26 + C1052 R1107 29.55 R1108 -17. + C1052 R1109 6.62 R1110 -99. + C1053 R1017 -.16 R1018 -.84 + C1053 R1068 1. R1111 -29.74 + C1053 R1112 29.05 R1113 -37. + C1053 R1114 6.62 R1115 -86. + C1055 R1018 -1. R1060 1. + C1055 R1086 1.2 R1087 -6.6 + C1055 R1088 -5.41 R1089 .58 + C1055 R1090 -7. + C1056 R1018 -1. R1062 1. + C1056 R1091 2.52 R1092 -6.6 + C1056 R1093 -18.2 R1094 .58 + C1056 R1095 -7. R1096 -100. + C1057 R1018 -1. R1063 1. + C1057 R1097 5.35 R1098 -11.6 + C1057 R1099 -26.69 R1100 .58 + C1057 R1101 7.98 + C1058 R1018 -1. R1064 1. + C1058 R1102 -21.98 1R1102 20.84 + C1058 R1103 -28.6 R1104 .58 + C1058 R1105 -47. + C1059 R1018 -1. R1065 1. + C1059 R1106 -29.16 R1107 28.45 + C1059 R1108 -16.6 R1109 .58 + C1059 R1110 -99. + 1C1059 R1018 -1. R1039 1.08 + C1060 R1018 -1. R1068 1. + C1060 R1111 -28.64 R1112 27.95 + C1060 R1113 -36.6 R1114 .58 + C1060 R1115 -86. + 1C1060 R1019 1. 1R1019 -1. + 2C1060 R1021 1. 1R1021 -1. + C1061 R1019 -1. R1060 1. + C1061 R1086 -1.46 R1087 1.2 + C1061 R1088 13.32 R1089 -2.94 + C1061 R1090 -5. + 1C1061 R1020 1. 1R1020 -1. + 2C1061 R1021 1. 2R1021 -1. + C1062 R1019 -1. R1062 1. + C1062 R1091 -.14 R1092 1.2 + C1062 R1093 .84 R1094 -2.94 + C1062 R1095 -5. + C1063 R1019 -1. R1063 1. + C1063 R1097 2.69 R1098 -3.8 + C1063 R1099 -7.44 R1100 -2.94 + C1063 R1101 2.33 + C1064 R1019 -1. R1064 1. + C1064 R1102 -16.33 1R1102 15.19 + C1064 R1103 -20.8 R1104 -2.94 + C1064 R1105 -18. + C1065 R1019 -1. R1068 1. + C1065 R1111 -22.99 R1112 22.3 + C1065 R1113 -28.8 R1114 -2.94 + C1065 R1115 -57. + 1C1065 R1019 -1. R1039 1.06 + C1066 R1020 -1. R1060 1. + C1066 R1086 -3.32 R1087 -2.5 + C1066 R1088 13.1 R1089 -2.94 + C1066 R1090 -3. + C1067 R1020 -1. R1062 1. + C1067 R1091 -2. R1092 -2.5 + C1067 R1093 .83 R1094 -2.94 + C1067 R1095 -3. + C1068 R1020 -1. R1063 1. + C1068 R1097 .83 R1098 -7.5 + C1068 R1099 -7.32 R1100 -2.94 + C1068 R1101 .37 + C1069 R1020 -1. R1064 1. + C1069 R1102 -14.37 1R1102 13.23 + C1069 R1103 -24.5 R1104 -2.94 + C1069 R1105 -18. + C1070 R1021 -1. R1060 1. + C1070 R1086 -4.84 R1087 -8.3 + C1070 R1088 12.99 R1089 -2.94 + C1070 R1090 7. + 1C1070 3R1021 -1. R1060 1. + 1C1070 R1086 -1.17 R1087 -1. + 1C1070 R1088 13.43 R1089 -2.94 + 1C1070 R1090 -7. + C1071 R1021 -1. R1062 1. + C1071 R1091 -3.52 R1092 -8.3 + C1071 R1093 .82 R1094 -2.94 + C1071 R1095 7. + 1C1071 3R1021 -1. R1062 1. + 1C1071 R1091 -.15 R1092 -1. + 1C1071 R1093 .85 R1094 -2.94 + 1C1071 R1095 -7. + C1072 R1021 -1. R1063 1. + C1072 R1097 -.69 R1098 -13.3 + C1072 R1099 -7.25 R1100 -2.94 + C1072 R1101 .78 + C1074 R1021 -1. R1065 1. + C1074 R1106 -21.96 R1107 21.25 + C1074 R1108 -18.3 R1109 -2.94 + C1074 R1110 -70. + C1076 R1019 -.86 R1022 -.14 + C1076 R1064 1. R1102 -13.57 + C1076 1R1102 12.43 R1103 -19. + C1076 R1104 -3.17 R1105 -17. + C1078 R1020 -.88 R1023 -.12 + C1078 R1064 1. R1102 -14.48 + C1078 1R1102 13.34 R1103 -23.7 + C1078 R1104 -3.17 R1105 -17. + C1081 R1022 -1. R1062 1. + C1081 R1091 -5.54 R1092 7.8 + C1081 R1093 113.399899 R1094 -3.47 + C1081 R1095 1. + C1082 R1022 -1. R1063 1. + C1082 R1097 -2.71 R1098 2.8 + C1082 R1099 105.459998 R1100 -3.47 + C1082 R1101 -3.64 + C1083 R1022 -1. R1065 1. + C1083 R1106 -17.54 R1107 16.83 + C1083 R1108 -2.2 R1109 -3.47 + C1083 R1110 -37. + C1084 R1022 -1. R1068 1. + C1084 R1111 -17.02 R1112 16.33 + C1084 R1113 -22.2 R1114 -3.47 + C1084 R1115 -24. + 1C1084 R1022 -1. R1039 1.05 + C1085 R1023 -1. R1062 1. + C1085 R1091 -5.54 R1092 4.1 + C1085 R1093 113.399899 R1094 -3.47 + C1085 R1095 2. + 1C1085 R1023 -1. R1063 1. + 1C1085 R1097 -2.71 R1098 -.9 + 1C1085 R1099 105.459998 R1100 -3.47 + 1C1085 R1101 -5.02 + C1086 R1023 -1. R1068 1. + C1086 R1111 -15.64 R1112 14.95 + C1086 R1113 -25.9 R1114 -3.47 + C1086 R1115 -24. + C1087 R1023 -1. R1065 1. + C1087 R1106 -16.16 R1107 15.45 + C1087 R1108 -5.9 R1109 -3.47 + C1087 R1110 -37. + C1088 R1024 -1. R1062 1. + C1088 R1091 -4.2 R1092 -7.4 + C1088 R1093 114.3799 R1094 -3.61 + C1088 R1095 7. + C1089 R1024 -1. R1063 1. + C1089 R1097 -1.37 R1098 -12.4 + C1089 R1099 106.370098 R1100 -3.61 + C1089 R1101 -1.84 + C1090 R1024 -1. R1065 1. + C1090 R1106 -19.34 R1107 18.63 + C1090 R1108 -17.4 R1109 -3.61 + C1090 R1110 -37. + C1091 R1024 -1. R1068 1. + C1091 R1111 -18.82 R1112 18.13 + C1091 R1113 -37.4 R1114 -3.61 + C1091 R1115 -24. + 1C1091 3R1028 -1. R1030 .5 + 1C1091 2R1033 .598 R1037 -.098 + 1C1091 R1039 -.0154 R1072 1.005 + 2C1091 3R1028 -1. R1065 1. + 2C1091 R1106 -.26 R1107 -.45 + 2C1091 R1108 10.5 R1109 -.8 + 2C1091 R1110 6. + 3C1091 3R1028 -1. R1068 1. + 3C1091 R1111 .26 R1112 -.95 + 3C1091 R1113 -9.5 R1114 -.8 + 3C1091 R1115 19. + C1092 R1025 -1. R1030 .52 + C1092 R1032 .6 R1037 -.12 + C1092 R1039 -.0154 R1072 1.003 + C1093 R1025 -1. R1065 1. + C1093 R1106 -.06 R1107 -.65 + C1093 R1108 20.5 R1109 -.8 + C1093 R1110 -10. + C1094 R1025 -1. R1068 1. + C1094 R1111 .46 R1112 -1.15 + C1094 R1113 .5 R1114 -.8 + C1094 R1115 3. + C1095 R1026 -1. R1030 .479 + C1095 R1032 .618 R1037 -.097 + C1095 R1039 -.0154 R1072 1. + C1096 R1026 -1. R1065 1. + C1096 R1106 1.24 R1107 -1.95 + C1096 R1108 21.5 R1109 -.8 + C1096 R1110 -20. + C1097 R1026 -1. R1068 1. + C1097 R1111 1.76 R1112 -2.45 + C1097 R1113 1.5 R1114 -.8 + C1097 R1115 -7. + 1C1097 1R1027 -1. R1030 .464 + 1C1097 3R1033 .691 R1037 -.155 + 1C1097 R1039 -.0154 R1072 1. + 2C1097 1R1027 -1. R1065 1. + 2C1097 R1106 1.73 R1107 -2.44 + 2C1097 R1108 1.3 R1109 -.8 + 2C1097 R1110 2. + C1098 R1027 -1. R1030 .577 + C1098 R1033 .536 R1037 -.113 + C1098 R1039 -.0154 R1072 1.007 + C1099 R1027 -1. R1065 1. + C1099 R1106 .24 R1107 -.95 + C1099 R1108 3. R1109 -.8 + C1099 R1110 -10. + C1100 R1027 -1. R1068 1. + C1100 R1111 .76 R1112 -1.45 + C1100 R1113 -17. R1114 -.8 + C1100 R1115 3. + C1101 R1028 -1. R1030 .454 + C1101 R1033 .732 R1037 -.186 + C1101 R1039 -.0154 R1072 1.044 + C1102 R1028 -1. R1065 1. + C1102 R1106 2.44 R1107 -3.15 + C1102 R1108 6.3 R1109 -.8 + C1102 R1110 -10. + C1103 R1028 -1. R1068 1. + C1103 R1111 2.96 R1112 -3.65 + C1103 R1113 -13.7 R1114 -.8 + C1103 R1115 3. + 1C1103 1R1028 -1. R1030 .653 + 1C1103 1R1033 .347 R1039 -.0154 + 1C1103 R1072 1.052 + 2C1103 1R1028 -1. R1065 1. + 2C1103 R1106 -5.35 R1107 4.64 + 2C1103 R1108 -4.5 R1109 -.8 + 2C1103 R1110 4. + 3C1103 1R1028 -1. R1068 1. + 3C1103 R1111 -4.83 R1112 4.14 + 3C1103 R1113 -24.5 R1114 -.8 + 3C1103 R1115 17. + C1104 R1021 -.037 R1024 -.008 + C1104 R1029 -1. R1031 .77 + C1104 R1034 .275 R1039 -.0154 + C1104 R1072 1.246 + 1C1104 R1021 -.073 R1024 -.016 + 1C1104 2R1028 -1. R1031 .63 + 1C1104 R1034 .459 R1039 -.0154 + 1C1104 R1072 1.02 + 2C1104 2R1028 -1. R1065 1. + 2C1104 R1106 -1.2 R1107 .49 + 2C1104 R1108 -14.5 R1109 -.8 + 2C1104 R1110 -3. + 3C1104 2R1028 -1. R1068 1. + 3C1104 R1111 -.68 R1112 -.01 + 3C1104 R1113 -34.5 R1114 -.8 + 3C1104 R1115 10. + C1105 R1029 -1. R1065 1. + C1105 R1106 -4.02 R1107 3.31 + C1105 R1108 -16.1 R1109 -.8 + C1105 R1110 50. + C1106 R1029 -1. R1068 1. + C1106 R1111 -3.5 R1112 2.81 + C1106 R1113 -36.1 R1114 -.8 + C1106 R1115 63. + C1108 R0000 .0504 R1009 .075 + C1108 R1010 .039 R1012 .095 + C1108 R1030 -1. R1035 .16 + C1108 R1036 .202 R1037 .233 + C1108 1R1038 .015 R1039 .0437 + C1108 R1073 1.5 + 1C1108 R0000 .0504 R1009 .076 + 1C1108 R1010 .04 R1012 .097 + 1C1108 R1022 -.15 R1030 -.85 + 1C1108 R1035 .159 R1036 .205 + 1C1108 R1037 .229 1R1038 .015 + 1C1108 R1039 .0466 R1073 1.5 + C1109 R0000 .0504 R1009 .025 + C1109 R1010 .014 R1012 .054 + C1109 R1030 -1. R1035 .111 + C1109 R1036 .192 R1037 .227 + C1109 1R1038 .246 R1039 .0552 + C1109 R1073 1. + C1111 R0000 .0504 R1009 .067 + C1111 R1010 .036 R1012 .089 + C1111 R1030 -1. R1035 .144 + C1111 R1036 .176 R1037 .194 + C1111 1R1038 .144 R1039 .0532 + C1111 R1073 1.11 + C1112 R0000 .0504 R1009 .049 + C1112 R1010 .026 R1012 .073 + C1112 R1030 -1. R1035 .13 + C1112 R1036 .185 R1037 .209 + C1112 1R1038 .189 R1039 .055 + C1112 R1073 1. + 1C1112 R0000 .0504 R1009 .047 + 1C1112 R1010 .027 R1012 .076 + 1C1112 R1022 -.15 R1030 -.85 + 1C1112 R1035 .128 R1036 .188 + 1C1112 R1037 .203 1R1038 .191 + 1C1112 R1039 .0557 R1073 1. + C1113 R0000 .0504 R1009 .03 + C1113 R1010 .02 R1012 .053 + C1113 R1031 -1. R1035 .101 + C1113 R1036 .188 R1038 .195 + C1113 2R1038 .281 R1039 .0509 + C1113 R1073 1. + C1116 R0000 .0504 R1009 .017 + C1116 R1010 .013 R1012 .036 + C1116 R1031 -1. R1035 .087 + C1116 R1036 .19 R1038 .208 + C1116 2R1038 .323 R1039 .0463 + C1116 R1073 1.11 + C1117 R0000 .0504 R1009 .047 + C1117 R1010 .029 R1012 .081 + C1117 R1031 -1. R1035 .119 + C1117 R1036 .181 R1038 .177 + C1117 2R1038 .224 R1039 .0526 + C1117 R1073 1. + 1C1117 R0000 .0504 R1009 .048 + 1C1117 R1010 .03 R1012 .082 + 1C1117 R1024 -.17 R1031 -.83 + 1C1117 R1035 .117 R1036 .183 + 1C1117 R1038 .172 2R1038 .227 + 1C1117 R1039 .0531 R1073 1. + C1118 R0000 .0504 R1009 .058 + C1118 R1010 .035 R1012 .098 + C1118 R1031 -1. R1035 .17 + C1118 R1036 .207 R1038 .212 + C1118 2R1038 .043 R1039 .0397 + C1118 R1073 1.67 + 1C1118 R0000 .0504 R1009 .058 + 1C1118 R1010 .036 R1012 .099 + 1C1118 R1024 -.17 R1031 -.83 + 1C1118 R1035 .169 R1036 .211 + 1C1118 R1038 .208 2R1038 .044 + 1C1118 R1039 .0416 R1073 1.67 + 2C1118 3R1033 -1. R1065 1. + 2C1118 R1106 3.01 R1107 -3.72 + 2C1118 R1108 7.4 R1109 -.8 + 2C1118 R1110 -19. + 3C1118 3R1033 -2. R1068 1. + 3C1118 R1111 3.53 R1112 -4.22 + 3C1118 R1113 -12.6 R1114 -.8 + 3C1118 R1115 -6. + C1119 R1032 -1. R1064 1. + C1119 R1102 10.19 1R1102 -11.33 + C1119 R1103 18.9 R1104 -.08 + C1119 R1105 -2. + C1120 R1032 -1. R1068 1. + C1120 R1111 3.53 R1112 -4.22 + C1120 R1113 10.9 R1114 -.8 + C1120 R1115 -41. + 1C1120 R1032 -1. R1065 1. + 1C1120 R1106 3.01 R1107 -3.72 + 1C1120 R1108 30.9 R1109 -.8 + 1C1120 R1110 -54. + 2C1120 2R1033 -1. R1065 1. + 2C1120 R1106 3.01 R1107 -3.72 + 2C1120 R1108 18.5 R1109 -.8 + 2C1120 R1110 -17. + 3C1120 2R1033 -1. R1068 1. + 3C1120 R1111 3.53 R1112 -4.22 + 3C1120 R1113 -1.5 R1114 -.8 + 3C1120 R1115 -4. + C1121 R1033 -1. R1064 1. + C1121 R1102 10.19 1R1102 -11.33 + C1121 R1103 -.5 R1104 -.08 + C1121 R1105 2. + C1122 R1033 -1. R1065 1. + C1122 R1106 3.01 R1107 -3.72 + C1122 R1108 11.5 R1109 -.8 + C1122 R1110 -50. + C1123 R1033 -1. R1068 1. + C1123 R1111 3.53 R1112 -4.22 + C1123 R1113 -8.5 R1114 -.8 + C1123 R1115 -37. + 1C1123 1R1033 -1. R1065 1. + 1C1123 R1106 3.09 R1107 -3.8 + 1C1123 R1108 1.5 R1109 -.8 + 1C1123 R1110 -17. + 2C1123 1R1033 -1. R1068 1. + 2C1123 R1111 3.61 R1112 -4.3 + 2C1123 R1113 -18.5 R1114 -.8 + 2C1123 R1115 -4. + 3C1123 1R1033 -1. R1064 1. + 3C1123 R1102 10.27 1R1102 -11.41 + 3C1123 R1103 -10.5 R1104 -.08 + 3C1123 R1105 35. + C1124 R1034 -1. R1065 1. + C1124 R1106 3.01 R1107 -3.72 + C1124 R1108 -15.9 R1109 -.8 + C1124 R1110 20. + C1125 R1034 -1. R1068 1. + C1125 R1111 3.53 R1112 -4.22 + C1125 R1113 -35.9 R1114 -.8 + C1125 R1115 33. + C1128 R1017 -.0075 R1018 -.04 + C1128 R1022 -.0475 R1065 -.905 + C1128 R1066 1. R1108 -5.88 + C1128 R1110 14.5 + C1130 R1039 1. R1068 -1. + C1131 R0000 .194 R1035 -1. + C1131 R1046 1. R1075 .73 + C1131 R1076 -.493 R1077 -76.399899 + C1131 R1078 43.5 + C1132 R0000 .097 R1035 -1. + C1132 R1050 1. R1079 -19.7 + C1132 R1080 -.658 R1081 -76.399899 + C1132 R1082 43.5 + C1133 R0000 .17 R1036 -1.27 + C1133 R1037 .27 R1046 1. + C1133 R1075 2.05 R1076 -.431 + C1133 R1077 52.6 R1078 -50.1 + C1134 R0000 .085 R1036 -1.27 + C1134 R1037 .27 R1050 1. + C1134 R1079 -15.1 R1080 -.574 + C1134 R1081 52.6 R1082 -50.1 + C1135 R0000 .165 R1036 -1. + C1135 R1046 1. R1075 2. + C1135 R1076 -.419 R1077 52.4 + C1135 R1078 -48.8 + C1136 R0000 .082 R1036 -1. + C1136 R1050 1. R1079 -14.7 + C1136 R1080 -.559 R1081 52.4 + C1136 R1082 -48.8 + C1137 R1037 -1. R1060 1. + C1137 R1086 -13.81 R1087 17.3 + C1137 R1088 7.02 R1089 -3.48 + C1137 R1090 43. + C1138 R1037 -1. R1062 1. + C1138 R1091 -12.49 R1092 17.3 + C1138 R1093 -4.21 R1094 -3.48 + C1138 R1095 43. + C1139 R1037 -1. R1063 1. + C1139 R1097 -9.66 R1098 12.3 + C1139 R1099 -11.66 R1100 -3.48 + C1139 R1101 1.33 + C1140 R1037 -1. R1064 1. + C1140 R1102 -15.33 1R1102 14.19 + C1140 R1103 -3.5 R1104 -3.48 + C1140 R1105 -22. + C1141 R1037 -1. R1068 1. + C1141 R1111 -21.99 R1112 21.3 + C1141 R1113 -11.5 R1114 -3.48 + C1141 R1115 -61. + C1142 R1038 -1. R1060 1. + C1142 R1086 -12.51 R1087 -5.8 + C1142 R1088 7.5 R1089 -3.48 + C1142 R1090 40. + C1143 R1038 -1. R1062 1. + C1143 R1091 -11.19 R1092 -5.8 + C1143 R1093 -4.25 R1094 -3.48 + C1143 R1095 40. + C1144 R1038 -1. R1064 1. + C1144 R1102 -15.33 1R1102 14.19 + C1144 R1103 -27.5 R1104 -3.48 + C1144 R1105 -22. + C1145 R1038 -1. R1065 1. + C1145 R1106 -22.51 R1107 21.8 + C1145 R1108 -15.5 R1109 -3.48 + C1145 R1110 -74. + C1146 R1038 -1. R1068 1. + C1146 R1111 -21.99 R1112 21.3 + C1146 R1113 -35.5 R1114 -3.48 + C1146 R1115 -61. + C1147 R1037 1. R1038 -1. + 1C1147 1R1038 -1. R1068 1. + 1C1147 R1111 -14.54 R1112 13.85 + 1C1147 R1113 -11.5 R1114 -3.44 + 1C1147 R1115 -10. + 2C1147 2R1038 -1. R1068 1. + 2C1147 R1111 -14.54 R1112 13.85 + 2C1147 R1113 -35.5 R1114 -3.44 + 2C1147 R1115 17. + C1148 1R1038 -1. R1039 1. + 1C1148 2R1038 -1. R1039 1. + C1149 R0000 .183 R1040 1. + C1149 R1046 1. R1075 -.28 + C1149 R1076 -.463 R1077 -64.799999 + C1149 R1078 24.6 + C1150 R0000 .091 R1040 1. + C1150 R1050 1. R1079 -17.79 + C1150 R1080 -.618 R1081 -64.799999 + C1150 R1082 24.6 + C1151 R0000 .156 R1041 1. + C1151 R1046 1. R1075 -3.76 + C1151 R1076 -.397 R1077 68.5 + C1151 R1078 -51.3 + C1152 R0000 .078 R1041 1. + C1152 R1050 1. R1079 -18.69 + C1152 R1080 -.529 R1081 68.5 + C1152 R1082 -51.3 + C1154 R0000 .166 R1043 1. + C1154 R1046 1. R1075 -4.38 + C1154 R1076 -.42 R1077 21.25 + C1154 R1078 -24.4 + C1156 R0000 .344 R1035 -.2 + C1156 R1040 .2 R1043 .6 + C1156 R1045 1. + C1158 R1046 -1. R1047 1. + C1158 R1075 1.32 + C1162 R1050 -1. R1051 1. + C1162 R1079 6.9 + C1163 R1018 -.196 R1020 -.285 + C1163 1R1021 -.377 R1023 -.06 + C1163 R1024 -.082 R1061 1. + 1C1163 R1018 -.468 R1020 -.241 + 1C1163 1R1021 -.163 R1023 -.093 + 1C1163 R1024 -.035 R1061 1. + 2C1163 R1018 -.438 1R1019 -.197 + 2C1163 1R1021 -.365 R1061 1. + 3C1163 R1018 -.31 1R1020 -.31 + 3C1163 2R1021 -.38 R1061 1. + C1165 R1062 -1. 2R1062 1. + C1165 R1091 -1.47 R1092 2.5 + C1165 R1093 -13.8 R1095 -5. + C1166 R1063 -1. 1R1063 1. + C1166 R1097 -3.56 R1098 3. + C1166 R1101 -7.36 + 1C1166 R1063 -1. 2R1063 1. + 1C1166 R1097 -2.83 R1098 3. + 1C1166 R1099 -8.5 R1101 -7.36 + C1167 R0000 .591 R1075 -4.46 + C1167 R1076 1. + C1168 R0000 .591 R1079 -11.2 + C1168 R1080 1. + C1F28 R1064 -1. 1R1064 1. + C1F28 R1103 2. + C1F35 R1068 -1. R1069 1. + C1F35 R1111 1.83 R1112 -1.98 + C1F35 R1113 5.5 R1115 3. + C1F64 R1068 -1. 1R1068 1. + C1F64 R1112 .15 R1113 5.5 + C1F64 R1115 3. + CJ001 1RJ006 1.01 RJ007 .019 + CJ001 1RJ007 .006 1RJ008 .06 + CJ001 RJ010 .083 RJ012 .066 + CJ001 RJ013 .141 RJ014 .016 + CJ001 RJ018 .192 RJ019 .028 + CJ001 RJ024 .389 RJ031 -.0234 + CJ001 RJ048 1.222 + CJ002 RJ001 1.01 RJ007 .014 + CJ002 1RJ007 .006 1RJ008 .049 + CJ002 RJ010 .081 RJ012 .044 + CJ002 RJ013 .091 RJ014 .01 + CJ002 RJ015 .136 RJ016 .024 + CJ002 RJ025 .545 RJ031 -.0202 + CJ002 RJ048 1. + 2CJ002 1RJ001 1.01 RJ007 .013 + 2CJ002 1RJ007 .005 1RJ008 .074 + 2CJ002 RJ010 .143 RJ012 .039 + 2CJ002 RJ013 .082 RJ014 .009 + 2CJ002 RJ015 .122 RJ016 .022 + 2CJ002 RJ025 .491 RJ031 -.0226 + 2CJ002 RJ048 1.21 + CJ003 RJ002 1.01 RJ007 .013 + CJ003 1RJ007 .005 RJ008 .047 + CJ003 RJ009 .107 1RJ011 .05 + CJ003 RJ014 .124 RJ018 .164 + CJ003 RJ019 .027 RJ026 .463 + CJ003 RJ031 -.022 RJ048 1.052 + CJ004 RJ003 1.01 RJ007 .017 + CJ004 1RJ007 .007 1RJ008 .059 + CJ004 RJ010 .098 RJ012 .051 + CJ004 RJ013 .105 RJ014 .012 + CJ004 RJ015 .149 RJ016 .024 + CJ004 RJ027 .478 RJ031 -.0215 + CJ004 RJ048 1.043 + CJ005 RJ004 1.01 RJ007 .024 + CJ005 1RJ007 .009 1RJ008 .078 + CJ005 RJ010 .127 RJ012 .065 + CJ005 RJ013 .13 RJ014 .015 + CJ005 RJ020 .172 RJ021 .025 + CJ005 RJ028 .355 RJ031 -.0234 + CJ005 RJ048 1.235 + CJ006 RJ005 1.01 RJ007 .015 + CJ006 1RJ007 .003 RJ008 .047 + CJ006 RJ009 .097 RJ011 .049 + CJ006 RJ014 .107 RJ018 .149 + CJ006 RJ019 .023 RJ029 .51 + CJ006 RJ031 -.0203 RJ048 1. + 1CJ006 RJ005 1.01 RJ007 .015 + 1CJ006 1RJ007 .003 RJ008 .047 + 1CJ006 RJ009 .097 1RJ011 .049 + 1CJ006 RJ014 .107 RJ018 .149 + 1CJ006 RJ019 .023 RJ029 .51 + 1CJ006 RJ031 -.023 RJ048 1. + 1CJ006 RJ100 .0464 + CJ007 RJ006 1.01 RJ007 .012 + CJ007 1RJ007 .004 RJ008 .06 + CJ007 RJ010 .103 RJ012 .061 + CJ007 RJ013 .126 RJ014 .014 + CJ007 RJ020 .172 RJ021 .03 + CJ007 RJ030 .418 RJ031 -.022 + CJ007 RJ048 1.142 + CJ008 RJ007 -1. RJ031 1.16 + 1CJ008 1RJ007 -1. RJ031 1.2 + CJ009 R0000 .251 RJ007 -1. + CJ009 RJ032 1. RJ052 -7.41 + CJ009 RJ053 -96.5 RJ054 214.1001 + CJ009 RJ095 -.541 + CJ010 R0000 .126 RJ007 -1. + CJ010 RJ033 1. RJ055 -26.03 + CJ010 RJ056 -96.54 RJ057 214.1001 + CJ010 RJ096 -.734 + CJ012 RJ008 1. 1RJ008 -1. + CJ013 R0000 .219 RJ008 -1. + CJ013 RJ032 1. 1RJ050 1. + CJ013 RJ052 34.5 RJ053 -76.6001 + CJ013 RJ054 33.02 RJ095 -.471 + CJ014 R0000 .109 RJ008 -1. + CJ014 RJ033 1. 1RJ050 1. + CJ014 RJ055 22.52 RJ056 -76.549999 + CJ014 RJ057 33.02 RJ096 -.639 + CJ016 R0000 .1 RJ010 -1. + CJ016 RJ033 1. 1RJ050 1. + CJ016 RJ055 31.26 RJ056 30.29 + CJ016 RJ057 -42.14 RJ096 -.586 + 1CJ016 R0000 .091 RJ009 -1. + 1CJ016 RJ033 1. 1RJ050 1. + 1CJ016 RJ055 31.26 RJ056 30.29 + 1CJ016 RJ057 -42.14 RJ096 -.586 + CJ018 RJ007 -.04 RJ008 -.96 + CJ018 RJ035 1. + 1CJ018 RJ007 -.014 RJ008 -.336 + 1CJ018 RJ009 -.65 RJ035 1. + CJ019 RJ007 -.014 RJ008 -.336 + CJ019 RJ010 -.65 RJ035 1. + CJ020 R0000 1.2666 RC0ST 2.004 + CJ020 RLDEX -1. RJ007 -.014 + CJ020 RJ008 -.336 RJ010 -.65 + CJ020 RJ036 1. + 1CJ020 R0000 1.2666 RC0ST 2.004 + 1CJ020 RLDEX -1. RJ007 -.02 + 1CJ020 RJ008 -.48 RJ009 -.5 + 1CJ020 RJ036 1. 1RJ050 .5 + CJ021 R0000 1.2666 RC0ST 2.004 + CJ021 RLDEX -1. RJ007 -.02 + CJ021 RJ008 -.48 RJ010 -.5 + CJ021 RJ036 1. + 1CJ021 RJ008 -.3 RJ010 -.7 + 1CJ021 1RJ036 1. + 2CJ021 RJ010 -.7 RJ011 -.3 + 2CJ021 1RJ036 1. + 3CJ021 RJ008 -.3 RJ009 -.7 + 3CJ021 1RJ036 1. + 4CJ021 RJ009 -.7 RJ011 -.3 + 4CJ021 1RJ036 1. + CJ022 RJ031 1.11 RJ035 -1. + CJ023 R0000 .0931 RJ007 .101 + CJ023 1RJ007 .152 RJ008 .01 + CJ023 RJ009 -1. RJ011 .04 + CJ023 RJ031 -.101 RJ049 1.157 + CJ023 1RJ050 1. RJ097 .697 + CJ023 RJ099 -.19 + CJ025 R0000 .0829 RJ007 .074 + CJ025 1RJ007 .112 RJ008 .01 + CJ025 RJ009 -1. RJ011 .04 + CJ025 RJ031 -.0956 RJ049 .909 + CJ025 1RJ050 1. 1RJ097 .764 + CJ025 RJ099 -.19 + CJ028 R0000 .096 RJ033 1. + CJ028 RJ055 -14. RJ056 -9.25 + CJ028 RJ057 -9.25 RJ096 -.562 + CJ028 1RJ097 -1. + CJ029 R0000 .193 RJ032 1. + CJ029 RJ052 -.66 RJ053 -9.25 + CJ029 RJ054 -9.25 RJ095 -.414 + CJ029 1RJ097 -1. + CJ030 R0000 .1209 RJ007 .099 + CJ030 1RJ007 .148 RJ008 .01 + CJ030 RJ010 -1. RJ011 .04 + CJ030 RJ031 -.0956 RJ049 1. + CJ030 1RJ097 .703 RJ099 -.19 + CJ031 R0000 .1289 RJ007 .126 + CJ031 1RJ007 .167 RJ008 .01 + CJ031 RJ010 -1. RJ011 .04 + CJ031 RJ031 -.101 RJ049 1.3 + CJ031 RJ051 .02 RJ097 .637 + CJ031 RJ099 -.19 + CJ032 R0000 .1084 RJ007 .126 + CJ032 1RJ007 .187 RJ008 .01 + CJ032 RJ010 -1. RJ011 .04 + CJ032 RJ031 -.101 RJ049 1.445 + CJ032 RJ097 .637 RJ099 -.19 + CJ033 R0000 .19 RJ032 1. + CJ033 RJ052 -5.34 RJ053 -5.21 + CJ033 RJ054 -4.04 RJ095 -.408 + CJ033 RJ097 -1. + CJ034 R0000 .096 RJ033 1. + CJ034 RJ055 -13.49 RJ056 3.97 + CJ034 RJ057 -14.42 RJ096 -.563 + CJ034 1RJ098 -1. + CJ035 R0000 .0707 RJ007 .064 + CJ035 1RJ007 .094 RJ008 .01 + CJ035 RJ009 -.667 1RJ011 -.333 + CJ035 RJ014 .04 RJ031 -.0956 + CJ035 RJ049 .808 1RJ050 .667 + CJ035 1RJ098 .79 RJ099 -.19 + CJ036 R0000 .0804 RJ007 .089 + CJ036 1RJ007 .135 RJ008 .01 + CJ036 RJ009 -.667 1RJ011 -.333 + CJ036 RJ014 .04 RJ031 -.101 + CJ036 RJ049 1.044 1RJ050 .667 + CJ036 RJ098 .726 RJ099 -.19 + CJ037 RJ011 1. RJ012 -1. + 1CJ037 RJ011 1. 1RJ011 -1. + CJ039 RJ011 -1. RJ040 1. + CJ039 RJ061 8. RJ062 -8.5 + CJ039 RJ063 36.08 RJ064 -20. + CJ039 RJ065 -13. RJ079 1. + CJ040 RJ011 -1. RJ043 1. + CJ040 RJ066 10.2 RJ067 -13.5 + CJ040 RJ068 36.08 RJ069 -30. + CJ040 RJ070 13.12 RJ071 -26. + CJ040 RJ079 1. + CJ041 RJ011 -1. RJ045 1. + CJ041 RJ072 -38. RJ073 -42.73 + CJ041 1RJ073 41.92 RJ074 36.08 + CJ041 1RJ074 -95. + CJ042 RJ011 -1. RJ046 1. + CJ042 RJ075 -38. RJ076 -39.61 + CJ042 1RJ076 38.97 RJ077 36.08 + CJ042 RJ078 -92. + 1CJ042 RJ011 -1. RJ042 1. + 1CJ042 RJ102 -23. RJ103 -39.61 + 1CJ042 RJ104 38.97 RJ105 36.08 + 1CJ042 RJ106 -92. + CJ043 R0000 .191 RJ032 1. + CJ043 RJ052 -4.84 RJ053 2.61 + CJ043 RJ054 -10.19 RJ095 -.41 + CJ043 RJ098 -1. + CJ044 R0000 .193 RJ032 1. + CJ044 RJ052 .13 RJ053 3.97 + CJ044 RJ054 -14.42 RJ095 -.415 + CJ044 1RJ098 -1. + CJ045 R0000 .0933 RJ007 .076 + CJ045 1RJ007 .113 RJ008 .01 + CJ045 RJ010 -.667 RJ012 -.333 + CJ045 RJ014 .04 RJ031 -.0956 + CJ045 RJ049 .88 1RJ098 .761 + CJ045 RJ099 -.19 + CJ046 R0000 .1074 RJ007 .103 + CJ046 1RJ007 .144 RJ008 .01 + CJ046 RJ010 -.667 RJ012 -.333 + CJ046 RJ014 .04 RJ031 -.101 + CJ046 RJ049 1.111 RJ051 .009 + CJ046 RJ098 .694 RJ099 -.19 + 1CJ046 R0000 .0949 RJ007 .103 + 1CJ046 1RJ007 .153 RJ008 .01 + 1CJ046 RJ010 -.667 RJ012 -.333 + 1CJ046 RJ014 .04 RJ031 -.0956 + 1CJ046 RJ049 1.182 RJ098 .694 + 1CJ046 RJ099 -.19 + CJ047 RJ012 -.44 RJ013 -.56 + CJ047 RJ034 1. RJ038 1. + 1CJ047 1RJ011 -.44 RJ013 -.56 + 1CJ047 RJ034 1. RJ038 1. + 1CJ048 RJ011 .1 RJ013 -1.6 + 1CJ048 RJ015 .5 RJ034 1. + 1CJ048 1RJ037 1. 2RJ037 -1. + CJ049 RJ013 -1. RJ014 1. + CJ050 RJ011 -.15 RJ014 -.85 + CJ050 RJ031 -.035 RJ034 .81 + CJ050 RJ039 .81 RJ040 .19 + CJ050 RJ050 1. RJ061 -1.48 + CJ050 RJ062 .48 RJ063 .72 + CJ050 RJ064 -3.8 RJ065 9.7 + CJ050 RJ079 .19 + CJ051 RJ011 -.15 RJ014 -.85 + CJ051 RJ031 -.035 RJ034 .81 + CJ051 RJ039 .81 RJ043 .19 + CJ051 RJ050 1. RJ066 -1.06 + CJ051 RJ067 -.48 RJ068 .74 + CJ051 RJ069 -5.7 RJ070 1.97 + CJ051 RJ071 7.5 RJ079 .19 + 1CJ051 RJ011 -.68 RJ014 -1. + 1CJ051 RJ031 -.035 RJ034 1.55 + 1CJ051 RJ038 1.55 RJ043 .13 + 1CJ051 RJ050 1. RJ066 -.96 + 1CJ051 RJ067 .46 RJ068 1.71 + 1CJ051 RJ069 -3.9 RJ070 1.21 + 1CJ051 RJ071 4.94 RJ079 .13 + CJ052 RJ011 -.15 RJ014 -.85 + CJ052 RJ031 -.035 RJ034 .81 + CJ052 RJ039 .81 RJ045 .19 + CJ052 RJ050 1. RJ072 -5.13 + CJ052 RJ073 -6.12 1RJ073 5.96 + CJ052 RJ074 .74 1RJ074 -18.1 + 1CJ052 RJ011 -.15 RJ014 -.85 + 1CJ052 RJ031 -.035 RJ034 .81 + 1CJ052 RJ039 .81 RJ042 .19 + 1CJ052 RJ050 1. RJ102 -2.28 + 1CJ052 RJ103 -5.53 RJ104 5.4 + 1CJ052 RJ105 .74 RJ106 -17.5 + CJ053 RJ011 -.15 RJ014 -.85 + CJ053 RJ031 -.035 RJ034 .81 + CJ053 RJ039 .81 RJ046 .19 + CJ053 RJ050 1. RJ075 -5.13 + CJ053 RJ076 -5.53 1RJ076 5.4 + CJ053 RJ077 .74 RJ078 -17.5 + 1CJ053 RJ011 -.68 RJ014 -1. + 1CJ053 RJ031 -.035 RJ034 1.55 + 1CJ053 RJ038 1.55 RJ046 .13 + 1CJ053 RJ050 1. RJ075 -2.34 + 1CJ053 RJ076 -3.51 1RJ076 3.42 + 1CJ053 RJ077 .08 RJ078 -12. + 2CJ053 RJ011 -.68 RJ014 -1. + 2CJ053 RJ031 -.035 RJ034 1.55 + 2CJ053 RJ038 1.55 RJ042 .13 + 2CJ053 RJ050 1. RJ102 -.39 + 2CJ053 RJ103 -3.51 RJ104 3.42 + 2CJ053 RJ105 .08 RJ106 -12. + CJ054 RJ014 -1. RJ040 1. + CJ054 RJ061 3.8 RJ062 -6.5 + CJ054 RJ063 .71 RJ064 -13. + CJ054 RJ065 -13. RJ079 1. + CJ055 RJ014 -1. RJ043 1. + CJ055 RJ066 6. RJ067 -11.5 + CJ055 RJ068 .71 RJ069 -23. + CJ055 RJ070 8.24 RJ071 -26. + CJ055 RJ079 1. + CJ056 RJ014 -1. RJ045 1. + CJ056 RJ072 -36. RJ073 -30.09 + CJ056 1RJ073 29.28 RJ074 .71 + CJ056 1RJ074 -76.5 + 1CJ056 RJ014 -1. RJ031 1.087 + CJ057 RJ014 -1. RJ046 1. + CJ057 RJ075 -36. RJ076 -26.97 + CJ057 1RJ076 26.33 RJ077 .71 + CJ057 RJ078 -73.5 + 1CJ057 RJ014 -1. RJ042 1. + 1CJ057 RJ102 -21. RJ103 -26.97 + 1CJ057 RJ104 26.33 RJ105 .71 + 1CJ057 RJ106 -73.5 + CJ058 RJ015 -1. RJ040 1. + CJ058 RJ061 -2.6 RJ062 3. + CJ058 RJ063 -3.01 RJ064 4. + CJ058 RJ065 -8. RJ079 1. + 1CJ058 RJ015 -1. RJ031 -.055 + 1CJ058 RJ040 1. RJ061 -2.6 + 1CJ058 RJ062 -.5 RJ063 -3.01 + 1CJ058 RJ064 4. RJ065 -8. + 1CJ058 RJ079 1. RJ100 1. + CJ059 RJ015 -1. RJ043 1. + CJ059 RJ066 -.4 RJ067 -2. + CJ059 RJ068 -3.33 RJ069 -6. + CJ059 RJ070 .38 RJ071 -21. + CJ059 RJ079 1. + CJ060 RJ015 -1. RJ045 1. + CJ060 RJ072 -27. RJ073 -22.23 + CJ060 1RJ073 21.42 RJ074 -3.33 + CJ060 1RJ074 -53. + 1CJ060 RJ015 -1. RJ031 1.06 + CJ061 RJ015 -1. RJ046 1. + CJ061 RJ075 -27. RJ076 -19.11 + CJ061 1RJ076 18.47 RJ077 -3.33 + CJ061 RJ078 -50. + 1CJ061 RJ015 -1. RJ042 1. + 1CJ061 RJ102 -12. RJ103 -19.11 + 1CJ061 RJ104 18.47 RJ105 -3.33 + 1CJ061 RJ106 -50. + CJ062 RJ018 -1. RJ040 1. + CJ062 RJ061 -3.8 RJ062 .1 + CJ062 RJ063 -3.01 RJ064 7. + CJ062 RJ065 -6.5 RJ079 1. + CJ063 RJ018 -1. RJ043 1. + CJ063 RJ066 -1.6 RJ067 -4.9 + CJ063 RJ068 -3.33 RJ069 -3. + CJ063 RJ070 -1.22 RJ071 -18.5 + CJ063 RJ079 1. + CJ064 RJ018 -1. RJ045 1. + CJ064 RJ072 -29.4 RJ073 -20.63 + CJ064 1RJ073 19.82 RJ074 -3.33 + CJ064 1RJ074 -50. + CJ065 RJ018 -1. RJ046 1. + CJ065 RJ075 -29.4 RJ076 -17.51 + CJ065 1RJ076 16.87 RJ077 -3.33 + CJ065 RJ078 -47. + 1CJ065 RJ018 -1. RJ042 1. + 1CJ065 RJ102 -14.4 RJ103 -17.51 + 1CJ065 RJ104 16.87 RJ105 -3.33 + 1CJ065 RJ106 -47. + CJ066 RJ020 -1. RJ040 1. + CJ066 RJ061 -2.7 RJ062 .3 + CJ066 RJ063 -3.01 RJ064 4. + CJ066 RJ065 -4. RJ079 1. + CJ067 RJ020 -1. RJ043 1. + CJ067 RJ066 -.5 RJ067 -4.7 + CJ067 RJ068 -3.17 RJ069 -6. + CJ067 RJ070 -.92 RJ071 -20. + CJ067 RJ079 1. + CJ068 RJ020 -1. RJ045 1. + CJ068 RJ072 -29.2 RJ073 -20.93 + CJ068 1RJ073 20.12 RJ074 -3.17 + CJ068 1RJ074 -53. + CJ069 RJ020 -1. RJ046 1. + CJ069 RJ075 -29.2 RJ076 -17.81 + CJ069 1RJ076 17.17 RJ077 -3.17 + CJ069 RJ078 -50. + CJ070 RJ020 -1. RJ042 1. + CJ070 RJ102 -14.2 RJ103 -17.81 + CJ070 RJ104 17.17 RJ105 -3.17 + CJ070 RJ106 -50. + CJ074 RJ016 -1. RJ040 1. + CJ074 RJ061 -7.6 RJ062 11. + CJ074 RJ063 -1.65 RJ064 26. + CJ074 RJ065 -4. RJ079 1. + CJ075 RJ016 -1. RJ043 1. + CJ075 RJ066 -5.4 RJ067 6. + CJ075 RJ068 -1.65 RJ069 16. + CJ075 RJ070 -7.62 RJ071 -14. + CJ075 RJ079 1. + CJ076 RJ016 -1. RJ045 1. + CJ076 RJ072 -18.5 RJ073 -14.23 + CJ076 1RJ073 13.42 RJ074 -1.65 + CJ076 1RJ074 -30. + 1CJ076 RJ016 -1. RJ031 1.044 + CJ077 RJ016 -1. RJ046 1. + CJ077 RJ075 -18.5 RJ076 -11.11 + CJ077 1RJ076 10.47 RJ077 -1.65 + CJ077 RJ078 -27. + 1CJ077 RJ016 -1. RJ042 1. + 1CJ077 RJ102 -3.5 RJ103 -11.11 + 1CJ077 RJ104 10.47 RJ105 -1.65 + 1CJ077 RJ106 -27. + CJ078 RJ019 -1. RJ040 1. + CJ078 RJ061 -8.7 RJ062 5.5 + CJ078 RJ063 -1.65 RJ064 38. + CJ078 RJ065 -2. RJ079 1. + CJ079 RJ019 -1. RJ043 1. + CJ079 RJ066 -6.5 RJ067 .5 + CJ079 RJ068 -1.65 RJ069 28. + CJ079 RJ070 -9.12 RJ071 -11.5 + CJ079 RJ079 1. + CJ080 RJ019 -1. RJ045 1. + CJ080 RJ072 -24. RJ073 -12.73 + CJ080 1RJ073 11.92 RJ074 -1.65 + CJ080 1RJ074 -18. + CJ081 RJ019 -1. RJ046 1. + CJ081 RJ075 -24. RJ076 -9.61 + CJ081 1RJ076 8.97 RJ077 -1.65 + CJ081 RJ078 -15. + CJ082 RJ019 -1. RJ042 1. + CJ082 RJ102 -9. RJ103 -9.61 + CJ082 RJ104 8.97 RJ105 -1.65 + CJ082 RJ106 -15. + CJ086 RJ021 -1. RJ040 1. + CJ086 RJ061 -6.3 RJ062 8. + CJ086 RJ063 -1.65 RJ064 38. + CJ086 RJ065 3. RJ079 1. + CJ087 RJ021 -1. RJ043 1. + CJ087 RJ066 -5.1 RJ067 3. + CJ087 RJ068 -1.65 RJ069 28. + CJ087 RJ070 -6.52 RJ071 -12.5 + CJ087 RJ079 1. + CJ088 RJ021 -1. RJ045 1. + CJ088 RJ072 -21.5 RJ073 -15.33 + CJ088 1RJ073 14.52 RJ074 -1.65 + CJ088 1RJ074 -18. + CJ089 RJ021 -1. RJ046 1. + CJ089 RJ075 -21.5 RJ076 -12.21 + CJ089 1RJ076 11.57 RJ077 -1.65 + CJ089 RJ078 -15. + CJ090 RJ021 -1. RJ042 1. + CJ090 RJ102 -6.5 RJ103 -12.21 + CJ090 RJ104 11.57 RJ105 -1.65 + CJ090 RJ106 -15. + CJ099 RJ025 -1. RJ045 1. + CJ099 RJ072 1.5 RJ073 .21 + CJ099 1RJ073 -1.02 RJ074 -2.14 + CJ099 1RJ074 -10. + CJ100 RJ025 -1. RJ046 1. + CJ100 RJ075 1.5 RJ076 3.33 + CJ100 1RJ076 -3.97 RJ077 -2.14 + CJ100 RJ078 -7. + 1CJ100 RJ025 -1. RJ042 1. + 1CJ100 RJ102 16.5 RJ103 3.33 + 1CJ100 RJ104 -3.97 RJ105 -2.14 + 1CJ100 RJ106 -7. + CJ102 RJ026 -1. RJ045 1. + CJ102 RJ072 -15. RJ073 -1.8 + CJ102 1RJ073 .99 RJ074 -2.14 + CJ102 1RJ074 -2. + CJ103 RJ026 -1. RJ046 1. + CJ103 RJ075 -15. RJ076 1.32 + CJ103 1RJ076 -1.96 RJ077 -2.14 + CJ103 RJ078 1. + 1CJ103 RJ026 -1. RJ042 1. + 1CJ103 RJ103 1.32 RJ104 -1.96 + 1CJ103 RJ105 -2.14 RJ106 1. + CJ105 RJ027 -1. RJ045 1. + CJ105 RJ072 -3.5 RJ073 -1.65 + CJ105 1RJ073 .84 RJ074 -2.14 + CJ105 1RJ074 -10. + CJ106 RJ027 -1. RJ046 1. + CJ106 RJ075 -3.5 RJ076 1.47 + CJ106 1RJ076 -2.11 RJ077 -2.14 + CJ106 RJ078 -7. + CJ107 RJ027 -1. RJ042 1. + CJ107 RJ102 11.5 RJ103 1.47 + CJ107 RJ104 -2.11 RJ105 -2.14 + CJ107 RJ106 -7. + CJ108 RJ028 -1. RJ045 1. + CJ108 RJ072 -14. RJ073 -4.13 + CJ108 1RJ073 3.32 RJ074 -2.14 + CJ108 1RJ074 10. + CJ109 RJ028 -1. RJ046 1. + CJ109 RJ075 -14. RJ076 -1.01 + CJ109 1RJ076 .37 RJ077 -2.14 + CJ109 RJ078 13. + 1CJ109 RJ028 -1. RJ042 1. + 1CJ109 RJ102 1. RJ103 -1.01 + 1CJ109 RJ104 .37 RJ105 -2.14 + 1CJ109 RJ106 13. + CJ111 RJ029 -1. RJ045 1. + CJ111 RJ072 -11. RJ073 .8 + CJ111 1RJ073 -1.61 RJ074 -2.14 + CJ111 1RJ074 -2. + CJ112 RJ029 -1. RJ046 1. + CJ112 RJ075 -11. RJ076 3.92 + CJ112 1RJ076 -4.56 RJ077 -2.14 + CJ112 RJ078 1. + CJ113 RJ029 -1. RJ042 1. + CJ113 RJ102 4. RJ103 3.92 + CJ113 RJ104 -4.56 RJ105 -2.14 + CJ113 RJ106 1. + CJ114 RJ030 -1. RJ045 1. + CJ114 RJ072 -11. RJ073 -3.72 + CJ114 1RJ073 2.91 RJ074 -2.14 + CJ114 1RJ074 -2. + CJ115 RJ030 -1. RJ046 1. + CJ115 RJ075 -11. RJ076 -.6 + CJ115 1RJ076 -.04 RJ077 -2.14 + CJ115 RJ078 1. + 1CJ115 RJ030 -1. RJ042 1. + 1CJ115 RJ102 4. RJ103 -.6 + 1CJ115 RJ104 -.04 RJ105 -2.14 + 1CJ115 RJ106 1. + CJ116 RJ024 -1. RJ045 1. + CJ116 RJ072 -22. RJ073 -5.87 + CJ116 1RJ073 5.06 RJ074 -2.14 + CJ116 1RJ074 17. + CJ117 RJ024 -1. RJ046 1. + CJ117 RJ075 -22. RJ076 -2.75 + CJ117 1RJ076 2.11 RJ077 -2.14 + CJ117 RJ078 20. + CJ118 RJ024 -1. RJ042 1. + CJ118 RJ102 -7. RJ103 -2.75 + CJ118 RJ104 2.11 RJ105 -2.14 + CJ118 RJ106 20. + 1CJ120 RJ014 -.05 RJ015 -.33 + 1CJ120 RJ025 -.62 RJ047 1. + CJ121 1RJ007 -1. RJ051 1. + CJ122 RJ031 1. RJ045 -1. + 1CJ122 RJ031 1. RJ046 -1. + CJ123 R0000 .9103 RC0ST 1.258 + CJ123 RJ033 -1. RJ055 2.667 + CJ123 RJ081 1. + CJ124 RJ032 -.65 RJ033 -.35 + CJ124 RJ053 2.6 RJ054 -6.07 + CJ124 RJ056 1.4 RJ057 -3.27 + CJ124 RJ082 1. + 1CJ125 R0000 .165 RJ032 -1. + 1CJ125 RJ052 5.73 RJ053 4. + 1CJ125 RJ054 -9.33 RJ083 1. + CJ126 R0000 1.0891 RC0ST 1.258 + CJ126 RJ038 -1. RJ084 1. + 1CJ126 R0000 1.079 RC0ST 1.258 + 1CJ126 RJ040 -1. 1RJ084 1. + CJ131 RJ046 -1. RJ075 6. + CJ131 RJ076 1.23 1RJ076 -1.77 + CJ131 RJ078 -3. RJ089 1. + CJ133 R0000 .001 RJ048 1. + CJ133 RJ080 -1. + CJ134 RJ045 -1. RJ073 .74 + CJ134 1RJ073 -.78 RJ091 1. + CJ135 RJ045 -1. RJ072 5. + CJ135 RJ073 1.96 1RJ073 -1.84 + CJ135 1RJ074 11. RJ092 1. + CJ150 R0000 .651 RJ052 -8.035 + CJ150 RJ095 1. + CJ151 R0000 .651 RJ055 -15.625 + CJ151 RJ096 1. + CJG55 RJ040 -1. 1RJ041 1. + CJG55 RJ062 2.5 + CJF35 RJ046 -1. 2RJ046 1. + CJF35 RJ075 5. + CJF80 RJ045 -1. 2RJ045 1. + CJF80 RJ072 5. 1RJ073 .26 + CJF80 1RJ074 3. + CM001 R0000 .8675 1RM001 1. + CM001 RM002 .155 2RM003 .24 + CM001 1RM006 .555 RGACH .5 + CM001 RKUWT .5 + 1CM004 2RM003 -.145 RM005 1. + 1CM004 1RM006 -.855 + CM005 R0000 .8687 1RM001 1. + CM005 RM002 .15 2RM003 .255 + CM005 1RM006 .545 RKUWT 1. + CM006 1RM003 1. 2RM003 -1.171 + CM006 RM004 .171 + CM007 R0000 .8677 1RM001 1. + CM007 RM002 .155 2RM003 .24 + CM007 RM006 .416 2RM006 .139 + CM007 RGACH .5 RKUWT .5 + CY001 R0000 .275 RY001 -.149 + CY001 RY002 -.273 RY004 -.55 + CY001 RY005 1. RKUWT 1. + 1CY001 R0000 .275 RY001 -.173 + 1CY001 RY002 -.245 RY004 -.55 + 1CY001 RY005 1. RKUWT 1. + CY002 R0000 -2.4 RY001 1. + CY003 R0000 -2.4 1RY001 1. + CZ001 RZ001 -1. RZ002 1.4 + CZ001 RZ004 -.3 RZ005 .2 + CZ001 RZ006 -.25 RZ019 -.05 + CZ013 RZ002 .16 RZ004 -.1 + CZ013 RZ005 .9 RZ006 -1. + CZ013 RZ016 .03 RZ019 .01 + CZ014 RZ016 .2 RZ019 .8 + CZ014 RZ020 -1. + ZH145 R0000 1.798 RC0ST 2.5667 + ZH145 RMSEX -1. RH031 1. + ZH145 RH106 1. RZ001 1. + HM145 R0000 1.0821 RC0ST 2.133 + HM145 RMSEX 1. RH031 -1. + HM145 RM011 1. + ZM145 R0000 2.3051 RC0ST 3.642 + ZM145 RM011 1. RZ001 1. + ZH130 R0000 1.665 RC0ST 2.5667 + ZH130 RMSEX -1. RH032 1. + ZH130 RH106 1. RZ002 1. + HM130 R0000 1.0821 RC0ST 2.133 + HM130 RMSEX 1. RH032 -1. + HM130 RM012 1. + ZM130 R0000 2.2078 RC0ST 3.483 + ZM130 RM012 1. RZ002 1. + HBBMS R0000 .3197 RC0ST .629 + HBBMS RB033 1. 1RH034 -1. + BDBMS R0000 .2691 RC0ST .44 + BDBMS RB033 -1. RDBMS 1. + HDBMS R0000 .1698 RC0ST .335 + HDBMS RDBMS 1. 1RH034 -1. + H1BMS R0000 .3102 RC0ST .492 + H1BMS 1RH034 -1. R1045 1. + HBPMS R0000 .3196 RC0ST .6292 + HBPMS RB035 1. 1RH035 -1. + JBPMS R0000 1.301 RC0ST 2.038 + JBPMS RMSEX -1. RB035 1. + JBPMS RJ083 -1. + BHPMS R0000 .2875 RC0ST .5 + BHPMS RB035 -1. 1RH035 1. + BHPMS RH106 1. + 1HPMS R0000 .256 RC0ST .377 + 1HPMS 1RH035 1. RH106 1. + 1HPMS R1047 -1. + JHPMS R0000 1.2071 RC0ST 1.883 + JHPMS RMSEX -1. 1RH035 1. + JHPMS RH106 1. RJ083 -1. + H1PMS R0000 .3102 RC0ST .492 + H1PMS 1RH035 -1. R1047 1. + J1PMS R0000 1.4161 RC0ST 2.112 + J1PMS RMSEX -1. R1047 1. + J1PMS RJ083 -1. + HBRMS R0000 .3196 RC0ST .6292 + HBRMS RB037 1. 1RH036 -1. + JBRMS R0000 1.301 RC0ST 2.038 + JBRMS RMSEX -1. RB037 1. + JBRMS RJ082 -1. + BHRMS R0000 .2875 RC0ST .5 + BHRMS RB037 -1. 1RH036 1. + BHRMS RH106 1. + 1HRMS R0000 .256 RC0ST .377 + 1HRMS 1RH036 1. RH106 1. + 1HRMS R1051 -1. + JHRMS R0000 1.2071 RC0ST 1.883 + JHRMS RMSEX -1. 1RH036 1. + JHRMS RH106 1. RJ082 -1. + H1RMS R0000 .3102 RC0ST .492 + H1RMS 1RH036 -1. R1051 1. + J1RMS R0000 1.4161 RC0ST 2.112 + J1RMS RMSEX -1. R1051 1. + J1RMS RJ082 -1. + HNM00 R0000 .2909 30M00 1. + HNM00 RC0ST .575 RMSEX 1. + HNM00 RH034 -1. RH063 -2.281 + HNM00 1RH066 .15 2RH106 1. + ZBM83 R0000 1.8441 RC0ST 2.708 + ZBM83 RMSEX -1. RB036 1. + ZBM83 RB068 4.107 RZ006 1. + ZHM83 R0000 1.659 RC0ST 2.554 + ZHM83 RMSEX -1. RH036 1. + ZHM83 RH072 4.138 RH106 1. + ZHM83 RZ006 1. + ZJM83 R0000 .6885 RC0ST .9542 + ZJM83 RJ033 1. RJ055 5.58 + ZJM83 RJ056 -8.3 RJ057 9.7 + ZJM83 RJ096 -.594 RZ006 1. + EAM87 R0000 1.1876 KW1RC 1. + EAM87 1RA099 1. RE040 -1. + AEM87 R0000 1.3354 KW1RC -1. + AEM87 1RA099 -1. RE040 1. + HNM90 R0000 .4099 30M91 1. + HNM90 RC0ST .575 RMSEX 1. + HNM90 RH036 -1. RH072 5.517 + HNM90 RH075 .154 2RH106 1. + 1NM90 R0000 .5832 30M91 1. + 1NM90 RC0ST .729 RMSEX 1. + 1NM90 R1050 -1. R1079 5.5 + 1NM90 R1080 .154 + JNM90 R0000 1.6032 30M91 1. + JNM90 RC0ST 2.429 RH106 1. + JNM90 RJ032 -.58 RJ033 -.42 + JNM90 RJ053 2.32 RJ054 -5.41 + JNM90 RJ056 1.68 RJ057 -3.92 + 1HNM94 R0000 1.0859 30M94 1. + 1HNM94 RC0ST .575 RMSEX 1. + 1HNM94 RH008 -.02 RH013 -.04 + 1HNM94 RH016 -.13 RH095 -.81 + 1HNM94 2RH106 1. + 2HNM94 R0000 1.0859 30M94 1. + 2HNM94 RC0ST .575 RMSEX 1. + 2HNM94 RH010 -.13 RH013 -.29 + 2HNM94 RH095 -.58 2RH106 1. + JNM94 R0000 1.6032 30M94 1. + JNM94 RC0ST 2.429 RH106 1. + JNM94 RJ032 -.92 RJ033 -.08 + JNM94 RJ053 3.68 RJ054 -8.59 + JNM94 RJ056 .32 RJ057 -.75 + ZHM95 R0000 1.659 RC0ST 2.554 + ZHM95 RMSEX -1. RH036 1. + ZHM95 RH072 -12.195 RH106 1. + ZHM95 RZ005 1. + ZJM95 R0000 .7866 RC0ST .954 + ZJM95 RJ032 1. RJ052 5.48 + ZJM95 RJ053 -4.07 RJ054 9.5 + ZJM95 RJ095 -.43 RZ005 1. + EAM97 R0000 1.1876 KW1RC 1. + EAM97 RA097 1. RE035 -1. + EAM97 RE068 -1.31 + AEM97 R0000 1.3354 KW1RC -1. + AEM97 RA039 -1. RE036 1. + ABLDF R0000 4.2007 RC0ST 2.133 + ABLDF RLDEX -1. RA023 -1. + ABLDF RA100 1. 1RB038 1. + EBLDF R0000 4.3074 RC0ST 2.367 + EBLDF RLDEX -1. 1RB038 1. + EBLDF RE039 -1. RE104 1. + HBLDF R0000 .3197 RC0ST .629 + HBLDF 1RB038 1. RH039 -1. + 1BLDF R0000 .4124 RC0ST .662 + 1BLDF 1RB038 1. R1055 -1. + JBLDF R0000 1.301 RC0ST 2.038 + JBLDF RLDEX -1. 1RB038 1. + JBLDF RJ035 -1. + MBLDF R0000 .6302 RC0ST 1.271 + MBLDF RLDEX -1. 1RB038 1. + MBLDF RM002 -1. + YBLDF R0000 1.5743 RC0ST 2.612 + YBLDF RLDEX -1. 1RB038 1. + YBLDF RY001 1. + 1YBLDF R0000 1.5743 RC0ST 2.612 + 1YBLDF RLDEX -1. 1RB038 1. + 1YBLDF 1RY001 1. + BHLDF R0000 .2875 RC0ST .5 + BHLDF 1RB038 -1. RH039 1. + BHLDF RH106 1. + EHLDF R0000 4.2174 RC0ST 2.221 + EHLDF RLDEX -1. RE039 -1. + EHLDF RE104 1. RH039 1. + EHLDF RH106 1. + 1HLDF R0000 .256 RC0ST .377 + 1HLDF RH039 1. RH106 1. + 1HLDF R1055 -1. + JHLDF R0000 1.2071 RC0ST 1.883 + JHLDF RLDEX -1. RH039 1. + JHLDF RH106 1. RJ035 -1. + YHLDF R0000 1.4803 RC0ST 2.458 + YHLDF RLDEX -1. RH039 1. + YHLDF RH106 1. RY001 1. + 1YHLDF R0000 1.4803 RC0ST 2.458 + 1YHLDF RLDEX -1. RH039 1. + 1YHLDF RH106 1. 1RY001 1. + A1LDF R0000 4.3906 RC0ST 2.367 + A1LDF RLDEX -1. RA023 -1. + A1LDF RA100 1. R1055 1. + B1LDF R0000 .4671 RC0ST .717 + B1LDF 1RB038 -1. R1055 1. + E1LDF R0000 4.4302 RC0ST 2.458 + E1LDF RLDEX -1. RE039 -1. + E1LDF RE104 1. R1055 1. + H1LDF R0000 .3102 RC0ST .492 + H1LDF RH039 -1. R1055 1. + J1LDF R0000 1.4161 RC0ST 2.112 + J1LDF RLDEX -1. R1055 1. + J1LDF RJ035 -1. + M1LDF R0000 .745 RC0ST 1.346 + M1LDF RLDEX -1. R1055 1. + M1LDF RM002 -1. + Y1LDF R0000 1.689 RC0ST 2.688 + Y1LDF RLDEX -1. R1055 1. + Y1LDF RY001 1. + 1Y1LDF R0000 1.689 RC0ST 2.688 + 1Y1LDF RLDEX -1. R1055 1. + 1Y1LDF 1RY001 1. + ACLD4 R0000 4.7156 RC0ST 2.4208 + ACLD4 RLDEX -1. RA023 -1. + ACLD4 RA100 1. RCLD4 1. + BCLD4 R0000 .4978 RC0ST .512 + BCLD4 2RB007 -1. RCLD4 1. + ECLD4 R0000 4.8185 RC0ST 2.6417 + ECLD4 RLDEX -1. RCLD4 1. + ECLD4 RE039 -1. RE104 1. + HCLD4 R0000 .5773 RC0ST .742 + HCLD4 RCLD4 1. 2RH039 -1. + 1CLD4 R0000 .3436 RC0ST .6584 + 1CLD4 RCLD4 1. R1054 -1. + JCLD4 R0000 1.6987 RC0ST 2.217 + JCLD4 RLDEX -1. RCLD4 1. + JCLD4 1RJ008 -1. 1RJ050 1. + ADLD4 R0000 4.3985 RC0ST 2.1042 + ADLD4 RLDEX -1. RA023 -1. + ADLD4 RA100 1. RDLD4 1. + BDLD4 R0000 .2692 RC0ST .4396 + BDLD4 2RB007 -1. RDLD4 1. + EDLD4 R0000 4.5113 RC0ST 2.3458 + EDLD4 RLDEX -1. RDLD4 1. + EDLD4 RE039 -1. RE104 1. + HDLD4 R0000 .1697 RC0ST .3354 + HDLD4 RDLD4 1. 2RH039 -1. + 1DLD4 R0000 .2737 RC0ST .3358 + 1DLD4 RDLD4 1. R1054 -1. + JDLD4 R0000 1.2169 RC0ST 1.825 + JDLD4 RLDEX -1. RDLD4 1. + JDLD4 1RJ008 -1. 1RJ050 1. + BJW37 R0000 .3251 RC0ST .579 + BJW37 RB007 -.45 RB008 -.55 + BJW37 RJ036 1. UKLDF -1. + 1BJW37 R0000 .3251 RC0ST .579 + 1BJW37 RB007 -.45 1RB008 -.55 + 1BJW37 RJ036 1. UKLDF -1. + YJW37 R0000 1.5376 RC0ST 2.579 + YJW37 RLDEX -1. RJ036 1. + YJW37 RY001 1. + BNATG R0000 .5656 RC0ST .808 + BNATG RLDEX 1. RB039 -1. + BNATG RN009 1. + BXATG R0000 .4622 RC0ST .725 + BXATG RLDEX 1. RB039 -1. + BXATG RXATG 1. + HBK19 R0000 .3197 RC0ST .629 + HBK19 RB041 1. RH041 -1. + JBK19 R0000 1.301 RC0ST 2.038 + JBK19 RPKEX -1. RB041 1. + JBK19 RJ039 -1. + BDK19 R0000 .2691 RC0ST .44 + BDK19 RB041 -1. RDK19 1. + HDK19 R0000 .1698 RC0ST .335 + HDK19 RDK19 1. RH041 -1. + 1DK19 R0000 .2737 RC0ST .336 + 1DK19 RDK19 1. R1058 -1. + JDK19 R0000 1.2169 RC0ST 1.825 + JDK19 RPKEX -1. RDK19 1. + JDK19 RJ039 -1. + BHK19 R0000 .2875 RC0ST .5 + BHK19 RB041 -1. RH041 1. + BHK19 RH106 1. + 1HK19 R0000 .256 RC0ST .377 + 1HK19 RH041 1. RH106 1. + 1HK19 R1058 -1. + JHK19 R0000 1.2071 RC0ST 1.883 + JHK19 RPKEX -1. RH041 1. + JHK19 RH106 1. RJ039 -1. + H1K19 R0000 .3102 RC0ST .492 + H1K19 RH041 -1. R1058 1. + J1K19 R0000 1.4161 RC0ST 2.112 + J1K19 RPKEX -1. R1058 1. + J1K19 RJ039 -1. + BNK19 R0000 .5233 30PGK 1. + BNK19 RC0ST .808 RPKEX 1. + BNK19 RB041 -1. + HNK19 R0000 .3624 30PGK 1. + HNK19 RC0ST .575 RPKEX 1. + HNK19 RH041 -1. + 1NK19 R0000 .5357 30PGK 1. + 1NK19 RC0ST .729 RPKEX 1. + 1NK19 R1058 -1. + JNK19 R0000 1.5557 30PGK 1. + JNK19 RC0ST 2.429 RH106 1. + JNK19 RJ039 -1. + JAATK R0000 -4.5305 RC0ST 1.688 + JAATK RA041 1. RA100 -1. + JAATK RJ038 -1. + ABATK R0000 6.1787 RC0ST 2.133 + ABATK RRKEX -1. RA041 -1. + ABATK RA100 1. RB042 1. + JBATK R0000 1.301 RC0ST 2.038 + JBATK RRKEX -1. RB042 1. + JBATK RJ038 -1. + ZBATK R0000 1.7531 RC0ST 2.708 + ZBATK RRKEX -1. RB042 1. + ZBATK RZ012 1. + AHATK R0000 6.1875 RC0ST 2.1958 + AHATK RRKEX -1. RA041 -1. + AHATK RA100 1. 2RH042 1. + AHATK RH106 1. + BHATK R0000 .2875 RC0ST .5 + BHATK RB042 -1. RB098 1. + BHATK 2RH042 1. RH106 1. + 1HATK R0000 .256 RC0ST .377 + 1HATK 2RH042 1. R1057 -1. + JHATK R0000 1.2071 RC0ST 1.883 + JHATK RRKEX -1. 2RH042 1. + JHATK RH106 1. RJ038 -1. + ZHATK R0000 1.659 RC0ST 2.554 + ZHATK RRKEX -1. 2RH042 1. + ZHATK RH106 1. RZ012 1. + A1ATK R0000 6.3686 RC0ST 2.367 + A1ATK RRKEX -1. RA041 -1. + A1ATK RA100 1. R1057 1. + B1ATK R0000 .4671 RC0ST .717 + B1ATK RB042 -1. RB098 1. + B1ATK R1057 1. + J1ATK R0000 1.4161 RC0ST 2.112 + J1ATK RRKEX -1. R1057 1. + J1ATK RJ038 -1. + BJATK R0000 .301 RC0ST .292 + BJATK RRKEX 1. RB042 -1. + BJATK RB098 1. RJ084 1. + ZJATK R0000 1.5604 RC0ST 1.9333 + ZJATK RJ084 1. RZ012 1. + BNATK R0000 .5656 30ATK 1. + BNATK RC0ST .808 RRKEX 1. + BNATK RB042 -1. RB098 1. + HNATK R0000 .3624 30ATK 1. + HNATK RC0ST .575 RRKEX 1. + HNATK 2RH042 -1. + 1NATK R0000 .5357 30ATK 1. + 1NATK RC0ST .729 RRKEX 1. + 1NATK R1057 -1. + JNATK R0000 1.598 30ATK 1. + JNATK RC0ST 2.429 RH106 1. + JNATK RJ038 -1. + ANG17 R0000 5.2133 30G17 1. + ANG17 RC0ST 2.725 RA043 -1. + ANG17 RA075 .57 RA076 -.59 + ANG17 RA077 -3.5 RA079 6. + ANG17 RA081 -15. RA100 1. + ANG17 RH106 1. + BNG17 R0000 .4919 30G17 1. + BNG17 RC0ST .808 RG0EX 1. + BNG17 RB045 -1. RB078 -1. + HNG17 R0000 .3435 30G17 1. + HNG17 RC0ST .575 RG0EX 1. + HNG17 RH043 -1. RH080 1.506 + HNG17 RH081 -4.146 + 1NG17 R0000 .5168 30G17 1. + 1NG17 RC0ST .729 RG0EX 1. + 1NG17 R1060 -1. R1088 -4.08 + JNG17 R0000 1.5368 30G17 1. + JNG17 RC0ST 2.429 RH106 1. + JNG17 RJ040 -1. RJ061 -.8 + JNG17 RJ064 6. + MNG17 R0000 .858 30G17 1. + MNG17 RC0ST 1.646 RH106 1. + MNG17 1RM003 -1. + NNG17 R0000 -.3435 30G17 -1. + NNG17 RC0ST -.575 RG0EX -1. + NNG17 1RN014 1. + HAG20 R0000 -3.0715 RC0ST 1.8 + HAG20 RG0EX 1. RA044 1. + HAG20 RA100 -1. RH046 -1.002 + HAG20 RH062 .002 1RH089 -1.434 + HAG20 2RH089 4. 3RH089 8.434 + AEG20 R0000 1.3172 KW1RC -1. + AEG20 RA044 -1. RE044 1. + 1AJG22 R0000 3.8065 RC0ST .5 + 1AJG22 RA043 -1. RA077 -3.5 + 1AJG22 RA081 -15. RA100 1. + 1AJG22 RJ040 1. + BJG22 R0000 .3011 RC0ST .2917 + BJG22 RG0EX 1. RB047 -1. + BJG22 RB082 -1.8 RB083 2.5 + BJG22 RB086 -7.42 1RJ084 1. + MJG22 R0000 .2747 RC0ST .329 + MJG22 1RJ084 1. 1RM003 -1. + YJG22 R0000 .4078 RC0ST .858 + YJG22 RJ040 1. RJ079 1. + YJG22 RY002 1. + 1YJG22 R0000 2.0671 RC0ST 3.338 + 1YJG22 1RJ084 1. RY002 1. + ZJG22 R0000 .5866 RC0ST .954 + ZJG22 RJ040 1. RJ079 1. + ZJG22 RZ016 1. + ANG22 R0000 5.2133 30G22 1. + ANG22 RC0ST 2.725 RA043 -1. + ANG22 RA077 -3.5 RA081 -15. + ANG22 RA100 1. RH106 1. + BNG22 R0000 .4919 30G22 1. + BNG22 RC0ST .808 RG0EX 1. + BNG22 RB047 -1. RB082 -1.8 + BNG22 RB086 -7.42 + HNG22 R0000 .3435 30G22 1. + HNG22 RC0ST .575 RG0EX 1. + HNG22 RH048 -1. + 1NG22 R0000 .5168 30G22 1. + 1NG22 RC0ST .729 RG0EX 1. + 1NG22 R1062 -1. R1093 -9.48 + JNG22 R0000 1.5368 30G22 1. + JNG22 RC0ST 2.429 RH106 1. + JNG22 RJ040 -1. + 1MNG22 R0000 .858 30G22 1. + 1MNG22 RC0ST 1.6458 RH106 1. + 1MNG22 2RM003 -1. + YNG22 R0000 1.8099 30G22 1. + YNG22 RC0ST 3.004 RH106 1. + YNG22 RY002 1. + H1G27 R0000 .3102 RC0ST .492 + H1G27 RH046 -1. R1061 1. + 1ARG29 R0000 5.0009 RC0ST 2.45 + 1ARG29 RA043 -1. RA075 -1.42 + 1ARG29 RA077 -1. RA078 -.99 + 1ARG29 RA079 1.5 RA081 -15. + 1ARG29 RA100 1. RH106 .33 + 1ARG29 RRG29 1. + 1BRG29 R0000 .2829 RC0ST .517 + 1BRG29 RG0EX 1. RB047 -1. + 1BRG29 RB081 -.6 RB082 7.2 + 1BRG29 RB083 4. RB084 .5 + 1BRG29 RB085 -2.19 RB086 -3.76 + 1BRG29 RRG29 1. + 1HRG29 R0000 .192 RC0ST .404 + 1HRG29 RG0EX 1. RH043 -1. + 1HRG29 RH080 2.245 RH081 -12.606 + 1HRG29 RH082 5. RH083 -5. + 1HRG29 RH084 -1.379 RRG29 1. + 11RG29 R0000 .3039 RC0ST .429 + 11RG29 RG0EX 1. R1062 -1. + 11RG29 R1091 -.73 R1092 4. + 11RG29 R1094 -1.98 R1095 -5. + 11RG29 R1096 25. RRG29 1. + 1JRG29 R0000 1.217 RC0ST 1.904 + 1JRG29 RH106 .25 RJ011 -.13 + 1JRG29 RJ014 -.2 RJ015 .2 + 1JRG29 RJ018 -.98 RJ019 .11 + 1JRG29 RJ031 -.022 RJ079 1. + 1JRG29 RJ100 .5 RRG29 1. + 2JRG29 R0000 1.217 RC0ST 1.904 + 2JRG29 RH106 .25 RJ011 -.13 + 2JRG29 RJ014 -.2 RJ015 -.31 + 2JRG29 RJ016 .04 RJ018 -.47 + 2JRG29 RJ019 .07 RJ031 -.037 + 2JRG29 RJ079 1. RJ100 .67 + 2JRG29 RRG29 1. + 1MRG29 R0000 .3003 RC0ST 1.104 + 1MRG29 2RM003 -1. RRG29 1. + ANG30 R0000 5.2133 30G30 1. + ANG30 RC0ST 2.725 RA043 -1. + ANG30 RA075 .57 RA076 -.59 + ANG30 RA079 6. RA081 -15. + ANG30 RA100 1. RH106 1. + BNG30 R0000 .4919 30G30 1. + BNG30 RC0ST .808 RG0EX 1. + BNG30 RB045 -1. RB077 5. + BNG30 RB078 -1. RB100 1. + HNG30 R0000 .3435 30G30 1. + HNG30 RC0ST .575 RG0EX 1. + HNG30 RH043 -1. RH080 1.506 + HNG30 RH081 -4.146 RH082 5. + HNG30 RH083 -3. + 1NG30 R0000 .5168 30G30 1. + 1NG30 RC0ST .729 RG0EX 1. + 1NG30 R1060 -1. R1087 5. + 1NG30 R1088 -4.08 + BRG33 R0000 .2987 RC0ST .55 + BRG33 RG0EX 1. RB047 -1. + BRG33 RB081 -.6 RB082 7.2 + BRG33 RB083 2.5 RB084 .5 + BRG33 RB085 -2.19 RB086 -5.23 + BRG33 RR010 1. + HRG33 R0000 .2098 RC0ST .442 + HRG33 RG0EX 1. RH043 -1. + HRG33 RH080 2.245 RH081 -10.909 + HRG33 RH082 3. RH083 -5. + HRG33 RH084 -1.379 RR010 1. + 1RG33 R0000 .3216 RC0ST .467 + 1RG33 RG0EX 1. R1062 -1. + 1RG33 R1091 -1.47 R1092 2.5 + 1RG33 R1093 3.15 R1094 -2.65 + 1RG33 R1095 5. R1096 25. + 1RG33 RR010 1. + JRG33 R0000 1.217 RC0ST 1.904 + JRG33 RJ040 -1. RJ062 2.5 + JRG33 RJ063 -2.53 RJ064 3. + JRG33 RJ065 5. RR010 1. + 2MRG33 R0000 .3162 RC0ST 1.1375 + 2MRG33 2RM003 -1. RR010 1. + 1HNG44 R0000 .3435 30G44 1. + 1HNG44 RC0ST .575 RG0EX 1. + 1HNG44 2RH043 -1. + 11NG44 R0000 .5168 30G44 1. + 11NG44 RC0ST .729 RG0EX 1. + 11NG44 R1060 -1. R1086 -1.5 + 11NG44 R1087 5. R1088 .61 + BDG55 R0000 .2566 RC0ST .44 + BDG55 4RB045 -1. RDG55 1. + HDG55 R0000 .1698 RC0ST .335 + HDG55 RDG55 1. 3RH048 -1. + 1DG55 R0000 .2737 RC0ST .336 + 1DG55 RDG55 1. 2R1062 -1. + JDG55 R0000 1.2169 RC0ST 1.825 + JDG55 RG0EX -1. RDG55 1. + JDG55 1RJ041 -1. + MDG55 R0000 .5461 RC0ST 1.058 + MDG55 RG0EX -1. RDG55 1. + MDG55 2RM003 -1. + BHG55 R0000 .275 RC0ST .5 + BHG55 4RB045 -1. 3RH048 1. + BHG55 RH106 1. + 1HG55 R0000 .256 RC0ST .377 + 1HG55 3RH048 1. RH106 1. + 1HG55 2R1062 -1. + JHG55 R0000 1.2071 RC0ST 1.883 + JHG55 RG0EX -1. 3RH048 1. + JHG55 RH106 1. 1RJ041 -1. + MHG55 R0000 .5362 RC0ST 1.117 + MHG55 RG0EX -1. 3RH048 1. + MHG55 RH106 1. 2RM003 -1. + B1G55 R0000 .4546 RC0ST .717 + B1G55 4RB045 -1. 2R1062 1. + H1G55 R0000 .3102 RC0ST .492 + H1G55 3RH048 -1. 2R1062 1. + J1G55 R0000 1.4161 RC0ST 2.112 + J1G55 RG0EX -1. 2R1062 1. + J1G55 1RJ041 -1. + M1G55 R0000 .745 RC0ST 1.346 + M1G55 RG0EX -1. 2R1062 1. + M1G55 2RM003 -1. + YAD11 R0000 -2.5103 RC0ST 2.025 + YAD11 RA046 1. RY002 .89 + YAD11 RY004 .11 + ZAD11 R0000 -2.3364 RC0ST 2.121 + ZAD11 RA046 1. RZ016 .65 + ZAD11 RZ019 .35 + AED16 R0000 1.3106 KW1RC -1. + AED16 1RA047 -1. RE047 1. + MHD20 R0000 .4804 RC0ST 1.117 + MHD20 RF0EX -1. 2RH025 1. + MHD20 RH106 1. RM004 -1. + AJD20 R0000 3.8249 RC0ST .5917 + AJD20 RA046 -1. RA082 -4.06 + AJD20 RA083 1.39 RA086 -9. + AJD20 RA087 12. RA088 -6. + AJD20 RJ043 1. + JVD20 R0000 .9756 RC0ST 1.5042 + JVD20 RJ043 -1. RV001 1. + YVD20 R0000 1.2182 RC0ST 2.075 + YVD20 RV001 1. RY002 1. + ZVD20 R0000 1.2774 RC0ST 2.1333 + ZVD20 RV001 1. RZ016 1. + BND22 R0000 .4621 30D22 1. + BND22 RC0ST .833 RG0EX 1. + BND22 3RB047 -1. + HND22 R0000 .3254 30D22 1. + HND22 RC0ST .6 RG0EX 1. + HND22 2RH048 -1. + 1ND22 R0000 .491 30D22 1. + 1ND22 RC0ST .754 RG0EX 1. + 1ND22 2R1063 -1. + EJD26 R0000 3.8023 RC0ST .6 + EJD26 RE046 -1. RJ043 1. + BND30 R0000 .4621 30D30 1. + BND30 RC0ST .833 RG0EX 1. + BND30 2RB047 -1. + HND30 R0000 .3254 30D30 1. + HND30 RC0ST .6 RG0EX 1. + HND30 2RH048 -1. + 1ND30 R0000 .491 30D30 1. + 1ND30 RC0ST .754 RG0EX 1. + 1ND30 1R1063 -1. + ATF07 R0000 2.9319 RA051 -1. + ATF07 RA093 -3.19 RA094 3.1 + ATF07 RA095 -6. RA096 -3. + ATF07 RT005 1. + ETF07 R0000 3.0015 RE048 -1. + ETF07 RE088 1.04 RE089 1.14 + ETF07 RE091 18. RT005 1. + JTF07 R0000 1.0134 RJ045 -1. + JTF07 RJ073 1.05 1RJ073 -.94 + JTF07 1RJ074 11. RT005 1. + YTF07 R0000 1.1479 RT005 1. + YTF07 RY002 .046 RY004 .954 + ATF09 R0000 2.9319 RA048 -1. + ATF09 RA089 -1.2 RA090 .81 + ATF09 RA091 -2.5 RA092 4. + ATF09 RT006 1. + ETF09 R0000 3.0015 1RE056 -1. + ETF09 RT006 1. + JTF09 R0000 1.0134 RJ042 -1. + JTF09 RJ102 -3. RJ103 -.15 + JTF09 RJ104 -.69 RJ105 -.31 + JTF09 RJ106 6. RT006 1. + ZTF09 R0000 1.1756 RT006 1. + ZTF09 RZ020 1. + HNF21 R0000 .3148 30121 .5 + HNF21 30F52 .5 RC0ST .575 + HNF21 RF0EX 1. RH051 -1. + HNF21 RH091 13. + 1NF21 R0000 .4804 30121 .9 + 1NF21 RC0ST .729 RF0EX 1. + 1NF21 R1018 -.32 R1033 -.15 + 1NF21 1R1033 -.53 R1065 .1 + 1NF21 R1106 -.75 R1107 .65 + 1NF21 R1108 -.29 R1109 -.11 + 1NF21 R1110 -4.9 + HBF28 R0000 .2033 RC0ST .429 + HBF28 RB050 1. 1RH051 -1. + BHF28 R0000 .2292 RC0ST .5 + BHF28 RB050 -1. 1RH051 1. + BHF28 RH106 1. + B1F28 R0000 .398 RC0ST .717 + B1F28 RB050 -1. 1R1064 1. + H1F28 R0000 .3335 RC0ST .604 + H1F28 1RH051 -1. 1R1064 1. + HBF35 R0000 .2033 RC0ST .429 + HBF35 RB052 1. 3RH052 -1. + JBF35 R0000 1.1142 RC0ST 1.838 + JBF35 RF0EX -1. RB052 1. + JBF35 2RJ046 -1. + MBF35 R0000 .4716 RC0ST 1.071 + MBF35 RF0EX -1. RB052 1. + MBF35 RM005 -1. + BCF35 R0000 .3721 RC0ST .512 + BCF35 RB052 -1. RCF35 1. + HCF35 R0000 .4234 RC0ST .742 + HCF35 RCF35 1. 3RH052 -1. + JCF35 R0000 1.4671 RC0ST 2.217 + JCF35 RF0EX -1. RCF35 1. + JCF35 2RJ046 -1. + MCF35 R0000 .8382 RC0ST 1.458 + MCF35 RF0EX -1. RCF35 1. + MCF35 RM005 -1. + ZCF35 R0000 1.8837 RC0ST 2.883 + ZCF35 RF0EX -1. RCF35 1. + ZCF35 RZ019 1. + BDF35 R0000 .4905 RC0ST .6792 + BDF35 RB052 -1. RDF35 1. + HDF35 R0000 .153 RC0ST .335 + HDF35 RDF35 1. 3RH052 -1. + 1DF35 R0000 .3125 RC0ST .467 + 1DF35 RDF35 1. R1069 -1. + JDF35 R0000 1.1257 RC0ST 1.825 + JDF35 RF0EX -1. RDF35 1. + JDF35 2RJ046 -1. + MDF35 R0000 .4932 RC0ST 1.058 + MDF35 RF0EX -1. RDF35 1. + MDF35 RM005 -1. + ZDF35 R0000 1.3948 RC0ST 2.4583 + ZDF35 RF0EX -1. RDF35 1. + ZDF35 RZ019 1. + BHF35 R0000 .2292 RC0ST .5 + BHF35 RB052 -1. 3RH052 1. + BHF35 RH106 1. + 1HF35 R0000 .293 RC0ST .509 + 1HF35 3RH052 1. RH106 1. + 1HF35 R1069 -1. + JHF35 R0000 1.1129 RC0ST 1.883 + JHF35 RF0EX -1. 3RH052 1. + JHF35 RH106 1. 2RJ046 -1. + MHF35 R0000 .4804 RC0ST 1.117 + MHF35 RF0EX -1. 3RH052 1. + MHF35 RH106 1. RM005 -1. + ZHF35 R0000 1.3821 RC0ST 2.5167 + ZHF35 RF0EX -1. 3RH052 1. + ZHF35 RH106 1. RZ019 1. + B1F35 R0000 .398 RC0ST .717 + B1F35 RB052 -1. R1069 1. + H1F35 R0000 .3335 RC0ST .604 + H1F35 3RH052 -1. R1069 1. + J1F35 R0000 1.3104 RC0ST 2.112 + J1F35 RF0EX -1. R1069 1. + J1F35 2RJ046 -1. + M1F35 R0000 .6778 RC0ST 1.346 + M1F35 RF0EX -1. R1069 1. + M1F35 RM005 -1. + Z1F35 R0000 1.5795 RC0ST 2.7458 + Z1F35 RF0EX -1. R1069 1. + Z1F35 RZ019 1. + MJF35 R0000 .2582 RC0ST .3292 + MJF35 RJ046 1. RM005 -1. + YJF35 R0000 1.1795 RC0ST 1.8958 + YJF35 RJ046 1. RY002 .13 + YJF35 RY004 .87 + HVF35 R0000 .2531 RC0ST .458 + HVF35 RF0EX 1. 3RH052 -1. + HVF35 RV002 1. + JVF35 R0000 1.0101 RC0ST 1.504 + JVF35 2RJ046 -1. RV002 1. + YVF35 R0000 1.2527 RC0ST 2.075 + YVF35 RV002 1. RY002 .13 + YVF35 RY004 .87 + ZVF35 R0000 1.2774 RC0ST 2.1333 + ZVF35 RV002 1. RZ019 1. + YJF46 R0000 .3649 RC0ST .858 + YJF46 RJ045 1. RJ072 1. + YJF46 RJ073 -.28 1RJ073 -.53 + YJF46 1RJ074 -14. RJ080 1. + YJF46 RY004 1. + JVF46 R0000 .9756 RC0ST 1.504 + JVF46 RJ045 -1. RV003 1. + BNF48 R0000 .4908 30F48 1. + BNF48 RC0ST .95 RF0EX 1. + BNF48 1RB053 -1. RB102 3.38 + BNF48 RB103 -3.11 RB104 12. + BNF48 RB106 -7.5 + HNF48 R0000 .3148 30F48 1. + HNF48 RC0ST .575 RF0EX 1. + HNF48 3RH053 -1. + 1NF48 R0000 .4804 30F48 1. + 1NF48 RC0ST .729 RF0EX 1. + 1NF48 R1069 -1. R1111 1.06 + 1NF48 R1112 -1.67 R1115 2. + JNF48 R0000 1.4154 30F48 1. + JNF48 RC0ST 2.429 RH106 1. + JNF48 2RJ046 -1. RJ076 1.03 + JNF48 1RJ076 -1.77 RJ078 2. + ZNF48 R0000 1.6187 30F48 1. + ZNF48 RC0ST 2.675 RZ020 1. + BNF52 R0000 .4908 30F52 1. + BNF52 RC0ST .95 RF0EX 1. + BNF52 RB050 -1. + HNF52 R0000 .3148 30F52 1. + HNF52 RC0ST .575 RF0EX 1. + HNF52 1RH051 -1. + 1NF52 R0000 .4804 30F52 1. + 1NF52 RC0ST .729 RF0EX 1. + 1NF52 1R1064 -1. + ZJF57 R0000 .3896 RC0ST .9167 + ZJF57 RJ089 1. RZ019 1. + EAF59 R0000 1.1876 KW1RC 1. + EAF59 RA049 1. RE058 -1. + EAF59 RE098 -1.82 RE099 2.76 + EAF59 RE100 .5 RE101 25. + EAF60 R0000 1.1876 KW1RC 1. + EAF60 RA051 1. RE048 -1. + EAF60 RE088 4.12 RE089 -2.85 + EAF60 RE090 7. RE091 21. + AEF60 R0000 1.3106 KW1RC -1. + AEF60 RA051 -1. RE050 1. + EAF64 R0000 1.1876 KW1RC 1. + EAF64 RA052 1. RE048 -1. + EAF64 RE088 1.27 RE090 6. + EAF64 RE091 10. + B1F64 R0000 .398 RC0ST .717 + B1F64 RB051 -.704 1RB053 -.296 + B1F64 RB091 .06 RB092 .29 + B1F64 1RB093 4.22 RB102 1. + B1F64 RB103 -.92 RB104 2.96 + B1F64 RB106 -2.66 1R1068 1. + H1F64 R0000 .3335 RC0ST .604 + H1F64 2RH052 -1. RH093 1.25 + H1F64 RH110 -1.06 1R1068 1. + J1F64 R0000 1.3104 RC0ST 2.112 + J1F64 RF0EX -1. 1R1068 1. + J1F64 2RJ045 -1. RJ073 1.27 + J1F64 1RJ073 -.78 + BNF64 R0000 .4908 2SF145 1. + BNF64 RC0ST .95 RF0EX 1. + BNF64 RB051 -.704 1RB053 -.296 + BNF64 RB091 .06 RB092 .29 + BNF64 1RB093 4.22 RB102 1. + BNF64 RB103 -.92 RB104 2.96 + BNF64 RB106 -2.66 + HNF64 R0000 .3148 2SF145 1. + HNF64 RC0ST .575 RF0EX 1. + HNF64 2RH052 -1. RH093 1.25 + HNF64 RH110 -1.06 + 1NF64 R0000 .4804 2SF145 1. + 1NF64 RC0ST .729 RF0EX 1. + 1NF64 1R1068 -1. + JNF64 R0000 1.4154 2SF145 1. + JNF64 RC0ST 2.429 RH106 1. + JNF64 RJ045 -1. RJ073 1.27 + JNF64 1RJ073 -.78 + YNF64 R0000 1.6597 2SF145 1. + YNF64 RC0ST 3.004 RH106 1. + YNF64 RY002 .055 RY004 .945 + AEF68 R0000 1.3106 KW1RC -1. + AEF68 RA013 -.236 RA019 -.764 + AEF68 RE049 1. + AXF72 R0000 3.0796 RC0ST 1.308 + AXF72 1RA053 -1. RXF72 1. + EXF72 R0000 3.0963 RC0ST .812 + EXF72 RE051 -1. RXF72 1. + 1BF75 R0000 .3366 RC0ST .562 + 1BF75 RB053 1. R1065 -1. + 1BF75 R1106 .46 R1107 .25 + HBF80 R0000 .2033 RC0ST .429 + HBF80 2RB051 1. 2RH052 -1. + JBF80 R0000 1.1142 RC0ST 1.838 + JBF80 RF0EX -1. 2RB051 1. + JBF80 2RJ045 -1. + MBF80 R0000 .4716 RC0ST 1.071 + MBF80 RF0EX -1. 2RB051 1. + MBF80 RM006 -1. + BCF80 R0000 .3721 RC0ST .512 + BCF80 2RB051 -1. RCF80 1. + HCF80 R0000 .4234 RC0ST .742 + HCF80 RCF80 1. 2RH052 -1. + JCF80 R0000 1.4671 RC0ST 2.217 + JCF80 RF0EX -1. RCF80 1. + JCF80 2RJ045 -1. + MCF80 R0000 .8382 RC0ST 1.458 + MCF80 RF0EX -1. RCF80 1. + MCF80 RM006 -1. + BHF80 R0000 .2292 RC0ST .5 + BHF80 2RB051 -1. 2RH052 1. + BHF80 RH106 1. + JHF80 R0000 1.1129 RC0ST 1.883 + JHF80 RF0EX -1. 2RH052 1. + JHF80 RH106 1. 2RJ045 -1. + MHF80 R0000 .4804 RC0ST 1.117 + MHF80 RF0EX -1. 2RH052 1. + MHF80 RH106 1. RM006 -1. + BNF80 R0000 .4908 2SF129 1. + BNF80 RC0ST .95 RF0EX 1. + BNF80 1RB051 -1. + YJF83 R0000 .4078 RC0ST .858 + YJF83 RJ080 1. RJ091 1. + YJF83 RY002 .025 RY004 .975 + HNF89 R0000 .3126 2SF089 1. + HNF89 RC0ST .575 RF0EX 1. + HNF89 RH052 -1. RH093 1.25 + HNF89 1RH093 -16. RH094 21. + HNF89 RH110 -1.06 + 1NF89 R0000 .4804 2SF089 1. + 1NF89 RC0ST .729 RF0EX 1. + 1NF89 R1065 -1. R1106 .52 + 1NF89 R1107 -.35 R1108 -5. + 117FHR R0000 .1718 RC0ST .4042 + 117FHR RH053 -1. RH115 .24 + 117FHR RH117 -5. RH118 15. + 117FHR RR021 1. + 117FZR R0000 1.3821 RC0ST 2.5167 + 117FZR RR021 1. RZ019 1. + 118FAT R0000 2.9319 RA048 -1. + 118FAT RA091 .5 RA092 4. + 118FAT 3RT006 1. + 118FET R0000 3.0015 RE048 -1. + 118FET RE088 4.32 RE089 -1.96 + 118FET RE090 17. RE091 16. + 118FET 3RT006 1. + 118FJT R0000 1.0134 RJ042 -1. + 118FJT RJ103 1.23 RJ104 -1.77 + 118FJT RJ106 6. 3RT006 1. + 118FZT R0000 1.1756 3RT006 1. + 118FZT RZ020 1. + 129FHB R0000 .2033 RC0ST .429 + 129FHB 1RB051 1. 2RH051 -1. + 129FJB R0000 1.1142 RC0ST 1.838 + 129FJB RF0EX -1. 1RB051 1. + 129FJB 2RJ045 -1. + 129FBH R0000 .2292 RC0ST .5 + 129FBH 1RB051 -1. 2RH051 1. + 129FBH RH106 1. + 129F1H R0000 .293 RC0ST .509 + 129F1H 2RH051 1. RH106 1. + 129F1H R1068 -1. + 129FJH R0000 1.1129 RC0ST 1.883 + 129FJH RF0EX -1. 2RH051 1. + 129FJH RH106 1. 2RJ045 -1. + HN129 R0000 .3148 2SF129 1. + HN129 RC0ST .575 RF0EX 1. + HN129 RH052 -1. + JN129 R0000 1.4154 2SF129 1. + JN129 RC0ST 2.429 RH106 1. + JN129 RJ045 -1. RJ072 5. + MN129 R0000 .7757 2SF129 1. + MN129 RC0ST 1.646 RH106 1. + MN129 RM006 -1. + YN129 R0000 1.6597 2SF129 1. + YN129 RC0ST 3.0042 RH106 1. + YN129 RY004 1. + HV129 R0000 .2531 RC0ST .458 + HV129 RF0EX 1. RH052 -1. + HV129 RV003 1. + YV129 R0000 1.2527 RC0ST 2.075 + YV129 RV003 1. RY004 1. + AT137 R0000 2.9319 RA051 -1. + AT137 RA093 1.7 RA094 -2.87 + AT137 RA095 5. RA096 9. + AT137 4RT006 1. + ET137 R0000 3.0015 RE058 -1. + ET137 RE099 .78 RE100 -10. + ET137 RE101 19. 4RT006 1. + JT137 R0000 1.0134 RJ014 -.3 + JT137 RJ025 -.7 4RT006 1. + YAFLD R0000 -2.2771 RC0ST 2.025 + YAFLD RA009 .87 RA010 .13 + YAFLD RA060 1. 3RA060 1. + YAFLD RA100 -1. RY001 1.007 + 1YAFLD R0000 -2.4796 RA009 .87 + 1YAFLD RA010 .13 RA055 2.133 + 1YAFLD 2RA060 1. 3RA060 1. + 1YAFLD RY001 1.01 + YEFLD R0000 -1.987 RC0ST 2.5667 + YEFLD 3RA060 1. RE012 .257 + YEFLD RE013 .556 RE015 .187 + YEFLD RE060 -.01 RE062 1. + YEFLD RE104 -1. RY001 1.01 + 1YEFLD R0000 -2.238 3RA060 1. + 1YEFLD RE005 1. RE012 .257 + 1YEFLD RE013 .556 RE015 .187 + 1YEFLD RE060 -.0308 RE061 2.8 + 1YEFLD RE062 1. RY001 1.01 + YHFLD R0000 .9886 RH010 .285 + YHFLD RH016 .665 RH096 .028 + YHFLD RH105 1. RH106 1. + YHFLD RY001 1.01 + 1YHFLD R0000 1.6603 RC0ST 2.458 + 1YHFLD RLDEX -1. RH007 .04 + 1YHFLD RH008 .08 1RH038 .66 + 1YHFLD 1RH054 1. RH057 1.15 + 1YHFLD RH096 -.12 RH106 1. + 1YHFLD RH113 .12 RH114 .12 + 1YHFLD RY001 1. + YJFLD R0000 .4078 RC0ST .858 + YJFLD 1RJ008 .3 RJ010 .55 + YJFLD RJ012 .15 RJ099 .81 + YJFLD RY001 1.01 + JASRB R0000 -2.3645 RC0ST 1.688 + JASRB RA009 1.6 RA023 -.6 + JASRB RA060 1. 3RA060 1. + JASRB RA100 -1. RJ010 -1. + 1JASRB R0000 -2.3645 RC0ST 1.688 + 1JASRB RA009 1.6 RA023 -.6 + 1JASRB RA060 1. 3RA060 1. + 1JASRB RA100 -1. RJ009 -1. + JESRB R0000 -2.0691 RC0ST 2.238 + JESRB 3RA060 1. RE013 1. + JESRB RE060 -.01 RE062 1. + JESRB RE104 -1. RJ010 -1. + 1JESRB R0000 -2.0691 RC0ST 2.238 + 1JESRB 3RA060 1. RE014 1. + 1JESRB RE060 -.01 RE062 1. + 1JESRB RE104 -1. RJ009 -1. + BHSRB R0000 .2875 RC0ST .5 + BHSRB RB008 -1. RH015 .95 + BHSRB RH096 .025 RH105 .9494 + BHSRB RH106 1. + 1BHSRB R0000 .2875 RC0ST .5 + 1BHSRB 1RB008 -1. RH016 .95 + 1BHSRB RH096 .025 RH105 .9494 + 1BHSRB RH106 1. + 2BHSRB R0000 .2875 RC0ST .5 + 2BHSRB RB008 -1. RH015 .99 + 2BHSRB 1RH054 .99 RH106 1. + 3BHSRB R0000 .2875 RC0ST .5 + 3BHSRB 1RB008 -1. RH016 .99 + 3BHSRB 1RH054 .99 RH106 1. + JHSRB R0000 1.1129 RC0ST 1.883 + JHSRB RLDEX -1. RH016 .95 + JHSRB RH096 .025 RH105 .9494 + JHSRB RH106 1. RJ010 -1. + 1JHSRB R0000 1.1129 RC0ST 1.883 + 1JHSRB RLDEX -1. RH015 .95 + 1JHSRB RH096 .025 RH105 .9494 + 1JHSRB RH106 1. RJ009 -1. + BHFCR R0000 .2875 RC0ST .5 + BHFCR 1RB024 -1. 1RH038 1. + JHFCR R0000 1.2071 RC0ST 1.883 + JHFCR RMSEX -1. 1RH038 1. + JHFCR RH106 1. RJ097 -1. + 1JHFCR R0000 1.3921 RC0ST 1.883 + 1JHFCR RMSEX -1. RH035 1. + 1JHFCR RH067 .1307 RH068 7.843 + 1JHFCR RH069 -17.017 RH070 7.937 + 1JHFCR RH071 -.3259 RH106 1. + 1JHFCR RJ098 -1. + 2JHFCR R0000 1.3921 RC0ST 1.883 + 2JHFCR RMSEX -1. RH035 1. + 2JHFCR RH067 2.604 RH068 .643 + 2JHFCR RH069 -10.936 RH070 6.43 + 2JHFCR RH071 -.317 RH106 1. + 2JHFCR RJ097 -.4 1RJ097 -.6 + 3JHFCR R0000 1.3921 RC0ST 1.883 + 3JHFCR RMSEX -1. RH035 1. + 3JHFCR RH067 3.267 RH068 7.843 + 3JHFCR RH069 -17.017 RH070 7.937 + 3JHFCR RH071 -.3259 RH106 1. + 3JHFCR RJ098 -.4 1RJ098 -.6 + ZHFCR R0000 1.8441 RC0ST 2.554 + ZHFCR RMSEX -1. RH035 1. + ZHFCR RH067 -.128 RH068 1.282 + ZHFCR RH069 -13.305 RH070 6.41 + ZHFCR RH071 -.316 RH106 1. + ZHFCR RZ004 1. + ZJFCR R0000 .7736 RC0ST .954 + ZJFCR RJ032 1. RJ052 -4.5 + ZJFCR RJ053 10.3 RJ054 -10.2 + ZJFCR RJ095 -.402 RZ004 1. + H1HCR R0000 .3102 RC0ST .492 + H1HCR RH011 -.548 RH095 -.452 + H1HCR R1043 -1. + BHLCS R0000 .2875 RC0ST .5 + BHLCS RB028 -1. RH012 1. + BHLCS RH106 1. + 1HHSC R0000 .425 RC0ST .377 + 1HHSC RH035 1. RH067 -.708 + 1HHSC RH068 69.649899 RH069 -19.95 + 1HHSC RH070 82.639899 RH071 -.291 + 1HHSC RH106 1. R1041 1. + 11HHSC R0000 .334 RC0ST .377 + 11HHSC RH036 1. RH072 -14.99 + 11HHSC RH073 -19.95 RH074 -5. + 11HHSC RH075 -.529 RH106 1. + 11HHSC R1041 1. + 1HLSC R0000 .454 RC0ST .377 + 1HLSC RH035 1. RH067 1.379 + 1HLSC RH068 -63.4 RH069 27.31 + 1HLSC RH070 -34.48 RH071 -.34 + 1HLSC RH106 1. R1040 1. + 11HLSC R0000 .347 RC0ST .377 + 11HLSC RH036 1. RH072 -16.14 + 11HLSC RH073 27.31 RH074 -5. + 11HLSC RH075 -.618 RH106 1. + 11HLSC R1040 1. + EAKER R0000 1.1876 KW1RC 1. + EAKER RA013 1. RE017 -1. + EHKER R0000 4.8104 RC0ST 2.221 + EHKER RG0EX -1. RE017 -1. + EHKER RE104 1. RH048 1. + EHKER RH085 3.944 RH086 -28.786 + EHKER RH087 -6.8 RH088 -14. + EHKER RH089 2.987 RH106 1. + EAALG R0000 1.1876 KW1RC 1. + EAALG RA014 1. RE019 -1. + EHALG R0000 4.8104 RC0ST 2.221 + EHALG RG0EX -1. RE019 -1. + EHALG RE104 1. RH048 1. + EHALG RH085 -2.306 RH086 -10.107 + EHALG RH087 -1.5 RH088 -4.5 + EHALG RH089 -2.729 RH106 1. + EAKLG R0000 1.1876 KW1RC 1. + EAKLG RA015 1. RE018 -1. + EHKLG R0000 4.8104 RC0ST 2.221 + EHKLG RG0EX -1. RE018 -1. + EHKLG RE104 1. RH048 1. + EHKLG RH085 -1.452 RH086 -10.18 + EHKLG RH087 1.3 RH088 -9. + EHKLG RH089 -2.795 RH106 1. + MUKG0 R0000 -.9481 RC0ST -1.342 + MUKG0 1RM003 -1. RY002 -1. + 1YBLG0 R0000 1.5743 RC0ST 2.612 + 1YBLG0 RG0EX -1. RB047 1. + 1YBLG0 RB081 3.565 RB082 -5.4 + 1YBLG0 RB083 .3 RB084 -.9 + 1YBLG0 RB085 -.636 RB086 2.16 + 1YBLG0 RY002 1. + 2YBLG0 R0000 1.5743 RC0ST 2.612 + 2YBLG0 RG0EX -1. RB046 1. + 2YBLG0 1RB050 1. RB087 -14.9 + 2YBLG0 RB088 -22.2 RB089 -.636 + 2YBLG0 RB090 -25. 1RB090 -18. + 2YBLG0 RY002 1. + 3YBLG0 R0000 1.5743 RC0ST 2.612 + 3YBLG0 RG0EX -1. RB051 1. + 3YBLG0 RB091 -22.57 RB092 13.08 + 3YBLG0 1RB092 -54. RB093 -.636 + 3YBLG0 1RB093 -30.2 RY002 1. + 1ZBLG0 R0000 1.7531 RC0ST 2.708 + 1ZBLG0 RG0EX -1. RB047 1. + 1ZBLG0 RB081 1.053 RB082 -3.8 + 1ZBLG0 RB083 -1.4 RB084 -.5 + 1ZBLG0 RB085 -.636 RB086 2.16 + 1ZBLG0 RZ016 1. + 2ZBLG0 R0000 1.7531 RC0ST 2.708 + 2ZBLG0 RG0EX -1. RB046 1. + 2ZBLG0 1RB050 1. RB087 -14.9 + 2ZBLG0 RB088 -23.9 RB089 -.636 + 2ZBLG0 RB090 -25. 1RB090 -18. + 2ZBLG0 RZ016 1. + 3ZBLG0 R0000 1.7531 RC0ST 2.708 + 3ZBLG0 RG0EX -1. RB051 1. + 3ZBLG0 RB091 -22.57 RB092 13.08 + 3ZBLG0 1RB092 -54. RB093 -.636 + 3ZBLG0 1RB093 -31.9 RZ016 1. + YHLG0 R0000 1.4803 RC0ST 2.458 + YHLG0 RG0EX -1. RH051 1. + YHLG0 RH090 -16.33 1RH090 -22. + YHLG0 2RH090 15. RH091 -22.2 + YHLG0 RH103 1. RH106 1. + YHLG0 RH108 -30. RY002 1. + 1YHLG0 R0000 1.4803 RC0ST 2.458 + 1YHLG0 RG0EX -1. RH052 1. + 1YHLG0 RH093 -24.18 1RH093 -61. + 1YHLG0 RH094 -30.2 RH106 1. + 1YHLG0 RH110 23.51 RY002 1. + 4YHLG0 R0000 1.4803 RC0ST 2.458 + 4YHLG0 RG0EX -1. RH048 1. + 4YHLG0 RH086 -13.333 RH087 -.2 + 4YHLG0 RH088 -10. RH089 -.7 + 4YHLG0 RH106 1. RY002 1. + YHLGG R0000 1.4803 RC0ST 2.458 + YHLGG RG0EX -1. RH106 1. + YHLGG RH109 1. 1RH109 -18.23 + YHLGG 2RH109 16.95 RY002 1. + ZHLG0 R0000 1.659 RC0ST 2.554 + ZHLG0 RG0EX -1. RH051 1. + ZHLG0 RH090 -16.33 1RH090 -17. + ZHLG0 2RH090 15. RH091 -23.9 + ZHLG0 RH103 1. RH106 1. + ZHLG0 RH108 -30. RZ016 1. + 1ZHLG0 R0000 1.659 RC0ST 2.554 + 1ZHLG0 RG0EX -1. RH052 1. + 1ZHLG0 RH093 -24.18 1RH093 -56. + 1ZHLG0 RH094 -31.9 RH106 1. + 1ZHLG0 RH110 23.51 RZ016 1. + 3ZHLG0 R0000 1.659 RC0ST 2.554 + 3ZHLG0 RG0EX -1. RH048 1. + 3ZHLG0 RH085 -2.447 RH086 -6.77 + 3ZHLG0 RH087 -1.9 RH088 -6. + 3ZHLG0 RH089 -.7 RH106 1. + 3ZHLG0 RZ016 1. + EAAHG R0000 1.1876 KW1RC 1. + EAAHG RA016 1. RE022 -1. + EAKHG R0000 1.1876 KW1RC 1. + EAKHG RA017 1. RE021 -1. + EAHWD R0000 1.1876 KW1RC 1. + EAHWD RA026 1. RE028 -1. + AJCG0 R0000 4.0551 RC0ST 1.425 + AJCG0 RA033 -1. RA100 1. + AJCG0 RJ040 1. RJ061 -10.7 + AJCG0 RJ062 7. RJ063 -3.43 + AJCG0 RJ064 4. RJ065 29. + 1AJCG0 R0000 4.0551 RC0ST 1.425 + 1AJCG0 RA033 -1. RJ043 1. + 1AJCG0 RJ066 -7.8 RJ067 2. + 1AJCG0 RJ068 -3.43 RJ069 -6. + 1AJCG0 RJ070 -.5 RJ071 16. + MHRES R0000 .4804 RC0ST 1.117 + MHRES RF0EX -1. RH052 1. + MHRES RH094 -5. RH106 1. + MHRES RH110 -.67 RM006 -1. + 1MHRES R0000 .4804 RC0ST 1.117 + 1MHRES RF0EX -1. RH052 1. + 1MHRES RH093 -3.08 RH094 -5. + 1MHRES RH106 1. RH110 2.41 + 1MHRES RM005 -1. + 2MHRES R0000 .4804 RC0ST 1.117 + 2MHRES RF0EX -1. RH052 1. + 2MHRES RH106 1. RH110 .67 + 2MHRES 1RM006 -1. + 3MHRES R0000 .4804 RC0ST 1.117 + 3MHRES RF0EX -1. RH052 1. + 3MHRES RH106 1. RH110 .67 + 3MHRES 2RM006 -1. + YHRES R0000 1.3573 RC0ST 2.458 + YHRES RF0EX -1. RH052 1. + YHRES 1RH093 -7. RH094 -.5 + YHRES RH106 1. RH110 -.67 + YHRES RY004 1. + ZHRES R0000 1.5313 RC0ST 2.554 + ZHRES RF0EX -1. RH052 1. + ZHRES RH093 -4.05 1RH093 -5. + ZHRES RH094 -15. RH106 1. + ZHRES RH110 3.38 RZ019 1. + ZJRES R0000 .5388 RC0ST .954 + ZJRES RJ045 1. RJ072 -16. + ZJRES RJ073 -4.46 1RJ073 3.65 + ZJRES RJ074 -1.03 RJ080 1. + ZJRES RZ019 1. + 1ZJRES R0000 .5388 RC0ST .954 + 1ZJRES RJ046 1. RJ075 -16. + 1ZJRES RJ076 -1.34 1RJ076 .7 + 1ZJRES RJ077 -1.03 RJ078 3. + 1ZJRES RJ080 1. RZ019 1. + 2ZJRES R0000 .5388 RC0ST .954 + 2ZJRES RJ042 1. RJ080 1. + 2ZJRES RJ102 -1. RJ103 -1.34 + 2ZJRES RJ104 .7 RJ105 -1.03 + 2ZJRES RJ106 3. RZ019 1. + ZJREX R0000 .5388 RC0ST .954 + ZJREX RJ045 1. RJ072 -16. + ZJREX RJ073 -4.46 1RJ073 3.65 + ZJREX RJ074 -1.03 1RJ074 -7. + ZJREX RJ080 1. RZ020 1. + 1ZJREX R0000 .5388 RC0ST .954 + 1ZJREX RJ046 1. RJ075 -16. + 1ZJREX RJ076 -1.34 1RJ076 .7 + 1ZJREX RJ077 -1.03 RJ078 -4. + 1ZJREX RJ080 1. RZ020 1. + 2ZJREX R0000 .5388 RC0ST .954 + 2ZJREX RJ042 1. RJ080 1. + 2ZJREX RJ102 -1. RJ103 -1.34 + 2ZJREX RJ104 .7 RJ105 -1.03 + 2ZJREX RJ106 -4. RZ020 1. + HSPMS R0000 -9. 1RH035 -1. + HSPMS HSPMS 1. + HSRMS R0000 -8. 1RH036 -1. + HSRMS HSRMS 1. + HSLDF R0000 -7. RH039 -1. + HSLDF HSLDF 1. + HSATK R0000 -8. 2RH042 -1. + HSATK HSATK 1. + NSG17 R0000 -6.5 1RN014 -1. + NSG17 NSG17 1. + HSG58 R0000 -6. 2RH048 -1. + HSG58 HSG58 1. + HSF80 R0000 -2. 2RH052 -1. + HSF80 HSF80 1. + 2CB002 RB017 .511 RB001 .707 + 2CB002 1RB003 .303 1RB005 .003 + 2CB002 RB006 .009 RB007 .03 + 2CB002 RB008 .102 1RB008 .023 + 2CB002 RB009 .045 RB011 .129 + 2CB002 RB013 .063 2RB015 .041 + 2CB002 RB016 .017 RB022 .025 + 2CB002 RB031 -.026 1RB031 .002 + 2CB002 RB058 1. 1RB058 1. + 2CB002 RB101 .983 + 3CB003 2RB020 .539 RB003 .707 + 3CB003 1RB003 .303 1RB005 .002 + 3CB003 RB006 .011 RB007 .057 + 3CB003 RB008 .062 1RB008 .023 + 3CB003 RB010 .071 RB012 .082 + 3CB003 1RB013 .07 2RB015 .041 + 3CB003 RB016 .016 RB022 .024 + 3CB003 RB031 -.024 1RB031 .002 + 3CB003 RB058 1. 1RB058 1. + 3CB003 RB101 1.02 + 3CB004 2RB018 .484 1RB001 .707 + 3CB004 1RB003 .303 RB006 .008 + 3CB004 1RB007 .05 1RB008 .122 + 3CB004 RB009 .047 RB011 .135 + 3CB004 1RB013 .063 2RB015 .041 + 3CB004 1RB016 .02 RB022 .029 + 3CB004 RB031 -.025 1RB031 .001 + 3CB004 RB058 1. 1RB058 1. + 3CB004 RB101 .983 + 4CB004 2RB018 .484 1RB001 .707 + 4CB004 1RB003 .303 RB006 .008 + 4CB004 2RB007 .096 2RB008 .076 + 4CB004 RB009 .047 RB011 .135 + 4CB004 1RB013 .063 2RB015 .041 + 4CB004 1RB016 .02 RB022 .029 + 4CB004 RB031 -.025 1RB031 .001 + 4CB004 RB058 1. 1RB058 1. + 4CB004 RB099 .096 RB101 .983 + 4CB004 UKLDF -.096 + 3CB005 1RB019 .553 RB002 .707 + 3CB005 1RB003 .303 1RB005 .003 + 3CB005 RB006 .01 1RB007 .045 + 3CB005 1RB008 .094 RB009 .039 + 3CB005 RB011 .108 1RB013 .058 + 3CB005 2RB015 .041 1RB016 .02 + 3CB005 RB022 .026 RB031 -.024 + 3CB005 1RB031 .003 RB058 1. + 3CB005 1RB058 1. RB101 1.005 + 1CB096 2RB018 -1. RB053 1. + 1CB096 RB094 -1.5 RB095 .79 + 1CB096 RB096 4.7 RB097 3.2 + 2CB096 1RB019 -1. RB053 1. + 2CB096 RB094 -.02 RB095 -.69 + 2CB096 RB096 8.4 RB097 -4.6 + 3CB096 2RB020 -1. RB053 1. + 3CB096 RB094 .39 RB095 -1.1 + 3CB096 RB096 -1.6 RB097 4.4 + 2CB095 1RB019 -1. 1RB053 1. + 2CB095 RB102 -.02 RB103 -1.73 + 2CB095 RB104 1.4 RB105 -.803 + 2CB095 RB106 3.4 + 3CB095 2RB020 -1. 1RB053 1. + 3CB095 RB102 .39 RB103 -2.14 + 3CB095 RB104 10.4 RB105 -.803 + 3CB095 RB106 -6.6 + CB096 RB017 -1. RB053 1. + CB096 RB094 -1.55 RB095 .84 + CB096 RB096 -4.3 RB097 5.5 + 3CB084 2RB020 -1. RB051 1. + 3CB084 RB091 -.37 RB092 -.8 + 3CB084 1RB092 20.4 RB093 -.803 + 3CB084 1RB093 -21.6 + CB095 RB017 -1. 1RB053 1. + CB095 RB102 -1.55 RB103 -.2 + CB095 RB104 11.5 RB105 -.803 + CB095 RB106 -9.3 + 1CB095 2RB018 -1. 1RB053 1. + 1CB095 RB102 -1.5 RB103 -.25 + 1CB095 RB104 9.2 RB105 -.803 + 1CB095 RB106 -.3 + CB084 RB017 -1. RB051 1. + CB084 RB091 -2.31 RB092 1.14 + CB084 1RB092 21.5 RB093 -.803 + CB084 1RB093 -24.3 + 1CB084 2RB018 -1. RB051 1. + 1CB084 RB091 -2.26 RB092 1.09 + 1CB084 1RB092 19.2 RB093 -.803 + 1CB084 1RB093 -15.3 + 2CB084 1RB019 -1. RB051 1. + 2CB084 RB091 -.78 RB092 1.09 + 2CB084 1RB092 11.4 RB093 -.803 + 2CB084 1RB093 -11.6 + 4CB005 1RB019 .553 RB002 .707 + 4CB005 1RB003 .303 1RB005 .003 + 4CB005 RB006 .01 2RB007 .08 + 4CB005 2RB008 .059 RB009 .039 + 4CB005 RB011 .108 1RB013 .058 + 4CB005 2RB015 .041 1RB016 .02 + 4CB005 RB022 .026 RB031 -.024 + 4CB005 1RB031 .003 RB058 1. + 4CB005 1RB058 1. RB099 .08 + 4CB005 RB101 1.005 UKLDF -.08 + 1CB068 RB009 -.07 RB011 -.24 + 1CB068 RB012 -.32 RB015 -.3 + 1CB068 1RB016 -.07 1RB045 1. + CH458 3RH030 -1. RH109 1. + CH458 1RH109 9.43 2RH109 -10.91 + CH463 2RH030 -1. RH109 1. + CH463 1RH109 12.61 2RH109 -14.09 + CB152 RB022 -1. RB031 1.0313 + CB153 1RB022 -1. RB031 1.0148 + 1C1076 R1019 -.86 R1022 -.14 + 1C1076 R1062 1. R1091 -2.28 + 1C1076 R1092 2.6 R1093 9.3 + 1C1076 R1094 -3.17 R1095 -5. + 1C1078 R1020 -.88 R1023 -.12 + 1C1078 R1062 1. R1091 -1.68 + 1C1078 R1092 -1.7 R1093 9.38 + 1C1078 R1094 -3.17 R1095 -6. + C1080 R1021 -.92 R1024 -.08 + C1080 R1062 1. R1091 -5.88 + C1080 R1092 -7.2 R1093 9.05 + C1080 R1094 -3.24 R1095 7. + CH147 2RH025 -1. RH096 1. + 3CH151 1RH029 -1. RH096 1. + CH526 RH060 1. 1RH060 -1. + 1CJ015 R0000 .201 RJ010 -1. + 1CJ015 RJ032 1. 1RJ050 1. + 1CJ015 RJ052 42. RJ053 30.29 + 1CJ015 RJ054 -42.14 + 2CJ015 R0000 .201 RJ009 -1. + 2CJ015 RJ032 1. 1RJ050 1. + 2CJ015 RJ052 42. RJ053 30.29 + 2CJ015 RJ054 -42.14 + 1CJ062 RJ018 -1. RJ031 -.055 + 1CJ062 RJ040 1. RJ061 -3.8 + 1CJ062 RJ062 -3. RJ063 -3.01 + 1CJ062 RJ064 7. RJ065 -6.5 + 1CJ062 RJ079 1. RJ100 1. + 128FNN 30F48 -1. 30128 1. + 90AS30 R0000 .2079 30G22 -1. + 90AS30 RC0ST .4375 RH048 1. + 90A930 R0000 .186 2SF129 -1. + 90A930 RC0ST .4375 RH052 1. + 3CB007 1RB003 .303 1RB004 .707 + 3CB007 RB006 .006 1RB007 .035 + 3CB007 1RB008 .064 RB010 .059 + 3CB007 RB012 .069 1RB015 .218 + 3CB007 2RB015 .02 RB022 .038 + 3CB007 2RB025 .49 RB031 -.026 + 3CB007 1RB031 .001 RB058 1. + 3CB007 1RB058 1. RB101 1.015 + 4CB007 1RB003 .303 1RB004 .707 + 4CB007 RB006 .006 2RB007 .069 + 4CB007 2RB008 .03 RB010 .059 + 4CB007 RB012 .069 RB015 .218 + 4CB007 2RB015 .02 RB022 .038 + 4CB007 2RB025 .49 RB031 -.026 + 4CB007 1RB031 .001 RB058 1. + 4CB007 1RB058 1. RB099 .069 + 4CB007 RB101 1.015 UKLDF -.069 + 1CH301 RH001 1.455 1RH006 1.01 + 1CH301 RH007 .003 RH008 .0103 + 1CH301 1RH008 .002 RH010 .0444 + 1CH301 RH015 .097 RH018 .0475 + 1CH301 RH019 .1101 2RH023 .0707 + 1CH301 2RH025 .005 1RH027 .505 + 1CH301 1RH029 .102 RH096 -.017 + 1CH301 RH107 1.455 1RH107 -1. + 1CH301 2RH107 1. RH113 .003 + 2CH301 RH001 1.455 1RH006 1.01 + 2CH301 RH007 .003 RH008 .0103 + 2CH301 1RH008 .002 RH010 .0444 + 2CH301 RH015 .097 RH018 .0475 + 2CH301 RH019 .1101 2RH023 .0707 + 2CH301 2RH025 .005 1RH027 .217 + 2CH301 2RH028 .0058 1RH029 .2518 + 2CH301 4RH030 .1324 RH060 .288 + 2CH301 RH096 -.027 RH107 1.455 + 2CH301 1RH107 -1. 2RH107 1. + 2CH301 RH113 .003 + 3CH301 2RH025 -1. RH029 1. + 1CH119 RH026 -1. 1RH028 .07 + 1CH119 RH029 .459 RH030 .471 + 1CH119 1RH060 1. RH096 -.027 + 3CH119 2RH017 -1. 1RH028 .08 + 3CH119 RH029 .537 3RH030 .383 + 3CH119 1RH060 1. RH096 -.027 + 1CH121 RH027 -1. 1RH028 .113 + 1CH121 RH029 .525 RH030 .362 + 1CH121 1RH060 1.007 RH096 -.027 + C1129 R1030 -1. R1039 1.03 + 1C1129 R1031 -1. R1039 1.04 + 1ZHREX R0000 1.5313 RC0ST 2.554 + 1ZHREX RH053 1. RH115 -.48 + 1ZHREX RH116 -1. RH117 1. + 1ZHREX RH118 -14. 1RH118 -5. + 1ZHREX RZ020 1. +RHS + .00001 2SF145 29. 2SF089 60. + .00001 2SF129 73. 30M00 77. + .00001 30M94 27. 30M91 44. + .00001 30ATK 4. 30PGK 23. + .00001 30G30 44. 30G17 164. + .00001 30G44 31. 30G22 79. + .00001 30D22 19. 30D30 1. + .00001 30121 4. 30F52 86. + .00001 30F48 88. 30128 20. + .00001 RCRFT -62.5 RA009 .8 + .00001 RA023 2. RA035 2.42 + .00001 RA036 12.13 RA037 12.2 + .00001 RA038 4.6 RA040 1. + .00001 RA041 31. RA043 25. + .00001 1RA043 7. RA044 24. + .00001 RA046 8. RA047 5. + .00001 RA049 2. RA051 68.299998 + .00001 RA052 32. 1RA052 5. + .00001 RA054 19. RA055 700. + .00001 1RA055 350. RA056 135. + .00001 RA057 230. RA058 115. + .00001 1RA058 45. RA059 60. + .00001 RA060 35. 2RA060 25. + .00001 3RA060 133. RA097 80. + .00001 1RA099 28. RB002 215. + .00001 2RB005 3.6 1RB006 6.4 + .00001 2RB007 22. 1RB022 12. + .00001 2RB030 5. RB031 4. + .00001 1RB031 5. RB033 9. + .00001 RB035 60. RB037 31. + .00001 RB038 10. 1RB038 52. + .00001 RB039 6. RB040 6.5 + .00001 1RB040 1.2 2RB040 1.1 + .00001 RB041 7. RB042 22. + .00001 1RB043 .8 1RB044 1.8 + .00001 1RB045 51. 4RB045 33. + .00001 RB046 60. 3RB047 30. + .00001 RB048 24.7 2RB049 4. + .00001 RB050 57. 2RB051 113. + .00001 RB052 23. RB053 89. + .00001 RB054 28. 1RB054 28. + .00001 RB055 14. RB057 96.7 + .00001 RB058 1321.899979 1RB058 881.299988 + .00001 RB059 182.099997 RB060 110.599999 + .00001 RB061 130.299997 RB062 23.5 + .00001 RB063 22. RB098 18. + .00001 RB099 50. RB101 1376.199966 + .00001 RCLD4 34. RCF35 14. + .00001 RCF80 98. RDBMS 16. + .00001 RDLD4 11. RDK19 55. + .00001 RDG55 1. RDF35 83. + .00001 RE005 67. RE008 4.3 + .00001 RE009 4.8 RE010 1.5 + .00001 RE011 1.8 RE036 56. + .00001 RE040 17. RE044 7. + .00001 RE046 11. RE047 18. + .00001 RE049 5. RE050 72. + .00001 RE055 23. RE057 17. + .00001 RE060 -4.7 RE061 400. + .00001 1RE061 -160. 2RE061 280. + .00001 RE062 120. RE063 105. + .00001 RE064 35. RE066 9.34 + .00001 RE103 4. RH001 1972.699966 + .00001 RH008 19.4 1RH008 3.2 + .00001 RH009 -1. RH010 1. + .00001 RH011 4. RH016 -14.2 + .00001 RH018 .2 2RH025 -16. + .00001 RH031 44.3 RH032 14. + .00001 1RH034 8. 1RH035 42. + .00001 1RH036 22. RH038 2.68 + .00001 2RH038 4.03 2RH039 30. + .00001 RH041 14. RH042 30. + .00001 2RH042 48. RH046 73. + .00001 3RH048 38. RH050 30. + .00001 1RH051 89. 2RH051 12. + .00001 2RH052 177.699997 3RH052 49. + .00001 4RH052 50. 2RH053 16. + .00001 3RH053 26.3 RH054 4.88 + .00001 1RH054 80. RH055 3.66 + .00001 RH056 60. RH057 323.299995 + .00001 RH058 98. RH059 18.34 + .00001 RH060 390.399994 RH061 134.199999 + .00001 RH062 1.02 RH096 3.97 + .00001 RH099 109.799999 RH103 200. + .00001 RH105 45.75 RH106 2000. + .00001 1RH106 60. 2RH106 300. + .00001 RH107 986.399986 2RH107 260. + .00001 RH109 73. RH114 18.8 + .00001 R1003 175. 2R1006 130. + .00001 R1009 4.71 1R1009 1.2 + .00001 R1010 4.1 R1012 8.7 + .00001 R1039 54.9 1R1039 35. + .00001 R1040 23.2 R1041 11. + .00001 R1042 -10. R1043 -.6 + .00001 R1045 6. R1047 52. + .00001 R1051 27.8 R1055 62. + .00001 R1057 15. 1R1057 15. + .00001 R1058 3. R1061 36. + .00001 2R1062 49. 2R1063 8. + .00001 1R1064 24. R1065 61. + .00001 R1066 10. 1R1068 154. + .00001 R1069 44. R1070 14. + .00001 R1071 635.899986 1R1071 793. + .00001 2R1071 823.5 R1072 231.799999 + .00001 R1073 129.9 R1074 16.5 + .00001 RJ001 200. RJ003 24. + .00001 RJ007 .9 1RJ007 4. + .00001 RJ008 5. RJ031 6.6 + .00001 RJ032 3.6 RJ033 6.4 + .00001 RJ034 160. RJ036 44. + .00001 1RJ036 42. 1RJ037 17. + .00001 2RJ037 -2. RJ038 31. + .00001 RJ039 2. RJ040 22. + .00001 RJ043 66. RJ045 56. + .00001 RJ046 193. RJ047 17. + .00001 RJ048 1432.299973 RJ049 69. + .00001 RJ050 78.9 1RJ050 97.599999 + .00001 RJ051 9. RJ079 320. + .00001 RJ080 180. RJ081 1. + .00001 RJ084 24. 1RJ084 8. + .00001 RJ089 10. RJ091 193. + .00001 RJ092 4. RJ100 13.5 + .00001 1RM001 208. RM011 4.5 + .00001 RM012 4.5 RN009 18. + .00001 RR010 30. RR021 68. + .00001 RRG29 81. HSPMS 100. + .00001 HSRMS 100. HSLDF 50. + .00001 HSATK 30. NSG17 100. + .00001 HSG58 100. HSF80 100. + .00001 RT005 85. RT006 15. + .00001 3RT006 9. 4RT006 15. + .00001 RV001 10. RV002 22. + .00001 RV003 4. RXATG 16. + .00001 RXF72 26. RY001 7. + .00001 1RY001 29. RY005 518. + .00001 RZ002 4. RZ004 19. + .00001 RZ005 23. RZ012 43. + .00001 RZ016 63. RZ019 30. + .00001 RZ020 118. RABDH 506. + .00001 RAGJA 575. RGACH 966. + .00001 RHN1G 436. RK1RK 272. + .00001 RL1BY 200. RMN1G 79. + .00001 RMURB 148. RQATR 146. + .00001 RT1JA 247. +ENDATA diff --git a/modules/optimization/tests/unit_tests/colnew.dia.ref b/modules/optimization/tests/unit_tests/colnew.dia.ref new file mode 100755 index 000000000..894d76581 --- /dev/null +++ b/modules/optimization/tests/unit_tests/colnew.dia.ref @@ -0,0 +1,16 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) ????-2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +exec(SCI+'/modules/differential_equations/tests/unit_tests/bvode_tst.sci'); +[z,zf]=col1(); +if max(abs(z-zf))>1.e-5 then bugmes();quit;end +[z,zf]=col2(0); +// Fortran Coded version +if max(abs(z-zf))>1.e-2 then bugmes();quit;end +[z,zf]=col2(1); +// Scilab coded version +if max(abs(z-zf))>1.e-2 then bugmes();quit;end diff --git a/modules/optimization/tests/unit_tests/colnew.tst b/modules/optimization/tests/unit_tests/colnew.tst new file mode 100755 index 000000000..1a99d4b54 --- /dev/null +++ b/modules/optimization/tests/unit_tests/colnew.tst @@ -0,0 +1,25 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) ????-2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +exec(SCI+'/modules/differential_equations/tests/unit_tests/bvode_tst.sci'); + + +[z,zf]=col1(); +if max(abs(z-zf))>1.e-5 then pause,end + +[z,zf]=col2(0); +// Fortran Coded version +if max(abs(z-zf))>1.e-2 then pause,end + +[z,zf]=col2(1); +// Scilab coded version +if max(abs(z-zf))>1.e-2 then pause,end + + + diff --git a/modules/optimization/tests/unit_tests/derivative.dia.ref b/modules/optimization/tests/unit_tests/derivative.dia.ref new file mode 100755 index 000000000..0e53a94c9 --- /dev/null +++ b/modules/optimization/tests/unit_tests/derivative.dia.ref @@ -0,0 +1,214 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// 1. Test with a scalar function +function y = myfunction (x) + y = x*x; +endfunction +x = 1.0; +expected = 2.0; +// 1.1 With default parameters +computed = derivative(myfunction,x); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-11 ); +// 1.2 Test order 1 +computed = derivative(myfunction,x,order=1); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-8 ); +// 1.3 Test order 2 +computed = derivative(myfunction,x,order=2); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-11 ); +// 1.4 Test order 4 +computed = derivative(myfunction,x,order=4); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , %eps ); +// 1.5 Compute second derivative at the same time +Jexpected = 2.0; +Hexpected = 2.0; +[Jcomputed , Hcomputed] = derivative(myfunction,x); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-11 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 1.6 Test order 1 +[Jcomputed , Hcomputed] = derivative(myfunction,x,order=1); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +// 1.7 Test order 2 +[Jcomputed , Hcomputed] = derivative(myfunction,x,order=2); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-11 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 1.8 Test order 4 +[Jcomputed , Hcomputed] = derivative(myfunction,x,order=4); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , %eps ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-11 ); +// 2. Test with a vector function +function y = myfunction2 (x) + y = x(1)*x(1) + x(2)+ x(1)*x(2); +endfunction +x = [1.0 +2.0]; +expected = [4.0 2.0]; +// 2.1 With default parameters +computed = derivative(myfunction2,x); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-10 ); +// 2.2 Test order 1 +computed = derivative(myfunction2,x,order=1); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-8 ); +// 2.3 Test order 2 +computed = derivative(myfunction2,x,order=2); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-10 ); +// 2.4 Test order 4 +computed = derivative(myfunction2,x,order=4); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , %eps ); +// 2.5 Compute second derivative at the same time +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 1.0 0]; +[Jcomputed , Hcomputed] = derivative(myfunction2,x); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 2.6 Test order 1 +[Jcomputed , Hcomputed] = derivative(myfunction2,x,order=1); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-5 ); +// 2.7 Test order 2 +[Jcomputed , Hcomputed] = derivative(myfunction2,x,order=2); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 2.8 Test order 4 +[Jcomputed , Hcomputed] = derivative(myfunction2,x,order=4); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , %eps ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-10, 1.e-10 ); +// 3. Test H_form +// 3.1 Test H_form="default" +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 1.0 0.0]; +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , H_form="default"); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 3.2 Test H_form='hypermat' +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 +1.0 0.0]; +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , H_form="hypermat"); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 3.3 Test H_form='hypermat' +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 +1.0 0.0]; +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , H_form="hypermat"); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 4. Test verbose +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , verbose = 1); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +h = 0.0000061 +order = 2 +H_form = default +Q = +1 0 +0 1 +// 5. Test h parameter +// Test a case where the default step h is very small ~ 1.e-9, +// but, because the function is very flat in the neighbourhood of the +// point, a larger step ~ 1.e-4 reduces the error. +// This means that this test cannot pass if the right step is +// not taken into account, therefore testing the feature "h is used correctly". +myn = 1.e5; +function y = myfunction3 (x) + y = x^(2/myn); +endfunction +x = 1.0; +h = 6.055454e-006; +Jexpected = (2/myn) * x^(2/myn-1); +Hexpected = (2/myn) * (2/myn-1) * x^(2/myn-2); +[Jcomputed , Hcomputed] = derivative(myfunction3 , x , h = 1.e-4 , order = 1 ); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-4 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-3 ); +// 6. Test Q parameter +// TODO ! diff --git a/modules/optimization/tests/unit_tests/derivative.linux.dia.ref b/modules/optimization/tests/unit_tests/derivative.linux.dia.ref new file mode 100755 index 000000000..0e53a94c9 --- /dev/null +++ b/modules/optimization/tests/unit_tests/derivative.linux.dia.ref @@ -0,0 +1,214 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// 1. Test with a scalar function +function y = myfunction (x) + y = x*x; +endfunction +x = 1.0; +expected = 2.0; +// 1.1 With default parameters +computed = derivative(myfunction,x); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-11 ); +// 1.2 Test order 1 +computed = derivative(myfunction,x,order=1); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-8 ); +// 1.3 Test order 2 +computed = derivative(myfunction,x,order=2); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-11 ); +// 1.4 Test order 4 +computed = derivative(myfunction,x,order=4); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , %eps ); +// 1.5 Compute second derivative at the same time +Jexpected = 2.0; +Hexpected = 2.0; +[Jcomputed , Hcomputed] = derivative(myfunction,x); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-11 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 1.6 Test order 1 +[Jcomputed , Hcomputed] = derivative(myfunction,x,order=1); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +// 1.7 Test order 2 +[Jcomputed , Hcomputed] = derivative(myfunction,x,order=2); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-11 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 1.8 Test order 4 +[Jcomputed , Hcomputed] = derivative(myfunction,x,order=4); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , %eps ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-11 ); +// 2. Test with a vector function +function y = myfunction2 (x) + y = x(1)*x(1) + x(2)+ x(1)*x(2); +endfunction +x = [1.0 +2.0]; +expected = [4.0 2.0]; +// 2.1 With default parameters +computed = derivative(myfunction2,x); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-10 ); +// 2.2 Test order 1 +computed = derivative(myfunction2,x,order=1); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-8 ); +// 2.3 Test order 2 +computed = derivative(myfunction2,x,order=2); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , 1.e-10 ); +// 2.4 Test order 4 +computed = derivative(myfunction2,x,order=4); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( computed , expected , %eps ); +// 2.5 Compute second derivative at the same time +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 1.0 0]; +[Jcomputed , Hcomputed] = derivative(myfunction2,x); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 2.6 Test order 1 +[Jcomputed , Hcomputed] = derivative(myfunction2,x,order=1); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-5 ); +// 2.7 Test order 2 +[Jcomputed , Hcomputed] = derivative(myfunction2,x,order=2); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 2.8 Test order 4 +[Jcomputed , Hcomputed] = derivative(myfunction2,x,order=4); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , %eps ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-10, 1.e-10 ); +// 3. Test H_form +// 3.1 Test H_form="default" +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 1.0 0.0]; +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , H_form="default"); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 3.2 Test H_form='hypermat' +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 +1.0 0.0]; +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , H_form="hypermat"); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 3.3 Test H_form='hypermat' +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 +1.0 0.0]; +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , H_form="hypermat"); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 4. Test verbose +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , verbose = 1); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +h = 0.0000061 +order = 2 +H_form = default +Q = +1 0 +0 1 +// 5. Test h parameter +// Test a case where the default step h is very small ~ 1.e-9, +// but, because the function is very flat in the neighbourhood of the +// point, a larger step ~ 1.e-4 reduces the error. +// This means that this test cannot pass if the right step is +// not taken into account, therefore testing the feature "h is used correctly". +myn = 1.e5; +function y = myfunction3 (x) + y = x^(2/myn); +endfunction +x = 1.0; +h = 6.055454e-006; +Jexpected = (2/myn) * x^(2/myn-1); +Hexpected = (2/myn) * (2/myn-1) * x^(2/myn-2); +[Jcomputed , Hcomputed] = derivative(myfunction3 , x , h = 1.e-4 , order = 1 ); +WARNING: Feature derivative is obsolete. + Please use numderivative instead. + This feature will be permanently removed in Scilab 6.0 + +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-4 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-3 ); +// 6. Test Q parameter +// TODO ! diff --git a/modules/optimization/tests/unit_tests/derivative.tst b/modules/optimization/tests/unit_tests/derivative.tst new file mode 100755 index 000000000..7a10c36f4 --- /dev/null +++ b/modules/optimization/tests/unit_tests/derivative.tst @@ -0,0 +1,135 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + +// 1. Test with a scalar function +function y = myfunction (x) + y = x*x; +endfunction + +x = 1.0; +expected = 2.0; +// 1.1 With default parameters +computed = derivative(myfunction,x); +assert_checkalmostequal ( computed , expected , 1.e-11 ); +// 1.2 Test order 1 +computed = derivative(myfunction,x,order=1); +assert_checkalmostequal ( computed , expected , 1.e-8 ); +// 1.3 Test order 2 +computed = derivative(myfunction,x,order=2); +assert_checkalmostequal ( computed , expected , 1.e-11 ); +// 1.4 Test order 4 +computed = derivative(myfunction,x,order=4); +assert_checkalmostequal ( computed , expected , %eps ); + +// 1.5 Compute second derivative at the same time +Jexpected = 2.0; +Hexpected = 2.0; +[Jcomputed , Hcomputed] = derivative(myfunction,x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-11 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 1.6 Test order 1 +[Jcomputed , Hcomputed] = derivative(myfunction,x,order=1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +// 1.7 Test order 2 +[Jcomputed , Hcomputed] = derivative(myfunction,x,order=2); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-11 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 1.8 Test order 4 +[Jcomputed , Hcomputed] = derivative(myfunction,x,order=4); +assert_checkalmostequal ( Jcomputed , Jexpected , %eps ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-11 ); + +// 2. Test with a vector function +function y = myfunction2 (x) + y = x(1)*x(1) + x(2)+ x(1)*x(2); +endfunction +x = [1.0 +2.0]; +expected = [4.0 2.0]; +// 2.1 With default parameters +computed = derivative(myfunction2,x); +assert_checkalmostequal ( computed , expected , 1.e-10 ); +// 2.2 Test order 1 +computed = derivative(myfunction2,x,order=1); +assert_checkalmostequal ( computed , expected , 1.e-8 ); +// 2.3 Test order 2 +computed = derivative(myfunction2,x,order=2); +assert_checkalmostequal ( computed , expected , 1.e-10 ); +// 2.4 Test order 4 +computed = derivative(myfunction2,x,order=4); +assert_checkalmostequal ( computed , expected , %eps ); + +// 2.5 Compute second derivative at the same time +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 1.0 0]; +[Jcomputed , Hcomputed] = derivative(myfunction2,x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 2.6 Test order 1 +[Jcomputed , Hcomputed] = derivative(myfunction2,x,order=1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-5 ); +// 2.7 Test order 2 +[Jcomputed , Hcomputed] = derivative(myfunction2,x,order=2); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 2.8 Test order 4 +[Jcomputed , Hcomputed] = derivative(myfunction2,x,order=4); +assert_checkalmostequal ( Jcomputed , Jexpected , %eps ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-10, 1.e-10 ); + +// 3. Test H_form +// 3.1 Test H_form="default" +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 1.0 0.0]; +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , H_form="default"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 3.2 Test H_form='hypermat' +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 +1.0 0.0]; +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , H_form="hypermat"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 3.3 Test H_form='hypermat' +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 +1.0 0.0]; +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , H_form="hypermat"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); + +// 4. Test verbose +[Jcomputed , Hcomputed] = derivative(myfunction2 , x , verbose = 1); + +// 5. Test h parameter +// Test a case where the default step h is very small ~ 1.e-9, +// but, because the function is very flat in the neighbourhood of the +// point, a larger step ~ 1.e-4 reduces the error. +// This means that this test cannot pass if the right step is +// not taken into account, therefore testing the feature "h is used correctly". +myn = 1.e5; +function y = myfunction3 (x) + y = x^(2/myn); +endfunction +x = 1.0; +h = 6.055454e-006; +Jexpected = (2/myn) * x^(2/myn-1); +Hexpected = (2/myn) * (2/myn-1) * x^(2/myn-2); +[Jcomputed , Hcomputed] = derivative(myfunction3 , x , h = 1.e-4 , order = 1 ); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-4 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-3 ); + +// 6. Test Q parameter +// TODO ! diff --git a/modules/optimization/tests/unit_tests/fsolve.dia.ref b/modules/optimization/tests/unit_tests/fsolve.dia.ref new file mode 100755 index 000000000..93235b269 --- /dev/null +++ b/modules/optimization/tests/unit_tests/fsolve.dia.ref @@ -0,0 +1,18 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +a=[1,7;2,8];b=[10;11]; +deff('[y]=fsol1(x)','y=a*x+b'); +deff('[y]=fsolj1(x)','y=a'); +[xres]=fsolve([100;100],fsol1); +res1 = a*xres+b; +if res1 <> [0;0] then bugmes();quit;end +[xres]=fsolve([100;100],fsol1,fsolj1); +res2 = a*xres+b; +if res2 <> [0;0] then bugmes();quit;end +[xres]=fsolve([100;100],'fsol1','fsolj1',1.e-7); +res3 = a*xres+b; +if res3 <> [0;0] then bugmes();quit;end diff --git a/modules/optimization/tests/unit_tests/fsolve.tst b/modules/optimization/tests/unit_tests/fsolve.tst new file mode 100755 index 000000000..759811f63 --- /dev/null +++ b/modules/optimization/tests/unit_tests/fsolve.tst @@ -0,0 +1,21 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +a=[1,7;2,8];b=[10;11]; +deff('[y]=fsol1(x)','y=a*x+b'); +deff('[y]=fsolj1(x)','y=a'); +[xres]=fsolve([100;100],fsol1); +res1 = a*xres+b; +if res1 <> [0;0] then pause,end +[xres]=fsolve([100;100],fsol1,fsolj1); +res2 = a*xres+b; +if res2 <> [0;0] then pause,end +[xres]=fsolve([100;100],'fsol1','fsolj1',1.e-7); +res3 = a*xres+b; +if res3 <> [0;0] then pause,end diff --git a/modules/optimization/tests/unit_tests/karmarkar.dia.ref b/modules/optimization/tests/unit_tests/karmarkar.dia.ref new file mode 100755 index 000000000..53b79829f --- /dev/null +++ b/modules/optimization/tests/unit_tests/karmarkar.dia.ref @@ -0,0 +1,606 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// With slack variables: +// +// Minimize -20.x1 - 24.x2 such as: +// 3.x1 + 6.x2 + x3 = 60 +// 4.x1 + 2.x2 + x4 = 32 +// x >= 0 +c = [-20 -24 0 0]'; +Aeq = [ +3 6 1 0 +4 2 0 1 +]; +beq = [60 32]'; +xexpected = [4 8 0 0]'; +fexpected = -272; +x0 = [ +4.1128205 +7.7333333 +1.2615385 +0.0820513 +]; +[xopt,fopt]=karmarkar(Aeq,beq,c,x0); +assert_checkalmostequal ( xopt , xexpected , 1.e-3 , 1.e-3 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-4 ); +// +// Configure the relative tolerance +rtolf=1.e-6; +[xopt,fopt]=karmarkar(Aeq,beq,c,x0,rtolf); +assert_checkalmostequal ( xopt , xexpected , 1.e-4, 1.e-3 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-5 ); +// +// Configure the gamma +gam = 0.1; +[xopt,fopt]=karmarkar(Aeq,beq,c,x0,[],gam); +assert_checkalmostequal ( xopt , xexpected , 1.e-3, 1.e-2 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-4 ); +//////////////////////////////////////////////////////////// +// +// Check new API (from Scilab v5.3.x). +// +// Check exit flag +[xopt,fopt,exitflag]=karmarkar(Aeq,beq,c,x0); +assert_checkalmostequal ( xopt , xexpected , 1.e-3, 1.e-3 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +// +// Check number of iterations +[xopt,fopt,exitflag,iter]=karmarkar(Aeq,beq,c,x0); +assert_checkalmostequal ( xopt , xexpected , 1.e-3, 1.e-3 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter>10 , %t ); +// +// Check dual solution +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,x0); +lambda.ineqlin = []; +lambda.eqlin = [28/9;8/3]; +lambda.upper = [0;0;0;0]; +lambda.lower = [0;0;28/9;8/3]; +assert_checkalmostequal ( xopt , xexpected , 1.e-3, 1.e-3 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter>10 , %t ); +assert_checkequal ( yopt.ineqlin , lambda.ineqlin ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , 1.e-8 ); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-8, 1.e-7 ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Check number of iterations, with default options +[xopt,fopt,exitflag,iter]=karmarkar(Aeq,beq,c,x0,[],[],10); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( iter , 10 ); +// +// Check output function +function stop = myoutputfunction ( xopt , optimValues , state ) + localmsg = gettext("Iteration #%3.0f, state=%s, procedure=%s, fopt=%10.3e, x=[%s], dualgap=%10.3e\n") + xstr = strcat(msprintf("%10.3e\n",xopt)'," ") + teststring = sprintf(localmsg,optimValues.iteration,state,optimValues.procedure,optimValues.fval,xstr,optimValues.dualgap) + stop = %f +endfunction +xopt=karmarkar(Aeq,beq,c,x0,[],[],[],myoutputfunction); +assert_checkalmostequal ( xopt , xexpected , 1.e-3 , 1.e-3 ); +// +// Check output function, without initial guess +xopt=karmarkar(Aeq,beq,c,[],[],[],[],myoutputfunction); +assert_checkalmostequal ( xopt , xexpected , 1.e-3 , 1.e-3 ); +// +// Check that the output function can stop the algorithm +function stop = myoutputfunctionStop ( xopt , optimValues , state ) + stop = (iter >= 7) +endfunction +[xopt,fopt,exitflag,iter]=karmarkar(Aeq,beq,c,x0,[],[],[],myoutputfunctionStop); +assert_checkalmostequal ( xopt , xexpected , 1.e-3 , 1.e-1 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-3 ); +assert_checkequal ( exitflag , -4 ); +assert_checkequal ( iter , 7 ); +// +// Check output function with additional arguments +function stop = myoutputfunction2 ( xopt , optimValues , state , myAeq , mybeq , myc ) + localmsg = gettext("Iteration #%3.0f, fopt=%10.3e, state=%s, ||Ax-beq||=%.3e\n") + teststring = sprintf(localmsg,optimValues.iteration,optimValues.fval,state,norm(myAeq*xopt-mybeq)) + stop = %f +endfunction +xopt=karmarkar(Aeq,beq,c,x0,[],[],[],list(myoutputfunction2,Aeq,beq,c)); +assert_checkalmostequal ( xopt , xexpected , 1.e-3 , 1.e-3 ); +// +// References +// "Practical Optimization", Antoniou, Lu, 2007 +// Chapter 11, "Linear Programming Part I: The simplex method", +// Example 11.9, p. 361 +// Chapter 12, "Linear Programming Part II: Interior point methods", +// Example 12.2, p.382 +// +// Minimize 2.x1 + 9.x2 + 3.x3 +// -2.x1 + 2.x2 + x3 - x4 = 1 +// x1 + 4.x2 - x3 - x5 = 1 +// x >= 0 +Aeq = [ +-2 2 1 -1 0 +1 4 -1 0 -1 +]; +beq = [1;1]; +c = [2;9;3;0;0]; +x0 = [0.2;0.7;1;1;1]; +gam = 0.9999; +rtolf = 1.e-4; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,x0,rtolf,gam,[],myoutputfunction); +xstar = [0 1/3 1/3 0 0]'; +fstar = 4; +lambda.ineqlin = []; +lambda.eqlin = [-3.5;-0.5]; +lambda.upper = [0;0;0;0;0]; +lambda.lower = [8.5;0;0;3.5;0.5]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter , 4 ); +assert_checkequal ( yopt.ineqlin , lambda.ineqlin ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , 1.e-6 , 1.e-6 ); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-6 , 1.e-6 ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Minimize -x1 -x2 +// x1 - x2 = 0 +// x1 + x2 + x3 = 2 +// x >= 0 +// +// Let karmarkar find a feasible x0. +Aeq = [ +1 -1 0 +1 1 1 +]; +beq = [0;2]; +c = [-1;-1;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c); +xstar = [1;1;0]; +fstar = -2; +lambda.ineqlin = []; +lambda.eqlin = [0;1]; +lambda.upper = [0;0;0]; +lambda.lower = [0;0;1]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkequal ( yopt.ineqlin , lambda.ineqlin ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , 1.e-6 , 1.e-15); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-6 , 1.e-6 ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Give a linear inequality A*x <= b. +// +// Minimize -x1 -x2 +// x1 - x2 = 0 +// x1 + x2 <= 2 +// +// Give x0. +Aeq = [ +1 -1 +]; +beq = 0; +c = [-1;-1]; +A = [1 1]; +b = 2; +x0 = [0.1;0.1]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,x0,[],[],[],[],A,b); +xstar=[1 1]'; +fstar = c'*xstar; +lambda.ineqlin = 1; +lambda.eqlin = 0; +lambda.upper = [0;0]; +lambda.lower = [0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-6 ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , [] , 1.e-6 ); +assert_checkequal ( yopt.lower , lambda.lower ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Give a linear inequality A*x <= b +// +// Minimize -x1 -x2 +// x1 - x2 = 0 +// x1 + x2 <= 2 +// +// Do not give x0. +Aeq = [ +1 -1 +]; +beq = 0; +c = [-1;-1]; +A = [1 1]; +b = 2; +function stop = myoutputfunction3 ( xopt , optimValues , state ) + assert_checkequal ( size(xopt) , [2 1] ); + assert_checkequal ( or(state==["init","iter","done"]) , %t ); + assert_checkequal ( or(optimValues.procedure==["x0","x*"]) , %t ); + stop = %f +endfunction +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],myoutputfunction3,A,b); +xstar=[1 1]'; +fstar = c'*xstar; +lambda.ineqlin = 1; +lambda.eqlin = 0; +lambda.upper = [0;0]; +lambda.lower = [0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-6 ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , [] , 1.e-6 ); +assert_checkequal ( yopt.lower , lambda.lower ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Minimize -20.x1 - 24.x2 such as: +// 3.x1 + 6.x2 >= 60 +// 4.x1 + 2.x2 >= 32 +c = [-20 -24]'; +Aeq=[]; +beq=[]; +A = [ +3 6 +4 2 +]; +b = [60 32]'; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b); +xstar = [4 8]'; +fstar = c'*xstar; +lambda.ineqlin = [28/9;8/3]; +lambda.eqlin = []; +lambda.upper = [0;0]; +lambda.lower = [0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-6 ); +assert_checkequal ( yopt.eqlin , lambda.eqlin ); +assert_checkequal ( yopt.lower , lambda.lower ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// References +// "Practical Optimization", Antoniou, Lu, 2007 +// Chapter 11, "Linear Programming Part I: The simplex method", +// Example 11.9, p. 361 +// Chapter 12, "Linear Programming Part II: Interior point methods", +// Example 12.2, p.382 +// +// Minimize 2.x1 + 9.x2 + 3.x3 +// +2.x1 - 2.x2 - x3 <= -1 +// -x1 - 4.x2 + x3 <= -1 +// x >= 0 +// +// Give x0 +Aeq=[]; +beq=[]; +A = [ + 2 -2 -1 +-1 -4 1 +-1 0 0 + 0 -1 0 + 0 0 -1 +]; +b = [-1;-1;0;0;0]; +c = [2;9;3]; +x0 = [0.2;0.7;1]; +[xopt,fopt,exitflag,iter]=karmarkar(Aeq,beq,c,x0,[],[],[],[],A,b); +xstar = [0 1/3 1/3]'; +fstar = c'*xstar; +assert_checkalmostequal ( xopt , xstar , 1.e-4 , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +// +// Let x0 be found by the algorithm. +[xopt,fopt,exitflag,iter]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b); +xstar = [0 1/3 1/3]'; +fstar = c'*xstar; +assert_checkalmostequal ( xopt , xstar , 1.e-4 , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +///////////////////////////////////////////////////// +// References +// "Lipsol toolbox", Yin Zhang, Scilab port by Rubio Scola, example0.sce. +// +// Minimize 2.x1 + 5.x2 - 2.5.x3 +// x1 S4 x3 <= 5 +// E2 x1 - x2 - x3 <= 0 +// x1 <= 2 +// x2 <= %inf +// x3 <= 3 +// - x1 <= 2 +// - x2 <= -1 +// - x3 <= 0 +// +// where +// S4 = sin(pi/4)/4 +// E2 = exp(2) +// +S4 = sin(%pi/4)/4; +E2 = exp(2); +c = [ 2; 5; -2.5]; +A = [ + 1 0 S4 + E2 -1 -1 + 1 0 0 + 0 0 1 + -1 0 0 + 0 -1 0 + 0 0 -1 +]; +b = [ 5; 0;2;3;2;-1;0]; +Aeq = []; +beq = []; +xstar = [-2;1;3]; +fstar = c'*xstar; +lambda.ineqlin = [0;0;0;2.5;2;5;0]; +lambda.eqlin = []; +lambda.upper = [0;0;0]; +lambda.lower = [0;0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b); +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-9 , 1.e-10 ); +assert_checkequal ( yopt.eqlin , lambda.eqlin ); +assert_checkequal ( yopt.lower , lambda.lower ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Minimize 2.x1 + 9.x2 + 3.x3 +// 2 x1 - 2 x2 - x3 <= -1 +// -1 x1 - 4 x2 + x3 <= -1 +// - x1 <= -1 +// - x2 <= 0 +// - x3 <= 0 +// +Aeq=[]; +beq=[]; +A = [ + 2 -2 -1 +-1 -4 1 +-1 0 0 + 0 -1 0 + 0 0 -1 +]; +b = [-1;-1;-1;0;0]; +c = [2;9;3]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b); +xstar = [1;0.5;2]; +fstar = c'*xstar; +lambda.ineqlin = [3.5;0.5;8.5;0;0]; +lambda.eqlin = []; +lambda.upper = [0;0;0]; +lambda.lower = [0;0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-9 , 1.e-8 ); +assert_checkequal ( yopt.eqlin , lambda.eqlin ); +assert_checkequal ( yopt.lower , lambda.lower ); +assert_checkequal ( yopt.upper , lambda.upper ); +////////////////////////////////////////////////////////////////////////// +// +// Set lower bound and do not give x0. +Aeq=[]; +beq=[]; +A = [ + 2 -2 -1 +-1 -4 1 +]; +b = [-1;-1]; +c = [2;9;3]; +lb = [1;0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b,lb); +xstar = [1;0.5;2]; +fstar = c'*xstar; +lambda.ineqlin = [3.5;0.5]; +lambda.eqlin = []; +lambda.upper = [0;0;0]; +lambda.lower = [8.5;0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-8 ); +assert_checkequal ( yopt.eqlin , lambda.eqlin ); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-9 , 1.e-8 ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Set lower bound and give x0. +Aeq=[]; +beq=[]; +A = [ + 2 -2 -1 +-1 -4 1 +]; +b = [-1;-1]; +c = [2;9;3]; +x0 = [1.337848;0.885225;2.535279]; +lb = [1;0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,x0,[],[],[],[],A,b,lb); +xstar = [1;0.5;2]; +fstar = c'*xstar; +lambda.ineqlin = [3.5;0.5]; +lambda.eqlin = []; +lambda.upper = [0;0;0]; +lambda.lower = [8.5;0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-9 , 1.e-8 ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , %eps , 1.e-8 ); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-9 , 1.e-8 ); +assert_checkalmostequal ( yopt.upper , lambda.upper , 1.e-9 ); +// References +// LIPSOL is a set of Linear-programming Interior-Point SOLvers written +// by Yin Zhang. +// The original Matlab-based code has been adapted to Scilab +// by H. Rubio Scola. +// +// Minimize 2 x1 + 5 x2 - 2.5 x3 +// x1 + S4 x3 <= 5 +// E2 x1 - x2 - x3 <= 0 +// -2 <= x1 <= 2 +// 1 <= x2 +// 0 <= x3 <= 3 +// where: +// S4 = sin(pi/4)/4 +// E2 = exp(2) +// +// Do not give x0. +c = [ 2; 5; -2.5]; +S4 = sin(%pi/4)/4; +E2 = exp(2); +A = [ + 1 0 S4 + E2 -1 -1 +]; +b = [ 5; 0]; +lb = [ -2; 1 ; 0 ]; +ub = [ 2; %inf; 3 ]; +Aeq = []; +beq = []; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b,lb,ub); +xstar = [-2;1;3]; +fstar = c'*xstar; +lambda.ineqlin = [0;0]; +lambda.eqlin = []; +lambda.upper = [0;0;2.5]; +lambda.lower = [2;5;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , [] , 1.e-9 ); +assert_checkequal ( yopt.eqlin , lambda.eqlin ); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-9 , 1.e-10 ); +assert_checkalmostequal ( yopt.upper , lambda.upper , 1.e-9 , 1.e-10 ); +// +// An unbounded problem. +c = [-20 -24]'; +A = [ +-3 -6 +-4 -2 +]; +b = [-60 -32]'; +[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b); +assert_checkequal ( exitflag , -2 ); +// +// "Linear Programming in Matlab" +// Ferris, Mangasarian, Wright +// 2008 +// Chapter 3, "The Simplex Method", Exercise 3-4-2 1. +// +// An infeasible problem. +// Minimize -3 x1 + x2 +// - x1 - x2 >= -2 +// 2 x1 + 2 x2 >= 10 +// x >= 0 +c = [-3;1]; +A=[ + -1 -1 + 2 2 +]; +A=-A; +b=[-2;10]; +b=-b; +lb=[0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb); +assert_checkequal ( xopt , [] ); +assert_checkequal ( fopt , [] ); +assert_checkequal ( exitflag , -1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkequal ( yopt.ineqlin , [] ); +assert_checkequal ( yopt.eqlin , [] ); +assert_checkequal ( yopt.lower , [] ); +assert_checkequal ( yopt.upper , [] ); +// +// "Linear Programming in Matlab" +// Ferris, Mangasarian, Wright +// 2008 +// Chapter 3, "The Simplex Method", Exercise 3-4-2 2. +// +// An unbounded problem. +// Minimize -x1 + x2 +// 2 x1 - x2 >= 1 +// x1 + 2 x2 >= 2 +// x >= 0 +c = [-1;1]; +A=[ + 2 -1 + 1 2 +]; +A=-A; +b=[1;2]; +b=-b; +lb=[0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb); +assert_checkequal ( exitflag , -2 ); +// +// "Linear and Nonlinear Optimization" +// Griva, Nash, Sofer +// 2009 +// Chapter 5, "The Simplex Method", Example 5.3 +// +// An unbounded problem. +// Minimize -x1 - 2 x2 +// -1 x1 + x2 <= 2 +// -2 x1 + x2 <= 1 +// x >= 0 +c = [-1;-2]; +A=[ + -1 1 + -2 1 +]; +b=[2;1]; +lb=[0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb); +assert_checkequal ( exitflag , -2 ); +// +// "Linear and Nonlinear Optimization" +// Griva, Nash, Sofer +// 2009 +// Chapter 5, "The Simplex Method", Example 5.6 +// +// An unfeasible problem. +// Minimize -x1 +// - x1 - x2 <= -6 +// 2 x1 + 3 x2 <= 4 +// x >= 0 +c = [-1;0]; +A=[ + -1 -1 + 2 3 +]; +b=[-6;4]; +lb=[0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb); +assert_checkequal ( exitflag , -1 ); +// +// Example from the help page +// Check that the output points remain feasible +function stop = myoutputfunction4 ( xopt , optimValues , state , A , b ) + assert_checkequal ( and(A*xopt<=b) , %t ); + stop = %f +endfunction +n=11; +A = [2*linspace(0,1,n)',ones(n,1)]; +b = 1 + linspace(0,1,n)'.^2; +c=[-1;-1]; +xopt=karmarkar([],[],c,[],[],[],[],list(myoutputfunction4,A,b),A,b); +xstar = [0.5005127;0.7494803]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); diff --git a/modules/optimization/tests/unit_tests/karmarkar.tst b/modules/optimization/tests/unit_tests/karmarkar.tst new file mode 100755 index 000000000..8143fe3f6 --- /dev/null +++ b/modules/optimization/tests/unit_tests/karmarkar.tst @@ -0,0 +1,620 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + + + + +// With slack variables: +// +// Minimize -20.x1 - 24.x2 such as: +// 3.x1 + 6.x2 + x3 = 60 +// 4.x1 + 2.x2 + x4 = 32 +// x >= 0 +c = [-20 -24 0 0]'; +Aeq = [ +3 6 1 0 +4 2 0 1 +]; +beq = [60 32]'; +xexpected = [4 8 0 0]'; +fexpected = -272; +x0 = [ +4.1128205 +7.7333333 +1.2615385 +0.0820513 +]; +[xopt,fopt]=karmarkar(Aeq,beq,c,x0); +assert_checkalmostequal ( xopt , xexpected , 1.e-3 , 1.e-3 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-4 ); +// +// Configure the relative tolerance +rtolf=1.e-6; +[xopt,fopt]=karmarkar(Aeq,beq,c,x0,rtolf); +assert_checkalmostequal ( xopt , xexpected , 1.e-4, 1.e-3 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-5 ); +// +// Configure the gamma +gam = 0.1; +[xopt,fopt]=karmarkar(Aeq,beq,c,x0,[],gam); +assert_checkalmostequal ( xopt , xexpected , 1.e-3, 1.e-2 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-4 ); +//////////////////////////////////////////////////////////// +// +// Check new API (from Scilab v5.3.x). +// +// Check exit flag +[xopt,fopt,exitflag]=karmarkar(Aeq,beq,c,x0); +assert_checkalmostequal ( xopt , xexpected , 1.e-3, 1.e-3 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +// +// Check number of iterations +[xopt,fopt,exitflag,iter]=karmarkar(Aeq,beq,c,x0); +assert_checkalmostequal ( xopt , xexpected , 1.e-3, 1.e-3 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter>10 , %t ); +// +// Check dual solution +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,x0); +lambda.ineqlin = []; +lambda.eqlin = [28/9;8/3]; +lambda.upper = [0;0;0;0]; +lambda.lower = [0;0;28/9;8/3]; +assert_checkalmostequal ( xopt , xexpected , 1.e-3, 1.e-3 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter>10 , %t ); +assert_checkequal ( yopt.ineqlin , lambda.ineqlin ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , 1.e-8 ); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-8, 1.e-7 ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Check number of iterations, with default options +[xopt,fopt,exitflag,iter]=karmarkar(Aeq,beq,c,x0,[],[],10); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( iter , 10 ); +// +// Check output function +function stop = myoutputfunction ( xopt , optimValues , state ) + localmsg = gettext("Iteration #%3.0f, state=%s, procedure=%s, fopt=%10.3e, x=[%s], dualgap=%10.3e\n") + xstr = strcat(msprintf("%10.3e\n",xopt)'," ") + teststring = sprintf(localmsg,optimValues.iteration,state,optimValues.procedure,optimValues.fval,xstr,optimValues.dualgap) + stop = %f +endfunction +xopt=karmarkar(Aeq,beq,c,x0,[],[],[],myoutputfunction); +assert_checkalmostequal ( xopt , xexpected , 1.e-3 , 1.e-3 ); +// +// Check output function, without initial guess +xopt=karmarkar(Aeq,beq,c,[],[],[],[],myoutputfunction); +assert_checkalmostequal ( xopt , xexpected , 1.e-3 , 1.e-3 ); +// +// Check that the output function can stop the algorithm +function stop = myoutputfunctionStop ( xopt , optimValues , state ) + stop = (iter >= 7) +endfunction +[xopt,fopt,exitflag,iter]=karmarkar(Aeq,beq,c,x0,[],[],[],myoutputfunctionStop); +assert_checkalmostequal ( xopt , xexpected , 1.e-3 , 1.e-1 ); +assert_checkalmostequal ( fopt , fexpected , 1.e-3 ); +assert_checkequal ( exitflag , -4 ); +assert_checkequal ( iter , 7 ); +// +// Check output function with additional arguments +function stop = myoutputfunction2 ( xopt , optimValues , state , myAeq , mybeq , myc ) + localmsg = gettext("Iteration #%3.0f, fopt=%10.3e, state=%s, ||Ax-beq||=%.3e\n") + teststring = sprintf(localmsg,optimValues.iteration,optimValues.fval,state,norm(myAeq*xopt-mybeq)) + stop = %f +endfunction +xopt=karmarkar(Aeq,beq,c,x0,[],[],[],list(myoutputfunction2,Aeq,beq,c)); +assert_checkalmostequal ( xopt , xexpected , 1.e-3 , 1.e-3 ); +// +// References +// "Practical Optimization", Antoniou, Lu, 2007 +// Chapter 11, "Linear Programming Part I: The simplex method", +// Example 11.9, p. 361 +// Chapter 12, "Linear Programming Part II: Interior point methods", +// Example 12.2, p.382 +// +// Minimize 2.x1 + 9.x2 + 3.x3 +// -2.x1 + 2.x2 + x3 - x4 = 1 +// x1 + 4.x2 - x3 - x5 = 1 +// x >= 0 +Aeq = [ +-2 2 1 -1 0 +1 4 -1 0 -1 +]; +beq = [1;1]; +c = [2;9;3;0;0]; +x0 = [0.2;0.7;1;1;1]; +gam = 0.9999; +rtolf = 1.e-4; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,x0,rtolf,gam,[],myoutputfunction); +xstar = [0 1/3 1/3 0 0]'; +fstar = 4; +lambda.ineqlin = []; +lambda.eqlin = [-3.5;-0.5]; +lambda.upper = [0;0;0;0;0]; +lambda.lower = [8.5;0;0;3.5;0.5]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter , 4 ); +assert_checkequal ( yopt.ineqlin , lambda.ineqlin ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , 1.e-6 , 1.e-6 ); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-6 , 1.e-6 ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Minimize -x1 -x2 +// x1 - x2 = 0 +// x1 + x2 + x3 = 2 +// x >= 0 +// +// Let karmarkar find a feasible x0. +Aeq = [ +1 -1 0 +1 1 1 +]; +beq = [0;2]; +c = [-1;-1;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c); +xstar = [1;1;0]; +fstar = -2; +lambda.ineqlin = []; +lambda.eqlin = [0;1]; +lambda.upper = [0;0;0]; +lambda.lower = [0;0;1]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkequal ( yopt.ineqlin , lambda.ineqlin ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , 1.e-6 , 1.e-15); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-6 , 1.e-6 ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Give a linear inequality A*x <= b. +// +// Minimize -x1 -x2 +// x1 - x2 = 0 +// x1 + x2 <= 2 +// +// Give x0. +Aeq = [ +1 -1 +]; +beq = 0; +c = [-1;-1]; +A = [1 1]; +b = 2; +x0 = [0.1;0.1]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,x0,[],[],[],[],A,b); +xstar=[1 1]'; +fstar = c'*xstar; +lambda.ineqlin = 1; +lambda.eqlin = 0; +lambda.upper = [0;0]; +lambda.lower = [0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-6 ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , [] , 1.e-6 ); +assert_checkequal ( yopt.lower , lambda.lower ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Give a linear inequality A*x <= b +// +// Minimize -x1 -x2 +// x1 - x2 = 0 +// x1 + x2 <= 2 +// +// Do not give x0. +Aeq = [ +1 -1 +]; +beq = 0; +c = [-1;-1]; +A = [1 1]; +b = 2; +function stop = myoutputfunction3 ( xopt , optimValues , state ) + assert_checkequal ( size(xopt) , [2 1] ); + assert_checkequal ( or(state==["init","iter","done"]) , %t ); + assert_checkequal ( or(optimValues.procedure==["x0","x*"]) , %t ); + stop = %f +endfunction +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],myoutputfunction3,A,b); +xstar=[1 1]'; +fstar = c'*xstar; +lambda.ineqlin = 1; +lambda.eqlin = 0; +lambda.upper = [0;0]; +lambda.lower = [0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-6 ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , [] , 1.e-6 ); +assert_checkequal ( yopt.lower , lambda.lower ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Minimize -20.x1 - 24.x2 such as: +// 3.x1 + 6.x2 >= 60 +// 4.x1 + 2.x2 >= 32 +c = [-20 -24]'; +Aeq=[]; +beq=[]; +A = [ +3 6 +4 2 +]; +b = [60 32]'; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b); +xstar = [4 8]'; +fstar = c'*xstar; +lambda.ineqlin = [28/9;8/3]; +lambda.eqlin = []; +lambda.upper = [0;0]; +lambda.lower = [0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-6 ); +assert_checkequal ( yopt.eqlin , lambda.eqlin ); +assert_checkequal ( yopt.lower , lambda.lower ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// References +// "Practical Optimization", Antoniou, Lu, 2007 +// Chapter 11, "Linear Programming Part I: The simplex method", +// Example 11.9, p. 361 +// Chapter 12, "Linear Programming Part II: Interior point methods", +// Example 12.2, p.382 +// +// Minimize 2.x1 + 9.x2 + 3.x3 +// +2.x1 - 2.x2 - x3 <= -1 +// -x1 - 4.x2 + x3 <= -1 +// x >= 0 +// +// Give x0 +Aeq=[]; +beq=[]; +A = [ +2 -2 -1 +-1 -4 1 +-1 0 0 +0 -1 0 +0 0 -1 +]; +b = [-1;-1;0;0;0]; +c = [2;9;3]; +x0 = [0.2;0.7;1]; +[xopt,fopt,exitflag,iter]=karmarkar(Aeq,beq,c,x0,[],[],[],[],A,b); +xstar = [0 1/3 1/3]'; +fstar = c'*xstar; +assert_checkalmostequal ( xopt , xstar , 1.e-4 , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +// +// Let x0 be found by the algorithm. +[xopt,fopt,exitflag,iter]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b); +xstar = [0 1/3 1/3]'; +fstar = c'*xstar; +assert_checkalmostequal ( xopt , xstar , 1.e-4 , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +///////////////////////////////////////////////////// +// References +// "Lipsol toolbox", Yin Zhang, Scilab port by Rubio Scola, example0.sce. +// +// Minimize 2.x1 + 5.x2 - 2.5.x3 +// x1 S4 x3 <= 5 +// E2 x1 - x2 - x3 <= 0 +// x1 <= 2 +// x2 <= %inf +// x3 <= 3 +// - x1 <= 2 +// - x2 <= -1 +// - x3 <= 0 +// +// where +// S4 = sin(pi/4)/4 +// E2 = exp(2) +// + +S4 = sin(%pi/4)/4; +E2 = exp(2); +c = [ 2; 5; -2.5]; +A = [ +1 0 S4 +E2 -1 -1 +1 0 0 +0 0 1 +-1 0 0 +0 -1 0 +0 0 -1 +]; +b = [ 5; 0;2;3;2;-1;0]; +Aeq = []; +beq = []; +xstar = [-2;1;3]; +fstar = c'*xstar; +lambda.ineqlin = [0;0;0;2.5;2;5;0]; +lambda.eqlin = []; +lambda.upper = [0;0;0]; +lambda.lower = [0;0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b); +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-9 , 1.e-10 ); +assert_checkequal ( yopt.eqlin , lambda.eqlin ); +assert_checkequal ( yopt.lower , lambda.lower ); +assert_checkequal ( yopt.upper , lambda.upper ); + +// +// Minimize 2.x1 + 9.x2 + 3.x3 +// 2 x1 - 2 x2 - x3 <= -1 +// -1 x1 - 4 x2 + x3 <= -1 +// - x1 <= -1 +// - x2 <= 0 +// - x3 <= 0 +// +Aeq=[]; +beq=[]; +A = [ +2 -2 -1 +-1 -4 1 +-1 0 0 +0 -1 0 +0 0 -1 +]; +b = [-1;-1;-1;0;0]; +c = [2;9;3]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b); +xstar = [1;0.5;2]; +fstar = c'*xstar; +lambda.ineqlin = [3.5;0.5;8.5;0;0]; +lambda.eqlin = []; +lambda.upper = [0;0;0]; +lambda.lower = [0;0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-9 , 1.e-8 ); +assert_checkequal ( yopt.eqlin , lambda.eqlin ); +assert_checkequal ( yopt.lower , lambda.lower ); +assert_checkequal ( yopt.upper , lambda.upper ); + +////////////////////////////////////////////////////////////////////////// +// +// Set lower bound and do not give x0. +Aeq=[]; +beq=[]; +A = [ +2 -2 -1 +-1 -4 1 +]; +b = [-1;-1]; +c = [2;9;3]; +lb = [1;0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b,lb); +xstar = [1;0.5;2]; +fstar = c'*xstar; +lambda.ineqlin = [3.5;0.5]; +lambda.eqlin = []; +lambda.upper = [0;0;0]; +lambda.lower = [8.5;0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-8 ); +assert_checkequal ( yopt.eqlin , lambda.eqlin ); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-9 , 1.e-8 ); +assert_checkequal ( yopt.upper , lambda.upper ); +// +// Set lower bound and give x0. +Aeq=[]; +beq=[]; +A = [ +2 -2 -1 +-1 -4 1 +]; +b = [-1;-1]; +c = [2;9;3]; +x0 = [1.337848;0.885225;2.535279]; +lb = [1;0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,x0,[],[],[],[],A,b,lb); +xstar = [1;0.5;2]; +fstar = c'*xstar; +lambda.ineqlin = [3.5;0.5]; +lambda.eqlin = []; +lambda.upper = [0;0;0]; +lambda.lower = [8.5;0;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , 1.e-9 , 1.e-8 ); +assert_checkalmostequal ( yopt.eqlin , lambda.eqlin , %eps , 1.e-8 ); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-9 , 1.e-8 ); +assert_checkalmostequal ( yopt.upper , lambda.upper , 1.e-9 ); +// References +// LIPSOL is a set of Linear-programming Interior-Point SOLvers written +// by Yin Zhang. +// The original Matlab-based code has been adapted to Scilab +// by H. Rubio Scola. +// +// Minimize 2 x1 + 5 x2 - 2.5 x3 +// x1 + S4 x3 <= 5 +// E2 x1 - x2 - x3 <= 0 +// -2 <= x1 <= 2 +// 1 <= x2 +// 0 <= x3 <= 3 +// where: +// S4 = sin(pi/4)/4 +// E2 = exp(2) +// +// Do not give x0. +c = [ 2; 5; -2.5]; +S4 = sin(%pi/4)/4; +E2 = exp(2); +A = [ +1 0 S4 +E2 -1 -1 +]; +b = [ 5; 0]; +lb = [ -2; 1 ; 0 ]; +ub = [ 2; %inf; 3 ]; +Aeq = []; +beq = []; +[xopt,fopt,exitflag,iter,yopt]=karmarkar(Aeq,beq,c,[],[],[],[],[],A,b,lb,ub); +xstar = [-2;1;3]; +fstar = c'*xstar; +lambda.ineqlin = [0;0]; +lambda.eqlin = []; +lambda.upper = [0;0;2.5]; +lambda.lower = [2;5;0]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); +assert_checkalmostequal ( fopt , fstar , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkalmostequal ( yopt.ineqlin , lambda.ineqlin , [] , 1.e-9 ); +assert_checkequal ( yopt.eqlin , lambda.eqlin ); +assert_checkalmostequal ( yopt.lower , lambda.lower , 1.e-9 , 1.e-10 ); +assert_checkalmostequal ( yopt.upper , lambda.upper , 1.e-9 , 1.e-10 ); +// +// An unbounded problem. +c = [-20 -24]'; +A = [ +-3 -6 +-4 -2 +]; +b = [-60 -32]'; +[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b); +assert_checkequal ( exitflag , -2 ); +// +// "Linear Programming in Matlab" +// Ferris, Mangasarian, Wright +// 2008 +// Chapter 3, "The Simplex Method", Exercise 3-4-2 1. +// +// An infeasible problem. +// Minimize -3 x1 + x2 +// - x1 - x2 >= -2 +// 2 x1 + 2 x2 >= 10 +// x >= 0 +c = [-3;1]; +A=[ +-1 -1 +2 2 +]; +A=-A; +b=[-2;10]; +b=-b; +lb=[0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb); +assert_checkequal ( xopt , [] ); +assert_checkequal ( fopt , [] ); +assert_checkequal ( exitflag , -1 ); +assert_checkequal ( iter > 0 , %t ); +assert_checkequal ( yopt.ineqlin , [] ); +assert_checkequal ( yopt.eqlin , [] ); +assert_checkequal ( yopt.lower , [] ); +assert_checkequal ( yopt.upper , [] ); + + +// +// "Linear Programming in Matlab" +// Ferris, Mangasarian, Wright +// 2008 +// Chapter 3, "The Simplex Method", Exercise 3-4-2 2. +// +// An unbounded problem. +// Minimize -x1 + x2 +// 2 x1 - x2 >= 1 +// x1 + 2 x2 >= 2 +// x >= 0 +c = [-1;1]; +A=[ +2 -1 +1 2 +]; +A=-A; +b=[1;2]; +b=-b; +lb=[0;0]; + +[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb); +assert_checkequal ( exitflag , -2 ); + +// +// "Linear and Nonlinear Optimization" +// Griva, Nash, Sofer +// 2009 +// Chapter 5, "The Simplex Method", Example 5.3 +// +// An unbounded problem. +// Minimize -x1 - 2 x2 +// -1 x1 + x2 <= 2 +// -2 x1 + x2 <= 1 +// x >= 0 +c = [-1;-2]; +A=[ +-1 1 +-2 1 +]; +b=[2;1]; +lb=[0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb); +assert_checkequal ( exitflag , -2 ); +// +// "Linear and Nonlinear Optimization" +// Griva, Nash, Sofer +// 2009 +// Chapter 5, "The Simplex Method", Example 5.6 +// +// An unfeasible problem. +// Minimize -x1 +// - x1 - x2 <= -6 +// 2 x1 + 3 x2 <= 4 +// x >= 0 +c = [-1;0]; +A=[ +-1 -1 +2 3 +]; +b=[-6;4]; +lb=[0;0]; +[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb); +assert_checkequal ( exitflag , -1 ); +// +// Example from the help page +// Check that the output points remain feasible +function stop = myoutputfunction4 ( xopt , optimValues , state , A , b ) + assert_checkequal ( and(A*xopt<=b) , %t ); + stop = %f +endfunction +n=11; +A = [2*linspace(0,1,n)',ones(n,1)]; +b = 1 + linspace(0,1,n)'.^2; +c=[-1;-1]; +xopt=karmarkar([],[],c,[],[],[],[],list(myoutputfunction4,A,b),A,b); +xstar = [0.5005127;0.7494803]; +assert_checkalmostequal ( xopt , xstar , 1.e-4 ); + + diff --git a/modules/optimization/tests/unit_tests/lmisolver.dia.ref b/modules/optimization/tests/unit_tests/lmisolver.dia.ref new file mode 100755 index 000000000..7585f1741 --- /dev/null +++ b/modules/optimization/tests/unit_tests/lmisolver.dia.ref @@ -0,0 +1,60 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +//<-- ENGLISH IMPOSED --> +rand("seed", 0); +n = 2; +A1 = rand(n, n); +A2 = rand(n, n); +Xs = diag(1:n); +Q1 = -(A1'*Xs+Xs*A1+0.1*eye()); +Q2 = -(A2'*Xs+Xs*A2+0.2*eye()); +function [LME, LMI, OBJ] = evalf(Xlist) + X = Xlist(1) + LME = X-diag(diag(X)) + LMI = list(-(A1'*X+X*A1+Q1), -(A2'*X+X*A2+Q2)) + OBJ = -sum(diag(X)) +endfunction +X = lmisolver(list(zeros(A1)), evalf); +lmisolver: Construction of canonical representation. +lmisolver: Basis Construction. +lmisolver: FEASIBILITY PHASE. + + primal obj. dual obj. dual. gap + 6.66e-01 -5.03e+02 5.03e+02 + 8.37e+01 -4.99e+02 5.83e+02 + 6.88e+01 -2.80e+00 7.16e+01 + 4.33e+00 -2.67e+00 7.00e+00 + 5.65e-01 -1.78e-01 7.43e-01 + -9.58e-02 -1.57e-01 6.13e-02 +lmisolver: Target value reached. +lmisolver: feasible solution found. +lmisolver: OPTIMIZATION PHASE. + + primal obj. dual obj. dual. gap + -2.76e+00 -3.62e+00 8.56e-01 + -3.13e+00 -3.27e+00 1.35e-01 + -3.14e+00 -3.16e+00 1.62e-02 + -3.14e+00 -3.14e+00 1.62e-03 + -3.14e+00 -3.14e+00 1.27e-04 + -3.14e+00 -3.14e+00 1.40e-05 + -3.14e+00 -3.14e+00 4.40e-07 + -3.14e+00 -3.14e+00 4.54e-08 + -3.14e+00 -3.14e+00 4.06e-09 +lmisolver: optimal solution found +X = X(1); +refX = [1.0635042 0; 0 2.0784841]; +refY = 0; +refZ = list([0.0731600 0.7080179; 0.7080179 0.7186999], [0.1154910 0.5345239; 0.5345239 1.4843684]); +refC = -1.0635042; +[Y, Z, c] = evalf(X); +assert_checkalmostequal(X, refX, [], 1d-6); +assert_checkalmostequal(Y, refY, [], 1d-6); +assert_checkalmostequal(Z(1), refZ(1), [], 1d-6); +assert_checkalmostequal(Z(2), refZ(2), [], 1d-6); +assert_checkalmostequal(c, refC, [], 1d-6); diff --git a/modules/optimization/tests/unit_tests/lmisolver.tst b/modules/optimization/tests/unit_tests/lmisolver.tst new file mode 100755 index 000000000..93ea263ae --- /dev/null +++ b/modules/optimization/tests/unit_tests/lmisolver.tst @@ -0,0 +1,41 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> + +//<-- ENGLISH IMPOSED --> + +rand("seed", 0); +n = 2; +A1 = rand(n, n); +A2 = rand(n, n); +Xs = diag(1:n); +Q1 = -(A1'*Xs+Xs*A1+0.1*eye()); +Q2 = -(A2'*Xs+Xs*A2+0.2*eye()); + +function [LME, LMI, OBJ] = evalf(Xlist) + X = Xlist(1) + LME = X-diag(diag(X)) + LMI = list(-(A1'*X+X*A1+Q1), -(A2'*X+X*A2+Q2)) + OBJ = -sum(diag(X)) +endfunction + +X = lmisolver(list(zeros(A1)), evalf); +X = X(1); + +refX = [1.0635042 0; 0 2.0784841]; +refY = 0; +refZ = list([0.0731600 0.7080179; 0.7080179 0.7186999], [0.1154910 0.5345239; 0.5345239 1.4843684]); +refC = -1.0635042; + +[Y, Z, c] = evalf(X); + +assert_checkalmostequal(X, refX, [], 1d-6); +assert_checkalmostequal(Y, refY, [], 1d-6); +assert_checkalmostequal(Z(1), refZ(1), [], 1d-6); +assert_checkalmostequal(Z(2), refZ(2), [], 1d-6); +assert_checkalmostequal(c, refC, [], 1d-6); diff --git a/modules/optimization/tests/unit_tests/lmitool.dia.ref b/modules/optimization/tests/unit_tests/lmitool.dia.ref new file mode 100755 index 000000000..59d8b3568 --- /dev/null +++ b/modules/optimization/tests/unit_tests/lmitool.dia.ref @@ -0,0 +1,65 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> +//<-- ENGLISH IMPOSED --> +// Constants +rand("seed", 0); +n = 2; +A1 = rand(n, n); +A2 = rand(n, n); +Xs = diag(1:n); +Q1 = -(A1'*Xs+Xs*A1+0.1*eye()); +Q2 = -(A2'*Xs+Xs*A2+0.2*eye()); +// Redefining messagebox() to avoid popup +prot = funcprot(); +funcprot(0); +function messagebox(msg, msg_title, info) +endfunction +funcprot(prot); +lmitool("prob", "X", "A1, A2"); // Create prob.sci +deletefile "prob.sci"; +copyfile("SCI/modules/optimization/demos/prob_bak.sci", "prob.sci"); // Replace prob.sci by prob_bak.sci +exec("prob.sci", -1); +X = prob(A1, A2); // Run optimization +lmisolver: Construction of canonical representation. +lmisolver: Basis Construction. +lmisolver: FEASIBILITY PHASE. + + primal obj. dual obj. dual. gap + 6.66e-01 -5.03e+02 5.03e+02 + 8.37e+01 -4.99e+02 5.83e+02 + 6.88e+01 -2.80e+00 7.16e+01 + 4.33e+00 -2.67e+00 7.00e+00 + 5.65e-01 -1.78e-01 7.43e-01 + -9.58e-02 -1.57e-01 6.13e-02 +lmisolver: Target value reached. +lmisolver: feasible solution found. +lmisolver: OPTIMIZATION PHASE. + + primal obj. dual obj. dual. gap + -2.76e+00 -3.62e+00 8.56e-01 + -3.13e+00 -3.27e+00 1.35e-01 + -3.14e+00 -3.16e+00 1.62e-02 + -3.14e+00 -3.14e+00 1.62e-03 + -3.14e+00 -3.14e+00 1.27e-04 + -3.14e+00 -3.14e+00 1.40e-05 + -3.14e+00 -3.14e+00 4.40e-07 + -3.14e+00 -3.14e+00 4.54e-08 + -3.14e+00 -3.14e+00 4.06e-09 +lmisolver: optimal solution found +refX = [1.0635042 0; 0 2.0784841]; +refY = 0; +refZ = list([0.0731600 0.7080179; 0.7080179 0.7186999], [0.1154910 0.5345239; 0.5345239 1.4843684]); +refC = -1.0635042; +[Y, Z, c] = prob_eval(X); // Check evaluaton function value at the point found +assert_checkalmostequal(X, refX, [], 1d-6); +assert_checkalmostequal(Y, refY, [], 1d-6); +assert_checkalmostequal(Z(1), refZ(1), [], 1d-6); +assert_checkalmostequal(Z(2), refZ(2), [], 1d-6); +assert_checkalmostequal(c, refC, [], 1d-6); +deletefile "prob.sci"; // Delete created file diff --git a/modules/optimization/tests/unit_tests/lmitool.tst b/modules/optimization/tests/unit_tests/lmitool.tst new file mode 100755 index 000000000..e61006dbf --- /dev/null +++ b/modules/optimization/tests/unit_tests/lmitool.tst @@ -0,0 +1,47 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// <-- CLI SHELL MODE --> + +//<-- ENGLISH IMPOSED --> + +// Constants +rand("seed", 0); +n = 2; +A1 = rand(n, n); +A2 = rand(n, n); +Xs = diag(1:n); +Q1 = -(A1'*Xs+Xs*A1+0.1*eye()); +Q2 = -(A2'*Xs+Xs*A2+0.2*eye()); + +// Redefining messagebox() to avoid popup +prot = funcprot(); +funcprot(0); +function messagebox(msg, msg_title, info) +endfunction +funcprot(prot); + +lmitool("prob", "X", "A1, A2"); // Create prob.sci +deletefile "prob.sci"; +copyfile("SCI/modules/optimization/demos/prob_bak.sci", "prob.sci"); // Replace prob.sci by prob_bak.sci +exec("prob.sci", -1); +X = prob(A1, A2); // Run optimization + +refX = [1.0635042 0; 0 2.0784841]; +refY = 0; +refZ = list([0.0731600 0.7080179; 0.7080179 0.7186999], [0.1154910 0.5345239; 0.5345239 1.4843684]); +refC = -1.0635042; + +[Y, Z, c] = prob_eval(X); // Check evaluaton function value at the point found + +assert_checkalmostequal(X, refX, [], 1d-6); +assert_checkalmostequal(Y, refY, [], 1d-6); +assert_checkalmostequal(Z(1), refZ(1), [], 1d-6); +assert_checkalmostequal(Z(2), refZ(2), [], 1d-6); +assert_checkalmostequal(c, refC, [], 1d-6); + +deletefile "prob.sci"; // Delete created file diff --git a/modules/optimization/tests/unit_tests/lsqrsolve.dia.ref b/modules/optimization/tests/unit_tests/lsqrsolve.dia.ref new file mode 100755 index 000000000..9ee470dfe --- /dev/null +++ b/modules/optimization/tests/unit_tests/lsqrsolve.dia.ref @@ -0,0 +1,30 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +a=[1,7; + 2,8 + 4 3]; +b=[10;11;-1]; +function y=f1(x,m),y=a*x+b;endfunction +[xsol,v]=lsqrsolve([100;100],f1,3); +if size(xsol) <> [2 1] then bugmes();quit;end +if size(v) <> [3 1] then bugmes();quit;end +function y=fj1(x,m),y=a;endfunction +[xsol,v]=lsqrsolve([100;100],f1,3,fj1); +// Data fitting problem +// 1 build the data +a=34;b=12;c=14; +deff('y=FF(x)','y=a*(x-b)+c*x.*x'); +X=(0:.1:3)';Y=FF(X)+100*(rand()-.5); +//solve +function e=f2(abc,m) + a=abc(1);b=abc(2),c=abc(3), + e=Y-(a*(X-b)+c*X.*X); +endfunction +[abc,v]=lsqrsolve([10;10;10],f2,size(X,1)); +if size(abc,'*') <> 3 then bugmes();quit;end +if norm(v) < %eps then bugmes();quit;end diff --git a/modules/optimization/tests/unit_tests/lsqrsolve.tst b/modules/optimization/tests/unit_tests/lsqrsolve.tst new file mode 100755 index 000000000..f1b4b8ad4 --- /dev/null +++ b/modules/optimization/tests/unit_tests/lsqrsolve.tst @@ -0,0 +1,39 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +a=[1,7; + 2,8 + 4 3]; +b=[10;11;-1]; + +function y=f1(x,m),y=a*x+b;endfunction + +[xsol,v]=lsqrsolve([100;100],f1,3); +if size(xsol) <> [2 1] then pause,end +if size(v) <> [3 1] then pause,end + +function y=fj1(x,m),y=a;endfunction +[xsol,v]=lsqrsolve([100;100],f1,3,fj1); + +// Data fitting problem +// 1 build the data +a=34;b=12;c=14; +deff('y=FF(x)','y=a*(x-b)+c*x.*x'); +X=(0:.1:3)';Y=FF(X)+100*(rand()-.5); + +//solve +function e=f2(abc,m) + a=abc(1);b=abc(2),c=abc(3), + e=Y-(a*(X-b)+c*X.*X); +endfunction + +[abc,v]=lsqrsolve([10;10;10],f2,size(X,1)); +if size(abc,'*') <> 3 then pause,end +if norm(v) < %eps then pause,end + diff --git a/modules/optimization/tests/unit_tests/neldermead/fminsearch.dia.ref b/modules/optimization/tests/unit_tests/neldermead/fminsearch.dia.ref new file mode 100755 index 000000000..164d887b8 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/fminsearch.dia.ref @@ -0,0 +1,294 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock ( x ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test basic use without parameters +// +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] ); +assert_checkalmostequal ( x , [1.0 1.0], 1e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 85 ); +assert_checkequal ( output.algorithm , "Nelder-Mead simplex direct search" ); +assert_checkequal ( output.funcCount , 159 ); +assert_checkequal ( output.message(1) , "Optimization terminated:"); +assert_checkequal ( output.message(2) , " the current x satisfies the termination criteria using OPTIONS.TolX of 0.0001"); +assert_checkequal ( output.message(3) , " and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 0.0001"); +// +// fminsearch with incorrect number of input arguments +// +cmd = "fminsearch ( )"; +assert_checkerror(cmd,"%s: Wrong number of input arguments: %d or %d expected.\n",[], "fminsearch",2,3); +// +// Check that tolerance on X is correctly taken into account +// +opt = optimset ( "TolX" , 1.e-2 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-2 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 70 ); +assert_checkequal ( output.funcCount , 130 ); +// +// Check that tolerance on F is correctly taken into account +// +opt = optimset ( "TolFun" , 1.e-10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e-2 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 90 ); +assert_checkequal ( output.funcCount , 168 ); +// +// Check that maximum number of iterations is correctly taken into account +// +opt = optimset ( "MaxIter" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 10 ); +assert_checkequal ( output.funcCount , 21 ); +// +// Check that maximum number of function evaluations is correctly taken into account +// +opt = optimset ( "MaxFunEvals" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. + Current function value: 4.3813601 +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 5 ); +assert_checkequal ( output.funcCount , 11 ); +// +// Check that Display is correctly used in mode "final" +// +opt = optimset ( "Display" , "final" ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +Optimization terminated: + the current x satisfies the termination criteria using OPTIONS.TolX of 0.0001 + and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 0.0001 +assert_checkalmostequal ( x , [1.0 1.0], 1.e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 85 ); +assert_checkequal ( output.funcCount , 159 ); +// +// Check that Display is correctly used in mode "iter" +// +opt = optimset ( "Display" , "iter" ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); + Iteration Func-count min f(x) Procedure + 0 3 24.2 + 1 3 20.05 initial simplex + 2 5 5.161796 expand + 3 7 4.497796 reflect + 4 9 4.497796 contract outside + 5 11 4.3813601 contract inside + 6 13 4.2452728 contract inside + 7 15 4.2176247 reflect + 8 17 4.2112906 contract inside + 9 19 4.1355598 expand + 10 21 4.1355598 contract inside + 11 23 4.0127268 expand + 12 25 3.9373812 expand + 13 27 3.602606 expand + 14 28 3.602606 reflect + 15 30 3.4662211 reflect + 16 32 3.2160547 expand + 17 34 3.1649126 reflect + 18 36 2.7068692 expand + 19 37 2.7068692 reflect + 20 39 2.0021824 expand + 21 41 2.0021824 contract inside + 22 43 2.0021824 contract inside + 23 45 1.8154337 expand + 24 47 1.7348144 contract outside + 25 49 1.3169723 expand + 26 50 1.3169723 reflect + 27 51 1.3169723 reflect + 28 53 1.1595038 reflect + 29 55 1.0767387 contract inside + 30 57 0.8834921 reflect + 31 59 0.8834921 contract inside + 32 61 0.6691654 expand + 33 63 0.6691654 contract inside + 34 64 0.6691654 reflect + 35 66 0.5367289 reflect + 36 68 0.5367289 contract inside + 37 70 0.4232940 expand + 38 72 0.4232940 contract outside + 39 74 0.3985272 reflect + 40 76 0.3144704 expand + 41 77 0.3144704 reflect + 42 79 0.1903167 expand + 43 81 0.1903167 contract inside + 44 82 0.1903167 reflect + 45 84 0.1369602 reflect + 46 86 0.1369602 contract outside + 47 88 0.1131281 contract outside + 48 90 0.1105304 contract inside + 49 92 0.1023402 reflect + 50 94 0.1011837 contract inside + 51 96 0.0794969 expand + 52 97 0.0794969 reflect + 53 98 0.0794969 reflect + 54 100 0.0569294 expand + 55 102 0.0569294 contract inside + 56 104 0.0344855 expand + 57 106 0.0179534 expand + 58 108 0.0169469 contract outside + 59 110 0.0040146 reflect + 60 112 0.0040146 contract inside + 61 113 0.0040146 reflect + 62 115 0.0003700 reflect + 63 117 0.0003700 contract inside + 64 118 0.0003700 reflect + 65 120 0.0003700 contract inside + 66 122 0.0000590 contract outside + 67 124 0.0000337 contract inside + 68 126 0.0000337 contract outside + 69 128 0.0000189 contract outside + 70 130 0.0000085 contract inside + 71 132 0.0000029 contract inside + 72 133 0.0000029 reflect + 73 135 0.0000007 contract inside + 74 137 0.0000007 contract inside + 75 139 0.0000006 contract inside + 76 141 0.0000002 contract outside + 77 143 0.0000001 contract inside + 78 145 5.235D-08 contract inside + 79 147 5.035D-08 contract inside + 80 149 2.004D-08 contract inside + 81 151 1.123D-09 contract inside + 82 153 1.123D-09 contract outside + 83 155 1.123D-09 contract inside + 84 157 1.108D-09 contract outside + 85 159 8.178D-10 contract inside + +Optimization terminated: + the current x satisfies the termination criteria using OPTIONS.TolX of 0.0001 + and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 0.0001 +assert_checkalmostequal ( x , [1.0 1.0], 1.e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 85 ); +assert_checkequal ( output.funcCount , 159 ); +// +// Check that Display is correctly used in mode "off" (no message at all) +// +opt = optimset ( "Display" , "off" ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 85 ); +assert_checkequal ( output.funcCount , 159 ); +// +// Check that Display is correctly used in mode "notify" (display only problem messages) +// +opt = optimset ( "Display" , "notify" ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 85 ); +assert_checkequal ( output.funcCount , 159 ); +// +// Check that Display is correctly used in mode "off" (no message at all), when there is a maximum number of iterations reached +// +opt = optimset ( "Display" , "off" , "MaxIter" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 10 ); +assert_checkequal ( output.funcCount , 21 ); +// +// Check that Display is correctly used in mode "notify" (display only problem messages), when there is a maximum number of iterations reached +// +opt = optimset ( "Display" , "notify" , "MaxIter" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 10 ); +assert_checkequal ( output.funcCount , 21 ); +// +// Check that Display is correctly used in mode "iter", when there is a maximum number of iterations reached +// +opt = optimset ( "Display" , "iter" , "MaxIter" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); + Iteration Func-count min f(x) Procedure + 0 3 24.2 + 1 3 20.05 initial simplex + 2 5 5.161796 expand + 3 7 4.497796 reflect + 4 9 4.497796 contract outside + 5 11 4.3813601 contract inside + 6 13 4.2452728 contract inside + 7 15 4.2176247 reflect + 8 17 4.2112906 contract inside + 9 19 4.1355598 expand + 10 21 4.1355598 contract inside + +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 10 ); +assert_checkequal ( output.funcCount , 21 ); +// +// Check that Display is correctly used in mode "final", when there is a maximum number of iterations reached +// +opt = optimset ( "Display" , "final" , "MaxIter" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 10 ); +assert_checkequal ( output.funcCount , 21 ); +// +// Test basic use with column x0 +// +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1].' ); +assert_checkalmostequal ( x , [1.0 1.0], 1e-4 ); +// +// Test extra arguments +function y = bananaext (x,a,b) + y = a*(x(2)-x(1)^2)^2 + (b-x(1))^2; +endfunction +a = 100; +b = 1; +[x fval] = fminsearch ( list(bananaext,a,b) , [-1.2 1] ); +assert_checkalmostequal ( x , [1.0 1.0], 1e-4 ); +assert_checkalmostequal ( fval , 0, [], 1e-5 ); +// +a = 100; +b = 12; +[x fval] = fminsearch ( list(bananaext,a,b) , [10 100] ); +assert_checkalmostequal ( x , [12 144], 1e-4 ); +assert_checkalmostequal ( fval , 0, [], 1e-5 ); diff --git a/modules/optimization/tests/unit_tests/neldermead/fminsearch.tst b/modules/optimization/tests/unit_tests/neldermead/fminsearch.tst new file mode 100755 index 000000000..713fa9983 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/fminsearch.tst @@ -0,0 +1,177 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + +function y = rosenbrock ( x ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test basic use without parameters +// +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] ); +assert_checkalmostequal ( x , [1.0 1.0], 1e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 85 ); +assert_checkequal ( output.algorithm , "Nelder-Mead simplex direct search" ); +assert_checkequal ( output.funcCount , 159 ); +assert_checkequal ( output.message(1) , "Optimization terminated:"); +assert_checkequal ( output.message(2) , " the current x satisfies the termination criteria using OPTIONS.TolX of 0.0001"); +assert_checkequal ( output.message(3) , " and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 0.0001"); +// +// fminsearch with incorrect number of input arguments +// +cmd = "fminsearch ( )"; +assert_checkerror(cmd,"%s: Wrong number of input arguments: %d or %d expected.\n",[], "fminsearch",2,3); +// +// Check that tolerance on X is correctly taken into account +// +opt = optimset ( "TolX" , 1.e-2 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-2 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 70 ); +assert_checkequal ( output.funcCount , 130 ); +// +// Check that tolerance on F is correctly taken into account +// +opt = optimset ( "TolFun" , 1.e-10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e-2 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 90 ); +assert_checkequal ( output.funcCount , 168 ); +// +// Check that maximum number of iterations is correctly taken into account +// +opt = optimset ( "MaxIter" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 10 ); +assert_checkequal ( output.funcCount , 21 ); +// +// Check that maximum number of function evaluations is correctly taken into account +// +opt = optimset ( "MaxFunEvals" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 5 ); +assert_checkequal ( output.funcCount , 11 ); +// +// Check that Display is correctly used in mode "final" +// +opt = optimset ( "Display" , "final" ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 85 ); +assert_checkequal ( output.funcCount , 159 ); +// +// Check that Display is correctly used in mode "iter" +// +opt = optimset ( "Display" , "iter" ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 85 ); +assert_checkequal ( output.funcCount , 159 ); +// +// Check that Display is correctly used in mode "off" (no message at all) +// +opt = optimset ( "Display" , "off" ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 85 ); +assert_checkequal ( output.funcCount , 159 ); +// +// Check that Display is correctly used in mode "notify" (display only problem messages) +// +opt = optimset ( "Display" , "notify" ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-4 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1.e-4 ); +assert_checkequal ( exitflag , 1 ); +assert_checkequal ( output.iterations , 85 ); +assert_checkequal ( output.funcCount , 159 ); +// +// Check that Display is correctly used in mode "off" (no message at all), when there is a maximum number of iterations reached +// +opt = optimset ( "Display" , "off" , "MaxIter" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 10 ); +assert_checkequal ( output.funcCount , 21 ); +// +// Check that Display is correctly used in mode "notify" (display only problem messages), when there is a maximum number of iterations reached +// +opt = optimset ( "Display" , "notify" , "MaxIter" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 10 ); +assert_checkequal ( output.funcCount , 21 ); +// +// Check that Display is correctly used in mode "iter", when there is a maximum number of iterations reached +// +opt = optimset ( "Display" , "iter" , "MaxIter" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 10 ); +assert_checkequal ( output.funcCount , 21 ); +// +// Check that Display is correctly used in mode "final", when there is a maximum number of iterations reached +// +opt = optimset ( "Display" , "final" , "MaxIter" , 10 ); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e1 ); +assert_checkalmostequal ( fval , 0.0 , [] , 1e1 ); +assert_checkequal ( exitflag , 0 ); +assert_checkequal ( output.iterations , 10 ); +assert_checkequal ( output.funcCount , 21 ); + +// +// Test basic use with column x0 +// +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1].' ); +assert_checkalmostequal ( x , [1.0 1.0], 1e-4 ); + +// +// Test extra arguments +function y = bananaext (x,a,b) + y = a*(x(2)-x(1)^2)^2 + (b-x(1))^2; +endfunction +a = 100; +b = 1; +[x fval] = fminsearch ( list(bananaext,a,b) , [-1.2 1] ); +assert_checkalmostequal ( x , [1.0 1.0], 1e-4 ); +assert_checkalmostequal ( fval , 0, [], 1e-5 ); +// +a = 100; +b = 12; +[x fval] = fminsearch ( list(bananaext,a,b) , [10 100] ); +assert_checkalmostequal ( x , [12 144], 1e-4 ); +assert_checkalmostequal ( fval , 0, [], 1e-5 ); diff --git a/modules/optimization/tests/unit_tests/neldermead/fminsearch_output.dia.ref b/modules/optimization/tests/unit_tests/neldermead/fminsearch_output.dia.ref new file mode 100755 index 000000000..4b14b80b2 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/fminsearch_output.dia.ref @@ -0,0 +1,220 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- ENGLISH IMPOSED --> +function y = rosenbrock ( x ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Use output function +// +// outfun -- +// A sample output function +// Arguments, input +// x : the current point +// optimValues : a tlist which contains the following fields +// funccount : the number of function evaluations +// fval : the current function value +// iteration : the current iteration +// procedure : a string containing the current type of step +// state : the current state of the algorithm +// "init", "iter", "done" +// +function stop = outfun ( x , optimValues , state ) + plot( x(1),x(2),'.'); + // Unload all fields and check consistent values + fc = optimValues.funccount; + fv = optimValues.fval; + it = optimValues.iteration; + pr = optimValues.procedure; + select pr + case "initial simplex" + // OK + case "expand" + // OK + case "reflect" + // OK + case "shrink" + // OK + case "contract inside" + // OK + case "contract outside" + // OK + case "" + // OK + else + error ( sprintf ( "Unknown procedure %s." , pr ) ) + end + select state + case "init" + // OK + case "iter" + // OK + case "done" + // OK + else + error ( sprintf ( "Unknown state %s." , state ) ) + end + mprintf ( "%d %s %d -%s- %s\n" , fc , string(fv) , it , pr , state ) + stop = %f +endfunction +opt = optimset ( "OutputFcn" , outfun); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +3 24.2 0 -- init +3 20.05 1 -initial simplex- iter +5 5.161796 2 -expand- iter +7 4.497796 3 -reflect- iter +9 4.497796 4 -contract outside- iter +11 4.3813601 5 -contract inside- iter +13 4.2452728 6 -contract inside- iter +15 4.2176247 7 -reflect- iter +17 4.2112906 8 -contract inside- iter +19 4.1355598 9 -expand- iter +21 4.1355598 10 -contract inside- iter +21 4.1355598 10 -- done +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +close(gcf()); +// +// Use several output functions +// +function stop = outfun2 ( x , optimValues , state ) + global __fig1__ + scf ( __fig1__ ); + plot( x(1),x(2),'.'); + stop = %f +endfunction +function stop = outfun3 ( x , optimValues , state ) + global __fig2__ + scf ( __fig2__ ); + plot( x(1),x(2),'o'); + stop = %f +endfunction +myfunctions = list ( outfun2 , outfun3 ); +global __fig1__ +global __fig2__ +__fig1__ = scf(); +__fig2__ = scf(); +opt = optimset ( "OutputFcn" , myfunctions ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +close(__fig1__); +close(__fig2__); +// +// Use plot function +// +// +// plotfun -- +// A sample plot function +// Arguments, input +// x : the current point +// optimValues : a tlist which contains the following fields +// funcCount" : the number of function evaluations +// fval : the current function value +// iteration : the current iteration +// procedure : a string containing the current type of step +// state : the current state of the algorithm +// "init", "iter", "done" +// +function plotfun ( x , optimValues , state ) + plot(x(1),x(2),'.'); +endfunction +opt = optimset ( "PlotFcns" , plotfun); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +close(gcf()); +// +// Use several plot functions +// +function plotfun2 ( x , optimValues , state ) + global __fig1__ + scf ( __fig1__ ); + plot( x(1),x(2),'.'); +endfunction +function plotfun3 ( x , optimValues , state ) + global __fig2__ + scf ( __fig2__ ); + plot( x(1),x(2),'o'); +endfunction +myfunctions = list ( plotfun2 , plotfun3 ); +global __fig1__ +global __fig2__ +__fig1__ = scf(); +__fig2__ = scf(); +opt = optimset ( "PlotFcns" , myfunctions ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +close(__fig1__); +close(__fig2__); +// +// Use optimplotfval plot function +// +opt = optimset ( "PlotFcns" , optimplotfval ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +close(gcf()); +// +// Use optimplotx plot function +// +opt = optimset ( "PlotFcns" , optimplotx ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +close(gcf()); +// +// Use optimplotfunccount plot function +// +opt = optimset ( "PlotFcns" , optimplotfunccount ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +close(gcf()); +// +// Use all 3 plot functions +// +myfunctions = list ( optimplotfval , optimplotx , optimplotfunccount ); +opt = optimset ( "PlotFcns" , myfunctions ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 +close(gcf()); +close(gcf()); +close(gcf()); +// +// Use output function to stop the algorithm. +// This sets the exitflag to -1. +function stop = outfunStop ( x , optimValues , state ) + fv = optimValues.fval; + stop = ( fv < 1.e-5 ) +endfunction +opt = optimset ( "OutputFcn" , outfunStop); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-2 ); +assert_checktrue ( fval < 1e-5 ); +assert_checkequal ( exitflag , -1 ); diff --git a/modules/optimization/tests/unit_tests/neldermead/fminsearch_output.tst b/modules/optimization/tests/unit_tests/neldermead/fminsearch_output.tst new file mode 100755 index 000000000..d0064d7c4 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/fminsearch_output.tst @@ -0,0 +1,191 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- ENGLISH IMPOSED --> + +function y = rosenbrock ( x ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Use output function +// +// outfun -- +// A sample output function +// Arguments, input +// x : the current point +// optimValues : a tlist which contains the following fields +// funccount : the number of function evaluations +// fval : the current function value +// iteration : the current iteration +// procedure : a string containing the current type of step +// state : the current state of the algorithm +// "init", "iter", "done" +// +function stop = outfun ( x , optimValues , state ) + plot( x(1),x(2),'.'); + // Unload all fields and check consistent values + fc = optimValues.funccount; + fv = optimValues.fval; + it = optimValues.iteration; + pr = optimValues.procedure; + select pr + case "initial simplex" + // OK + case "expand" + // OK + case "reflect" + // OK + case "shrink" + // OK + case "contract inside" + // OK + case "contract outside" + // OK + case "" + // OK + else + error ( sprintf ( "Unknown procedure %s." , pr ) ) + end + select state + case "init" + // OK + case "iter" + // OK + case "done" + // OK + else + error ( sprintf ( "Unknown state %s." , state ) ) + end + mprintf ( "%d %s %d -%s- %s\n" , fc , string(fv) , it , pr , state ) + stop = %f +endfunction +opt = optimset ( "OutputFcn" , outfun); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +close(gcf()); +// +// Use several output functions +// +function stop = outfun2 ( x , optimValues , state ) + global __fig1__ + scf ( __fig1__ ); + plot( x(1),x(2),'.'); + stop = %f +endfunction +function stop = outfun3 ( x , optimValues , state ) + global __fig2__ + scf ( __fig2__ ); + plot( x(1),x(2),'o'); + stop = %f +endfunction +myfunctions = list ( outfun2 , outfun3 ); +global __fig1__ +global __fig2__ +__fig1__ = scf(); +__fig2__ = scf(); +opt = optimset ( "OutputFcn" , myfunctions ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +close(__fig1__); +close(__fig2__); +// +// Use plot function +// +// +// plotfun -- +// A sample plot function +// Arguments, input +// x : the current point +// optimValues : a tlist which contains the following fields +// funcCount" : the number of function evaluations +// fval : the current function value +// iteration : the current iteration +// procedure : a string containing the current type of step +// state : the current state of the algorithm +// "init", "iter", "done" +// +function plotfun ( x , optimValues , state ) + plot(x(1),x(2),'.'); +endfunction +opt = optimset ( "PlotFcns" , plotfun); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +close(gcf()); +// +// Use several plot functions +// +function plotfun2 ( x , optimValues , state ) + global __fig1__ + scf ( __fig1__ ); + plot( x(1),x(2),'.'); +endfunction +function plotfun3 ( x , optimValues , state ) + global __fig2__ + scf ( __fig2__ ); + plot( x(1),x(2),'o'); +endfunction +myfunctions = list ( plotfun2 , plotfun3 ); +global __fig1__ +global __fig2__ +__fig1__ = scf(); +__fig2__ = scf(); +opt = optimset ( "PlotFcns" , myfunctions ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +close(__fig1__); +close(__fig2__); +// +// Use optimplotfval plot function +// +opt = optimset ( "PlotFcns" , optimplotfval ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +close(gcf()); +// +// Use optimplotx plot function +// +opt = optimset ( "PlotFcns" , optimplotx ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +close(gcf()); +// +// Use optimplotfunccount plot function +// +opt = optimset ( "PlotFcns" , optimplotfunccount ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +close(gcf()); + +// +// Use all 3 plot functions +// +myfunctions = list ( optimplotfval , optimplotx , optimplotfunccount ); +opt = optimset ( "PlotFcns" , myfunctions ); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +close(gcf()); +close(gcf()); +close(gcf()); + +// +// Use output function to stop the algorithm. +// This sets the exitflag to -1. +function stop = outfunStop ( x , optimValues , state ) + fv = optimValues.fval; + stop = ( fv < 1.e-5 ) +endfunction +opt = optimset ( "OutputFcn" , outfunStop); +[x , fval , exitflag , output] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +assert_checkalmostequal ( x , [1.0 1.0], 1.e-2 ); +assert_checktrue ( fval < 1e-5 ); +assert_checkequal ( exitflag , -1 ); + + + diff --git a/modules/optimization/tests/unit_tests/neldermead/fminsearch_outputobsolete.dia.ref b/modules/optimization/tests/unit_tests/neldermead/fminsearch_outputobsolete.dia.ref new file mode 100755 index 000000000..050c24134 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/fminsearch_outputobsolete.dia.ref @@ -0,0 +1,36 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- ENGLISH IMPOSED --> +// <-- NO CHECK REF --> +// <-- CLI SHELL MODE --> +// This test is designed to produce a warning: +// this warning is localized. +// This is why we do not check the ref. +// Checking the ref file under Linux fails, because +// <-- ENGLISH IMPOSED --> has no effect there. +// See : http://bugzilla.scilab.org/show_bug.cgi?id=9284 +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Ensure backward compatibility. +// Check that it works also without a stop output variable. +// +function outfun4 ( x , optimValues , state ) +endfunction +opt = optimset ( "OutputFcn" , outfun4); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); +AVERTISSEMENT : Calling sequence outputfun(x,optimValues , state ) is obsolete. +AVERTISSEMENT : Utilisez plutôt stop=outputfun(x,optimValues , state ) s'il vous plait. +AVERTISSEMENT : Cette fonctionnalité va être définitivement enlevée dans Scilab 5.4.1 + +fminsearch: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. + Current function value: 4.1355598 diff --git a/modules/optimization/tests/unit_tests/neldermead/fminsearch_outputobsolete.tst b/modules/optimization/tests/unit_tests/neldermead/fminsearch_outputobsolete.tst new file mode 100755 index 000000000..59cfda187 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/fminsearch_outputobsolete.tst @@ -0,0 +1,37 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- ENGLISH IMPOSED --> +// <-- NO CHECK REF --> +// <-- CLI SHELL MODE --> + + +// This test is designed to produce a warning: +// this warning is localized. +// This is why we do not check the ref. +// Checking the ref file under Linux fails, because +// <-- ENGLISH IMPOSED --> has no effect there. +// See : http://bugzilla.scilab.org/show_bug.cgi?id=9284 + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + + + +// +// Ensure backward compatibility. +// Check that it works also without a stop output variable. +// +function outfun4 ( x , optimValues , state ) +endfunction +opt = optimset ( "OutputFcn" , outfun4); +opt = optimset ( opt , "MaxIter" , 10 ); +[x fval] = fminsearch ( rosenbrock , [-1.2 1] , opt ); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_configure.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_configure.dia.ref new file mode 100755 index 000000000..6b70b435a --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_configure.dia.ref @@ -0,0 +1,217 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Check behaviour with configured settings. +// +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Check maxfunevals with "variable" method +// +nm = neldermead_new (); +// +nm = neldermead_configure(nm,"-numberofvariables",2); +numvar = neldermead_cget(nm,"-numberofvariables"); +assert_checkequal ( numvar , 2 ); +// +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +x0 = neldermead_cget(nm,"-x0"); +assert_checkequal ( x0 , [1.1 1.1]' ); +// Check default -simplex0method +simplex0method = neldermead_cget(nm,"-simplex0method"); +assert_checkequal ( simplex0method , "axes" ); +// +nm = neldermead_configure(nm,"-simplex0method","spendley"); +simplex0method = neldermead_cget(nm,"-simplex0method"); +assert_checkequal ( simplex0method , "spendley" ); +// Check default -simplex0length +simplex0length = neldermead_cget(nm,"-simplex0length"); +assert_checkequal ( simplex0length , 1 ); +// +nm = neldermead_configure(nm,"-simplex0length",0.1); +simplex0length = neldermead_cget(nm,"-simplex0length"); +assert_checkequal ( simplex0length , 0.1 ); +// +// Check default -method +method = neldermead_cget(nm,"-method"); +assert_checkequal ( method , "variable" ); +// +nm = neldermead_configure(nm,"-method","fixed"); +method = neldermead_cget(nm,"-method"); +assert_checkequal ( method , "fixed" ); +// +nm = neldermead_configure(nm,"-method","variable"); +method = neldermead_cget(nm,"-method"); +assert_checkequal ( method , "variable" ); +// +nm = neldermead_configure(nm,"-function",rosenbrock); +// +nm = neldermead_configure(nm,"-maxfunevals",10); +maxfunevals = neldermead_cget(nm,"-maxfunevals"); +assert_checkequal ( maxfunevals , 10 ); +// +nm = neldermead_search(nm, "off"); +funevals = neldermead_get(nm,"-funevals"); +// Let's be not strict +assert_checkequal ( funevals < 15 , %T ); +// Cleanup +nm = neldermead_destroy(nm); +// +// Check maxiter with "variable" method +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",0.1); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_search(nm, "off"); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( iterations , 10 ); +// Cleanup +nm = neldermead_destroy(nm); +// Wrong -method flag +nm = neldermead_new (); +cmd = "nm = neldermead_configure(nm,''-method'',''foo'')"; +alloptions = """fixed"" or ""variable"" or ""box"" or ""mine"""; +assert_checkerror(cmd,"%s: Expected value [%s] for input argument %s at input #%d, but got ""%s"" instead.",[],.. + "neldermead_configure",alloptions,"value",3,"foo"); +nm = neldermead_destroy(nm); +// Wrong -simplex0method flag +nm = neldermead_new (); +cmd = "nm = neldermead_configure(nm,''-simplex0method'',''foo'')"; +alloptions = """given"" or ""axes"" or ""spendley"" or ""pfeffer"" or ""randbounds"""; +assert_checkerror(cmd,"%s: Expected value [%s] for input argument %s at input #%d, but got ""%s"" instead.",[],.. + "neldermead_configure",alloptions,"value",3,"foo"); +nm = neldermead_destroy(nm); +// Wrong -tolsimplexizemethod flag +nm = neldermead_new (); +cmd = "nm = neldermead_configure(nm,''-tolsimplexizemethod'',''foo'')"; +assert_checkerror(cmd,"%s: Expected boolean but for variable %s at input #%d, got %s instead.",[],"nelmead_typeboolean","value",3,"string"); +nm = neldermead_destroy(nm); +// Wrong -tolssizedeltafvmethod flag +nm = neldermead_new (); +cmd = "nm = neldermead_configure(nm,''-tolssizedeltafvmethod'',''foo'')"; +assert_checkerror(cmd,"%s: Expected boolean but for variable %s at input #%d, got %s instead.",[],"nelmead_typeboolean","value",3,"string"); +nm = neldermead_destroy(nm); +// +// Check wrong key for get method +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",0.1); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-maxfunevals",2); +nm = neldermead_search(nm, "off"); +cmd = "funevals = neldermead_get(nm,''-foo'')"; +assert_checkerror(cmd,"%s: Unknown key %s",[],"optimbase_get","-foo"); +nm = neldermead_destroy(nm); +// +// Check that x0 is forced to be a vector +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +cmd = "nm = neldermead_configure(nm,''-x0'',[-1.2 1.0]);"; +nm = neldermead_destroy(nm); +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +cmd = "nm = neldermead_configure(nm,''-x0'',[-1.2 1.0; 1.0 -1.2]);"; +assert_checkerror(cmd,"%s: Wrong size for x0 argument: A vector expected.", [], "optimbase_configure"); +nm = neldermead_destroy(nm); +// +// Check -restartstep +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +cmd = "nm = neldermead_configure(nm,''-restartstep'',[1 2 3]);"; +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); +cmd = "nm = neldermead_configure(nm,''-restartstep'',[-1 2]'');"; +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.",[],.. + "neldermead_configure","value",3,"2.22D-308",1,"-1"); +nm = neldermead_destroy(nm); +// +// Check -restarteps +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +cmd = "nm = neldermead_configure(nm,''-restarteps'',[1 2]);"; +assert_checkerror(cmd,"%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n",[], .. + "neldermead_configure",3,1,1); +cmd = "nm = neldermead_configure(nm,''-restarteps'',-1);"; +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.",[],.. + "neldermead_configure","value",3,"2.22D-308",1,"-1"); +nm = neldermead_destroy(nm); +// +// Check the display system +nm = neldermead_new (); +nm + nm = + +Nelder-Mead Object: +====================== + +Simplex0 Method : axes +Simplex0 Length : 1 +Simplex0, Pfeffer, Delta Usual : 0.05 +Simplex0, Pfeffer, Delta Zero : 0.0075 +Simplex0, Given, Coords : +[] + +Termination parameters +Termination on simplex size : T +Termination on simplex size, Absolute Tolerance : 0 +Termination on simplex size, Relative Tolerance : 2.220D-16 +Termination on simplex size, Initial Simplex Size : 0 +Termination on simplex size + Delta of function value : F +Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : 2.220D-16 +Termination on Kelley's Stagnation : F +Termination on Kelley's Stagnation, Normalization : T +Termination on Kelley's Stagnation, Alpha0 : 0.0001 +Termination on Kelley's Stagnation, Alpha : 0.0001 +Termination by Box : F +Termination by Box, Absolute Tolerance on Function: 0.00001 +Termination by Box, Maximum Number of Consecutive Match : 5 +Termination by Box, Current Number of Consecutive Match : 0 +Termination on Variance : F +Termination on Variance, Absolute Tolerance : 0 +Termination on Variance, Relative Tolerance : 2.220D-16 +Termination on Variance, Variance of Initial Simplex : 0 + +Algorithms parameters +Method : variable +Reflection Factor (rho) : 1 +Expansion Factor (chi) : 2 +Contraction Factor (gamma) : 0.5 +Shrinkage Factor (sigma) : 0.5 +Kelley Stagnation : F +Restart Epsilon : 2.220D-16 +Restart Step : 1 +Restart Maximum : 3 +Restart Simplex Method : oriented +Restart Flag : F +Restart Number : 0 +Restart Detection Method : oneill +Startup Flag : F +Automatic Checking of Cost Function : T +Box, Number of Points : 2n +Box, Current Number of Points : 0 +Box, Scaling, Factor : 0.5 +Box, Scaling, Method : tox0 +Box, Scaling, Minimum : 0.00001 +Box, Bounds Parameter: 0.000001 +Box, Reflection Coefficient : 1.3 + +optbase: <TOPTIM Object> +simplex0: <TSIMPLEX Object> +simplexopt: <constant Object> +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_configure.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_configure.tst new file mode 100755 index 000000000..753a3502d --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_configure.tst @@ -0,0 +1,175 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// +// Check behaviour with configured settings. +// + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Check maxfunevals with "variable" method +// +nm = neldermead_new (); +// +nm = neldermead_configure(nm,"-numberofvariables",2); +numvar = neldermead_cget(nm,"-numberofvariables"); +assert_checkequal ( numvar , 2 ); +// +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +x0 = neldermead_cget(nm,"-x0"); +assert_checkequal ( x0 , [1.1 1.1]' ); +// Check default -simplex0method +simplex0method = neldermead_cget(nm,"-simplex0method"); +assert_checkequal ( simplex0method , "axes" ); +// +nm = neldermead_configure(nm,"-simplex0method","spendley"); +simplex0method = neldermead_cget(nm,"-simplex0method"); +assert_checkequal ( simplex0method , "spendley" ); +// Check default -simplex0length +simplex0length = neldermead_cget(nm,"-simplex0length"); +assert_checkequal ( simplex0length , 1 ); +// +nm = neldermead_configure(nm,"-simplex0length",0.1); +simplex0length = neldermead_cget(nm,"-simplex0length"); +assert_checkequal ( simplex0length , 0.1 ); +// +// Check default -method +method = neldermead_cget(nm,"-method"); +assert_checkequal ( method , "variable" ); +// +nm = neldermead_configure(nm,"-method","fixed"); +method = neldermead_cget(nm,"-method"); +assert_checkequal ( method , "fixed" ); +// +nm = neldermead_configure(nm,"-method","variable"); +method = neldermead_cget(nm,"-method"); +assert_checkequal ( method , "variable" ); +// +nm = neldermead_configure(nm,"-function",rosenbrock); +// +nm = neldermead_configure(nm,"-maxfunevals",10); +maxfunevals = neldermead_cget(nm,"-maxfunevals"); +assert_checkequal ( maxfunevals , 10 ); +// +nm = neldermead_search(nm, "off"); +funevals = neldermead_get(nm,"-funevals"); +// Let's be not strict +assert_checkequal ( funevals < 15 , %T ); +// Cleanup +nm = neldermead_destroy(nm); + +// +// Check maxiter with "variable" method +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",0.1); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_search(nm, "off"); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( iterations , 10 ); +// Cleanup +nm = neldermead_destroy(nm); + +// Wrong -method flag +nm = neldermead_new (); +cmd = "nm = neldermead_configure(nm,''-method'',''foo'')"; +alloptions = """fixed"" or ""variable"" or ""box"" or ""mine"""; +assert_checkerror(cmd,"%s: Expected value [%s] for input argument %s at input #%d, but got ""%s"" instead.",[],.. + "neldermead_configure",alloptions,"value",3,"foo"); +nm = neldermead_destroy(nm); + +// Wrong -simplex0method flag +nm = neldermead_new (); +cmd = "nm = neldermead_configure(nm,''-simplex0method'',''foo'')"; +alloptions = """given"" or ""axes"" or ""spendley"" or ""pfeffer"" or ""randbounds"""; +assert_checkerror(cmd,"%s: Expected value [%s] for input argument %s at input #%d, but got ""%s"" instead.",[],.. + "neldermead_configure",alloptions,"value",3,"foo"); +nm = neldermead_destroy(nm); + +// Wrong -tolsimplexizemethod flag +nm = neldermead_new (); +cmd = "nm = neldermead_configure(nm,''-tolsimplexizemethod'',''foo'')"; +assert_checkerror(cmd,"%s: Expected boolean but for variable %s at input #%d, got %s instead.",[],"nelmead_typeboolean","value",3,"string"); +nm = neldermead_destroy(nm); + +// Wrong -tolssizedeltafvmethod flag +nm = neldermead_new (); +cmd = "nm = neldermead_configure(nm,''-tolssizedeltafvmethod'',''foo'')"; +assert_checkerror(cmd,"%s: Expected boolean but for variable %s at input #%d, got %s instead.",[],"nelmead_typeboolean","value",3,"string"); +nm = neldermead_destroy(nm); + +// +// Check wrong key for get method +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",0.1); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-maxfunevals",2); +nm = neldermead_search(nm, "off"); +cmd = "funevals = neldermead_get(nm,''-foo'')"; +assert_checkerror(cmd,"%s: Unknown key %s",[],"optimbase_get","-foo"); +nm = neldermead_destroy(nm); + +// +// Check that x0 is forced to be a vector +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +cmd = "nm = neldermead_configure(nm,''-x0'',[-1.2 1.0]);"; +nm = neldermead_destroy(nm); + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +cmd = "nm = neldermead_configure(nm,''-x0'',[-1.2 1.0; 1.0 -1.2]);"; +assert_checkerror(cmd,"%s: Wrong size for x0 argument: A vector expected.", [], "optimbase_configure"); +nm = neldermead_destroy(nm); + +// +// Check -restartstep +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +cmd = "nm = neldermead_configure(nm,''-restartstep'',[1 2 3]);"; +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); +cmd = "nm = neldermead_configure(nm,''-restartstep'',[-1 2]'');"; +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.",[],.. + "neldermead_configure","value",3,"2.22D-308",1,"-1"); +nm = neldermead_destroy(nm); + +// +// Check -restarteps +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +cmd = "nm = neldermead_configure(nm,''-restarteps'',[1 2]);"; +assert_checkerror(cmd,"%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n",[], .. + "neldermead_configure",3,1,1); +cmd = "nm = neldermead_configure(nm,''-restarteps'',-1);"; +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.",[],.. + "neldermead_configure","value",3,"2.22D-308",1,"-1"); +nm = neldermead_destroy(nm); + +// +// Check the display system +nm = neldermead_new (); +nm +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_defaultoutput.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_defaultoutput.dia.ref new file mode 100755 index 000000000..21e9ce16c --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_defaultoutput.dia.ref @@ -0,0 +1,86 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// Check behaviour with default output function. +// +function [ f , index ] = quadratic ( x , index ) + f = x(1)^2 + x(2)^2; +endfunction +x0 = [1.0 1.0].'; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",quadratic); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-outputcommand",neldermead_defaultoutput); +nm = neldermead_search(nm, "off"); +Initialization +Iter. #0, Feval #5, Fval = 2 -- init +Iter. #1, Feval #5, Fval = 2 -- init +Iter. #2, Feval #6, Fval = 2 -- reflection +Iter. #3, Feval #8, Fval = 0.5 -- expansion +Iter. #4, Feval #9, Fval = 0.5 -- reflection +Iter. #5, Feval #11, Fval = 0.5 -- insidecontraction +Iter. #6, Feval #13, Fval = 0.125 -- insidecontraction +Iter. #7, Feval #15, Fval = 0.0390625 -- insidecontraction +Iter. #8, Feval #17, Fval = 0.0390625 -- insidecontraction +Iter. #9, Feval #18, Fval = 0.0390625 -- reflection +Iter. #10, Feval #20, Fval = 0.0221252 -- insidecontraction +Iter. #11, Feval #22, Fval = 0.0054417 -- insidecontraction +Iter. #12, Feval #24, Fval = 0.0032459 -- insidecontraction +Iter. #13, Feval #26, Fval = 0.0032459 -- outsidecontraction +Iter. #14, Feval #28, Fval = 0.0003375 -- insidecontraction +Iter. #15, Feval #29, Fval = 0.0003375 -- reflection +Iter. #16, Feval #31, Fval = 0.0003375 -- insidecontraction +Iter. #17, Feval #33, Fval = 0.0003375 -- outsidecontraction +Iter. #18, Feval #35, Fval = 0.0001123 -- insidecontraction +Iter. #19, Feval #36, Fval = 0.0001123 -- reflection +Iter. #20, Feval #38, Fval = 0.0000555 -- insidecontraction +Iter. #21, Feval #40, Fval = 0.0000332 -- insidecontraction +Iter. #22, Feval #42, Fval = 0.0000075 -- insidecontraction +Iter. #23, Feval #44, Fval = 0.0000075 -- insidecontraction +Iter. #24, Feval #46, Fval = 0.0000061 -- outsidecontraction +Iter. #25, Feval #48, Fval = 0.0000011 -- insidecontraction +Iter. #26, Feval #50, Fval = 0.0000011 -- insidecontraction +Iter. #27, Feval #51, Fval = 0.0000011 -- reflection +Iter. #28, Feval #53, Fval = 0.0000002 -- insidecontraction +Iter. #29, Feval #55, Fval = 0.0000002 -- insidecontraction +Iter. #30, Feval #57, Fval = 0.0000002 -- insidecontraction +Iter. #31, Feval #59, Fval = 5.056D-08 -- insidecontraction +Iter. #32, Feval #61, Fval = 4.785D-08 -- insidecontraction +Iter. #33, Feval #63, Fval = 1.380D-08 -- insidecontraction +Iter. #34, Feval #65, Fval = 1.380D-08 -- insidecontraction +Iter. #35, Feval #67, Fval = 3.535D-09 -- outsidecontraction +Iter. #36, Feval #69, Fval = 1.198D-09 -- insidecontraction +Iter. #37, Feval #71, Fval = 8.566D-10 -- outsidecontraction +Iter. #38, Feval #73, Fval = 3.482D-10 -- insidecontraction +Iter. #39, Feval #75, Fval = 1.984D-10 -- insidecontraction +Iter. #40, Feval #77, Fval = 1.609D-10 -- insidecontraction +Iter. #41, Feval #79, Fval = 1.898D-11 -- insidecontraction +Iter. #42, Feval #81, Fval = 1.898D-11 -- insidecontraction +Iter. #43, Feval #83, Fval = 1.898D-11 -- outsidecontraction +Iter. #44, Feval #85, Fval = 5.578D-12 -- insidecontraction +Iter. #45, Feval #87, Fval = 5.214D-12 -- insidecontraction +Iter. #46, Feval #89, Fval = 3.361D-12 -- insidecontraction +Iter. #47, Feval #91, Fval = 8.557D-13 -- insidecontraction +Iter. #48, Feval #92, Fval = 8.557D-13 -- reflection +Iter. #49, Feval #94, Fval = 7.893D-13 -- insidecontraction +Iter. #50, Feval #96, Fval = 1.601D-13 -- insidecontraction +Iter. #51, Feval #98, Fval = 1.291D-13 -- insidecontraction +Iter. #52, Feval #100, Fval = 3.139D-14 -- outsidecontraction +End of Optimization +Iter. #52, Feval #100, Fval = 3.139D-14 -- done +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0;0], [], 1e-6 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "maxfuneval" ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_defaultoutput.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_defaultoutput.tst new file mode 100755 index 000000000..508126edd --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_defaultoutput.tst @@ -0,0 +1,34 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + +// +// Check behaviour with default output function. +// + +function [ f , index ] = quadratic ( x , index ) + f = x(1)^2 + x(2)^2; +endfunction +x0 = [1.0 1.0].'; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",quadratic); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-outputcommand",neldermead_defaultoutput); +nm = neldermead_search(nm, "off"); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0;0], [], 1e-6 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "maxfuneval" ); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_mckinnon.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_mckinnon.dia.ref new file mode 100755 index 000000000..d171418e8 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_mckinnon.dia.ref @@ -0,0 +1,411 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// There is a Warning message in the .dia of this test, +// with respect to the conditionning of the direction matrix. +// This is an expected message, because the simplex is degenerated +// after the first optimization, which has failed. +// The restart allows to compute a new simplex and makes the +// optimization converge toward the good point. +//% MCKINNON computes the McKinnon function. +// +// Discussion: +// +// This function has a global minimizer: +// +// X* = ( 0.0, -0.5 ), F(X*) = -0.25 +// +// There are three parameters, TAU, THETA and PHI. +// +// 1 < TAU, then F is strictly convex. +// and F has continuous first derivatives. +// 2 < TAU, then F has continuous second derivatives. +// 3 < TAU, then F has continuous third derivatives. +// +// However, this function can cause the Nelder-Mead optimization +// algorithm to "converge" to a point which is not the minimizer +// of the function F. +// +// Sample parameter values which cause problems for Nelder-Mead +// include: +// +// TAU = 1, THETA = 15, PHI = 10; +// TAU = 2, THETA = 6, PHI = 60; +// TAU = 3, THETA = 6, PHI = 400; +// +// To get the bad behavior, we also assume the initial simplex has the form +// +// X1 = (0,0), +// X2 = (1,1), +// X3 = (A,B), +// +// where +// +// A = (1+sqrt(33))/8 = 0.84307... +// B = (1-sqrt(33))/8 = -0.59307... +// +// Licensing: +// +// This code is distributed under the GNU LGPL license. +// +// Modified: +// +// 09 February 2008 +// +// Author: +// +// John Burkardt +// +// Reference: +// +// Ken McKinnon, +// Convergence of the Nelder-Mead simplex method to a nonstationary point, +// SIAM Journal on Optimization, +// Volume 9, Number 1, 1998, pages 148-158. +// +// Parameters: +// +// Input, real X(2), the argument of the function. +// +// Output, real F, the value of the function at X. +// +// Copyright (C) 2009 - INRIA - Michael Baudin, Scilab port +function [ f , index ] = mckinnon3 ( x , index ) + if ( length ( x ) ~= 2 ) + error ( 'Error: function expects a two dimensional input\n' ); + end + tau = 3.0; + theta = 6.0; + phi = 400.0; + if ( x(1) <= 0.0 ) + f = theta * phi * abs ( x(1) ).^tau + x(2) * ( 1.0 + x(2) ); + else + f = theta * x(1).^tau + x(2) * ( 1.0 + x(2) ); + end +endfunction +lambda1 = (1.0 + sqrt(33.0))/8.0; +lambda2 = (1.0 - sqrt(33.0))/8.0; +coords0 = [ +1.0 1.0 +0.0 0.0 +lambda1 lambda2 +]; +// +// Test with default NM +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",300); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm); +// This is not the real, absolute optimum, +// but this is the expected result of the Nelder-Mead +// algorithm. +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , 1e-6 ); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +nm = neldermead_destroy(nm); +// +// Test with manual restart +// Uses oriented simplex for restart. +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm); +nm = neldermead_restart ( nm ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-3 , 1.e-3 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-6 ); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +nm = neldermead_destroy(nm); +// +// Test with Kelley stagnation criteria +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-6); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "kelleystagnation" ); +nm = neldermead_destroy(nm); +// +// Test with auto-restart, Kelley stagnation detection and Kelley restart method +// Uses oriented simplex for restart. +// There are 2 restarts and final status is "tolx". +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","kelley"); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolx" ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-5 , 1.e-6 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-6 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 100 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 2 ); +nm = neldermead_destroy(nm); +// +// Test with auto-restart, low precision on simplex size and O'Neill restart method. +// Uses oriented simplex for restart. +// There is 1 restart and final status is "tolsize". +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%t); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","oneill"); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-4 , 1.e-3); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-4 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 40 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); +// +// Test with auto-restart, Kelley stagnation detection and Kelley restart method +// Use axes simplex for restart. +// Use a reduced alpha0 so that restart occur earlier (test is faster). +// There is 1 restart and final status is "tolsize". +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","kelley"); +nm = neldermead_configure(nm,"-restartsimplexmethod","axes"); +nm = neldermead_configure(nm,"-kelleystagnationalpha0",1.e-2); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-3 , 1.e-2 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-4 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 30 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); +// +// Test with auto-restart, Kelley stagnation detection and Kelley restart method +// Use spendley simplex for restart. +// Use a reduced alpha0 so that restart occur earlier (test is faster). +// There is 1 restart and final status is "tolsize". +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","kelley"); +nm = neldermead_configure(nm,"-restartsimplexmethod","spendley"); +nm = neldermead_configure(nm,"-kelleystagnationalpha0",1.e-2); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-2, 1.e-2 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-4 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 30 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); +// +// Test with auto-restart, Kelley stagnation detection and Kelley restart method +// Use pfeffer simplex for restart. +// Use a reduced alpha0 so that restart occur earlier (test is faster). +// Pfeffer's initial simplex may be the better for restart, since it +// respects the optimal point computed so far. +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","kelley"); +nm = neldermead_configure(nm,"-restartsimplexmethod","pfeffer"); +nm = neldermead_configure(nm,"-kelleystagnationalpha0",1.e-1); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-5 , 1.e-4); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-4 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 50 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); +// +// Test with auto-restart, low precision on simplex size and O'Neill restart method. +// Uses oriented simplex for restart. +// There is 1 restart and final status is "tolsize". +// Configure the restartstep option: scalar case +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%t); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","oneill"); +nm = neldermead_configure(nm,"-restartstep", 0.5 ); +nm = neldermead_search(nm); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-3, 1.e-3 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 40 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); +// +// Test with auto-restart, low precision on simplex size and O'Neill restart method. +// Uses oriented simplex for restart. +// There is 1 restart and final status is "tolsize". +// Configure the restartstep option: column vector case +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%t); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","oneill"); +nm = neldermead_configure(nm,"-restartstep", [0.5 0.1]'); +nm = neldermead_search(nm); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-3, 1.e-3 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 40 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); +// +// Test with auto-restart, low precision on simplex size and O'Neill restart method. +// Uses oriented simplex for restart. +// There is 1 restart and final status is "tolsize". +// Configure the restarteps option +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%t); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","oneill"); +nm = neldermead_configure(nm,"-restarteps", 0.1); +nm = neldermead_search(nm); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-3, 1.e-3 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 40 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_mckinnon.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_mckinnon.tst new file mode 100755 index 000000000..4846f51bd --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_mckinnon.tst @@ -0,0 +1,435 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + +// There is a Warning message in the .dia of this test, +// with respect to the conditionning of the direction matrix. +// This is an expected message, because the simplex is degenerated +// after the first optimization, which has failed. +// The restart allows to compute a new simplex and makes the +// optimization converge toward the good point. + + + +//% MCKINNON computes the McKinnon function. +// +// Discussion: +// +// This function has a global minimizer: +// +// X* = ( 0.0, -0.5 ), F(X*) = -0.25 +// +// There are three parameters, TAU, THETA and PHI. +// +// 1 < TAU, then F is strictly convex. +// and F has continuous first derivatives. +// 2 < TAU, then F has continuous second derivatives. +// 3 < TAU, then F has continuous third derivatives. +// +// However, this function can cause the Nelder-Mead optimization +// algorithm to "converge" to a point which is not the minimizer +// of the function F. +// +// Sample parameter values which cause problems for Nelder-Mead +// include: +// +// TAU = 1, THETA = 15, PHI = 10; +// TAU = 2, THETA = 6, PHI = 60; +// TAU = 3, THETA = 6, PHI = 400; +// +// To get the bad behavior, we also assume the initial simplex has the form +// +// X1 = (0,0), +// X2 = (1,1), +// X3 = (A,B), +// +// where +// +// A = (1+sqrt(33))/8 = 0.84307... +// B = (1-sqrt(33))/8 = -0.59307... +// +// Licensing: +// +// This code is distributed under the GNU LGPL license. +// +// Modified: +// +// 09 February 2008 +// +// Author: +// +// John Burkardt +// +// Reference: +// +// Ken McKinnon, +// Convergence of the Nelder-Mead simplex method to a nonstationary point, +// SIAM Journal on Optimization, +// Volume 9, Number 1, 1998, pages 148-158. +// +// Parameters: +// +// Input, real X(2), the argument of the function. +// +// Output, real F, the value of the function at X. +// +// Copyright (C) 2009 - INRIA - Michael Baudin, Scilab port + +function [ f , index ] = mckinnon3 ( x , index ) + + if ( length ( x ) ~= 2 ) + error ( 'Error: function expects a two dimensional input\n' ); + end + + tau = 3.0; + theta = 6.0; + phi = 400.0; + + if ( x(1) <= 0.0 ) + f = theta * phi * abs ( x(1) ).^tau + x(2) * ( 1.0 + x(2) ); + else + f = theta * x(1).^tau + x(2) * ( 1.0 + x(2) ); + end +endfunction + +lambda1 = (1.0 + sqrt(33.0))/8.0; +lambda2 = (1.0 - sqrt(33.0))/8.0; +coords0 = [ +1.0 1.0 +0.0 0.0 +lambda1 lambda2 +]; + +// +// Test with default NM +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",300); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm); +// This is not the real, absolute optimum, +// but this is the expected result of the Nelder-Mead +// algorithm. +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , 1e-6 ); + +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +nm = neldermead_destroy(nm); + +// +// Test with manual restart +// Uses oriented simplex for restart. +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm); +nm = neldermead_restart ( nm ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-3 , 1.e-3 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-6 ); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +nm = neldermead_destroy(nm); + +// +// Test with Kelley stagnation criteria +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-6); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "kelleystagnation" ); +nm = neldermead_destroy(nm); + +// +// Test with auto-restart, Kelley stagnation detection and Kelley restart method +// Uses oriented simplex for restart. +// There are 2 restarts and final status is "tolx". +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","kelley"); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolx" ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-5 , 1.e-6 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-6 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 100 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 2 ); +nm = neldermead_destroy(nm); + +// +// Test with auto-restart, low precision on simplex size and O'Neill restart method. +// Uses oriented simplex for restart. +// There is 1 restart and final status is "tolsize". +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%t); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","oneill"); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-4 , 1.e-3); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-4 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 40 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); + +// +// Test with auto-restart, Kelley stagnation detection and Kelley restart method +// Use axes simplex for restart. +// Use a reduced alpha0 so that restart occur earlier (test is faster). +// There is 1 restart and final status is "tolsize". +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","kelley"); +nm = neldermead_configure(nm,"-restartsimplexmethod","axes"); +nm = neldermead_configure(nm,"-kelleystagnationalpha0",1.e-2); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-3 , 1.e-2 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-4 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 30 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); + +// +// Test with auto-restart, Kelley stagnation detection and Kelley restart method +// Use spendley simplex for restart. +// Use a reduced alpha0 so that restart occur earlier (test is faster). +// There is 1 restart and final status is "tolsize". +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","kelley"); +nm = neldermead_configure(nm,"-restartsimplexmethod","spendley"); +nm = neldermead_configure(nm,"-kelleystagnationalpha0",1.e-2); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-2, 1.e-2 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-4 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 30 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); + +// +// Test with auto-restart, Kelley stagnation detection and Kelley restart method +// Use pfeffer simplex for restart. +// Use a reduced alpha0 so that restart occur earlier (test is faster). +// Pfeffer's initial simplex may be the better for restart, since it +// respects the optimal point computed so far. +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","kelley"); +nm = neldermead_configure(nm,"-restartsimplexmethod","pfeffer"); +nm = neldermead_configure(nm,"-kelleystagnationalpha0",1.e-1); +nm = neldermead_search(nm); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-5 , 1.e-4); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -0.25 , 1e-4 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 50 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); + +// +// Test with auto-restart, low precision on simplex size and O'Neill restart method. +// Uses oriented simplex for restart. +// There is 1 restart and final status is "tolsize". +// Configure the restartstep option: scalar case +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%t); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","oneill"); +nm = neldermead_configure(nm,"-restartstep", 0.5 ); +nm = neldermead_search(nm); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-3, 1.e-3 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 40 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); + +// +// Test with auto-restart, low precision on simplex size and O'Neill restart method. +// Uses oriented simplex for restart. +// There is 1 restart and final status is "tolsize". +// Configure the restartstep option: column vector case +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%t); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","oneill"); +nm = neldermead_configure(nm,"-restartstep", [0.5 0.1]'); +nm = neldermead_search(nm); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-3, 1.e-3 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 40 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); + +// +// Test with auto-restart, low precision on simplex size and O'Neill restart method. +// Uses oriented simplex for restart. +// There is 1 restart and final status is "tolsize". +// Configure the restarteps option +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%t); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-restartflag",%t); +nm = neldermead_configure(nm,"-restartdetection","oneill"); +nm = neldermead_configure(nm,"-restarteps", 0.1); +nm = neldermead_search(nm); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;-0.5], 1e-3, 1.e-3 ); +iterations = neldermead_get(nm,"-iterations"); +assert_checkequal ( ( iterations > 40 ) , %t ); +restartnb = neldermead_get ( nm , "-restartnb" ); +assert_checkequal ( restartnb , 1 ); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_mymethod.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_mymethod.dia.ref new file mode 100755 index 000000000..3d3c82f5f --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_mymethod.dia.ref @@ -0,0 +1,378 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// Reference: +// +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 +// +// optimtestcase -- +// Non linear inequality constraints are positive. +// +// Arguments +// x: the point where to compute the function +// index : the stuff to compute +// +function [ f , c , index ] = optimtestcase ( x , index ) + f = [] + c = [] + if ( ( index == 2 ) | ( index == 6 ) ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( ( index == 5 ) | ( index == 6 ) ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction +// +// neldermead_constraints -- +// The Nelder-Mead algorithm, with variable-size simplex +// and modifications for bounds and +// inequality constraints. +// +function this = neldermead_constraints ( this ) + // Check settings correspond to algo + [ this.optbase , hascons ] = optimbase_hasconstraints ( this.optbase ); + if ( ~hascons ) then + errmsg = msprintf(gettext("%s: Problem has no constraints, but variable algorithm is designed for them."), "neldermead_constraints") + error(errmsg) + end + verbose = optimbase_cget ( this.optbase , "-verbose" ) + // + // Order the vertices for the first time + // + simplex = this.simplex0; + n = optimbase_cget ( this.optbase , "-numberofvariables" ); + fvinitial = optimbase_get ( this.optbase , "-fx0" ); + // Sort function values and x points by increasing function value order + this = neldermead_log (this,"Step #1 : order"); + simplex = optimsimplex_sort ( simplex ); + currentcenter = optimsimplex_center ( simplex ); + currentxopt = optimbase_cget ( this.optbase , "-x0" ); + newfvmean = optimsimplex_fvmean ( simplex ); + nbve = optimsimplex_getnbve ( simplex ); + ihigh = nbve; + inext = ihigh - 1 + ilow = 1 + [ this.optbase , hasbounds ] = optimbase_hasbounds ( this.optbase ); + nbnlc = optimbase_cget ( this.optbase , "-nbineqconst" ) + // + // Initialize + // + terminate = %f; + iter = 0; + step = "init"; + // + // Nelder-Mead Loop + // + while ( ~terminate ) + this.optbase = optimbase_incriter ( this.optbase ); + iter = iter + 1; + xlow = optimsimplex_getx ( simplex , ilow ) + flow = optimsimplex_getfv ( simplex , ilow ) + xhigh = optimsimplex_getx ( simplex , ihigh ) + fhigh = optimsimplex_getfv ( simplex , ihigh ) + xn = optimsimplex_getx ( simplex , inext ) + fn = optimsimplex_getfv ( simplex , inext ) + // + // Store history + // + xcoords = optimsimplex_getallx ( simplex ) + this = neldermead_storehistory ( this , n , flow , xlow , xcoords ); + currentfopt = flow; + previousxopt = currentxopt; + currentxopt = xlow; + previouscenter = currentcenter; + currentcenter = optimsimplex_center ( simplex ); + oldfvmean = newfvmean; + newfvmean = optimsimplex_fvmean ( simplex ); + if ( verbose == 1 ) then + deltafv = abs(optimsimplex_deltafvmax ( simplex )); + totaliter = optimbase_get ( this.optbase , "-iterations" ); + funevals = optimbase_get ( this.optbase , "-funevals" ); + ssize = optimsimplex_size ( simplex ) + this = neldermead_log (this,sprintf("=================================================================")); + this = neldermead_log (this,sprintf("Iteration #%d (total = %d)",iter,totaliter)); + this = neldermead_log (this,sprintf("Function Eval #%d",funevals)); + this = neldermead_log (this,sprintf("Xopt : [%s]",_strvec(xlow))); + this = neldermead_log (this,sprintf("Fopt : %e",flow)); + this = neldermead_log (this,sprintf("DeltaFv : %e",deltafv)); + this = neldermead_log (this,sprintf("Center : [%s]",_strvec(currentcenter))); + this = neldermead_log (this,sprintf("Size : %e",ssize)); + str = optimsimplex_tostring ( simplex ) + for i = 1:nbve + this = neldermead_log (this,str(i)); + end + end + neldermead_outputcmd ( this, "iter" , simplex , step ) + // + // Update termination flag + // + if ( iter > 1 ) then + [ this , terminate , status] = neldermead_termination (this , ... + fvinitial , oldfvmean , newfvmean , previouscenter , currentcenter , simplex ); + if ( terminate ) then + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Terminate with status : %s",status)); + end + break + end + end + // + // Compute xbar, center of better vertices + // + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Reflect")); + end + xbar = optimsimplex_xbar ( simplex ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xbar=[%s]" , _strvec(xbar))); + end + // + // Reflect the worst point with respect to center + // + xr = neldermead_interpolate ( xbar , xhigh , this.rho ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xr=[%s]" , _strvec(xr))); + end + // Adjust point to satisfy bounds and nonlinear inequality constraints + if ( hasbounds | nbnlc > 0 ) then + [ this , status , xr ] = _scaleinboundsandcons ( this , xr , xbar ); + if ( ~status ) then + status = "impossibleconstr" + break + end + end + [ this.optbase , fr , cr , index ] = optimbase_function ( this.optbase , xr , 2 ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xr=[%s], f(xr)=%f", _strvec(xr) , fr)); + end + if ( fr >= flow & fr < fn ) then + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform reflection")); + end + simplex = optimsimplex_setve ( simplex , ihigh , fr , xr ) + step = "reflection"; + elseif ( fr < flow ) then + // Expand + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Expand")); + end + xe = neldermead_interpolate ( xbar , xhigh , this.rho*this.chi ); + // Adjust point to satisfy bounds and nonlinear inequality constraints + if ( hasbounds | nbnlc > 0 ) then + [ this , status , xe ] = _scaleinboundsandcons ( this , xe , xbar ); + if ( ~status ) then + status = "impossibleconstr" + break + end + end + [ this.optbase , fe , ce , index ] = optimbase_function ( this.optbase , xe , 2 ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xe=[%s], f(xe)=%f", strcat(string(xe)," ") , fe )); + end + if (fe < fr) then + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform Expansion")); + end + simplex = optimsimplex_setve ( simplex , ihigh , fe , xe ) + step = "expansion"; + else + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform reflection")); + end + simplex = optimsimplex_setve ( simplex , ihigh , fr , xr ) + step = "reflection"; + end + elseif ( fr >= fn & fr < fhigh ) then + // Outside contraction + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Contract - outside")); + end + xc = neldermead_interpolate ( xbar , xhigh , this.rho*this.gamma ); + // Adjust point to satisfy bounds and nonlinear inequality constraints + if ( hasbounds | nbnlc > 0 ) then + [ this , status , xc ] = _scaleinboundsandcons ( this , xc , xbar ); + if ( ~status ) then + status = "impossibleconstr" + break + end + end + [ this.optbase , fc , cc , index ] = optimbase_function ( this.optbase , xc , 2 ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xc=[%s], f(xc)=%f", strcat(string(xc)," ") , fc)); + end + if ( fc <= fr ) then + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform Outside Contraction")); + end + simplex = optimsimplex_setve ( simplex , ihigh , fc , xc ) + step = "outsidecontraction"; + else + // Shrink + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform Shrink")); + end + [ simplex , this ] = optimsimplex_shrink ( simplex , neldermead_costf , this.sigma , this ); + step = "shrink"; + end + else + // ( fr >= fn & fr >= fhigh ) + // Inside contraction + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Contract - inside")); + end + xc = neldermead_interpolate ( xbar , xhigh , -this.gamma ); + // Adjust point to satisfy bounds and nonlinear inequality constraints + if ( hasbounds | nbnlc > 0 ) then + [ this , status , xc ] = _scaleinboundsandcons ( this , xc , xbar ); + if ( ~status ) then + status = "impossibleconstr" + break + end + end + [ this.optbase , fc , cc , index ] = optimbase_function ( this.optbase , xc , 2 ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xc=[%s], f(xc)=%f", strcat(string(xc)," ") , fc)); + end + if ( fc < fhigh ) then + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform Inside Contraction")); + end + simplex = optimsimplex_setve ( simplex , ihigh , fc , xc ) + step = "insidecontraction"; + else + // Shrink + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform Shrink")); + end + [ simplex , this ] = optimsimplex_shrink ( simplex , neldermead_costf , this.sigma , this ) + step = "shrink"; + end + end + // + // Sort simplex + // + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Sort")); + end + simplex = optimsimplex_sort ( simplex ); + end + this.optbase = optimbase_set ( this.optbase , "-xopt" , xlow.' ); + this.optbase = optimbase_set ( this.optbase , "-fopt" , flow ); + this.optbase = optimbase_set ( this.optbase , "-status" , status ); + this.simplexopt = simplex; +endfunction + // + // _scaleinboundsandcons -- + // Given a point to scale and a reference point which satisfies the constraints, + // scale the point towards the reference point until it satisfies all the constraints, + // including boun constraints. + // Returns isscaled = %T if the procedure has succeded before -boxnbnlloops + // Returns isscaled = %F if the procedure has failed after -boxnbnlloops + // iterations. + // Arguments + // x : the point to scale + // xref : the reference point + // isscaled : %T or %F + // p : scaled point + // +function [ this , isscaled , p ] = _scaleinboundsandcons ( this , x , xref ) + p = x + [ this.optbase , hasbounds ] = optimbase_hasbounds ( this.optbase ); + nbnlc = optimbase_cget ( this.optbase , "-nbineqconst" ) + // + // 1. No bounds, no nonlinear inequality constraints + // => no problem + // + if ( ( hasbounds == %f ) & ( nbnlc == 0 ) ) then + isscaled = %T + return; + end + isscaled = %F + // + // 2. Scale into bounds + // + if ( hasbounds ) then + [ this.optbase , p ] = optimbase_proj2bnds ( this.optbase , p ); + this = neldermead_log (this,sprintf(" > After projection into bounds p = [%s]" , ... + _strvec(p))); + end + // + // 2. Scale into nonlinear constraints + // Try the current point and see if the constraints are satisfied. + // If not, move the point "halfway" to the centroid, + // which should satisfy the constraints, if + // the constraints are convex. + // Perform this loop until the constraints are satisfied. + // If all loops have been performed without success, the scaling + // has failed. + // + alpha = 1.0 + p0 = p + while ( alpha > this.guinalphamin ) + [ this.optbase , feasible ] = optimbase_isinnonlincons ( this.optbase , p ); + if ( feasible ) then + isscaled = %T; + break; + end + alpha = alpha / 2.0 + this = neldermead_log (this,sprintf("Scaling inequality constraint with alpha = %e", ... + alpha )); + p = ( 1.0 - alpha ) * xref + alpha * p0; + end + this = neldermead_log (this,sprintf(" > After scaling into inequality constraints p = [%s]" , ... + _strvec(p) ) ); + if ( ~isscaled ) then + this = neldermead_log (this,sprintf(" > Impossible to scale into constraints." )); + end +endfunction +// +// Test with my own algorithm, +// the "Mega Super Ultra Modified Simplex Method" !!! +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",400); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-3); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-method","mine"); +nm = neldermead_configure(nm,"-mymethod",neldermead_constraints); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-3, 1e-3 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-5 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_mymethod.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_mymethod.tst new file mode 100755 index 000000000..28cb02610 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_mymethod.tst @@ -0,0 +1,387 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + + + +// +// Reference: +// +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 + +// +// optimtestcase -- +// Non linear inequality constraints are positive. +// +// Arguments +// x: the point where to compute the function +// index : the stuff to compute +// +function [ f , c , index ] = optimtestcase ( x , index ) + f = [] + c = [] + if ( ( index == 2 ) | ( index == 6 ) ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( ( index == 5 ) | ( index == 6 ) ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction +// +// neldermead_constraints -- +// The Nelder-Mead algorithm, with variable-size simplex +// and modifications for bounds and +// inequality constraints. +// +function this = neldermead_constraints ( this ) + // Check settings correspond to algo + [ this.optbase , hascons ] = optimbase_hasconstraints ( this.optbase ); + if ( ~hascons ) then + errmsg = msprintf(gettext("%s: Problem has no constraints, but variable algorithm is designed for them."), "neldermead_constraints") + error(errmsg) + end + verbose = optimbase_cget ( this.optbase , "-verbose" ) + // + // Order the vertices for the first time + // + simplex = this.simplex0; + n = optimbase_cget ( this.optbase , "-numberofvariables" ); + fvinitial = optimbase_get ( this.optbase , "-fx0" ); + // Sort function values and x points by increasing function value order + this = neldermead_log (this,"Step #1 : order"); + simplex = optimsimplex_sort ( simplex ); + currentcenter = optimsimplex_center ( simplex ); + currentxopt = optimbase_cget ( this.optbase , "-x0" ); + newfvmean = optimsimplex_fvmean ( simplex ); + nbve = optimsimplex_getnbve ( simplex ); + ihigh = nbve; + inext = ihigh - 1 + ilow = 1 + [ this.optbase , hasbounds ] = optimbase_hasbounds ( this.optbase ); + nbnlc = optimbase_cget ( this.optbase , "-nbineqconst" ) + // + // Initialize + // + terminate = %f; + iter = 0; + step = "init"; + // + // Nelder-Mead Loop + // + while ( ~terminate ) + this.optbase = optimbase_incriter ( this.optbase ); + iter = iter + 1; + xlow = optimsimplex_getx ( simplex , ilow ) + flow = optimsimplex_getfv ( simplex , ilow ) + xhigh = optimsimplex_getx ( simplex , ihigh ) + fhigh = optimsimplex_getfv ( simplex , ihigh ) + xn = optimsimplex_getx ( simplex , inext ) + fn = optimsimplex_getfv ( simplex , inext ) + // + // Store history + // + xcoords = optimsimplex_getallx ( simplex ) + this = neldermead_storehistory ( this , n , flow , xlow , xcoords ); + currentfopt = flow; + previousxopt = currentxopt; + currentxopt = xlow; + previouscenter = currentcenter; + currentcenter = optimsimplex_center ( simplex ); + oldfvmean = newfvmean; + newfvmean = optimsimplex_fvmean ( simplex ); + if ( verbose == 1 ) then + deltafv = abs(optimsimplex_deltafvmax ( simplex )); + totaliter = optimbase_get ( this.optbase , "-iterations" ); + funevals = optimbase_get ( this.optbase , "-funevals" ); + ssize = optimsimplex_size ( simplex ) + this = neldermead_log (this,sprintf("=================================================================")); + this = neldermead_log (this,sprintf("Iteration #%d (total = %d)",iter,totaliter)); + this = neldermead_log (this,sprintf("Function Eval #%d",funevals)); + this = neldermead_log (this,sprintf("Xopt : [%s]",_strvec(xlow))); + this = neldermead_log (this,sprintf("Fopt : %e",flow)); + this = neldermead_log (this,sprintf("DeltaFv : %e",deltafv)); + this = neldermead_log (this,sprintf("Center : [%s]",_strvec(currentcenter))); + this = neldermead_log (this,sprintf("Size : %e",ssize)); + str = optimsimplex_tostring ( simplex ) + for i = 1:nbve + this = neldermead_log (this,str(i)); + end + end + neldermead_outputcmd ( this, "iter" , simplex , step ) + + // + // Update termination flag + // + if ( iter > 1 ) then + [ this , terminate , status] = neldermead_termination (this , ... + fvinitial , oldfvmean , newfvmean , previouscenter , currentcenter , simplex ); + if ( terminate ) then + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Terminate with status : %s",status)); + end + break + end + end + // + // Compute xbar, center of better vertices + // + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Reflect")); + end + xbar = optimsimplex_xbar ( simplex ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xbar=[%s]" , _strvec(xbar))); + end + // + // Reflect the worst point with respect to center + // + xr = neldermead_interpolate ( xbar , xhigh , this.rho ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xr=[%s]" , _strvec(xr))); + end + // Adjust point to satisfy bounds and nonlinear inequality constraints + if ( hasbounds | nbnlc > 0 ) then + [ this , status , xr ] = _scaleinboundsandcons ( this , xr , xbar ); + if ( ~status ) then + status = "impossibleconstr" + break + end + end + [ this.optbase , fr , cr , index ] = optimbase_function ( this.optbase , xr , 2 ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xr=[%s], f(xr)=%f", _strvec(xr) , fr)); + end + if ( fr >= flow & fr < fn ) then + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform reflection")); + end + simplex = optimsimplex_setve ( simplex , ihigh , fr , xr ) + step = "reflection"; + elseif ( fr < flow ) then + // Expand + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Expand")); + end + xe = neldermead_interpolate ( xbar , xhigh , this.rho*this.chi ); + // Adjust point to satisfy bounds and nonlinear inequality constraints + if ( hasbounds | nbnlc > 0 ) then + [ this , status , xe ] = _scaleinboundsandcons ( this , xe , xbar ); + if ( ~status ) then + status = "impossibleconstr" + break + end + end + [ this.optbase , fe , ce , index ] = optimbase_function ( this.optbase , xe , 2 ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xe=[%s], f(xe)=%f", strcat(string(xe)," ") , fe )); + end + if (fe < fr) then + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform Expansion")); + end + simplex = optimsimplex_setve ( simplex , ihigh , fe , xe ) + step = "expansion"; + else + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform reflection")); + end + simplex = optimsimplex_setve ( simplex , ihigh , fr , xr ) + step = "reflection"; + end + elseif ( fr >= fn & fr < fhigh ) then + // Outside contraction + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Contract - outside")); + end + xc = neldermead_interpolate ( xbar , xhigh , this.rho*this.gamma ); + // Adjust point to satisfy bounds and nonlinear inequality constraints + if ( hasbounds | nbnlc > 0 ) then + [ this , status , xc ] = _scaleinboundsandcons ( this , xc , xbar ); + if ( ~status ) then + status = "impossibleconstr" + break + end + end + [ this.optbase , fc , cc , index ] = optimbase_function ( this.optbase , xc , 2 ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xc=[%s], f(xc)=%f", strcat(string(xc)," ") , fc)); + end + if ( fc <= fr ) then + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform Outside Contraction")); + end + simplex = optimsimplex_setve ( simplex , ihigh , fc , xc ) + step = "outsidecontraction"; + else + // Shrink + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform Shrink")); + end + [ simplex , this ] = optimsimplex_shrink ( simplex , neldermead_costf , this.sigma , this ); + step = "shrink"; + end + else + // ( fr >= fn & fr >= fhigh ) + // Inside contraction + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Contract - inside")); + end + xc = neldermead_interpolate ( xbar , xhigh , -this.gamma ); + // Adjust point to satisfy bounds and nonlinear inequality constraints + if ( hasbounds | nbnlc > 0 ) then + [ this , status , xc ] = _scaleinboundsandcons ( this , xc , xbar ); + if ( ~status ) then + status = "impossibleconstr" + break + end + end + [ this.optbase , fc , cc , index ] = optimbase_function ( this.optbase , xc , 2 ); + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("xc=[%s], f(xc)=%f", strcat(string(xc)," ") , fc)); + end + if ( fc < fhigh ) then + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform Inside Contraction")); + end + simplex = optimsimplex_setve ( simplex , ihigh , fc , xc ) + step = "insidecontraction"; + else + // Shrink + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf(" > Perform Shrink")); + end + [ simplex , this ] = optimsimplex_shrink ( simplex , neldermead_costf , this.sigma , this ) + step = "shrink"; + end + end + // + // Sort simplex + // + if ( verbose == 1 ) then + this = neldermead_log (this,sprintf("Sort")); + end + simplex = optimsimplex_sort ( simplex ); + end + this.optbase = optimbase_set ( this.optbase , "-xopt" , xlow.' ); + this.optbase = optimbase_set ( this.optbase , "-fopt" , flow ); + this.optbase = optimbase_set ( this.optbase , "-status" , status ); + this.simplexopt = simplex; +endfunction + // + // _scaleinboundsandcons -- + // Given a point to scale and a reference point which satisfies the constraints, + // scale the point towards the reference point until it satisfies all the constraints, + // including boun constraints. + // Returns isscaled = %T if the procedure has succeded before -boxnbnlloops + // Returns isscaled = %F if the procedure has failed after -boxnbnlloops + // iterations. + // Arguments + // x : the point to scale + // xref : the reference point + // isscaled : %T or %F + // p : scaled point + // +function [ this , isscaled , p ] = _scaleinboundsandcons ( this , x , xref ) + p = x + [ this.optbase , hasbounds ] = optimbase_hasbounds ( this.optbase ); + nbnlc = optimbase_cget ( this.optbase , "-nbineqconst" ) + // + // 1. No bounds, no nonlinear inequality constraints + // => no problem + // + if ( ( hasbounds == %f ) & ( nbnlc == 0 ) ) then + isscaled = %T + return; + end + isscaled = %F + // + // 2. Scale into bounds + // + if ( hasbounds ) then + [ this.optbase , p ] = optimbase_proj2bnds ( this.optbase , p ); + this = neldermead_log (this,sprintf(" > After projection into bounds p = [%s]" , ... + _strvec(p))); + end + // + // 2. Scale into nonlinear constraints + // Try the current point and see if the constraints are satisfied. + // If not, move the point "halfway" to the centroid, + // which should satisfy the constraints, if + // the constraints are convex. + // Perform this loop until the constraints are satisfied. + // If all loops have been performed without success, the scaling + // has failed. + // + alpha = 1.0 + p0 = p + while ( alpha > this.guinalphamin ) + [ this.optbase , feasible ] = optimbase_isinnonlincons ( this.optbase , p ); + if ( feasible ) then + isscaled = %T; + break; + end + alpha = alpha / 2.0 + this = neldermead_log (this,sprintf("Scaling inequality constraint with alpha = %e", ... + alpha )); + p = ( 1.0 - alpha ) * xref + alpha * p0; + end + this = neldermead_log (this,sprintf(" > After scaling into inequality constraints p = [%s]" , ... + _strvec(p) ) ); + if ( ~isscaled ) then + this = neldermead_log (this,sprintf(" > Impossible to scale into constraints." )); + end +endfunction + +// +// Test with my own algorithm, +// the "Mega Super Ultra Modified Simplex Method" !!! +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",400); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-3); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-method","mine"); +nm = neldermead_configure(nm,"-mymethod",neldermead_constraints); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-3, 1e-3 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-5 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminate.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminate.dia.ref new file mode 100755 index 000000000..59074fab1 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminate.dia.ref @@ -0,0 +1,56 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +function stop = myoutputcmd ( state , data ) + simplex = data.simplex + ssize = optimsimplex_size ( simplex , "sigmaplus" ); + if ( ssize < 1.e-2 ) then + stop = %t; + status = "mysize"; + else + stop = %f + end +endfunction +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test with my own termination criteria +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-maxiter",%inf); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-method","variable"); +// Disable default terminations +nm = neldermead_configure(nm,"-tolxmethod",%f); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%f); +nm = neldermead_configure(nm,"-outputcommand",myoutputcmd); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0 1.0]', 1e-2 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , [] , 1e-4 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "userstop" ); +// Check simplex size +simplex = neldermead_get(nm,"-simplexopt"); +ssize = optimsimplex_size ( simplex , "sigmaplus" ); +assert_checkequal ( ssize<1.e-1 , %t ); +// Check function evaluations +funevals = neldermead_get(nm,"-funevals"); +assert_checkequal ( funevals<200 , %t ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminate.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminate.tst new file mode 100755 index 000000000..d0be36288 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminate.tst @@ -0,0 +1,69 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + + + + +function stop = myoutputcmd ( state , data ) + simplex = data.simplex + ssize = optimsimplex_size ( simplex , "sigmaplus" ); + if ( ssize < 1.e-2 ) then + stop = %t; + status = "mysize"; + else + stop = %f + end +endfunction + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + + + + +// +// Test with my own termination criteria +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-maxiter",%inf); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-method","variable"); +// Disable default terminations +nm = neldermead_configure(nm,"-tolxmethod",%f); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%f); +nm = neldermead_configure(nm,"-outputcommand",myoutputcmd); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0 1.0]', 1e-2 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , [] , 1e-4 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "userstop" ); +// Check simplex size +simplex = neldermead_get(nm,"-simplexopt"); +ssize = optimsimplex_size ( simplex , "sigmaplus" ); +assert_checkequal ( ssize<1.e-1 , %t ); +// Check function evaluations +funevals = neldermead_get(nm,"-funevals"); +assert_checkequal ( funevals<200 , %t ); +nm = neldermead_destroy(nm); + + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminateobsolete.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminateobsolete.dia.ref new file mode 100755 index 000000000..63bcabf38 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminateobsolete.dia.ref @@ -0,0 +1,75 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// <-- NO CHECK REF --> +// This test is designed to produce a warning: +// this warning is localized. +// This is why we do not check the ref. +// Checking the ref file under Linux fails, because +// <-- ENGLISH IMPOSED --> has no effect there. +// See : http://bugzilla.scilab.org/show_bug.cgi?id=9284 +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Check backward compatibility: +// check obsolete options "-myterminateflag" and "-myterminate". +// +function [ this , terminate , status ] = mystoppingrule2 ( this , simplex ) + ssize = optimsimplex_size ( simplex , "sigmaplus" ); + if ( ssize < 1.e-2 ) then + terminate = %t; + status = "mysize"; + else + terminate = %f + end +endfunction +// +// Test with my own termination criteria +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-maxiter",%inf); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-method","variable"); +// Disable default terminations +nm = neldermead_configure(nm,"-tolxmethod",%f); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%f); +nm = neldermead_configure(nm,"-myterminateflag",%t); +WARNING: Option -myterminateflag is obsolete. + Please use -outputcommand instead. + This feature will be permanently removed in Scilab 5.4.1 + +nm = neldermead_configure(nm,"-myterminate",mystoppingrule2); +WARNING: Option -myterminate is obsolete. + Please use -outputcommand instead. + This feature will be permanently removed in Scilab 5.4.1 + +// +// Check cget +value = neldermead_cget(nm,"-myterminateflag"); +assert_checktrue ( value ); +// +value = neldermead_cget(nm,"-myterminate"); +assert_checkequal ( typeof(value) , "function" ); +// +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0 1.0]', 1e-2 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , [] , 1e-4 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "mysize" ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminateobsolete.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminateobsolete.tst new file mode 100755 index 000000000..be6f9c4d0 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminateobsolete.tst @@ -0,0 +1,77 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// <-- NO CHECK REF --> + +// This test is designed to produce a warning: +// this warning is localized. +// This is why we do not check the ref. +// Checking the ref file under Linux fails, because +// <-- ENGLISH IMPOSED --> has no effect there. +// See : http://bugzilla.scilab.org/show_bug.cgi?id=9284 + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Check backward compatibility: +// check obsolete options "-myterminateflag" and "-myterminate". +// +function [ this , terminate , status ] = mystoppingrule2 ( this , simplex ) + ssize = optimsimplex_size ( simplex , "sigmaplus" ); + if ( ssize < 1.e-2 ) then + terminate = %t; + status = "mysize"; + else + terminate = %f + end + +endfunction + + + +// +// Test with my own termination criteria +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-maxiter",%inf); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-method","variable"); +// Disable default terminations +nm = neldermead_configure(nm,"-tolxmethod",%f); +nm = neldermead_configure(nm,"-tolsimplexizemethod",%f); +nm = neldermead_configure(nm,"-myterminateflag",%t); +nm = neldermead_configure(nm,"-myterminate",mystoppingrule2); +// +// Check cget +value = neldermead_cget(nm,"-myterminateflag"); +assert_checktrue ( value ); +// +value = neldermead_cget(nm,"-myterminate"); +assert_checkequal ( typeof(value) , "function" ); +// +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0 1.0]', 1e-2 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , [] , 1e-4 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "mysize" ); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.dia.ref new file mode 100755 index 000000000..ca24613fc --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.dia.ref @@ -0,0 +1,423 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// Test basic new/destroy sequence +// +nm = neldermead_new (); +nm = neldermead_destroy(nm); +// +// Test printing system +// +nm = neldermead_new (); +str = string(nm) + str = + +!Nelder-Mead Object: ! +! ! +!====================== ! +! ! +! ! +! ! +!Simplex0 Method : axes ! +! ! +!Simplex0 Length : 1 ! +! ! +!Simplex0, Pfeffer, Delta Usual : 0.05 ! +! ! +!Simplex0, Pfeffer, Delta Zero : 0.0075 ! +! ! +!Simplex0, Given, Coords : ! +! ! +![] ! +! ! +! ! +! ! +!Termination parameters ! +! ! +!Termination on simplex size : T ! +! ! +!Termination on simplex size, Absolute Tolerance : 0 ! +! ! +!Termination on simplex size, Relative Tolerance : 2.220D-16 ! +! ! +!Termination on simplex size, Initial Simplex Size : 0 ! +! ! +!Termination on simplex size + Delta of function value : F ! +! ! +!Termination on simplex size + Delta of function value, Absolute Tolera! +! nce on Delta F : 2.220D-16 ! +! ! +!Termination on Kelley's Stagnation : F ! +! ! +!Termination on Kelley's Stagnation, Normalization : T ! +! ! +!Termination on Kelley's Stagnation, Alpha0 : 0.0001 ! +! ! +!Termination on Kelley's Stagnation, Alpha : 0.0001 ! +! ! +!Termination by Box : F ! +! ! +!Termination by Box, Absolute Tolerance on Function: 0.00001 ! +! ! +!Termination by Box, Maximum Number of Consecutive Match : 5 ! +! ! +!Termination by Box, Current Number of Consecutive Match : 0 ! +! ! +!Termination on Variance : F ! +! ! +!Termination on Variance, Absolute Tolerance : 0 ! +! ! +!Termination on Variance, Relative Tolerance : 2.220D-16 ! +! ! +!Termination on Variance, Variance of Initial Simplex : 0 ! +! ! +! ! +! ! +!Algorithms parameters ! +! ! +!Method : variable ! +! ! +!Reflection Factor (rho) : 1 ! +! ! +!Expansion Factor (chi) : 2 ! +! ! +!Contraction Factor (gamma) : 0.5 ! +! ! +!Shrinkage Factor (sigma) : 0.5 ! +! ! +!Kelley Stagnation : F ! +! ! +!Restart Epsilon : 2.220D-16 ! +! ! +!Restart Step : 1 ! +! ! +!Restart Maximum : 3 ! +! ! +!Restart Simplex Method : oriented ! +! ! +!Restart Flag : F ! +! ! +!Restart Number : 0 ! +! ! +!Restart Detection Method : oneill ! +! ! +!Startup Flag : F ! +! ! +!Automatic Checking of Cost Function : T ! +! ! +!Box, Number of Points : 2n ! +! ! +!Box, Current Number of Points : 0 ! +! ! +!Box, Scaling, Factor : 0.5 ! +! ! +!Box, Scaling, Method : tox0 ! +! ! +!Box, Scaling, Minimum : 0.00001 ! +! ! +!Box, Bounds Parameter: 0.000001 ! +! ! +!Box, Reflection Coefficient : 1.3 ! +! ! +! ! +! ! +!optbase: <TOPTIM Object> ! +! ! +!simplex0: <TSIMPLEX Object> ! +! ! +!simplexopt: <constant Object> ! +assert_checkequal ( typeof(str) , "string" ) + ans = + + T +nm + nm = + +Nelder-Mead Object: +====================== + +Simplex0 Method : axes +Simplex0 Length : 1 +Simplex0, Pfeffer, Delta Usual : 0.05 +Simplex0, Pfeffer, Delta Zero : 0.0075 +Simplex0, Given, Coords : +[] + +Termination parameters +Termination on simplex size : T +Termination on simplex size, Absolute Tolerance : 0 +Termination on simplex size, Relative Tolerance : 2.220D-16 +Termination on simplex size, Initial Simplex Size : 0 +Termination on simplex size + Delta of function value : F +Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : 2.220D-16 +Termination on Kelley's Stagnation : F +Termination on Kelley's Stagnation, Normalization : T +Termination on Kelley's Stagnation, Alpha0 : 0.0001 +Termination on Kelley's Stagnation, Alpha : 0.0001 +Termination by Box : F +Termination by Box, Absolute Tolerance on Function: 0.00001 +Termination by Box, Maximum Number of Consecutive Match : 5 +Termination by Box, Current Number of Consecutive Match : 0 +Termination on Variance : F +Termination on Variance, Absolute Tolerance : 0 +Termination on Variance, Relative Tolerance : 2.220D-16 +Termination on Variance, Variance of Initial Simplex : 0 + +Algorithms parameters +Method : variable +Reflection Factor (rho) : 1 +Expansion Factor (chi) : 2 +Contraction Factor (gamma) : 0.5 +Shrinkage Factor (sigma) : 0.5 +Kelley Stagnation : F +Restart Epsilon : 2.220D-16 +Restart Step : 1 +Restart Maximum : 3 +Restart Simplex Method : oriented +Restart Flag : F +Restart Number : 0 +Restart Detection Method : oneill +Startup Flag : F +Automatic Checking of Cost Function : T +Box, Number of Points : 2n +Box, Current Number of Points : 0 +Box, Scaling, Factor : 0.5 +Box, Scaling, Method : tox0 +Box, Scaling, Minimum : 0.00001 +Box, Bounds Parameter: 0.000001 +Box, Reflection Coefficient : 1.3 + +optbase: <TOPTIM Object> +simplex0: <TSIMPLEX Object> +simplexopt: <constant Object> +nm = neldermead_destroy(nm); +// +// optimtestcase -- +// Non linear inequality constraints are positive. +// +// Arguments +// x: the point where to compute the function +// index : the stuff to compute +// +function [ f , c , index ] = optimtestcase ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction +// +// Test printing system with various options configured +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-4); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-simplex0length",20.0); +str = string(nm) + str = + +!Nelder-Mead Object: ! +! ! +!====================== ! +! ! +! ! +! ! +!Simplex0 Method : axes ! +! ! +!Simplex0 Length : 20 ! +! ! +!Simplex0, Pfeffer, Delta Usual : 0.05 ! +! ! +!Simplex0, Pfeffer, Delta Zero : 0.0075 ! +! ! +!Simplex0, Given, Coords : ! +! ! +![] ! +! ! +! ! +! ! +!Termination parameters ! +! ! +!Termination on simplex size : T ! +! ! +!Termination on simplex size, Absolute Tolerance : 0 ! +! ! +!Termination on simplex size, Relative Tolerance : 0.0001 ! +! ! +!Termination on simplex size, Initial Simplex Size : 0 ! +! ! +!Termination on simplex size + Delta of function value : F ! +! ! +!Termination on simplex size + Delta of function value, Absolute Tolera! +! nce on Delta F : 2.220D-16 ! +! ! +!Termination on Kelley's Stagnation : F ! +! ! +!Termination on Kelley's Stagnation, Normalization : T ! +! ! +!Termination on Kelley's Stagnation, Alpha0 : 0.0001 ! +! ! +!Termination on Kelley's Stagnation, Alpha : 0.0001 ! +! ! +!Termination by Box : F ! +! ! +!Termination by Box, Absolute Tolerance on Function: 0.00001 ! +! ! +!Termination by Box, Maximum Number of Consecutive Match : 5 ! +! ! +!Termination by Box, Current Number of Consecutive Match : 0 ! +! ! +!Termination on Variance : F ! +! ! +!Termination on Variance, Absolute Tolerance : 0 ! +! ! +!Termination on Variance, Relative Tolerance : 2.220D-16 ! +! ! +!Termination on Variance, Variance of Initial Simplex : 0 ! +! ! +! ! +! ! +!Algorithms parameters ! +! ! +!Method : box ! +! ! +!Reflection Factor (rho) : 1 ! +! ! +!Expansion Factor (chi) : 2 ! +! ! +!Contraction Factor (gamma) : 0.5 ! +! ! +!Shrinkage Factor (sigma) : 0.5 ! +! ! +!Kelley Stagnation : F ! +! ! +!Restart Epsilon : 2.220D-16 ! +! ! +!Restart Step : 1 ! +! ! +!Restart Maximum : 3 ! +! ! +!Restart Simplex Method : oriented ! +! ! +!Restart Flag : F ! +! ! +!Restart Number : 0 ! +! ! +!Restart Detection Method : oneill ! +! ! +!Startup Flag : F ! +! ! +!Automatic Checking of Cost Function : T ! +! ! +!Box, Number of Points : 2n ! +! ! +!Box, Current Number of Points : 0 ! +! ! +!Box, Scaling, Factor : 0.5 ! +! ! +!Box, Scaling, Method : tox0 ! +! ! +!Box, Scaling, Minimum : 0.00001 ! +! ! +!Box, Bounds Parameter: 0.000001 ! +! ! +!Box, Reflection Coefficient : 1.3 ! +! ! +! ! +! ! +!optbase: <TOPTIM Object> ! +! ! +!simplex0: <TSIMPLEX Object> ! +! ! +!simplexopt: <constant Object> ! +assert_checkequal ( typeof(str) , "string" ) + ans = + + T +nm + nm = + +Nelder-Mead Object: +====================== + +Simplex0 Method : axes +Simplex0 Length : 20 +Simplex0, Pfeffer, Delta Usual : 0.05 +Simplex0, Pfeffer, Delta Zero : 0.0075 +Simplex0, Given, Coords : +[] + +Termination parameters +Termination on simplex size : T +Termination on simplex size, Absolute Tolerance : 0 +Termination on simplex size, Relative Tolerance : 0.0001 +Termination on simplex size, Initial Simplex Size : 0 +Termination on simplex size + Delta of function value : F +Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : 2.220D-16 +Termination on Kelley's Stagnation : F +Termination on Kelley's Stagnation, Normalization : T +Termination on Kelley's Stagnation, Alpha0 : 0.0001 +Termination on Kelley's Stagnation, Alpha : 0.0001 +Termination by Box : F +Termination by Box, Absolute Tolerance on Function: 0.00001 +Termination by Box, Maximum Number of Consecutive Match : 5 +Termination by Box, Current Number of Consecutive Match : 0 +Termination on Variance : F +Termination on Variance, Absolute Tolerance : 0 +Termination on Variance, Relative Tolerance : 2.220D-16 +Termination on Variance, Variance of Initial Simplex : 0 + +Algorithms parameters +Method : box +Reflection Factor (rho) : 1 +Expansion Factor (chi) : 2 +Contraction Factor (gamma) : 0.5 +Shrinkage Factor (sigma) : 0.5 +Kelley Stagnation : F +Restart Epsilon : 2.220D-16 +Restart Step : 1 +Restart Maximum : 3 +Restart Simplex Method : oriented +Restart Flag : F +Restart Number : 0 +Restart Detection Method : oneill +Startup Flag : F +Automatic Checking of Cost Function : T +Box, Number of Points : 2n +Box, Current Number of Points : 0 +Box, Scaling, Factor : 0.5 +Box, Scaling, Method : tox0 +Box, Scaling, Minimum : 0.00001 +Box, Bounds Parameter: 0.000001 +Box, Reflection Coefficient : 1.3 + +optbase: <TOPTIM Object> +simplex0: <TSIMPLEX Object> +simplexopt: <constant Object> +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.tst new file mode 100755 index 000000000..fd514e4a5 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.tst @@ -0,0 +1,77 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + + + +// +// Test basic new/destroy sequence +// +nm = neldermead_new (); +nm = neldermead_destroy(nm); + +// +// Test printing system +// +nm = neldermead_new (); +str = string(nm) +assert_checkequal ( typeof(str) , "string" ) +nm +nm = neldermead_destroy(nm); + +// +// optimtestcase -- +// Non linear inequality constraints are positive. +// +// Arguments +// x: the point where to compute the function +// index : the stuff to compute +// +function [ f , c , index ] = optimtestcase ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction + + +// +// Test printing system with various options configured +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-4); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-simplex0length",20.0); +str = string(nm) +assert_checkequal ( typeof(str) , "string" ) +nm +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_outputcmd.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_outputcmd.dia.ref new file mode 100755 index 000000000..f62844410 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_outputcmd.dia.ref @@ -0,0 +1,157 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +function [ y , index ] = myquad ( x , index ) + y = x(1)^2 + x(2)^2 +endfunction +// +// myoutputcmd -- +// This command is called back by the Nelder-Mead +// algorithm. +// Arguments +// state : the current state of the algorithm +// "init", "iter", "done" +// data : the data at the current state +// This is a tlist with the following entries: +// * x : the optimal vector of parameters +// * fval : the minimum function value +// * simplex : the simplex, as a simplex object +// * iteration : the number of iterations performed +// * funccount : the number of function evaluations +// * step : the type of step in the previous iteration +// stop: set to true to stop algorithm +// +function stop = myoutputcmd ( state , data ) + global _OUTPUCMDFLAG_ + // Unload the array, just to make sure that the minimum is there + iter = data.iteration + fc = data.funccount + fval = data.fval + x = data.x + simplex = data.simplex + step = data.step + // Simplex is a data structure, which can be managed + // by the simplex class. + v = optimsimplex_dirmat ( simplex ) + condv = cond ( v ) + _OUTPUCMDFLAG_ = 1 + stop = %f +endfunction +// +// Test the variable algorithm +// +global _OUTPUCMDFLAG_; +_OUTPUCMDFLAG_ = 0; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-outputcommand",myoutputcmd); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +// We are here, that means that the output command has been correctly +// called +assert_checkequal ( _OUTPUCMDFLAG_ , 1 ); +nm = neldermead_destroy(nm); +// +// Test the fixed algorithm +// +global _OUTPUCMDFLAG_; +_OUTPUCMDFLAG_ = 0; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_configure(nm,"-outputcommand",myoutputcmd); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +// We are here, that means that the output command has been correctly +// called +assert_checkequal ( _OUTPUCMDFLAG_ , 1 ); +nm = neldermead_destroy(nm); +// +// Test the Box algorithm +// +global _OUTPUCMDFLAG_; +_OUTPUCMDFLAG_ = 0; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0]); +nm = neldermead_configure(nm,"-outputcommand",myoutputcmd); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +// We are here, that means that the output command has been correctly +// called +assert_checkequal ( _OUTPUCMDFLAG_ , 1 ); +nm = neldermead_destroy(nm); +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// myoutputcmd2 -- +// This command is called back by the Nelder-Mead +// algorithm. +// Arguments +// state : the current state of the algorithm +// "init", "iter", "done" +// data : the data at the current state +// This is a tlist with the following entries: +// * x : the optimal vector of parameters +// * fval : the minimum function value +// * simplex : the simplex, as a simplex object +// * iteration : the number of iterations performed +// * funccount : the number of function evaluations +// myobj : a user-defined data structure +// stop: set to true to stop algorithm +// +function stop = myoutputcmd2 ( state , data , myobj ) + global _OUTPUCMDFLAG_ + // Unload the array, just to make sure that the minimum is there + iter = data.iteration + fc = data.funccount + fval = data.fval + x = data.x + simplex = data.simplex + // Simplex is a data structure, which can be managed + // by the simplex class. + v = optimsimplex_dirmat ( simplex ) + condv = cond ( v ) + _OUTPUCMDFLAG_ = myobj.myarg + stop = %f +endfunction +global _OUTPUCMDFLAG_; +_OUTPUCMDFLAG_ = 0; +myobj = tlist(["T_MYSTUFF","myarg"]); +myobj.myarg = 12; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-outputcommand",list(myoutputcmd2,myobj)); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +assert_checkequal ( _OUTPUCMDFLAG_ , 12 ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_outputcmd.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_outputcmd.tst new file mode 100755 index 000000000..9d5a98aff --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_outputcmd.tst @@ -0,0 +1,180 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + +function [ y , index ] = myquad ( x , index ) + y = x(1)^2 + x(2)^2 +endfunction + + +// +// myoutputcmd -- +// This command is called back by the Nelder-Mead +// algorithm. +// Arguments +// state : the current state of the algorithm +// "init", "iter", "done" +// data : the data at the current state +// This is a tlist with the following entries: +// * x : the optimal vector of parameters +// * fval : the minimum function value +// * simplex : the simplex, as a simplex object +// * iteration : the number of iterations performed +// * funccount : the number of function evaluations +// * step : the type of step in the previous iteration +// stop: set to true to stop algorithm +// +function stop = myoutputcmd ( state , data ) + global _OUTPUCMDFLAG_ + // Unload the array, just to make sure that the minimum is there + iter = data.iteration + fc = data.funccount + fval = data.fval + x = data.x + simplex = data.simplex + step = data.step + // Simplex is a data structure, which can be managed + // by the simplex class. + v = optimsimplex_dirmat ( simplex ) + condv = cond ( v ) + _OUTPUCMDFLAG_ = 1 + stop = %f +endfunction + + +// +// Test the variable algorithm +// +global _OUTPUCMDFLAG_; +_OUTPUCMDFLAG_ = 0; + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-outputcommand",myoutputcmd); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +// We are here, that means that the output command has been correctly +// called +assert_checkequal ( _OUTPUCMDFLAG_ , 1 ); +nm = neldermead_destroy(nm); + + +// +// Test the fixed algorithm +// +global _OUTPUCMDFLAG_; +_OUTPUCMDFLAG_ = 0; + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_configure(nm,"-outputcommand",myoutputcmd); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +// We are here, that means that the output command has been correctly +// called +assert_checkequal ( _OUTPUCMDFLAG_ , 1 ); +nm = neldermead_destroy(nm); + + +// +// Test the Box algorithm +// +global _OUTPUCMDFLAG_; +_OUTPUCMDFLAG_ = 0; + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",myquad); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0]); +nm = neldermead_configure(nm,"-outputcommand",myoutputcmd); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +// We are here, that means that the output command has been correctly +// called +assert_checkequal ( _OUTPUCMDFLAG_ , 1 ); +nm = neldermead_destroy(nm); + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// myoutputcmd2 -- +// This command is called back by the Nelder-Mead +// algorithm. +// Arguments +// state : the current state of the algorithm +// "init", "iter", "done" +// data : the data at the current state +// This is a tlist with the following entries: +// * x : the optimal vector of parameters +// * fval : the minimum function value +// * simplex : the simplex, as a simplex object +// * iteration : the number of iterations performed +// * funccount : the number of function evaluations +// myobj : a user-defined data structure +// stop: set to true to stop algorithm +// +function stop = myoutputcmd2 ( state , data , myobj ) + global _OUTPUCMDFLAG_ + // Unload the array, just to make sure that the minimum is there + iter = data.iteration + fc = data.funccount + fval = data.fval + x = data.x + simplex = data.simplex + // Simplex is a data structure, which can be managed + // by the simplex class. + v = optimsimplex_dirmat ( simplex ) + condv = cond ( v ) + _OUTPUCMDFLAG_ = myobj.myarg + stop = %f +endfunction + +global _OUTPUCMDFLAG_; +_OUTPUCMDFLAG_ = 0; + +myobj = tlist(["T_MYSTUFF","myarg"]); +myobj.myarg = 12; + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-outputcommand",list(myoutputcmd2,myobj)); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +assert_checkequal ( _OUTPUCMDFLAG_ , 12 ); +nm = neldermead_destroy(nm); + + + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_restart.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_restart.dia.ref new file mode 100755 index 000000000..d224176f4 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_restart.dia.ref @@ -0,0 +1,67 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test with default NM +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0].'); +nm = neldermead_search(nm); +optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. +nm = neldermead_restart(nm); +optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. +nm = neldermead_destroy(nm); +// +// Test with and maximum number of iterations reached +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0].'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_search(nm); +optimbase_terminate: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. +nm = neldermead_configure(nm,"-maxiter",100); +nm = neldermead_restart(nm); +optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. +assert_checktrue(neldermead_get(nm,"-iterations")>10); +nm = neldermead_destroy(nm); +function [ f , index ] = objfun ( x , index ) + f = exp(x(1))*(4*x(1)^2+2*x(2)^2+x(1)*x(2)+2*x(2)); +endfunction +xopt = [4/31;-33/62]; +fopt = -%e^(4/31)/2; +// +// Test with "difficult case" +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",objfun); +nm = neldermead_configure(nm,"-x0",[-1 1].'); +nm = neldermead_search(nm); +optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. +nm = neldermead_configure(nm,"-maxfunevals",200); +nm = neldermead_restart(nm); +xc = neldermead_get(nm,"-xopt"); +fc = neldermead_get(nm,"-fopt"); +assert_checkalmostequal(xc,xopt,1.e-7); +assert_checkalmostequal(fc,fopt,1.e-15); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_restart.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_restart.tst new file mode 100755 index 000000000..73e949e4e --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_restart.tst @@ -0,0 +1,65 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + + +// +// Test with default NM +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0].'); +nm = neldermead_search(nm); +nm = neldermead_restart(nm); +nm = neldermead_destroy(nm); +// +// Test with and maximum number of iterations reached +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0].'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_search(nm); +nm = neldermead_configure(nm,"-maxiter",100); +nm = neldermead_restart(nm); +assert_checktrue(neldermead_get(nm,"-iterations")>10); +nm = neldermead_destroy(nm); + +function [ f , index ] = objfun ( x , index ) + f = exp(x(1))*(4*x(1)^2+2*x(2)^2+x(1)*x(2)+2*x(2)); +endfunction +xopt = [4/31;-33/62]; +fopt = -%e^(4/31)/2; +// +// Test with "difficult case" +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",objfun); +nm = neldermead_configure(nm,"-x0",[-1 1].'); +nm = neldermead_search(nm); +nm = neldermead_configure(nm,"-maxfunevals",200); +nm = neldermead_restart(nm); +xc = neldermead_get(nm,"-xopt"); +fc = neldermead_get(nm,"-fopt"); +assert_checkalmostequal(xc,xopt,1.e-7); +assert_checkalmostequal(fc,fopt,1.e-15); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_rosensuzuki.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_rosensuzuki.dia.ref new file mode 100755 index 000000000..e92bff1e8 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_rosensuzuki.dia.ref @@ -0,0 +1,595 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// Reference: +// +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 +// +// optimtestcase -- +// Non linear inequality constraints are positive. +// +// Arguments +// x: the point where to compute the function +// index : what to compute +// if index=2, returns f +// if index=5, returns c +// if index=6, returns f and c +// Note +// The inequality constraints are expected to be positive. +// +function [ f , c , index ] = optimtestcase ( x , index ) + f = [] + c = [] + if ( ( index == 2 ) | ( index == 6 ) ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( ( index == 5 ) | ( index == 6 ) ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction +function [ f , c , index ] = optimtestcase2 ( x , index ) + f = [] + c = [] + x2 = x.^2 + if ( ( index == 2 ) | ( index == 6 ) ) then + f = [1 1 2 1]*x2 + [-5 -5 -21 7]*x + end + if ( ( index == 5 ) | ( index == 6 ) ) then + c1 = [-1 -1 -1 -1]*x2 + [-1 1 -1 1]*x + 8 + c2 = [-1 -2 -1 -2]*x2 + [1 0 0 1]*x + 10 + c3 = [-2 -1 -1 0]*x2 + [-2 1 0 1]*x + 5 + c = [c1 c2 c3] + end +endfunction +// +// Test the function. +// +xstar = [0.0 1.0 2.0 -1.0]'; +fstar = -44; +[ f , c , index ] = optimtestcase ( xstar , 6 ); +assert_checkequal ( f , fstar ); +assert_checkequal ( c , [0 1 0] ); +// +[ f , c , index ] = optimtestcase2 ( xstar , 6 ); +assert_checkequal ( f , fstar ); +assert_checkequal ( c , [0 1 0] ); +// +// Test with Box algorithm and default axes initial simplex +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.5 1.0 -0.5]'); +nm = neldermead_configure(nm,"-maxiter",400); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1 , 1.e-1); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-2 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +nm = neldermead_destroy(nm); +// +// Test with Box algorithm and restart +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",300); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-1); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_search(nm); +nm = neldermead_restart(nm); +optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded + - increase MaxFunEvals option. +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1, 1e-1 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-2 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "maxfuneval" ); +nm = neldermead_destroy(nm); +// +// Test with Box algorithm and default axes initial simplex +// Add bounds and simplex initial length so that there is a need +// for variable projection. +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",400); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0length",20.0); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1, 1e-1 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-3 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +nm = neldermead_destroy(nm); +// +// Test with Box algorithm and randomized bounds simplex. +// Add bounds and simplex initial length so that there is a need +// for variable projection. +// Here the initial simplex is computed with Box randomized bounds method +// and default number of points in the simplex, i.e. 2n = 2 * 4 = 8. +// +// The convergence is not accurate in this case, whatever the +// value of the relative tolerance on simplex size. +// +// +// Initialize the random number generator, so that the results are always the +// same. +// +rand("seed" , 0) +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0length",20.0); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-0 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-1 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +// Check the optimum simplex +simplexopt = neldermead_get ( nm , "-simplexopt" ); +nbve = optimsimplex_getnbve ( simplexopt ); +assert_checkequal ( nbve , 8 ); +nm = neldermead_destroy(nm); +// +// Test with Box algorithm and randomized bounds simplex. +// Add bounds and simplex initial length so that there is a need +// for variable projection. +// Here the initial simplex is computed with Box randomized bounds method +// and user-defined number of points in the simplex, i.e. 6 +// +// +// Initialize the random number generator, so that the results are always the +// same. +// +rand("seed" , 0) +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0length",20.0); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_configure(nm,"-boxnbpoints",6); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1, 1e-1 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-2 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +// Check the optimum simplex +simplexopt = neldermead_get ( nm , "-simplexopt" ); +nbve = optimsimplex_getnbve ( simplexopt ); +assert_checkequal ( nbve , 6 ); +nm = neldermead_destroy(nm); +// +// Test with "tocenter" +// +rand("seed" , 0) +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0length",20.0); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_configure(nm,"-boxnbpoints",6); +nm = neldermead_configure(nm,"-scalingsimplex0","tocenter"); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1, 1e-1 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-2 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +// Check the optimum simplex +simplexopt = neldermead_get ( nm , "-simplexopt" ); +nbve = optimsimplex_getnbve ( simplexopt ); +assert_checkequal ( nbve , 6 ); +nm = neldermead_destroy(nm); +// +// Test with Box algorithm and given simplex. +// Add bounds and simplex initial length so that there is a need +// for variable projection. +// Here the initial simplex is user-defined. +// Makes sure that all auxiliary computations are performed. +// I put the solution as the last point, to see what happens +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0method","given"); +coords = [ +0.0 0.0 0.0 0.0 +1.0 0.0 0.0 0.0 +0.0 1.0 0.0 0.0 +0.0 0.0 1.0 0.0 +0.0 0.0 0.0 1.0 +1.0 1.0 1.0 1.0 +0.0 1.0 2.0 -1.0 +]; +nm = neldermead_configure(nm,"-coords0",coords); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-2 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-4 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +// Check the optimum simplex +simplexopt = neldermead_get ( nm , "-simplexopt" ); +nbve = optimsimplex_getnbve ( simplexopt ); +assert_checkequal ( nbve , 7 ); +nm = neldermead_destroy(nm); +// +// Test with Box algorithm and randomized bounds simplex. +// Test that verbose mode works fine. +// +rand("seed" , 0) +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",5); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-3); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-verbose",1); +nm = neldermead_configure(nm,"-verbosetermination",1); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_search(nm, "off"); +Function Evaluation #1, index=1, x= [0 0 0 0] +Function Evaluation #2, index=2, x= [0 0 0 0] +Function Evaluation #3, index=5, x= [0 0 0 0] +Function Evaluation #4, index=6, x= [0 0 0 0] +Function Evaluation #5, index=5, x= [0 0 0 0] +Scaling initial simplex into nonlinear inequality constraints... +Scaling vertex #2/8 at [-5.7735027 5.1208771 -9.9955773 -3.3934582]... + > After projection into bounds p = [-5.7735027 5.1208771 -9.9955773 -3.3934582] +Function Evaluation #6, index=5, x= [-5.7735027 5.1208771 -9.9955773 -3.3934582] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.5 +Function Evaluation #7, index=5, x= [-2.8867513 2.5604385 -4.9977887 -1.6967291] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.25 +Function Evaluation #8, index=5, x= [-1.4433757 1.2802193 -2.4988943 -0.8483645] +Inequality constraint #2/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.125 +Function Evaluation #9, index=5, x= [-0.7216878 0.6401096 -1.2494472 -0.4241823] + > After scaling into inequality constraints p = [-0.7216878 0.6401096 -1.2494472 -0.4241823] +Scaling vertex #3/8 at [3.3076221 2.5678358 6.9949047 3.7146204]... + > After projection into bounds p = [3.3076221 2.5678358 6.9949047 3.7146204] +Function Evaluation #10, index=5, x= [3.3076221 2.5678358 6.9949047 3.7146204] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.5 +Function Evaluation #11, index=5, x= [1.653811 1.2839179 3.4974524 1.8573102] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.25 +Function Evaluation #12, index=5, x= [0.8269055 0.6419589 1.7487262 0.9286551] + > After scaling into inequality constraints p = [0.8269055 0.6419589 1.7487262 0.9286551] +Scaling vertex #4/8 at [7.5643296 -8.6325193 1.2169721 3.2471387]... + > After projection into bounds p = [7.5643296 -8.6325193 1.2169721 3.2471387] +Function Evaluation #13, index=5, x= [7.5643296 -8.6325193 1.2169721 3.2471387] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.5 +Function Evaluation #14, index=5, x= [3.7821648 -4.3162596 0.6084861 1.6235694] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.25 +Function Evaluation #15, index=5, x= [1.8910824 -2.1581298 0.3042430 0.8117847] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.125 +Function Evaluation #16, index=5, x= [0.9455412 -1.0790649 0.1521215 0.4058923] +Inequality constraint #3/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.0625 +Function Evaluation #17, index=5, x= [0.4727706 -0.5395325 0.0760608 0.2029462] + > After scaling into inequality constraints p = [0.4727706 -0.5395325 0.0760608 0.2029462] +Scaling vertex #5/8 at [4.5270135 -6.0297123 0.8851463 -5.3585042]... + > After projection into bounds p = [4.5270135 -6.0297123 0.8851463 -5.3585042] +Function Evaluation #18, index=5, x= [4.5270135 -6.0297123 0.8851463 -5.3585042] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.5 +Function Evaluation #19, index=5, x= [2.2635068 -3.0148562 0.4425732 -2.6792521] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.25 +Function Evaluation #20, index=5, x= [1.1317534 -1.5074281 0.2212866 -1.3396261] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.125 +Function Evaluation #21, index=5, x= [0.5658767 -0.7537140 0.1106433 -0.6698130] + > After scaling into inequality constraints p = [0.5658767 -0.7537140 0.1106433 -0.6698130] +Scaling vertex #6/8 at [-5.3755256 -5.6707347 7.6677756 3.0502699]... + > After projection into bounds p = [-5.3755256 -5.6707347 7.6677756 3.0502699] +Function Evaluation #22, index=5, x= [-5.3755256 -5.6707347 7.6677756 3.0502699] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.5 +Function Evaluation #23, index=5, x= [-2.6877628 -2.8353674 3.8338878 1.5251349] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.25 +Function Evaluation #24, index=5, x= [-1.3438814 -1.4176837 1.9169439 0.7625675] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.125 +Function Evaluation #25, index=5, x= [-0.6719407 -0.7088418 0.9584720 0.3812837] + > After scaling into inequality constraints p = [-0.6719407 -0.7088418 0.9584720 0.3812837] +Scaling vertex #7/8 at [-3.8478185 8.6592324 -5.7079843 -3.7471601]... + > After projection into bounds p = [-3.8478185 8.6592324 -5.7079843 -3.7471601] +Function Evaluation #26, index=5, x= [-3.8478185 8.6592324 -5.7079843 -3.7471601] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.5 +Function Evaluation #27, index=5, x= [-1.9239093 4.3296162 -2.8539921 -1.87358] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.25 +Function Evaluation #28, index=5, x= [-0.9619546 2.1648081 -1.4269961 -0.9367900] +Inequality constraint #2/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.125 +Function Evaluation #29, index=5, x= [-0.4809773 1.0824041 -0.7134980 -0.4683950] + > After scaling into inequality constraints p = [-0.4809773 1.0824041 -0.7134980 -0.4683950] +Scaling vertex #8/8 at [-2.767278 -4.1554667 1.3284976 -0.3470561]... + > After projection into bounds p = [-2.767278 -4.1554667 1.3284976 -0.3470561] +Function Evaluation #30, index=5, x= [-2.767278 -4.1554667 1.3284976 -0.3470561] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.5 +Function Evaluation #31, index=5, x= [-1.383639 -2.0777334 0.6642488 -0.1735280] +Inequality constraint #1/3 is not satisfied for x +Scaling inequality constraint with alpha = 0.25 +Function Evaluation #32, index=5, x= [-0.6918195 -1.0388667 0.3321244 -0.0867640] + > After scaling into inequality constraints p = [-0.6918195 -1.0388667 0.3321244 -0.0867640] +Function Evaluation #33, index=2, x= [0 0 0 0] +Function Evaluation #34, index=2, x= [-0.7216878 0.6401096 -1.2494472 -0.4241823] +Function Evaluation #35, index=2, x= [0.8269055 0.6419589 1.7487262 0.9286551] +Function Evaluation #36, index=2, x= [0.4727706 -0.5395325 0.0760608 0.2029462] +Function Evaluation #37, index=2, x= [0.5658767 -0.7537140 0.1106433 -0.6698130] +Function Evaluation #38, index=2, x= [-0.6719407 -0.7088418 0.9584720 0.3812837] +Function Evaluation #39, index=2, x= [-0.4809773 1.0824041 -0.7134980 -0.4683950] +Function Evaluation #40, index=2, x= [-0.6918195 -1.0388667 0.3321244 -0.0867640] +Step #1 : order +================================================================= +Iteration #1 (total = 1) +Function Eval #40 +Xopt : [0.8269055 0.6419589 1.7487262 0.9286551] +Fopt : -29.492616 +DeltaFv : 57.402362 +Center : [-0.0876091 -0.0845603 0.1578852 -0.0170337] +Size : 3.6355683 +Optim Simplex Object: +===================== +nbve: 8 +n: 4 +x: 8-by-4 matrix +fv: 8-by-1 matrix +Reflect +xbar=[0.0029736 -0.1880846 0.3589327 0.0411304] +_boxlinesearch +> xhigh=[-0.7216878 0.6401096 -1.2494472 -0.4241823], fhigh=27.909746 +> xbar=[0.0029736 -0.1880846 0.3589327 0.0411304] +> xr = [0.9450335 -1.264737 2.4498264 0.6460369] +Function Evaluation #41, index=5, x= [0.9450335 -1.264737 2.4498264 0.6460369] +Inequality constraint #1/3 is not satisfied for x +Function Evaluation #42, index=5, x= [0.4740036 -0.7264108 1.4043795 0.3435837] +Function Evaluation #43, index=2, x= [0.4740036 -0.7264108 1.4043795 0.3435837] +xr=[0.4740036 -0.7264108 1.4043795 0.3435837], f(xr)=-21.009883 + > Perform Reflection +Sort +================================================================= +Iteration #2 (total = 2) +Function Eval #43 +Xopt : [0.8269055 0.6419589 1.7487262 0.9286551] +Fopt : -29.492616 +DeltaFv : 40.830666 +Center : [0.0618524 -0.2553754 0.4896135 0.0789371] +Size : 3.14942 +Optim Simplex Object: +===================== +nbve: 8 +n: 4 +x: 8-by-4 matrix +fv: 8-by-1 matrix + > Termination ? + > iterations=2 >= maxiter=5 + > funevals=43 >= maxfunevals=1000 + > e(x)=0.4132440 < 1.490D-08 * 0.5612439 + 0 + > Terminate = F, status = continue + > simplex size=3.14942 < 0 + 0.001 * 2.239716 + > Terminate = F, status = continue +Reflect +xbar=[0.1393995 -0.4464867 0.6614866 0.1571274] +_boxlinesearch +> xhigh=[-0.4809773 1.0824041 -0.7134980 -0.4683950], fhigh=11.33805 +> xbar=[0.1393995 -0.4464867 0.6614866 0.1571274] +> xr = [0.9458893 -2.4340447 2.4489666 0.9703065] +Function Evaluation #44, index=5, x= [0.9458893 -2.4340447 2.4489666 0.9703065] +Inequality constraint #1/3 is not satisfied for x +Function Evaluation #45, index=5, x= [0.5426444 -1.4402657 1.5552266 0.5637169] +Inequality constraint #1/3 is not satisfied for x +Function Evaluation #46, index=5, x= [0.3410219 -0.9433762 1.1083566 0.3604222] +Function Evaluation #47, index=2, x= [0.3410219 -0.9433762 1.1083566 0.3604222] +xr=[0.3410219 -0.9433762 1.1083566 0.3604222], f(xr)=-14.147695 + > Perform Reflection +Sort +================================================================= +Iteration #3 (total = 3) +Function Eval #47 +Xopt : [0.8269055 0.6419589 1.7487262 0.9286551] +Fopt : -29.492616 +DeltaFv : 32.350085 +Center : [0.1646023 -0.5085979 0.7173453 0.1825392] +Size : 2.8582402 +Optim Simplex Object: +===================== +nbve: 8 +n: 4 +x: 8-by-4 matrix +fv: 8-by-1 matrix + > Termination ? + > iterations=3 >= maxiter=5 + > funevals=47 >= maxfunevals=1000 + > e(x)=0.3705056 < 1.490D-08 * 0.9130556 + 0 + > Terminate = F, status = continue + > simplex size=2.8582402 < 0 + 0.001 * 2.239716 + > Terminate = F, status = continue +Reflect +xbar=[0.2869482 -0.4328452 0.7723769 0.2210111] +_boxlinesearch +> xhigh=[-0.6918195 -1.0388667 0.3321244 -0.0867640], fhigh=2.8574697 +> xbar=[0.2869482 -0.4328452 0.7723769 0.2210111] +> xr = [1.5593463 0.3549827 1.3447051 0.6211188] +Function Evaluation #48, index=5, x= [1.5593463 0.3549827 1.3447051 0.6211188] +Inequality constraint #3/3 is not satisfied for x +Function Evaluation #49, index=5, x= [0.9231472 -0.0389312 1.058541 0.4210649] +Function Evaluation #50, index=2, x= [0.9231472 -0.0389312 1.058541 0.4210649] +xr=[0.9231472 -0.0389312 1.058541 0.4210649], f(xr)=-20.430956 + > Perform Reflection +Sort +================================================================= +Iteration #4 (total = 4) +Function Eval #50 +Xopt : [0.8269055 0.6419589 1.7487262 0.9286551] +Fopt : -29.492616 +DeltaFv : 30.217137 +Center : [0.3664731 -0.3836060 0.8081474 0.2460178] +Size : 2.6934096 +Optim Simplex Object: +===================== +nbve: 8 +n: 4 +x: 8-by-4 matrix +fv: 8-by-1 matrix + > Termination ? + > iterations=4 >= maxiter=5 + > funevals=50 >= maxfunevals=1000 + > e(x)=0.2620103 < 1.490D-08 * 0.9975385 + 0 + > Terminate = F, status = continue + > simplex size=2.6934096 < 0 + 0.001 * 2.239716 + > Terminate = F, status = continue +Reflect +xbar=[0.3512877 -0.3613307 0.9127312 0.2521709] +_boxlinesearch +> xhigh=[0.4727706 -0.5395325 0.0760608 0.2029462], fhigh=0.7245215 +> xbar=[0.3512877 -0.3613307 0.9127312 0.2521709] +> xr = [0.1933600 -0.1296685 2.0004028 0.3161631] +Function Evaluation #51, index=5, x= [0.1933600 -0.1296685 2.0004028 0.3161631] +Function Evaluation #52, index=2, x= [0.1933600 -0.1296685 2.0004028 0.3161631] +xr=[0.1933600 -0.1296685 2.0004028 0.3161631], f(xr)=-31.956391 + > Perform Reflection +Sort +================================================================= +Iteration #5 (total = 5) +Function Eval #52 +Xopt : [0.1933600 -0.1296685 2.0004028 0.3161631] +Fopt : -31.956391 +DeltaFv : 31.956391 +Center : [0.3315468 -0.3323730 1.0486902 0.2601700] +Size : 2.2520083 +Optim Simplex Object: +===================== +nbve: 8 +n: 4 +x: 8-by-4 matrix +fv: 8-by-1 matrix + > Termination ? + > iterations=5 >= maxiter=5 + > Terminate = T, status = maxiter + > Terminate = T, status = maxiter +Terminate with status : maxiter +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_rosensuzuki.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_rosensuzuki.tst new file mode 100755 index 000000000..6f956ec8d --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_rosensuzuki.tst @@ -0,0 +1,358 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + + + +// +// Reference: +// +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 + +// +// optimtestcase -- +// Non linear inequality constraints are positive. +// +// Arguments +// x: the point where to compute the function +// index : what to compute +// if index=2, returns f +// if index=5, returns c +// if index=6, returns f and c +// Note +// The inequality constraints are expected to be positive. +// +function [ f , c , index ] = optimtestcase ( x , index ) + f = [] + c = [] + if ( ( index == 2 ) | ( index == 6 ) ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( ( index == 5 ) | ( index == 6 ) ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction + +function [ f , c , index ] = optimtestcase2 ( x , index ) + f = [] + c = [] + x2 = x.^2 + if ( ( index == 2 ) | ( index == 6 ) ) then + f = [1 1 2 1]*x2 + [-5 -5 -21 7]*x + end + if ( ( index == 5 ) | ( index == 6 ) ) then + c1 = [-1 -1 -1 -1]*x2 + [-1 1 -1 1]*x + 8 + c2 = [-1 -2 -1 -2]*x2 + [1 0 0 1]*x + 10 + c3 = [-2 -1 -1 0]*x2 + [-2 1 0 1]*x + 5 + c = [c1 c2 c3] + end +endfunction + +// +// Test the function. +// +xstar = [0.0 1.0 2.0 -1.0]'; +fstar = -44; +[ f , c , index ] = optimtestcase ( xstar , 6 ); +assert_checkequal ( f , fstar ); +assert_checkequal ( c , [0 1 0] ); +// +[ f , c , index ] = optimtestcase2 ( xstar , 6 ); +assert_checkequal ( f , fstar ); +assert_checkequal ( c , [0 1 0] ); + +// +// Test with Box algorithm and default axes initial simplex +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.5 1.0 -0.5]'); +nm = neldermead_configure(nm,"-maxiter",400); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1 , 1.e-1); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-2 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +nm = neldermead_destroy(nm); + +// +// Test with Box algorithm and restart +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",300); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-1); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_search(nm); +nm = neldermead_restart(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1, 1e-1 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-2 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "maxfuneval" ); +nm = neldermead_destroy(nm); + +// +// Test with Box algorithm and default axes initial simplex +// Add bounds and simplex initial length so that there is a need +// for variable projection. +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",400); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0length",20.0); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1, 1e-1 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-3 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +nm = neldermead_destroy(nm); +// +// Test with Box algorithm and randomized bounds simplex. +// Add bounds and simplex initial length so that there is a need +// for variable projection. +// Here the initial simplex is computed with Box randomized bounds method +// and default number of points in the simplex, i.e. 2n = 2 * 4 = 8. +// +// The convergence is not accurate in this case, whatever the +// value of the relative tolerance on simplex size. +// +// +// Initialize the random number generator, so that the results are always the +// same. +// +rand("seed" , 0) +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0length",20.0); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-0 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-1 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +// Check the optimum simplex +simplexopt = neldermead_get ( nm , "-simplexopt" ); +nbve = optimsimplex_getnbve ( simplexopt ); +assert_checkequal ( nbve , 8 ); +nm = neldermead_destroy(nm); + + +// +// Test with Box algorithm and randomized bounds simplex. +// Add bounds and simplex initial length so that there is a need +// for variable projection. +// Here the initial simplex is computed with Box randomized bounds method +// and user-defined number of points in the simplex, i.e. 6 +// +// +// Initialize the random number generator, so that the results are always the +// same. +// +rand("seed" , 0) +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0length",20.0); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_configure(nm,"-boxnbpoints",6); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1, 1e-1 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-2 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +// Check the optimum simplex +simplexopt = neldermead_get ( nm , "-simplexopt" ); +nbve = optimsimplex_getnbve ( simplexopt ); +assert_checkequal ( nbve , 6 ); +nm = neldermead_destroy(nm); + +// +// Test with "tocenter" +// +rand("seed" , 0) +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0length",20.0); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_configure(nm,"-boxnbpoints",6); +nm = neldermead_configure(nm,"-scalingsimplex0","tocenter"); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1, 1e-1 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-2 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +// Check the optimum simplex +simplexopt = neldermead_get ( nm , "-simplexopt" ); +nbve = optimsimplex_getnbve ( simplexopt ); +assert_checkequal ( nbve , 6 ); +nm = neldermead_destroy(nm); +// +// Test with Box algorithm and given simplex. +// Add bounds and simplex initial length so that there is a need +// for variable projection. +// Here the initial simplex is user-defined. +// Makes sure that all auxiliary computations are performed. +// I put the solution as the last point, to see what happens +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-2); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0method","given"); +coords = [ +0.0 0.0 0.0 0.0 +1.0 0.0 0.0 0.0 +0.0 1.0 0.0 0.0 +0.0 0.0 1.0 0.0 +0.0 0.0 0.0 1.0 +1.0 1.0 1.0 1.0 +0.0 1.0 2.0 -1.0 +]; +nm = neldermead_configure(nm,"-coords0",coords); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-2 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , -44.0 , 1e-4 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +// Check the optimum simplex +simplexopt = neldermead_get ( nm , "-simplexopt" ); +nbve = optimsimplex_getnbve ( simplexopt ); +assert_checkequal ( nbve , 7 ); +nm = neldermead_destroy(nm); + +// +// Test with Box algorithm and randomized bounds simplex. +// Test that verbose mode works fine. +// +rand("seed" , 0) +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",5); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-3); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-verbose",1); +nm = neldermead_configure(nm,"-verbosetermination",1); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +nm = neldermead_search(nm, "off"); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_search.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_search.dia.ref new file mode 100755 index 000000000..9250499bc --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_search.dia.ref @@ -0,0 +1,102 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// optimtestcase -- +// Non linear inequality constraints are positive. +// +// Arguments +// x: the point where to compute the function +// index : the stuff to compute +// +function [ f , c , index ] = optimtestcase ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction +// +// Test search with various error cases +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-4); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-simplex0length",20.0); +// +// Test with inconsistent bounds +// +nm = neldermead_configure(nm,"-boundsmin",[10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[-10.0 10.0 10.0 10.0]); +instr = "nm = neldermead_search(nm)"; +lclmsg = gettext("%s: The max bound %s for variable #%d is lower than the min bound %s.\n"); +assert_checkerror ( instr , lclmsg , [] , "optimbase_checkbounds","-10",1,"10" ); +// +// Test with wrong number of min bounds +// +nm = neldermead_configure(nm,"-boundsmin",[10.0]); +nm = neldermead_configure(nm,"-boundsmax",[-10.0 10.0 10.0 10.0]); +cmd = "nm = neldermead_search(nm)"; +lclmsg = gettext("%s: The number of variables %d does not match the number of min bounds: %d.\n"); +assert_checkerror ( cmd , lclmsg , [] , "optimbase_checkbounds" , 4 , 1); +// +// Test with wrong number of max bounds +// +nm = neldermead_configure(nm,"-boundsmin",[10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[-10.0]); +cmd = "nm = neldermead_search(nm)"; +lclmsg = gettext("%s: The number of variables %d does not match the number of max bounds: %d.\n"); +assert_checkerror ( cmd , lclmsg , [] , "optimbase_checkbounds" , 4 , 1); +// +// Test with Box algorithm and randomized bounds simplex and no bounds +// +nm = neldermead_configure(nm,"-boundsmin",[]); +nm = neldermead_configure(nm,"-boundsmax",[]); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +cmd = "nm = neldermead_search(nm)"; +assert_checkerror(cmd,"%s: Randomized bounds initial simplex is not available without bounds.",[],"neldermead_startup"); +// +// Clean-up +// +nm = neldermead_destroy(nm); +// +// Test search with verbose to log file +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-verbose",1); +nm = neldermead_configure(nm,"-logfile" , fullfile(TMPDIR,"search.txt" )); +nm = neldermead_configure(nm,"-verbosetermination",1); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_search(nm, "off"); +nm = neldermead_destroy(nm); +computed = deletefile(fullfile(TMPDIR,"search.txt")); +assert_checkequal ( computed , %t ); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_search.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_search.tst new file mode 100755 index 000000000..976792416 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_search.tst @@ -0,0 +1,110 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// +// optimtestcase -- +// Non linear inequality constraints are positive. +// +// Arguments +// x: the point where to compute the function +// index : the stuff to compute +// +function [ f , c , index ] = optimtestcase ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction + + +// +// Test search with various error cases +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",1000); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-4); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-simplex0length",20.0); +// +// Test with inconsistent bounds +// +nm = neldermead_configure(nm,"-boundsmin",[10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[-10.0 10.0 10.0 10.0]); +instr = "nm = neldermead_search(nm)"; +lclmsg = gettext("%s: The max bound %s for variable #%d is lower than the min bound %s.\n"); +assert_checkerror ( instr , lclmsg , [] , "optimbase_checkbounds","-10",1,"10" ); +// +// Test with wrong number of min bounds +// +nm = neldermead_configure(nm,"-boundsmin",[10.0]); +nm = neldermead_configure(nm,"-boundsmax",[-10.0 10.0 10.0 10.0]); +cmd = "nm = neldermead_search(nm)"; +lclmsg = gettext("%s: The number of variables %d does not match the number of min bounds: %d.\n"); +assert_checkerror ( cmd , lclmsg , [] , "optimbase_checkbounds" , 4 , 1); +// +// Test with wrong number of max bounds +// +nm = neldermead_configure(nm,"-boundsmin",[10.0 -10.0 -10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[-10.0]); +cmd = "nm = neldermead_search(nm)"; +lclmsg = gettext("%s: The number of variables %d does not match the number of max bounds: %d.\n"); +assert_checkerror ( cmd , lclmsg , [] , "optimbase_checkbounds" , 4 , 1); +// +// Test with Box algorithm and randomized bounds simplex and no bounds +// +nm = neldermead_configure(nm,"-boundsmin",[]); +nm = neldermead_configure(nm,"-boundsmax",[]); +nm = neldermead_configure(nm,"-simplex0method","randbounds"); +cmd = "nm = neldermead_search(nm)"; +assert_checkerror(cmd,"%s: Randomized bounds initial simplex is not available without bounds.",[],"neldermead_startup"); +// +// Clean-up +// +nm = neldermead_destroy(nm); + + +// +// Test search with verbose to log file +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-verbose",1); +nm = neldermead_configure(nm,"-logfile" , fullfile(TMPDIR,"search.txt" )); +nm = neldermead_configure(nm,"-verbosetermination",1); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_search(nm, "off"); +nm = neldermead_destroy(nm); +computed = deletefile(fullfile(TMPDIR,"search.txt")); +assert_checkequal ( computed , %t ); + + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_searchaddarg.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchaddarg.dia.ref new file mode 100755 index 000000000..0c651bb05 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchaddarg.dia.ref @@ -0,0 +1,97 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// The _MYDATA_ variable name is chosen so that +// no name conflict can possibly occur. +// +function [ y , index ] = rosenbrock ( x , index ) + a = _MYDATA_.a + y = 100*(x(2)-x(1)^2)^2 + ( a - x(1))^2; + _MYDATA_.nb = _MYDATA_.nb + 1 +endfunction +x0 = [11.0 140.0]'; +// +// Test with an additional argument +// +_MYDATA_ = tlist(["T_MYSTUFF","a","nb"]); +_MYDATA_.a = 12.0; +_MYDATA_.nb = 0; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +// Check _MYDATA_.nb +// The variable is just read, not written and the nb field +// is not updated. +assert_checkequal ( _MYDATA_.nb , 0 ); +// Cleanup +nm = neldermead_destroy(nm); +// +// In this case, the mydata variable is passed +// explicitely by the neldermead class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function [ y , index ] = rosenbrock2 ( x , index , mydata ) + a = mydata.a + y = 100*(x(2)-x(1)^2)^2 + ( a - x(1))^2; +endfunction +// +// Test with an additional argument +// +mystuff = tlist(["T_MYSTUFF","a"]); +mystuff.a = 12.0; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",list(rosenbrock2,mystuff)); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +nm = neldermead_destroy(nm); +// +// Use a global variable. +// +function [ y , index ] = rosenbrock3 ( x , index ) + global _MYDATA_ + a = _MYDATA_.a + y = 100*(x(2)-x(1)^2)^2 + ( a - x(1))^2; + _MYDATA_.nb = _MYDATA_.nb + 1 +endfunction +// +// Test with an additional argument +// +global _MYDATA_ +_MYDATA_ = tlist(["T_MYSTUFF","a","nb"]); +_MYDATA_.a = 12.0; +_MYDATA_.nb = 0; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock3); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +// Check _MYDATA_.nb +// The variable is not just read, it is also written and the nb field +// IS updated. +assert_checkequal ( _MYDATA_.nb > 10 , %T ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_searchaddarg.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchaddarg.tst new file mode 100755 index 000000000..a2b94201c --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchaddarg.tst @@ -0,0 +1,114 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + + +// +// The _MYDATA_ variable name is chosen so that +// no name conflict can possibly occur. +// +function [ y , index ] = rosenbrock ( x , index ) + a = _MYDATA_.a + y = 100*(x(2)-x(1)^2)^2 + ( a - x(1))^2; + _MYDATA_.nb = _MYDATA_.nb + 1 +endfunction + +x0 = [11.0 140.0]'; + +// +// Test with an additional argument +// +_MYDATA_ = tlist(["T_MYSTUFF","a","nb"]); +_MYDATA_.a = 12.0; +_MYDATA_.nb = 0; + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +// Check _MYDATA_.nb +// The variable is just read, not written and the nb field +// is not updated. +assert_checkequal ( _MYDATA_.nb , 0 ); +// Cleanup +nm = neldermead_destroy(nm); + +// +// In this case, the mydata variable is passed +// explicitely by the neldermead class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function [ y , index ] = rosenbrock2 ( x , index , mydata ) + a = mydata.a + y = 100*(x(2)-x(1)^2)^2 + ( a - x(1))^2; +endfunction + +// +// Test with an additional argument +// +mystuff = tlist(["T_MYSTUFF","a"]); +mystuff.a = 12.0; + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",list(rosenbrock2,mystuff)); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +nm = neldermead_destroy(nm); + +// +// Use a global variable. +// +function [ y , index ] = rosenbrock3 ( x , index ) + global _MYDATA_ + a = _MYDATA_.a + y = 100*(x(2)-x(1)^2)^2 + ( a - x(1))^2; + _MYDATA_.nb = _MYDATA_.nb + 1 +endfunction + +// +// Test with an additional argument +// +global _MYDATA_ +_MYDATA_ = tlist(["T_MYSTUFF","a","nb"]); +_MYDATA_.a = 12.0; +_MYDATA_.nb = 0; + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock3); +nm = neldermead_configure(nm,"-x0",x0); +nm = neldermead_configure(nm,"-maxfunevals",%inf); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_search(nm, "off"); +iter = neldermead_get(nm,"-iterations"); +assert_checkequal ( iter , 10 ); +// Check _MYDATA_.nb +// The variable is not just read, it is also written and the nb field +// IS updated. +assert_checkequal ( _MYDATA_.nb > 10 , %T ); +nm = neldermead_destroy(nm); + + + + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_searchdefault.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchdefault.dia.ref new file mode 100755 index 000000000..5002d549e --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchdefault.dia.ref @@ -0,0 +1,131 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Check behaviour with default settings. +// +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_search(nm, "off"); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0;1.0], 1e-4 ); +// Cleanup +nm = neldermead_destroy(nm); +clear nm; +//% MCKINNON computes the McKinnon function. +// +// Discussion: +// +// This function has a global minimizer: +// +// X* = ( 0.0, -0.5 ), F(X*) = -0.25 +// +// There are three parameters, TAU, THETA and PHI. +// +// 1 < TAU, then F is strictly convex. +// and F has continuous first derivatives. +// 2 < TAU, then F has continuous second derivatives. +// 3 < TAU, then F has continuous third derivatives. +// +// However, this function can cause the Nelder-Mead optimization +// algorithm to "converge" to a point which is not the minimizer +// of the function F. +// +// Sample parameter values which cause problems for Nelder-Mead +// include: +// +// TAU = 1, THETA = 15, PHI = 10; +// TAU = 2, THETA = 6, PHI = 60; +// TAU = 3, THETA = 6, PHI = 400; +// +// To get the bad behavior, we also assume the initial simplex has the form +// +// X1 = (0,0), +// X2 = (1,1), +// X3 = (A,B), +// +// where +// +// A = (1+sqrt(33))/8 = 0.84307... +// B = (1-sqrt(33))/8 = -0.59307... +// +// Licensing: +// +// This code is distributed under the GNU LGPL license. +// +// Modified: +// +// 09 February 2008 +// +// Author: +// +// John Burkardt +// +// Reference: +// +// Ken McKinnon, +// Convergence of the Nelder-Mead simplex method to a nonstationary point, +// SIAM Journal on Optimization, +// Volume 9, Number 1, 1998, pages 148-158. +// +// Parameters: +// +// Input, real X(2), the argument of the function. +// +// Output, real F, the value of the function at X. +// +// Copyright (C) 2009 - INRIA - Michael Baudin, Scilab port +function [ f , index ] = mckinnon3 ( x , index ) + if ( length ( x ) ~= 2 ) + error ( 'Error: function expects a two dimensional input\n' ); + end + tau = 3.0; + theta = 6.0; + phi = 400.0; + if ( x(1) <= 0.0 ) + f = theta * phi * abs ( x(1) ).^tau + x(2) * ( 1.0 + x(2) ); + else + f = theta * x(1).^tau + x(2) * ( 1.0 + x(2) ); + end +endfunction +lambda1 = (1.0 + sqrt(33.0))/8.0; +lambda2 = (1.0 - sqrt(33.0))/8.0; +coords0 = [ +1.0 1.0 +0.0 0.0 +lambda1 lambda2 +]; +// +// Test wrong -restartdetection +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-6); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-verbosetermination",0); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_configure(nm,"-restartflag",%t); +instr = "nm = neldermead_configure(nm,""-restartdetection"",""foo"");"; +alloptions = """oneill"" or ""kelley"""; +assert_checkerror(instr,"%s: Expected value [%s] for input argument %s at input #%d, but got ""%s"" instead.",[],.. + "neldermead_configure",alloptions,"value",3,"foo"); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_searchdefault.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchdefault.tst new file mode 100755 index 000000000..61674a565 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchdefault.tst @@ -0,0 +1,142 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// +// Check behaviour with default settings. +// + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.1 1.1]'); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_search(nm, "off"); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0;1.0], 1e-4 ); +// Cleanup +nm = neldermead_destroy(nm); +clear nm; + +//% MCKINNON computes the McKinnon function. +// +// Discussion: +// +// This function has a global minimizer: +// +// X* = ( 0.0, -0.5 ), F(X*) = -0.25 +// +// There are three parameters, TAU, THETA and PHI. +// +// 1 < TAU, then F is strictly convex. +// and F has continuous first derivatives. +// 2 < TAU, then F has continuous second derivatives. +// 3 < TAU, then F has continuous third derivatives. +// +// However, this function can cause the Nelder-Mead optimization +// algorithm to "converge" to a point which is not the minimizer +// of the function F. +// +// Sample parameter values which cause problems for Nelder-Mead +// include: +// +// TAU = 1, THETA = 15, PHI = 10; +// TAU = 2, THETA = 6, PHI = 60; +// TAU = 3, THETA = 6, PHI = 400; +// +// To get the bad behavior, we also assume the initial simplex has the form +// +// X1 = (0,0), +// X2 = (1,1), +// X3 = (A,B), +// +// where +// +// A = (1+sqrt(33))/8 = 0.84307... +// B = (1-sqrt(33))/8 = -0.59307... +// +// Licensing: +// +// This code is distributed under the GNU LGPL license. +// +// Modified: +// +// 09 February 2008 +// +// Author: +// +// John Burkardt +// +// Reference: +// +// Ken McKinnon, +// Convergence of the Nelder-Mead simplex method to a nonstationary point, +// SIAM Journal on Optimization, +// Volume 9, Number 1, 1998, pages 148-158. +// +// Parameters: +// +// Input, real X(2), the argument of the function. +// +// Output, real F, the value of the function at X. +// +// Copyright (C) 2009 - INRIA - Michael Baudin, Scilab port + +function [ f , index ] = mckinnon3 ( x , index ) + + if ( length ( x ) ~= 2 ) + error ( 'Error: function expects a two dimensional input\n' ); + end + + tau = 3.0; + theta = 6.0; + phi = 400.0; + + if ( x(1) <= 0.0 ) + f = theta * phi * abs ( x(1) ).^tau + x(2) * ( 1.0 + x(2) ); + else + f = theta * x(1).^tau + x(2) * ( 1.0 + x(2) ); + end +endfunction + +lambda1 = (1.0 + sqrt(33.0))/8.0; +lambda2 = (1.0 - sqrt(33.0))/8.0; +coords0 = [ +1.0 1.0 +0.0 0.0 +lambda1 lambda2 +]; + +// +// Test wrong -restartdetection +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",mckinnon3); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-maxiter",300); +nm = neldermead_configure(nm,"-maxfunevals",500); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-6); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-verbosetermination",0); +nm = neldermead_configure(nm,"-kelleystagnationflag",%t); +nm = neldermead_configure(nm,"-restartflag",%t); +instr = "nm = neldermead_configure(nm,""-restartdetection"",""foo"");"; +alloptions = """oneill"" or ""kelley"""; +assert_checkerror(instr,"%s: Expected value [%s] for input argument %s at input #%d, but got ""%s"" instead.",[],.. + "neldermead_configure",alloptions,"value",3,"foo"); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_searchfixed.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchfixed.dia.ref new file mode 100755 index 000000000..b9a578b95 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchfixed.dia.ref @@ -0,0 +1,316 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function [ y , index ] = squarefun ( x , index ) +y = x(1)^2+x(2)^2; +endfunction +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",0.5); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0, 1e-6 ); +nm = neldermead_destroy(nm); +// +// Interrupt the algorithm when done. +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_configure(nm,"-function",squarefun); +// Set the relative size to zero: it should never stop... +nm = neldermead_configure(nm,"-tolsimplexizerelative",0.0); +nm = neldermead_search(nm, "off"); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0, 1e-6 ); +nm = neldermead_destroy(nm); +// +// Check verbose mode on a few iterations. +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_configure(nm,"-maxiter",5); +nm = neldermead_configure(nm,"-verbose",1); +// Set the relative size to zero: it should never stop... +nm = neldermead_configure(nm,"-tolsimplexizerelative",0.0); +nm = neldermead_search(nm, "off"); +Function Evaluation #1, index=1, x= [1 1] +Function Evaluation #2, index=2, x= [1 1] +Function Evaluation #3, index=2, x= [1 1] +Function Evaluation #4, index=2, x= [2 1] +Function Evaluation #5, index=2, x= [1 2] +Sort +================================================================= +Iteration #1 (total = 1) +Function Eval #5 +Xopt : [1 1] +Fopt : 2 +DeltaFv : 3 +Center : [1.3333333 1.3333333] +Size : 1 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +Reflect +xbar=1.5 1 +Function Evaluation #6, index=2, x= [2 0] +xr=2 0, f(xr)=4.000000 + > Perform reflect +================================================================= +Iteration #2 (total = 2) +Function Eval #6 +Xopt : [1 1] +Fopt : 2 +DeltaFv : 3 +Center : [1.6666667 0.6666667] +Size : 1.4142136 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +Reflect +xbar=1.5 0.5 +Function Evaluation #7, index=2, x= [1 0] +xr=1 0, f(xr)=1.000000 + > Perform reflect +================================================================= +Iteration #3 (total = 3) +Function Eval #7 +Xopt : [1 0] +Fopt : 1 +DeltaFv : 3 +Center : [1.3333333 0.3333333] +Size : 1 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +Reflect +xbar=1 0.5 +Function Evaluation #8, index=2, x= [0 1] +xr=0 1, f(xr)=1.000000 + > Perform reflect +================================================================= +Iteration #4 (total = 4) +Function Eval #8 +Xopt : [1 0] +Fopt : 1 +DeltaFv : 1 +Center : [0.6666667 0.6666667] +Size : 1.4142136 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +Reflect +xbar=0.5 0.5 +Function Evaluation #9, index=2, x= [0 0] +xr=0 0, f(xr)=0.000000 + > Perform reflect +================================================================= +Iteration #5 (total = 5) +Function Eval #9 +Xopt : [0 0] +Fopt : 0 +DeltaFv : 1 +Center : [0.3333333 0.3333333] +Size : 1 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +Terminate with status : maxiter +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0, 1e-6 ); +nm = neldermead_destroy(nm); +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",200); +nm = neldermead_configure(nm,"-tolfunrelative",10*%eps); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_search(nm, "off"); +// With fixed-size simplices, one cannot lead the +// simplex to the optimum. +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0;1.0], 1e1 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , 1e1 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "maxfuneval" ); +// Cleanup +nm = neldermead_destroy(nm); +// Check that the verbose mode is functional +// Few iterations are necessary to check this +// Many iterations costs a lot more in time. +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",5); +nm = neldermead_configure(nm,"-maxfunevals",200); +nm = neldermead_configure(nm,"-tolfunrelative",10*%eps); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_configure(nm,"-verbose",1); +nm = neldermead_configure(nm,"-verbosetermination",0); +nm = neldermead_search(nm, "off"); +Function Evaluation #1, index=1, x= [-1.2 1] +Function Evaluation #2, index=2, x= [-1.2 1] +Function Evaluation #3, index=2, x= [-1.2 1] +Function Evaluation #4, index=2, x= [-0.2 1] +Function Evaluation #5, index=2, x= [-1.2 2] +Sort +================================================================= +Iteration #1 (total = 1) +Function Eval #5 +Xopt : [-1.2 1] +Fopt : 24.2 +DeltaFv : 69.4 +Center : [-0.8666667 1.3333333] +Size : 1 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +Reflect +xbar=-1.2 1.5 +Function Evaluation #6, index=2, x= [-2.2 2] +xr=-2.2 2, f(xr)=816.800000 +xbar2=-0.7 1 +Function Evaluation #7, index=2, x= [-0.2 0] +xr2=-0.2 0, f(xr2)=1.600000 + > Perform reflect / next +================================================================= +Iteration #2 (total = 2) +Function Eval #7 +Xopt : [-0.2 0] +Fopt : 1.6 +DeltaFv : 92 +Center : [-0.5333333 0.6666667] +Size : 1.4142136 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +Reflect +xbar=-0.7 0.5 +Function Evaluation #8, index=2, x= [-1.2 0] +xr=-1.2 0, f(xr)=212.200000 +xbar2=-0.2 0.5 +Function Evaluation #9, index=2, x= [0.8 0] +xr2=0.8 0, f(xr2)=41.000000 + > Perform Shrink +Function Evaluation #10, index=2, x= [-0.7 0.5] +Function Evaluation #11, index=2, x= [-0.2 0.5] +================================================================= +Iteration #3 (total = 3) +Function Eval #11 +Xopt : [-0.2 0] +Fopt : 1.6 +DeltaFv : 21 +Center : [-0.3666667 0.3333333] +Size : 0.7071068 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +Reflect +xbar=-0.45 0.25 +Function Evaluation #12, index=2, x= [-0.7 0] +xr=-0.7 0, f(xr)=26.900000 +xbar2=-0.2 0.25 +Function Evaluation #13, index=2, x= [0.3 0] +xr2=0.3 0, f(xr2)=1.300000 + > Perform reflect / next +================================================================= +Iteration #4 (total = 4) +Function Eval #13 +Xopt : [0.3 0] +Fopt : 1.3 +DeltaFv : 21.3 +Center : [-0.0333333 0.1666667] +Size : 0.7071068 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +Reflect +xbar=0.05 0 +Function Evaluation #14, index=2, x= [0.3 -0.5] +xr=0.3 -0.5, f(xr)=35.300000 +xbar2=0.05 0.25 +Function Evaluation #15, index=2, x= [0.3 0.5] +xr2=0.3 0.5, f(xr2)=17.300000 + > Perform Shrink +Function Evaluation #16, index=2, x= [0.05 0] +Function Evaluation #17, index=2, x= [0.05 0.25] +================================================================= +Iteration #5 (total = 5) +Function Eval #17 +Xopt : [0.05 0] +Fopt : 0.903125 +DeltaFv : 6.125 +Center : [0.1333333 0.0833333] +Size : 0.25 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +Terminate with status : maxiter +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "maxiter" ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_searchfixed.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchfixed.tst new file mode 100755 index 000000000..5fcbc715f --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchfixed.tst @@ -0,0 +1,116 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +function [ y , index ] = squarefun ( x , index ) + y = x(1)^2+x(2)^2; +endfunction + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",0.5); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0, 1e-6 ); +nm = neldermead_destroy(nm); + +// +// Interrupt the algorithm when done. + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_configure(nm,"-function",squarefun); +// Set the relative size to zero: it should never stop... +nm = neldermead_configure(nm,"-tolsimplexizerelative",0.0); +nm = neldermead_search(nm, "off"); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0, 1e-6 ); +nm = neldermead_destroy(nm); +// +// Check verbose mode on a few iterations. + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 1.0]'); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_configure(nm,"-maxiter",5); +nm = neldermead_configure(nm,"-verbose",1); +// Set the relative size to zero: it should never stop... +nm = neldermead_configure(nm,"-tolsimplexizerelative",0.0); +nm = neldermead_search(nm, "off"); +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 ); +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0, 1e-6 ); +nm = neldermead_destroy(nm); + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",200); +nm = neldermead_configure(nm,"-tolfunrelative",10*%eps); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_search(nm, "off"); +// With fixed-size simplices, one cannot lead the +// simplex to the optimum. +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0;1.0], 1e1 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , 1e1 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "maxfuneval" ); +// Cleanup +nm = neldermead_destroy(nm); + +// Check that the verbose mode is functional +// Few iterations are necessary to check this +// Many iterations costs a lot more in time. +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",5); +nm = neldermead_configure(nm,"-maxfunevals",200); +nm = neldermead_configure(nm,"-tolfunrelative",10*%eps); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_configure(nm,"-verbose",1); +nm = neldermead_configure(nm,"-verbosetermination",0); +nm = neldermead_search(nm, "off"); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "maxiter" ); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_searchvariable.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchvariable.dia.ref new file mode 100755 index 000000000..71e997d86 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchvariable.dia.ref @@ -0,0 +1,224 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test on Rosenbrock test case +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",300); +nm = neldermead_configure(nm,"-tolfunrelative",10*%eps); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-6); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-storehistory",%t); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0;1.0], 1e-6 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , [] , 1e-6 ); +// Check function value history +historyfopt = neldermead_get(nm,"-historyfopt"); +iterations = neldermead_get(nm,"-iterations"); +sizefopt = size(historyfopt); +assert_checkequal ( [iterations 1], sizefopt ); +// Check number of function evaluations +funevals = neldermead_get(nm,"-funevals"); +assert_checkequal ( (funevals < 300) , %T ) + ans = + + T +// Check optimum history +historyxopt = neldermead_get(nm,"-historyxopt"); +sizexopt = size(historyxopt); +assert_checkequal ( iterations, sizexopt ); +// Check simplex history +historysimplex = neldermead_get(nm,"-historysimplex"); +sizexsimplex = size(historysimplex); +assert_checkequal ( [iterations 3 2], sizexsimplex ); +// Check fx0 +fx0 = neldermead_get(nm,"-fx0"); +assert_checkalmostequal ( fx0 , 24.2 , 10*%eps ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +// Cleanup +nm = neldermead_destroy(nm); +// Check that the verbose mode is functional +// Few iterations are necessary to check this +// Many iterations costs a lot more in time. +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",5); +nm = neldermead_configure(nm,"-maxfunevals",300); +nm = neldermead_configure(nm,"-tolfunrelative",10*%eps); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-6); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-verbose",1); +nm = neldermead_configure(nm,"-verbosetermination",1); +nm = neldermead_configure(nm,"-storehistory",%t); +nm = neldermead_search(nm, "off"); +Function Evaluation #1, index=1, x= [-1.2 1] +Function Evaluation #2, index=2, x= [-1.2 1] +Function Evaluation #3, index=2, x= [-1.2 1] +Function Evaluation #4, index=2, x= [-0.2 1] +Function Evaluation #5, index=2, x= [-1.2 2] +Step #1 : order +================================================================= +Iteration #1 (total = 1) +Function Eval #5 +Xopt : [-1.2 1] +Fopt : 24.2 +DeltaFv : 69.4 +Center : [-0.8666667 1.3333333] +Size : 1 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +Reflect +xbar=-1.2 1.5 +Function Evaluation #6, index=2, x= [-2.2 2] +xr=[-2.2 2], f(xr)=816.800000 +Contract - inside +Function Evaluation #7, index=2, x= [-0.7 1.25] +xc=-0.7 1.25, f(xc)=60.650000 + > Perform Inside Contraction +Sort +================================================================= +Iteration #2 (total = 2) +Function Eval #7 +Xopt : [-1.2 1] +Fopt : 24.2 +DeltaFv : 36.45 +Center : [-1.0333333 1.4166667] +Size : 1 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix + > Termination ? + > iterations=2 >= maxiter=5 + > funevals=7 >= maxfunevals=300 + > e(x)=0.186339 < 2.220D-15 * 1.7534886 + 0 + > Terminate = F, status = continue + > simplex size=1 < 0 + 0.000001 * 1 + > Terminate = F, status = continue +Reflect +xbar=-1.2 1.5 +Function Evaluation #8, index=2, x= [-1.7 1.75] +xr=[-1.7 1.75], f(xr)=137.250000 +Contract - inside +Function Evaluation #9, index=2, x= [-0.95 1.375] +xc=-0.95 1.375, f(xc)=26.128125 + > Perform Inside Contraction +Sort +================================================================= +Iteration #3 (total = 3) +Function Eval #9 +Xopt : [-1.2 1] +Fopt : 24.2 +DeltaFv : 12 +Center : [-1.1166667 1.4583333] +Size : 1 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix + > Termination ? + > iterations=3 >= maxiter=5 + > funevals=9 >= maxfunevals=300 + > e(x)=0.0931695 < 2.220D-15 * 1.8367582 + 0 + > Terminate = F, status = continue + > simplex size=1 < 0 + 0.000001 * 1 + > Terminate = F, status = continue +Reflect +xbar=-1.075 1.1875 +Function Evaluation #10, index=2, x= [-0.95 0.375] +xr=[-0.95 0.375], f(xr)=31.628125 +Contract - outside +Function Evaluation #11, index=2, x= [-1.0125 0.78125] +xc=-1.0125 0.78125, f(xc)=9.999182 + > Perform Outside Contraction +Sort +================================================================= +Iteration #4 (total = 4) +Function Eval #11 +Xopt : [-1.0125 0.78125] +Fopt : 9.9991821 +DeltaFv : 16.128943 +Center : [-1.0541667 1.0520833] +Size : 0.5970304 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix + > Termination ? + > iterations=4 >= maxiter=5 + > funevals=11 >= maxfunevals=300 + > e(x)=0.4110296 < 2.220D-15 * 1.4893444 + 0 + > Terminate = F, status = continue + > simplex size=0.5970304 < 0 + 0.000001 * 1 + > Terminate = F, status = continue +Reflect +xbar=-1.10625 0.890625 +Function Evaluation #12, index=2, x= [-1.2625 0.40625] +xr=[-1.2625 0.40625], f(xr)=146.171643 +Contract - inside +Function Evaluation #13, index=2, x= [-1.028125 1.1328125] +xc=-1.028125 1.1328125, f(xc)=4.687423 + > Perform Inside Contraction +Sort +================================================================= +Iteration #5 (total = 5) +Function Eval #13 +Xopt : [-1.028125 1.1328125] +Fopt : 4.6874228 +DeltaFv : 19.512577 +Center : [-1.0802083 0.9713542] +Size : 0.3519096 +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix + > Termination ? + > iterations=5 >= maxiter=5 + > Terminate = T, status = maxiter + > Terminate = T, status = maxiter +Terminate with status : maxiter +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "maxiter" ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_searchvariable.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchvariable.tst new file mode 100755 index 000000000..5cf9617c3 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_searchvariable.tst @@ -0,0 +1,91 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test on Rosenbrock test case +// + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",300); +nm = neldermead_configure(nm,"-tolfunrelative",10*%eps); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-6); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-storehistory",%t); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0;1.0], 1e-6 ); +// Check optimum point value +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 0.0 , [] , 1e-6 ); +// Check function value history +historyfopt = neldermead_get(nm,"-historyfopt"); +iterations = neldermead_get(nm,"-iterations"); +sizefopt = size(historyfopt); +assert_checkequal ( [iterations 1], sizefopt ); +// Check number of function evaluations +funevals = neldermead_get(nm,"-funevals"); +assert_checkequal ( (funevals < 300) , %T ) +// Check optimum history +historyxopt = neldermead_get(nm,"-historyxopt"); +sizexopt = size(historyxopt); +assert_checkequal ( iterations, sizexopt ); +// Check simplex history +historysimplex = neldermead_get(nm,"-historysimplex"); +sizexsimplex = size(historysimplex); +assert_checkequal ( [iterations 3 2], sizexsimplex ); +// Check fx0 +fx0 = neldermead_get(nm,"-fx0"); +assert_checkalmostequal ( fx0 , 24.2 , 10*%eps ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolsize" ); +// Cleanup +nm = neldermead_destroy(nm); + +// Check that the verbose mode is functional +// Few iterations are necessary to check this +// Many iterations costs a lot more in time. +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",5); +nm = neldermead_configure(nm,"-maxfunevals",300); +nm = neldermead_configure(nm,"-tolfunrelative",10*%eps); +nm = neldermead_configure(nm,"-tolxrelative",10*%eps); +nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-6); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_configure(nm,"-verbose",1); +nm = neldermead_configure(nm,"-verbosetermination",1); +nm = neldermead_configure(nm,"-storehistory",%t); +nm = neldermead_search(nm, "off"); +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "maxiter" ); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_shapeX.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_shapeX.dia.ref new file mode 100755 index 000000000..40379bca9 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_shapeX.dia.ref @@ -0,0 +1,268 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// Checks that the shape of x is always the same, +// i.e. a column vector. +function [ f , index ] = optimtestcase ( x , index ) + if ( size ( x ) <> [4 1] ) then + error ( "Wrong shape for x !" ) + end + f = x.' * x +endfunction +// +// Test search with variable algorithm +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[1 2 3 4]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm, "off"); +nm = neldermead_destroy(nm); +// +// Test search with fixed algorithm +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[1 2 3 4]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_search(nm, "off"); +nm = neldermead_destroy(nm); +// +// Test with non linear constraints +// +function [ f , c , index ] = optimtestcase2 ( x , index ) + f = [] + c = [] + disp(x) + if ( size ( x ) <> [4 1] ) then + error ( "Wrong shape for x !" ) + end + if ( ( index == 2 ) | ( index == 6 ) ) then + f = x.' * x + end + if ( ( index == 5 ) | ( index == 6 ) ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0 0 0 0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_search(nm, "off"); + + 0. + 0. + 0. + 0. + + 0. + 0. + 0. + 0. + + 0. + 0. + 0. + 0. + + 0. + 0. + 0. + 0. + + 0. + 0. + 0. + 0. + + 1. + 0. + 0. + 0. + + 0. + 1. + 0. + 0. + + 0. + 0. + 1. + 0. + + 0. + 0. + 0. + 1. + + 0. + 0. + 0. + 0. + + 1. + 0. + 0. + 0. + + 0. + 1. + 0. + 0. + + 0. + 0. + 1. + 0. + + 0. + 0. + 0. + 1. + + 0.575 + 0.575 + 0.575 + - 1.3 + + 0.575 + 0.575 + 0.575 + - 1.3 + + 0.4125 + 0.4125 + 0.4125 + - 0.65 + + 0.8121875 + 0.8121875 + - 1.0628125 + - 0.37375 + + 0.8121875 + 0.8121875 + - 1.0628125 + - 0.37375 + + 0.5826562 + 0.5826562 + - 0.4798437 + - 0.268125 + + 1.1472148 + - 0.7277852 + - 0.0387227 + - 0.5279219 + + 0.8230020 + - 0.2394980 + - 0.0277793 + - 0.3787266 + + 0.8230020 + - 0.2394980 + - 0.0277793 + - 0.3787266 + + - 0.2545590 + 0.4345035 + - 0.0546958 + - 0.7456896 + + - 0.2545590 + 0.4345035 + - 0.0546958 + - 0.7456896 + + - 0.1934109 + - 0.4081375 + 0.8135612 + - 0.6717268 + + - 0.1934109 + - 0.4081375 + 0.8135612 + - 0.6717268 + + 0.0259124 + - 0.1281306 + 0.4480337 + - 0.5576654 + + - 0.1944957 + - 0.4977970 + - 0.3260538 + - 0.1221969 + + - 0.1944957 + - 0.4977970 + - 0.3260538 + - 0.1221969 + + - 1.3132094 + 0.2012786 + 0.0748015 + - 0.3273479 + + - 1.3132094 + 0.2012786 + 0.0748015 + - 0.3273479 + + - 0.7094975 + 0.0767113 + 0.0458113 + - 0.3418679 + + - 0.1739697 + - 0.8806538 + 0.1675844 + 0.3819016 + + - 0.1739697 + - 0.8806538 + 0.1675844 + 0.3819016 + + - 0.1967450 + - 0.5089790 + 0.1047661 + 0.0632345 + + 0.7122830 + - 0.7522959 + 0.0708243 + 0.0898673 + + 0.7122830 + - 0.7522959 + 0.0708243 + 0.0898673 + + 0.3104755 + - 0.5180113 + 0.0637554 + - 0.0321448 +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_shapeX.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_shapeX.tst new file mode 100755 index 000000000..e783e25f2 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_shapeX.tst @@ -0,0 +1,82 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + + +// Checks that the shape of x is always the same, +// i.e. a column vector. +function [ f , index ] = optimtestcase ( x , index ) + if ( size ( x ) <> [4 1] ) then + error ( "Wrong shape for x !" ) + end + f = x.' * x +endfunction + + +// +// Test search with variable algorithm +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[1 2 3 4]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm, "off"); +nm = neldermead_destroy(nm); + +// +// Test search with fixed algorithm +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase); +nm = neldermead_configure(nm,"-x0",[1 2 3 4]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","fixed"); +nm = neldermead_search(nm, "off"); +nm = neldermead_destroy(nm); + +// +// Test with non linear constraints +// +function [ f , c , index ] = optimtestcase2 ( x , index ) + f = [] + c = [] + disp(x) + if ( size ( x ) <> [4 1] ) then + error ( "Wrong shape for x !" ) + end + if ( ( index == 2 ) | ( index == 6 ) ) then + f = x.' * x + end + if ( ( index == 5 ) | ( index == 6 ) ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",4); +nm = neldermead_configure(nm,"-function",optimtestcase2); +nm = neldermead_configure(nm,"-x0",[0 0 0 0]'); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-nbineqconst",3); +nm = neldermead_search(nm, "off"); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_simplex0.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplex0.dia.ref new file mode 100755 index 000000000..2434db87d --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplex0.dia.ref @@ -0,0 +1,141 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +function [ y , index ] = squarefun ( x , index ) + y = x(1)^2+x(2)^2; +endfunction +// +// Test simplex regular +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","spendley"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ +1. 2. +1.96592582628907 2.25881904510252 +1.25881904510252 2.96592582628907 +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); +// +// Test simplex axes +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ + 1. 2. + 2. 2. + 1. 3. +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); +// +// Test simplex axesrelative +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","pfeffer"); +nm = neldermead_configure(nm,"-simplex0deltausual",0.05); +nm = neldermead_configure(nm,"-simplex0deltazero",0.0075); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ + 1. 2. + 1.05 2. + 1. 2.1 +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); +// +// Test simplex given +// +lambda1 = (1.0 + sqrt(33.0))/8.0; +lambda2 = (1.0 - sqrt(33.0))/8.0; +coords0 = [ +1.0 1.0 +0.0 0.0 +lambda1 lambda2 +]; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-simplex0deltazero",0.0075); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ +1. 1. +0. 0. +0.8430703308172535770382 -0.5930703308172535770382 +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); +// +// Test simplex axes with a vector of lengths +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",[1.0 2.0]); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ + 1. 2. + 2. 2. + 1. 4. +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); +// +// Test simplex axes when there are bounds constraints +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-x0",[0.0 0.0]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0length",20.0); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ + 0. 0. + 10. 0. + 0. 10. +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_simplex0.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplex0.tst new file mode 100755 index 000000000..f68ee4f5f --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplex0.tst @@ -0,0 +1,146 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + +function [ y , index ] = squarefun ( x , index ) + y = x(1)^2+x(2)^2; +endfunction +// +// Test simplex regular +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","spendley"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ +1. 2. +1.96592582628907 2.25881904510252 +1.25881904510252 2.96592582628907 +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); +// +// Test simplex axes +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ + 1. 2. + 2. 2. + 1. 3. +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); +// +// Test simplex axesrelative +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","pfeffer"); +nm = neldermead_configure(nm,"-simplex0deltausual",0.05); +nm = neldermead_configure(nm,"-simplex0deltazero",0.0075); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ + 1. 2. + 1.05 2. + 1. 2.1 +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); +// +// Test simplex given +// +lambda1 = (1.0 + sqrt(33.0))/8.0; +lambda2 = (1.0 - sqrt(33.0))/8.0; +coords0 = [ +1.0 1.0 +0.0 0.0 +lambda1 lambda2 +]; +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","given"); +nm = neldermead_configure(nm,"-coords0",coords0); +nm = neldermead_configure(nm,"-simplex0deltazero",0.0075); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ +1. 1. +0. 0. +0.8430703308172535770382 -0.5930703308172535770382 +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); +// +// Test simplex axes with a vector of lengths +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",[1.0 2.0]); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ + 1. 2. + 2. 2. + 1. 4. +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); + +// +// Test simplex axes when there are bounds constraints +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",squarefun); +nm = neldermead_configure(nm,"-maxiter",10); +nm = neldermead_configure(nm,"-x0",[0.0 0.0]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-method","box"); +nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0]); +nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0]); +nm = neldermead_configure(nm,"-simplex0length",20.0); +nm = neldermead_search(nm, "off"); +simplex0 = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx ( simplex0 ); +expected = [ + 0. 0. + 10. 0. + 0. 10. +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexaxes.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexaxes.dia.ref new file mode 100755 index 000000000..b337ded06 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexaxes.dia.ref @@ -0,0 +1,30 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_search(nm, "off"); +simplex = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx( simplex ); +expected = [ + 1. 2. + 2. 2. + 1. 3. +]; +assert_checkalmostequal ( computed , expected, %eps ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexaxes.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexaxes.tst new file mode 100755 index 000000000..e3a2cb416 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexaxes.tst @@ -0,0 +1,36 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_search(nm, "off"); +simplex = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx( simplex ); +expected = [ + 1. 2. + 2. 2. + 1. 3. +]; +assert_checkalmostequal ( computed , expected, %eps ); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexregular.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexregular.dia.ref new file mode 100755 index 000000000..366c2d1e7 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexregular.dia.ref @@ -0,0 +1,31 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","spendley"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_search(nm, "off"); +simplex = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx( simplex ); +expected = [ +1. 2. +1.96592582628907 2.25881904510252 +1.25881904510252 2.96592582628907 +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); +clear nm; diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexregular.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexregular.tst new file mode 100755 index 000000000..73f66e727 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexregular.tst @@ -0,0 +1,38 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + + + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-x0",[1.0 2.0]'); +nm = neldermead_configure(nm,"-simplex0method","spendley"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_search(nm, "off"); +simplex = neldermead_get(nm,"-simplex0"); +computed = optimsimplex_getallx( simplex ); +expected = [ +1. 2. +1.96592582628907 2.25881904510252 +1.25881904510252 2.96592582628907 +]; +assert_checkalmostequal ( computed, expected, 10 * %eps ); +nm = neldermead_destroy(nm); +clear nm; + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_tolerance.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_tolerance.dia.ref new file mode 100755 index 000000000..4f3ed900c --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_tolerance.dia.ref @@ -0,0 +1,64 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// Check behaviour with default settings. +// +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test tolxrelative +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",400); +nm = neldermead_configure(nm,"-tolfunmethod",%f); +nm = neldermead_configure(nm,"-tolxmethod",%t); +nm = neldermead_configure(nm,"-tolxrelative",10.e-16); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0;1.0], 1e-13 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolx" ); +nm = neldermead_destroy(nm); +// +// Test tolxabsolute +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",600); +nm = neldermead_configure(nm,"-maxfunevals",600); +nm = neldermead_configure(nm,"-tolfunmethod",%f); +nm = neldermead_configure(nm,"-tolxmethod",%t); +nm = neldermead_configure(nm,"-tolxabsolute",10.e-16); +nm = neldermead_configure(nm,"-tolxrelative",0.0); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0;1.0], 1e-14 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolx" ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_tolerance.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_tolerance.tst new file mode 100755 index 000000000..73ae36368 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_tolerance.tst @@ -0,0 +1,72 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + +// +// Check behaviour with default settings. +// + + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test tolxrelative +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",200); +nm = neldermead_configure(nm,"-maxfunevals",400); +nm = neldermead_configure(nm,"-tolfunmethod",%f); +nm = neldermead_configure(nm,"-tolxmethod",%t); +nm = neldermead_configure(nm,"-tolxrelative",10.e-16); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0;1.0], 1e-13 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolx" ); +nm = neldermead_destroy(nm); + +// +// Test tolxabsolute +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",600); +nm = neldermead_configure(nm,"-maxfunevals",600); +nm = neldermead_configure(nm,"-tolfunmethod",%f); +nm = neldermead_configure(nm,"-tolxmethod",%t); +nm = neldermead_configure(nm,"-tolxabsolute",10.e-16); +nm = neldermead_configure(nm,"-tolxrelative",0.0); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm); +// Check optimum point +xopt = neldermead_get(nm,"-xopt"); +assert_checkalmostequal ( xopt , [1.0;1.0], 1e-14 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolx" ); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_toleranceobsolete.dia.ref b/modules/optimization/tests/unit_tests/neldermead/neldermead_toleranceobsolete.dia.ref new file mode 100755 index 000000000..ceba718fe --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_toleranceobsolete.dia.ref @@ -0,0 +1,54 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// +// Check behaviour with default settings. +// +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test tolerance on variance of function values +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",600); +nm = neldermead_configure(nm,"-maxfunevals",600); +nm = neldermead_configure(nm,"-tolfunmethod",%f); +nm = neldermead_configure(nm,"-tolxmethod",%f); +nm = neldermead_configure(nm,"-tolvarianceflag",%t); +WARNING: Option -tolvarianceflag is obsolete. + Please use -outputcommand instead. + This feature will be permanently removed in Scilab 5.4.1 + +nm = neldermead_configure(nm,"-tolabsolutevariance",1.e-4); +WARNING: Option -tolabsolutevariance is obsolete. + Please use -outputcommand instead. + This feature will be permanently removed in Scilab 5.4.1 + +nm = neldermead_configure(nm,"-tolrelativevariance",1.e-4); +WARNING: Option -tolrelativevariance is obsolete. + Please use -outputcommand instead. + This feature will be permanently removed in Scilab 5.4.1 + +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm); +// Check optimum point +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 4.0, 1e-1 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolvariance" ); +nm = neldermead_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/neldermead_toleranceobsolete.tst b/modules/optimization/tests/unit_tests/neldermead/neldermead_toleranceobsolete.tst new file mode 100755 index 000000000..cb19a5bae --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/neldermead_toleranceobsolete.tst @@ -0,0 +1,49 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + +// +// Check behaviour with default settings. +// + + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test tolerance on variance of function values +// +nm = neldermead_new (); +nm = neldermead_configure(nm,"-numberofvariables",2); +nm = neldermead_configure(nm,"-function",rosenbrock); +nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); +nm = neldermead_configure(nm,"-maxiter",600); +nm = neldermead_configure(nm,"-maxfunevals",600); +nm = neldermead_configure(nm,"-tolfunmethod",%f); +nm = neldermead_configure(nm,"-tolxmethod",%f); +nm = neldermead_configure(nm,"-tolvarianceflag",%t); +nm = neldermead_configure(nm,"-tolabsolutevariance",1.e-4); +nm = neldermead_configure(nm,"-tolrelativevariance",1.e-4); +nm = neldermead_configure(nm,"-simplex0method","axes"); +nm = neldermead_configure(nm,"-simplex0length",1.0); +nm = neldermead_configure(nm,"-method","variable"); +nm = neldermead_search(nm); +// Check optimum point +fopt = neldermead_get(nm,"-fopt"); +assert_checkalmostequal ( fopt , 4.0, 1e-1 ); +// Check status +status = neldermead_get(nm,"-status"); +assert_checkequal ( status , "tolvariance" ); +nm = neldermead_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/nmplot_contour.dia.ref b/modules/optimization/tests/unit_tests/neldermead/nmplot_contour.dia.ref new file mode 100755 index 000000000..13fca79dc --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/nmplot_contour.dia.ref @@ -0,0 +1,59 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- ENGLISH IMPOSED --> +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// Use 20 points in X and 20 points in Y +NP = 20; +// +// Test a basic contour plot +// +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",rosenbrock); +xmin = -2.0; +xmax = 2.0; +ymin = -2.0; +ymax = 2.0; +nx = NP; +ny = NP; +[nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin , xmax , ymin , ymax , nx , ny ); +f = scf(); +drawlater(); +contour ( xdata , ydata , zdata , [1 10 100 500 1000 2000] ); +drawnow(); +close(f); +nm = nmplot_destroy(nm); +// Test with a function for which the column orientation matters +function [ y , index ] = myquad ( x , index ) + y = x' * x; +endfunction +// Use 20 points in X and 20 points in Y +NP = 20; +// +// Test a basic contour plot +// +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",myquad); +xmin = -2.0; +xmax = 2.0; +ymin = -2.0; +ymax = 2.0; +nx = NP; +ny = NP; +[nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin , xmax , ymin , ymax , nx , ny ); +f = scf(); +drawlater(); +contour ( xdata , ydata , zdata , linspace(0,8,20) ); +drawnow(); +close(f); +nm = nmplot_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/nmplot_contour.tst b/modules/optimization/tests/unit_tests/neldermead/nmplot_contour.tst new file mode 100755 index 000000000..9f43a7bdd --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/nmplot_contour.tst @@ -0,0 +1,70 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- ENGLISH IMPOSED --> + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// Use 20 points in X and 20 points in Y +NP = 20; + +// +// Test a basic contour plot +// +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",rosenbrock); +xmin = -2.0; +xmax = 2.0; +ymin = -2.0; +ymax = 2.0; +nx = NP; +ny = NP; +[nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin , xmax , ymin , ymax , nx , ny ); +f = scf(); +drawlater(); +contour ( xdata , ydata , zdata , [1 10 100 500 1000 2000] ); +drawnow(); +close(f); +nm = nmplot_destroy(nm); + + +// Test with a function for which the column orientation matters +function [ y , index ] = myquad ( x , index ) + y = x' * x; +endfunction + +// Use 20 points in X and 20 points in Y +NP = 20; + +// +// Test a basic contour plot +// +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",myquad); +xmin = -2.0; +xmax = 2.0; +ymin = -2.0; +ymax = 2.0; +nx = NP; +ny = NP; +[nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin , xmax , ymin , ymax , nx , ny ); +f = scf(); +drawlater(); +contour ( xdata , ydata , zdata , linspace(0,8,20) ); +drawnow(); +close(f); +nm = nmplot_destroy(nm); + + diff --git a/modules/optimization/tests/unit_tests/neldermead/nmplot_newdestroy.tst b/modules/optimization/tests/unit_tests/neldermead/nmplot_newdestroy.tst new file mode 100755 index 000000000..1602e9595 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/nmplot_newdestroy.tst @@ -0,0 +1,51 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Check behaviour with default settings. +// +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",rosenbrock); +nm = nmplot_configure(nm,"-x0",[-1.2 1.0].'); +nm = nmplot_configure(nm,"-maxiter",10); +nm = nmplot_configure(nm,"-maxfunevals",300); +nm = nmplot_configure(nm,"-tolfunrelative",10*%eps); +nm = nmplot_configure(nm,"-tolxrelative",10*%eps); +nm = nmplot_configure(nm,"-simplex0method","axes"); +nm = nmplot_configure(nm,"-simplex0length",1.0); +nm = nmplot_configure(nm,"-method","variable"); +simfn = fullfile(TMPDIR,"simplex.txt"); +nm = nmplot_configure(nm,"-simplexfn",simfn); +fbfn = fullfile(TMPDIR,"fbar.txt"); +nm = nmplot_configure(nm,"-fbarfn",fbfn); +fofn = fullfile(TMPDIR,"fopt.txt"); +nm = nmplot_configure(nm,"-foptfn",fofn); +sigfn = fullfile(TMPDIR,"sigma.txt"); +nm = nmplot_configure(nm,"-sigmafn",sigfn); +sfn = nmplot_cget ( nm , "-simplexfn" ); +assert_checkequal ( sfn , simfn ); +sfn = nmplot_cget ( nm , "-fbarfn" ); +assert_checkequal ( sfn , fbfn ); +sfn = nmplot_cget ( nm , "-foptfn" ); +assert_checkequal ( sfn , fofn ); +sfn = nmplot_cget ( nm , "-sigmafn" ); +assert_checkequal ( sfn , sigfn ); +// Check the display +disp(nm); +nm = nmplot_destroy(nm); + diff --git a/modules/optimization/tests/unit_tests/neldermead/nmplot_newdestroy.unix.dia.ref b/modules/optimization/tests/unit_tests/neldermead/nmplot_newdestroy.unix.dia.ref new file mode 100755 index 000000000..089b26ce2 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/nmplot_newdestroy.unix.dia.ref @@ -0,0 +1,56 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Check behaviour with default settings. +// +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",rosenbrock); +nm = nmplot_configure(nm,"-x0",[-1.2 1.0].'); +nm = nmplot_configure(nm,"-maxiter",10); +nm = nmplot_configure(nm,"-maxfunevals",300); +nm = nmplot_configure(nm,"-tolfunrelative",10*%eps); +nm = nmplot_configure(nm,"-tolxrelative",10*%eps); +nm = nmplot_configure(nm,"-simplex0method","axes"); +nm = nmplot_configure(nm,"-simplex0length",1.0); +nm = nmplot_configure(nm,"-method","variable"); +simfn = fullfile(TMPDIR,"simplex.txt"); +nm = nmplot_configure(nm,"-simplexfn",simfn); +fbfn = fullfile(TMPDIR,"fbar.txt"); +nm = nmplot_configure(nm,"-fbarfn",fbfn); +fofn = fullfile(TMPDIR,"fopt.txt"); +nm = nmplot_configure(nm,"-foptfn",fofn); +sigfn = fullfile(TMPDIR,"sigma.txt"); +nm = nmplot_configure(nm,"-sigmafn",sigfn); +sfn = nmplot_cget ( nm , "-simplexfn" ); +assert_checkequal ( sfn , simfn ); +sfn = nmplot_cget ( nm , "-fbarfn" ); +assert_checkequal ( sfn , fbfn ); +sfn = nmplot_cget ( nm , "-foptfn" ); +assert_checkequal ( sfn , fofn ); +sfn = nmplot_cget ( nm , "-sigmafn" ); +assert_checkequal ( sfn , sigfn ); +// Check the display +disp(nm); + +Nelder-Mead Plot Object: +====================== + +Simplex data file : TMPDIR/simplex.txt +Fbar data file : TMPDIR/fbar.txt +Fopt data file : TMPDIR/fopt.txt +Sigma data file : TMPDIR/sigma.txt + +nmbase: <TNELDER Object> +nm = nmplot_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/nmplot_newdestroy.win.dia.ref b/modules/optimization/tests/unit_tests/neldermead/nmplot_newdestroy.win.dia.ref new file mode 100755 index 000000000..1495fa4f4 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/nmplot_newdestroy.win.dia.ref @@ -0,0 +1,56 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Check behaviour with default settings. +// +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",rosenbrock); +nm = nmplot_configure(nm,"-x0",[-1.2 1.0].'); +nm = nmplot_configure(nm,"-maxiter",10); +nm = nmplot_configure(nm,"-maxfunevals",300); +nm = nmplot_configure(nm,"-tolfunrelative",10*%eps); +nm = nmplot_configure(nm,"-tolxrelative",10*%eps); +nm = nmplot_configure(nm,"-simplex0method","axes"); +nm = nmplot_configure(nm,"-simplex0length",1.0); +nm = nmplot_configure(nm,"-method","variable"); +simfn = fullfile(TMPDIR,"simplex.txt"); +nm = nmplot_configure(nm,"-simplexfn",simfn); +fbfn = fullfile(TMPDIR,"fbar.txt"); +nm = nmplot_configure(nm,"-fbarfn",fbfn); +fofn = fullfile(TMPDIR,"fopt.txt"); +nm = nmplot_configure(nm,"-foptfn",fofn); +sigfn = fullfile(TMPDIR,"sigma.txt"); +nm = nmplot_configure(nm,"-sigmafn",sigfn); +sfn = nmplot_cget ( nm , "-simplexfn" ); +assert_checkequal ( sfn , simfn ); +sfn = nmplot_cget ( nm , "-fbarfn" ); +assert_checkequal ( sfn , fbfn ); +sfn = nmplot_cget ( nm , "-foptfn" ); +assert_checkequal ( sfn , fofn ); +sfn = nmplot_cget ( nm , "-sigmafn" ); +assert_checkequal ( sfn , sigfn ); +// Check the display +disp(nm); + +Nelder-Mead Plot Object: +====================== + +Simplex data file : TMPDIR\simplex.txt +Fbar data file : TMPDIR\fbar.txt +Fopt data file : TMPDIR\fopt.txt +Sigma data file : TMPDIR\sigma.txt + +nmbase: <TNELDER Object> +nm = nmplot_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/nmplot_rosenbrock.dia.ref b/modules/optimization/tests/unit_tests/neldermead/nmplot_rosenbrock.dia.ref new file mode 100755 index 000000000..60aff8825 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/nmplot_rosenbrock.dia.ref @@ -0,0 +1,80 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// Use 20 points in X and 20 points in Y +NP = 20; +// +// Check behaviour with default settings. +// +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",rosenbrock); +nm = nmplot_configure(nm,"-x0",[-1.2 1.0].'); +nm = nmplot_configure(nm,"-maxiter",10); +nm = nmplot_configure(nm,"-maxfunevals",300); +nm = nmplot_configure(nm,"-tolfunrelative",10*%eps); +nm = nmplot_configure(nm,"-tolxrelative",10*%eps); +nm = nmplot_configure(nm,"-simplex0method","axes"); +nm = nmplot_configure(nm,"-simplex0length",1.0); +nm = nmplot_configure(nm,"-method","variable"); +// +// Setup output files +// +simplexfn = fullfile(TMPDIR,"simplex.txt"); +fbarfn = fullfile(TMPDIR,"fbar.txt"); +foptfn = fullfile(TMPDIR,"fopt.txt"); +sigmafn = fullfile(TMPDIR,"sigma.txt"); +nm = nmplot_configure(nm,"-simplexfn",simplexfn); +nm = nmplot_configure(nm,"-fbarfn",fbarfn); +nm = nmplot_configure(nm,"-foptfn",foptfn); +nm = nmplot_configure(nm,"-sigmafn",sigmafn); +// +// Perform optimization +// +nm = nmplot_search(nm); +optimbase_terminate: Exiting: Maximum number of iterations has been exceeded + - increase MaxIter option. +// Plot the contours of the cost function and the simplex history +xmin = -2.0; +xmax = 2.0 ; +ymin = -2.0 ; +ymax = 2.0 ; +nx = NP ; +ny = NP; +[nm , xdata , ydata , zdata ] = nmplot_contour ( nm , ... + xmin , xmax , ymin , ymax , nx , ny ); +f = scf(); +drawlater(); +contour ( xdata , ydata , zdata , 20 ) +nmplot_simplexhistory ( nm ); +drawnow(); +close(f); +f = scf(); +mytitle = "Function Value Average" ; +myxlabel = "Iterations"; +nmplot_historyplot ( nm , fbarfn , mytitle , myxlabel); +close(f); +f = scf(); +mytitle = "Minimum Function Value" ; +myxlabel = "Iterations"; +nmplot_historyplot ( nm , foptfn , mytitle , myxlabel); +close(f); +f = scf(); +mytitle = "Maximum Oriented length" ; +myxlabel = "Iterations"; +nmplot_historyplot ( nm , sigmafn , mytitle , myxlabel); +close(f); +deletefile(simplexfn); +deletefile(fbarfn); +deletefile(foptfn); +deletefile(sigmafn); +nm = nmplot_destroy(nm); diff --git a/modules/optimization/tests/unit_tests/neldermead/nmplot_rosenbrock.tst b/modules/optimization/tests/unit_tests/neldermead/nmplot_rosenbrock.tst new file mode 100755 index 000000000..138756e81 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/nmplot_rosenbrock.tst @@ -0,0 +1,86 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + + + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// Use 20 points in X and 20 points in Y +NP = 20; + +// +// Check behaviour with default settings. +// +nm = nmplot_new (); +nm = nmplot_configure(nm,"-numberofvariables",2); +nm = nmplot_configure(nm,"-function",rosenbrock); +nm = nmplot_configure(nm,"-x0",[-1.2 1.0].'); +nm = nmplot_configure(nm,"-maxiter",10); +nm = nmplot_configure(nm,"-maxfunevals",300); +nm = nmplot_configure(nm,"-tolfunrelative",10*%eps); +nm = nmplot_configure(nm,"-tolxrelative",10*%eps); +nm = nmplot_configure(nm,"-simplex0method","axes"); +nm = nmplot_configure(nm,"-simplex0length",1.0); +nm = nmplot_configure(nm,"-method","variable"); +// +// Setup output files +// +simplexfn = fullfile(TMPDIR,"simplex.txt"); +fbarfn = fullfile(TMPDIR,"fbar.txt"); +foptfn = fullfile(TMPDIR,"fopt.txt"); +sigmafn = fullfile(TMPDIR,"sigma.txt"); +nm = nmplot_configure(nm,"-simplexfn",simplexfn); +nm = nmplot_configure(nm,"-fbarfn",fbarfn); +nm = nmplot_configure(nm,"-foptfn",foptfn); +nm = nmplot_configure(nm,"-sigmafn",sigmafn); +// +// Perform optimization +// +nm = nmplot_search(nm); +// Plot the contours of the cost function and the simplex history +xmin = -2.0; +xmax = 2.0 ; +ymin = -2.0 ; +ymax = 2.0 ; +nx = NP ; +ny = NP; +[nm , xdata , ydata , zdata ] = nmplot_contour ( nm , ... + xmin , xmax , ymin , ymax , nx , ny ); +f = scf(); +drawlater(); +contour ( xdata , ydata , zdata , 20 ) +nmplot_simplexhistory ( nm ); +drawnow(); +close(f); +f = scf(); +mytitle = "Function Value Average" ; +myxlabel = "Iterations"; +nmplot_historyplot ( nm , fbarfn , mytitle , myxlabel); +close(f); +f = scf(); +mytitle = "Minimum Function Value" ; +myxlabel = "Iterations"; +nmplot_historyplot ( nm , foptfn , mytitle , myxlabel); +close(f); +f = scf(); +mytitle = "Maximum Oriented length" ; +myxlabel = "Iterations"; +nmplot_historyplot ( nm , sigmafn , mytitle , myxlabel); +close(f); +deletefile(simplexfn); +deletefile(fbarfn); +deletefile(foptfn); +deletefile(sigmafn); +nm = nmplot_destroy(nm); + + + diff --git a/modules/optimization/tests/unit_tests/neldermead/optimget.dia.ref b/modules/optimization/tests/unit_tests/neldermead/optimget.dia.ref new file mode 100755 index 000000000..e8593ca3c --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/optimget.dia.ref @@ -0,0 +1,62 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2009-2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// val = optimget ( options , key ) +// +op = optimset (); +op = optimset(op,'TolX',1.e-12); +val = optimget(op,'TolX'); +assert_checkequal ( val , 1.e-12 ); +// +// val = optimget ( options , key , value ) with non-empty value +// +op = optimset (); +op = optimset(op,'TolX',1.e-12); +val = optimget(op,'TolX' , 1.e-5); +assert_checkequal ( val , 1.e-12 ); +// +// val = optimget ( options , key , value ) with empty value +// +op = optimset (); +val = optimget(op,'TolX' , 1.e-5); +assert_checkequal ( val , 1.e-5 ); +// +// val = optimget ( options , key ) with ambiguous key +// +op = optimset (); +op = optimset(op,'TolX',1.e-12); +cmd = "optimget(op,''Tol'' )"; +assert_checkerror(cmd,"%s: Ambiguous property name %s matches several fields : %s",[],"optimget","Tol","TolFun TolX"); +// +// Test with wrong number of arguments +// +op = optimset (); +cmd = "optimget ( op )"; +assert_checkerror(cmd,"%s: Wrong number of arguments : %d expected while %d given",[],"optimget",2,1); +// +// Test with wrong number of arguments +// +op = optimset (); +cmd = "optimget ( op , ""TolX"" , 1.e-12 , 1.e-13)"; +assert_checkerror(cmd,"%s: Wrong number of arguments : %d expected while %d given",[],"optimget",2,4); +// +// val = optimget ( options , key ) with leading characters only +// +op = optimset (); +op = optimset ( op , 'MaxFunEvals' , 1000 ); +val = optimget ( op , 'MaxF' ); +assert_checkequal ( val , 1000 ); +// +// val = optimget ( options , key , default ) +// +default = optimset ( 'fminsearch' ); +op = optimset (); +value = optimget(op,'TolX',default.TolX); +assert_checkequal ( value , 1.e-4 ); diff --git a/modules/optimization/tests/unit_tests/neldermead/optimget.tst b/modules/optimization/tests/unit_tests/neldermead/optimget.tst new file mode 100755 index 000000000..95f41b868 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/optimget.tst @@ -0,0 +1,69 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2009-2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// +// val = optimget ( options , key ) +// +op = optimset (); +op = optimset(op,'TolX',1.e-12); +val = optimget(op,'TolX'); +assert_checkequal ( val , 1.e-12 ); + +// +// val = optimget ( options , key , value ) with non-empty value +// +op = optimset (); +op = optimset(op,'TolX',1.e-12); +val = optimget(op,'TolX' , 1.e-5); +assert_checkequal ( val , 1.e-12 ); +// +// val = optimget ( options , key , value ) with empty value +// +op = optimset (); +val = optimget(op,'TolX' , 1.e-5); +assert_checkequal ( val , 1.e-5 ); + +// +// val = optimget ( options , key ) with ambiguous key +// +op = optimset (); +op = optimset(op,'TolX',1.e-12); +cmd = "optimget(op,''Tol'' )"; +assert_checkerror(cmd,"%s: Ambiguous property name %s matches several fields : %s",[],"optimget","Tol","TolFun TolX"); + +// +// Test with wrong number of arguments +// +op = optimset (); +cmd = "optimget ( op )"; +assert_checkerror(cmd,"%s: Wrong number of arguments : %d expected while %d given",[],"optimget",2,1); + +// +// Test with wrong number of arguments +// +op = optimset (); +cmd = "optimget ( op , ""TolX"" , 1.e-12 , 1.e-13)"; +assert_checkerror(cmd,"%s: Wrong number of arguments : %d expected while %d given",[],"optimget",2,4); +// +// val = optimget ( options , key ) with leading characters only +// +op = optimset (); +op = optimset ( op , 'MaxFunEvals' , 1000 ); +val = optimget ( op , 'MaxF' ); +assert_checkequal ( val , 1000 ); +// +// val = optimget ( options , key , default ) +// +default = optimset ( 'fminsearch' ); +op = optimset (); +value = optimget(op,'TolX',default.TolX); +assert_checkequal ( value , 1.e-4 ); + diff --git a/modules/optimization/tests/unit_tests/neldermead/optimset.dia.ref b/modules/optimization/tests/unit_tests/neldermead/optimset.dia.ref new file mode 100755 index 000000000..fb68b405c --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/optimset.dia.ref @@ -0,0 +1,101 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Test #1 : Without parameters +// +op = optimset (); +assert_checkequal ( op.Display , [] ); +assert_checkequal ( op.FunValCheck , [] ); +assert_checkequal ( op.MaxFunEvals , [] ); +assert_checkequal ( op.MaxIter , [] ); +assert_checkequal ( op.OutputFcn , [] ); +assert_checkequal ( op.PlotFcns , [] ); +assert_checkequal ( op.TolFun , [] ); +assert_checkequal ( op.TolX , [] ); +clear op +function y = myoutputfun (x) + y = x; +endfunction +function y = myplotfun (x) + y = x; +endfunction +// +// Test #2 : With parameters +// +op = optimset (... + 'Display','iter',... + "FunValCheck","on",... + "MaxFunEvals",100,... + "MaxIter",110,... + "OutputFcn",myoutputfun,... + "PlotFcns",myplotfun,... + "TolFun",1.e-12,... + "TolX",1.e-13... + ); +assert_checkequal ( op.Display , "iter" ); +assert_checkequal ( op.FunValCheck , "on" ); +assert_checkequal ( op.MaxFunEvals , 100 ); +assert_checkequal ( op.MaxIter , 110 ); +//assert_checkequal ( op.OutputFcn , myoutputfun ); +//assert_checkequal ( op.PlotFcns , myplotfun ); +assert_checkequal ( op.TolFun , 1.e-12 ); +assert_checkequal ( op.TolX , 1.e-13 ); +clear op +// +// Test #3 : Copy one option set into another +// +op1 = optimset ("TolFun",1.e-12); +op2 = optimset (op1,"TolX",1.e-13); +assert_checkequal ( op2.TolFun , 1.e-12 ); +assert_checkequal ( op2.TolX , 1.e-13 ); +clear op1 +clear op2 +// +// Test #3 : with one method name +// +op = optimset ("fminsearch"); +assert_checkequal ( op.TolFun , 1.e-4 ); +assert_checkequal ( op.TolX , 1.e-4 ); +assert_checkequal ( op.Display , "notify" ); +assert_checkequal ( op.MaxFunEvals , "200*numberofvariables" ); +assert_checkequal ( op.MaxIter , "200*numberofvariables" ); +clear op +// +// Test where the first input argument is not a struct +// +cmd = "optimset (''foo'',''MaxFunEvals'',100)"; +assert_checkerror(cmd,"%s: Odd number of arguments : the first argument is expected to be a struct, but is a %s",[],"optimset","string"); +// +// Test where the key is unknown +// +cmd = "optimset (''foo'',100)"; +assert_checkerror(cmd,"%s: Unrecognized parameter name ''%s''.",[],"optimset","foo"); +// +// Test where the algorithm is unknown +// +cmd = "optimset (''foo'')"; +assert_checkerror(cmd,"%s: No default options available: the function ''%s'' does not exist on the path.",[],"optimset","foo"); +// +// Test where the Display key is unknown +// +cmd = "optimset (''Display'',''foo'')"; +assert_checkerror(cmd,"%s: Unrecognized value ''%s'' for ''Display'' option.",[],"optimset","foo"); +// +// Test all possible values of Display +// +op = optimset ( "Display" , "final" ); +assert_checkequal ( op.Display , "final" ); +op = optimset ( "Display" , "iter" ); +assert_checkequal ( op.Display , "iter" ); +op = optimset ( "Display" , "off" ); +assert_checkequal ( op.Display , "off" ); +op = optimset ( "Display" , "notify" ); +assert_checkequal ( op.Display , "notify" ); diff --git a/modules/optimization/tests/unit_tests/neldermead/optimset.tst b/modules/optimization/tests/unit_tests/neldermead/optimset.tst new file mode 100755 index 000000000..663082db0 --- /dev/null +++ b/modules/optimization/tests/unit_tests/neldermead/optimset.tst @@ -0,0 +1,106 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// +// Test #1 : Without parameters +// +op = optimset (); +assert_checkequal ( op.Display , [] ); +assert_checkequal ( op.FunValCheck , [] ); +assert_checkequal ( op.MaxFunEvals , [] ); +assert_checkequal ( op.MaxIter , [] ); +assert_checkequal ( op.OutputFcn , [] ); +assert_checkequal ( op.PlotFcns , [] ); +assert_checkequal ( op.TolFun , [] ); +assert_checkequal ( op.TolX , [] ); +clear op +function y = myoutputfun (x) + y = x; +endfunction +function y = myplotfun (x) + y = x; +endfunction +// +// Test #2 : With parameters +// +op = optimset (... + 'Display','iter',... + "FunValCheck","on",... + "MaxFunEvals",100,... + "MaxIter",110,... + "OutputFcn",myoutputfun,... + "PlotFcns",myplotfun,... + "TolFun",1.e-12,... + "TolX",1.e-13... + ); +assert_checkequal ( op.Display , "iter" ); +assert_checkequal ( op.FunValCheck , "on" ); +assert_checkequal ( op.MaxFunEvals , 100 ); +assert_checkequal ( op.MaxIter , 110 ); +//assert_checkequal ( op.OutputFcn , myoutputfun ); +//assert_checkequal ( op.PlotFcns , myplotfun ); +assert_checkequal ( op.TolFun , 1.e-12 ); +assert_checkequal ( op.TolX , 1.e-13 ); +clear op +// +// Test #3 : Copy one option set into another +// +op1 = optimset ("TolFun",1.e-12); +op2 = optimset (op1,"TolX",1.e-13); +assert_checkequal ( op2.TolFun , 1.e-12 ); +assert_checkequal ( op2.TolX , 1.e-13 ); +clear op1 +clear op2 +// +// Test #3 : with one method name +// +op = optimset ("fminsearch"); +assert_checkequal ( op.TolFun , 1.e-4 ); +assert_checkequal ( op.TolX , 1.e-4 ); +assert_checkequal ( op.Display , "notify" ); +assert_checkequal ( op.MaxFunEvals , "200*numberofvariables" ); +assert_checkequal ( op.MaxIter , "200*numberofvariables" ); +clear op + +// +// Test where the first input argument is not a struct +// +cmd = "optimset (''foo'',''MaxFunEvals'',100)"; +assert_checkerror(cmd,"%s: Odd number of arguments : the first argument is expected to be a struct, but is a %s",[],"optimset","string"); +// +// Test where the key is unknown +// +cmd = "optimset (''foo'',100)"; +assert_checkerror(cmd,"%s: Unrecognized parameter name ''%s''.",[],"optimset","foo"); + +// +// Test where the algorithm is unknown +// +cmd = "optimset (''foo'')"; +assert_checkerror(cmd,"%s: No default options available: the function ''%s'' does not exist on the path.",[],"optimset","foo"); +// +// Test where the Display key is unknown +// +cmd = "optimset (''Display'',''foo'')"; +assert_checkerror(cmd,"%s: Unrecognized value ''%s'' for ''Display'' option.",[],"optimset","foo"); +// +// Test all possible values of Display +// +op = optimset ( "Display" , "final" ); +assert_checkequal ( op.Display , "final" ); +op = optimset ( "Display" , "iter" ); +assert_checkequal ( op.Display , "iter" ); +op = optimset ( "Display" , "off" ); +assert_checkequal ( op.Display , "off" ); +op = optimset ( "Display" , "notify" ); +assert_checkequal ( op.Display , "notify" ); + diff --git a/modules/optimization/tests/unit_tests/numderivative.dia.ref b/modules/optimization/tests/unit_tests/numderivative.dia.ref new file mode 100755 index 000000000..8925690cb --- /dev/null +++ b/modules/optimization/tests/unit_tests/numderivative.dia.ref @@ -0,0 +1,468 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- JVM NOT MANDATORY --> +// 1. Test with a scalar argument +function y = myfunction (x) + y = x*x; +endfunction +x = 1.0; +expected = 2.0; +// 1.1 With default parameters +computed = numderivative(myfunction, x); +assert_checkalmostequal ( computed , expected , 1.e-11 ); +// 1.2 Test order 1 +computed = numderivative(myfunction, x, [], 1); +assert_checkalmostequal ( computed , expected , 1.e-8 ); +// 1.3 Test order 2 +computed = numderivative(myfunction, x, [], 2); +assert_checkalmostequal ( computed , expected , 1.e-11 ); +// 1.4 Test order 4 +computed = numderivative(myfunction, x, [], 4); +assert_checkalmostequal ( computed , expected , 1.e-13 ); +// 1.5 Compute second numderivative at the same time +Jexpected = 2.0; +Hexpected = 2.0; +[Jcomputed, Hcomputed] = numderivative(myfunction, x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-11 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 1.6 Test order 1 +[Jcomputed, Hcomputed] = numderivative(myfunction, x, [], 1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +// 1.7 Test order 2 +[Jcomputed, Hcomputed] = numderivative(myfunction, x, [], 2); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-11 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 1.8 Test order 4 +[Jcomputed, Hcomputed] = numderivative(myfunction, x, [], 4); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-13 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-11 ); +// 1.9 Configure the step +computed = numderivative(myfunction, x, 1.e-1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-13 ); +// 1.10 Configure the step +[Jcomputed, Hcomputed] = numderivative(myfunction,x,1.e-1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-13 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-11 ); +// 2. Test with a vector argument +function y = myfunction2 (x) + y = x(1)*x(1) + x(2) + x(1)*x(2); +endfunction +x = [1.0; 2.0]; +Jexpected = [4. 2.]; +Hexpected = [2. 1. 1. 0.]; +// 2.1 With default parameters +computed = numderivative(myfunction2, x); +assert_checkalmostequal ( computed , Jexpected , 1.e-10 ); +// 2.2 Test order 1 +computed = numderivative(myfunction2, x, [], 1); +assert_checkalmostequal ( computed , Jexpected , 1.e-8 ); +// 2.3 Test order 2 +computed = numderivative(myfunction2, x, [], 2); +assert_checkalmostequal ( computed , Jexpected , 1.e-10 ); +// 2.4 Test order 4 +computed = numderivative(myfunction2, x, [], 4); +assert_checkalmostequal ( computed , Jexpected , 1.e-13 ); +// 2.5 Compute second numderivative at the same time +[Jcomputed, Hcomputed] = numderivative(myfunction2, x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 2.6 Test order 1 +[Jcomputed , Hcomputed] = numderivative(myfunction2, x, [], 1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-5 ); +// 2.7 Test order 2 +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, [], 2); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 2.8 Test order 4 +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, [], 4); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-13 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-10, 1.e-10 ); +// +// 2.9 Configure the step - Expansion of scalar h to the same size as x +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, 1.e-1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-13 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-10, 1.e-10 ); +// 2.10 Configure the step - Expansion of scalar h to the same size as x +h = %eps^(1/3)*abs(x); +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, h); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-5 , 1.e-5); +// 3. Test H_form +// 3.1 Test H_form = "default" +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 1.0 0.0]; +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, [], [], "default"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 3.2 Test H_form = "hypermat" +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 +1.0 0.0]; +[Jcomputed, Hcomputed] = numderivative(myfunction2, x , [], [], "hypermat"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 3.3 Test H_form = "blockmat" +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 +1.0 0.0]; +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, [], [], "blockmat"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 5. Test h parameter +// Test a case where the default step h is very small ~ 1.e-9, +// but, because the function is very flat in the neighbourhood of the +// point, a larger step ~ 1.e-4 reduces the error. +// This means that this test cannot pass if the right step is +// not taken into account, therefore testing the feature "h is used correctly". +myn = 1.e5; +function y = myfunction3 (x) + y = x^(2/myn); +endfunction +x = 1.0; +h = 6.055454e-006; +Jexpected = (2/myn) * x^(2/myn-1); +Hexpected = (2/myn) * (2/myn-1) * x^(2/myn-2); +[Jcomputed, Hcomputed] = numderivative(myfunction3, x, 1.e-4, 1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-4 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-3 ); +// 6. Test Q parameter +function y = myfunction4 (x) + y = x(1)*x(1) + x(2)+ x(1)*x(2); +endfunction +x = [1.; 2.]; +Jexpected = [4. 2.]; +Hexpected = [2. 1. 1. 0.]; +// +rand("seed", 0); +Q = qr(rand(2, 2)); +[Jcomputed, Hcomputed] = numderivative(myfunction4, x, [], [], [], Q); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-8, 1.e-7 ); +// +// 7. Test vector output y +function y = myexample(x) + f1 = sin(x(1)*x(2)) + exp(x(2)*x(3)+x(1)); + f2 = sum(x.^3); + y = [f1; f2]; +endfunction +// The exact gradient +function [g1, g2] = exactg(x) + g1(1) = cos(x(1)*x(2))*x(2) + exp(x(2)*x(3)+x(1)); + g1(2) = cos(x(1)*x(2))*x(1) + exp(x(2)*x(3)+x(1))*x(3); + g1(3) = exp(x(2)*x(3)+x(1))*x(2); + g2(1) = 3*x(1)^2; + g2(2) = 3*x(2)^2; + g2(3) = 3*x(3)^2; +endfunction +// The exact Hessian +function [H1, H2] = exactH(x) + H1(1, 1) = -sin(x(1)*x(2))*x(2)^2 + exp(x(2)*x(3)+x(1)); + H1(1, 2) = cos(x(1)*x(2)) - sin(x(1)*x(2))*x(2)*x(1) + exp(x(2)*x(3)+x(1))*x(3); + H1(1, 3) = exp(x(2)*x(3)+x(1))*x(2); + H1(2, 1) = H1(1, 2); + H1(2, 2) = -sin(x(1)*x(2))*x(1)^2 + exp(x(2)*x(3)+x(1))*x(3)^2; + H1(2, 3) = exp(x(2)*x(3)+x(1)) + exp(x(2)*x(3)+x(1))*x(3)*x(2); + H1(3, 1) = H1(1, 3); + H1(3, 2) = H1(2, 3); + H1(3, 3) = exp(x(2)*x(3)+x(1))*x(2)^2; + // + H2(1, 1) = 6*x(1); + H2(1, 2) = 0; + H2(1, 3) = 0; + H2(2, 1) = H2(1, 2); + H2(2, 2) = 6*x(2); + H2(2, 3) = 0; + H2(3, 1) = H2(1, 3); + H2(3, 2) = H2(2, 3); + H2(3, 3) = 6*x(3); +endfunction +x=[1; 2; 3]; +[g1, g2] = exactg(x); +[H1, H2] = exactH(x); +Jexpected = [g1'; g2']; +Hexpected = [H1(:)'; H2(:)']; +// 7.1.1 Check Jacobian with default options +Jcomputed = numderivative(myexample, x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +// 7.1.2 Check Jacobian with order = 1 +Jcomputed = numderivative(myexample, x, [], 1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-7 ); +// 7.1.3 Check Jacobian with order = 2 +Jcomputed = numderivative(myexample, x, [], 2); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +// 7.1.4 Check Jacobian with order = 4 +Jcomputed = numderivative(myexample, x, [], 4); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +// 7.2.1 Check Jacobian and Hessian with default options +[Jcomputed, Hcomputed] = numderivative(myexample, x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +// 7.2.2 Check Jacobian and Hessian with order = 1 +[Jcomputed, Hcomputed] = numderivative(myexample, x, [], 1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-7 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-4 ); +// 7.2.3 Check Jacobian and Hessian with order = 2 +[Jcomputed, Hcomputed] = numderivative(myexample, x, [], 2); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +// 7.2.3 Check Jacobian and Hessian with order = 4 +[Jcomputed, Hcomputed] = numderivative(myexample, x, [], 4); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-4 , 1e-9); +// +// 7.3 Test with "blockmat" +Jexpected = [g1'; g2']; +Hexpected = [H1; H2]; +[Jcomputed, Hcomputed] = numderivative(myexample, x, [], [], "blockmat"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +// +// 7.4 Test with "hypermat" +Jexpected = [g1'; g2']; +Hexpected = []; +Hexpected(:, :, 1) = H1; +Hexpected(:, :, 2) = H2; +[Jcomputed, Hcomputed] = numderivative(myexample, x, [], [], "hypermat"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +assert_checkequal ( size(Hcomputed) , [3 3 2] ); +// This is a limitation of assert (http://bugzilla.scilab.org/show_bug.cgi?id=9461) +// assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +assert_checkalmostequal ( Hexpected(:, :, 1) , Hexpected(:, :, 1) , 1.e-6); +assert_checkalmostequal ( Hexpected(:, :, 2) , Hexpected(:, :, 2) , 1.e-6); +// +// 8. Check the number of function evaluations +function y = myFevalFun(x) + global FEVAL + FEVAL = FEVAL + 1; + y = sum(x.^3); +endfunction +n = 3; +x = ones(n, 1); +// +// 8.1 Jacobian with various orders +global FEVAL; +FEVAL = 0; +g = numderivative(myFevalFun, x, [], 1); +assert_checkequal ( FEVAL, n+1 ); +// +FEVAL = 0; +g = numderivative(myFevalFun, x, [], 2); +assert_checkequal ( FEVAL, 2*n ); +// +FEVAL = 0; +g = numderivative(myFevalFun, x, [], 4); +assert_checkequal ( FEVAL, 4*n ); +// +// 8.2 Hessian with various orders +FEVAL = 0; +[g, H] = numderivative(myFevalFun, x, [], 1); +assert_checkequal ( FEVAL, (n+1)^2+n+1 ); +// +FEVAL = 0; +[g, H] = numderivative(myFevalFun, x, [], 2); +assert_checkequal ( FEVAL, 4*n^2+2*n ); +// +FEVAL = 0; +[g, H] = numderivative(myFevalFun, x, [], 4); +assert_checkequal ( FEVAL, 16*n^2+4*n ); +// +// 9. Check error messages. +// +// 9.1 Cannot evaluate the function - Function case +// +x = [1.; 2.]; +Q = qr(rand(2, 2)); +instr = "J = numderivative(myexample, x, [], [], [], Q)"; +lclmsg = "%s: Error while evaluating the function: ""%s""\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", _("Invalid index.") ); +// 9.2 Cannot evaluate the function - List case +function y = myfunction6 (x, p1, p2) + y = p1*x*x + p2; +endfunction +x = [1.; 2.]; +Q = qr(rand(2, 2)); +funf = list(myfunction6, 7., 8.); +instr = "J = numderivative(funf, x, [], [], [], Q)"; +lclmsg = "%s: Error while evaluating the function: ""%s""\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", msprintf(_("Inconsistent multiplication.\n"))); +// 9.3 Various error cases +x = 2; +// Correct calling sequence: [J, H] = numderivative(myfunction, x) +// Number of input arguments +instr = "J = numderivative()"; +lclmsg = "%s: Wrong number of input arguments: %d to %d expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 2, 6 ); +// Wrong type of f +myfunction7 = "myfunction"; +instr = "[J, H] = numderivative(myfunction7, x)"; +lclmsg = "%s: Wrong type for argument #%d: Function or list expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 1 ); +// Wrong type of x +xx = ""; +instr = "[J, H] = numderivative(myfunction, xx)"; +lclmsg = "%s: Wrong type for argument #%d: Matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 2 ); +// Wrong type of h +hh = ""; +instr = "[J, H] = numderivative(myfunction, x, hh)"; +lclmsg = "%s: Wrong type for argument #%d: Matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 3 ); +// Wrong type of order +oo = ""; +instr = "[J, H] = numderivative(myfunction, x, [], oo)"; +lclmsg = "%s: Wrong type for argument #%d: Matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 4 ); +// Wrong type of H_form +HHform = 12; +instr = "[J, H] = numderivative(myfunction, x, [], [], HHform)"; +lclmsg = "%s: Wrong type for input argument #%d: String array expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 5 ); +// Wrong type of Q +Q = ""; +instr = "[J, H] = numderivative(myfunction, x, [], [], [], Q)"; +lclmsg = "%s: Wrong type for argument #%d: Matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 6 ); +// Wrong size of f (list case) +myfunl = list(myfunction); +instr = "[J, H] = numderivative(myfunl, x)"; +lclmsg = "%s: Wrong number of elements in input argument #%d: At least %d elements expected, but current number is %d.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 1, 2, 1 ); +// Wrong size of x +x = [1. 2.; 3. 4.]; +xx = x'; +instr = "[J, H] = numderivative(myfunction2, xx)"; +lclmsg = "%s: Wrong size for input argument #%d: Vector expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 2 ); +// Wrong size of h +x = [1.0; 2.0]; +h = [1; 2; 3]; +instr = "[J, H] = numderivative(myfunction2, x, h)"; +lclmsg = "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 3, 1); +// Wrong size of order +x = [1.0; 2.0]; +order = [1; 2; 4]; +instr = "[J, H] = numderivative(myfunction2, x, [], order)"; +lclmsg = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 4, 1, 1); +// Wrong size of H_form +x = [1.0; 2.0]; +H_form = ["blockmat" "hypermat"]; +instr = "[J, H] = numderivative(myfunction2, x, [], [], H_form)"; +lclmsg = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 5, 1, 1); +// Wrong size of Q +x = [1.0; 2.0]; +Q = ones(2, 3); +instr = "[J, H] = numderivative(myfunction2, x, [], [], [], Q)"; +lclmsg = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 6, 2, 2); +// 10. Check that a nonzero step is used for components of x which are zero. +// Check also that a scaled step is used. +x=[0; 0; 1.e-50]; +[g1, g2] = exactg(x); +[H1, H2] = exactH(x); +Jexpected = [g1'; g2']; +Hexpected = [H1(:)'; H2(:)']; +// 10.1 Check Jacobian and Hessian with default options +Jcomputed = numderivative(myexample, x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 , 1.e-10); +// For the Jacobian, the step used is h = [%eps^(1/3); %eps^(1/3); %eps^(1/3)*1.e50] +// 11. Prove the numerical superiority of numderivative. +// Although the step provided by numderivative is not always +// optimal, it is often sufficiently accurate. +// Print the number of significant digits. +// x = 1.00D-100, numdiff = 0, derivative = 0, numderivative = 11 +// x = 1.000D-32, numdiff = 0, derivative = 0, numderivative = 10 +// x = 1.000D+32, numdiff = 5, derivative = 0, numderivative = 11 +// x = 1.00D+100, numdiff = 5, derivative = 0, numderivative = 10 +// x = 1, numdiff = 7, derivative = 11, numderivative = 11 +function y = myfunction10 (x) + y = x^3; +endfunction +function y = g10 (x) + y = 3*x^2; +endfunction +for x = [10^-100 10^-32 10^32 10^100 1] + exact = g10 (x); + g3 = numderivative(myfunction10, x); + d3 = assert_computedigits ( g3, exact ); + assert_checktrue ( d3 > 9 ); +end +// 12. Check that numderivative also accepts row vector x +function f = myfunction11(x) + f = x(1)*x(1) + x(1)*x(2); +endfunction +// 12.1 Check with row x +x = [5 8]; +g = numderivative(myfunction11, x); +exact = [18 5]; +assert_checkalmostequal ( g , exact , 1.e-9 ); +// 12.2 Check with h +h = sqrt(%eps)*(1+1d-3*abs(x)); +g = numderivative(myfunction11, x, h); +assert_checkalmostequal ( g , exact , 1.e-8 ); +// 13. Check that we can derivate a compiled function +x = 1; +g = numderivative (sqrt, x); +assert_checkalmostequal ( g , 0.5 , 1.e-8 ); +// 14.1 Check that numderivative works when f takes extra arguments +function y = f(x, A, p, w) + y = x'*A*x + p'*x + w; +endfunction +// with Jacobian and Hessian given +// by J(x) = x'*(A+A')+p' and H(x) = A+A'. +A = rand(3, 3); +p = rand(3, 1); +w = 1; +x = rand(3, 1); +h = 1; +[J, H] = numderivative(list(f, A, p, w), x, h, [], "blockmat"); +assert_checkalmostequal( J , x'*(A+A')+p' ); +assert_checkalmostequal( H , A+A' ); +// 14.2 Same test with a different function +function y = G(x, p) + f1 = sin(x(1)*x(2)*p) + exp(x(2)*x(3)+x(1)); + f2 = sum(x.^3); + y = [f1; f2]; +endfunction +x = rand(3, 1); +p = 1; +df1_dx1 = cos(x(1)*x(2)*p)*x(2)*p+exp(x(2)*x(3)+x(1)); +df1_dx2 = cos(x(1)*x(2)*p)*x(1)*p+exp(x(2)*x(3)+x(1))*x(3); +df1_dx3 = exp(x(2)*x(3)+x(1))*x(2); +df2_dx1 = 3*x(1)^2; +df2_dx2 = 3*x(2)^2; +df2_dx3 = 3*x(3)^2; +expectedJ = [df1_dx1 df1_dx2 df1_dx3; +df2_dx1 df2_dx2 df2_dx3 ]; +df1_dx11 = -sin(x(1)*x(2)*p)*x(2)^2*p^2+exp(x(2)*x(3)+x(1)); +df1_dx12 = -sin(x(1)*x(2)*p)*x(1)*x(2)*p^2+cos(x(1)*x(2)*p)*p+exp(x(2)*x(3)+x(1))*x(3); +df1_dx13 = exp(x(2)*x(3)+x(1))*x(2); +df1_dx21 = df1_dx12; +df1_dx22 = -sin(x(1)*x(2)*p)*x(1)^2*p^2+exp(x(2)*x(3)+x(1))*x(3)^2; +df1_dx23 = exp(x(2)*x(3)+x(1))*(1+x(3)*x(2)); +df1_dx31 = df1_dx13; +df1_dx32 = df1_dx23; +df1_dx33 = exp(x(2)*x(3)+x(1))*x(2)^2; +df2_dx11 = 6*x(1); +df2_dx12 = 0; +df2_dx13 = 0; +df2_dx21 = 0; +df2_dx22 = 6*x(2); +df2_dx23 = 0; +df2_dx31 = 0; +df2_dx32 = 0; +df2_dx33 = 6*x(3); +expectedH = [df1_dx11 df1_dx12 df1_dx13 df1_dx21 df1_dx22 df1_dx23 df1_dx31 df1_dx32 df1_dx33; +df2_dx11 df2_dx12 df2_dx13 df2_dx21 df2_dx22 df2_dx23 df2_dx31 df2_dx32 df2_dx33 ]; +[J, H] = numderivative(list(G, p), x); +assert_checkalmostequal( J , expectedJ ); +assert_checkalmostequal( H , expectedH , [], 1e-7); diff --git a/modules/optimization/tests/unit_tests/numderivative.tst b/modules/optimization/tests/unit_tests/numderivative.tst new file mode 100755 index 000000000..e1534bee1 --- /dev/null +++ b/modules/optimization/tests/unit_tests/numderivative.tst @@ -0,0 +1,484 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- JVM NOT MANDATORY --> + +// 1. Test with a scalar argument +function y = myfunction (x) + y = x*x; +endfunction + +x = 1.0; +expected = 2.0; +// 1.1 With default parameters +computed = numderivative(myfunction, x); +assert_checkalmostequal ( computed , expected , 1.e-11 ); +// 1.2 Test order 1 +computed = numderivative(myfunction, x, [], 1); +assert_checkalmostequal ( computed , expected , 1.e-8 ); +// 1.3 Test order 2 +computed = numderivative(myfunction, x, [], 2); +assert_checkalmostequal ( computed , expected , 1.e-11 ); +// 1.4 Test order 4 +computed = numderivative(myfunction, x, [], 4); +assert_checkalmostequal ( computed , expected , 1.e-13 ); +// 1.5 Compute second numderivative at the same time +Jexpected = 2.0; +Hexpected = 2.0; +[Jcomputed, Hcomputed] = numderivative(myfunction, x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-11 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 1.6 Test order 1 +[Jcomputed, Hcomputed] = numderivative(myfunction, x, [], 1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +// 1.7 Test order 2 +[Jcomputed, Hcomputed] = numderivative(myfunction, x, [], 2); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-11 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 1.8 Test order 4 +[Jcomputed, Hcomputed] = numderivative(myfunction, x, [], 4); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-13 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-11 ); +// 1.9 Configure the step +computed = numderivative(myfunction, x, 1.e-1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-13 ); +// 1.10 Configure the step +[Jcomputed, Hcomputed] = numderivative(myfunction,x,1.e-1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-13 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-11 ); + +// 2. Test with a vector argument +function y = myfunction2 (x) + y = x(1)*x(1) + x(2) + x(1)*x(2); +endfunction +x = [1.0; 2.0]; +Jexpected = [4. 2.]; +Hexpected = [2. 1. 1. 0.]; +// 2.1 With default parameters +computed = numderivative(myfunction2, x); +assert_checkalmostequal ( computed , Jexpected , 1.e-10 ); +// 2.2 Test order 1 +computed = numderivative(myfunction2, x, [], 1); +assert_checkalmostequal ( computed , Jexpected , 1.e-8 ); +// 2.3 Test order 2 +computed = numderivative(myfunction2, x, [], 2); +assert_checkalmostequal ( computed , Jexpected , 1.e-10 ); +// 2.4 Test order 4 +computed = numderivative(myfunction2, x, [], 4); +assert_checkalmostequal ( computed , Jexpected , 1.e-13 ); + +// 2.5 Compute second numderivative at the same time +[Jcomputed, Hcomputed] = numderivative(myfunction2, x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 2.6 Test order 1 +[Jcomputed , Hcomputed] = numderivative(myfunction2, x, [], 1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-5 ); +// 2.7 Test order 2 +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, [], 2); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 2.8 Test order 4 +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, [], 4); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-13 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-10, 1.e-10 ); +// +// 2.9 Configure the step - Expansion of scalar h to the same size as x +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, 1.e-1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-13 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-10, 1.e-10 ); +// 2.10 Configure the step - Expansion of scalar h to the same size as x +h = %eps^(1/3)*abs(x); +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, h); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-8 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-5 , 1.e-5); + +// 3. Test H_form +// 3.1 Test H_form = "default" +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 1.0 0.0]; +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, [], [], "default"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 3.2 Test H_form = "hypermat" +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 +1.0 0.0]; +[Jcomputed, Hcomputed] = numderivative(myfunction2, x , [], [], "hypermat"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); +// 3.3 Test H_form = "blockmat" +Jexpected = [4.0 2.0]; +Hexpected = [2.0 1.0 +1.0 0.0]; +[Jcomputed, Hcomputed] = numderivative(myfunction2, x, [], [], "blockmat"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , %eps ); + +// 5. Test h parameter +// Test a case where the default step h is very small ~ 1.e-9, +// but, because the function is very flat in the neighbourhood of the +// point, a larger step ~ 1.e-4 reduces the error. +// This means that this test cannot pass if the right step is +// not taken into account, therefore testing the feature "h is used correctly". +myn = 1.e5; +function y = myfunction3 (x) + y = x^(2/myn); +endfunction +x = 1.0; +h = 6.055454e-006; +Jexpected = (2/myn) * x^(2/myn-1); +Hexpected = (2/myn) * (2/myn-1) * x^(2/myn-2); +[Jcomputed, Hcomputed] = numderivative(myfunction3, x, 1.e-4, 1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-4 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-3 ); + +// 6. Test Q parameter +function y = myfunction4 (x) + y = x(1)*x(1) + x(2)+ x(1)*x(2); +endfunction +x = [1.; 2.]; +Jexpected = [4. 2.]; +Hexpected = [2. 1. 1. 0.]; +// +rand("seed", 0); +Q = qr(rand(2, 2)); +[Jcomputed, Hcomputed] = numderivative(myfunction4, x, [], [], [], Q); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-8, 1.e-7 ); +// +// 7. Test vector output y +function y = myexample(x) + f1 = sin(x(1)*x(2)) + exp(x(2)*x(3)+x(1)); + f2 = sum(x.^3); + y = [f1; f2]; +endfunction +// The exact gradient +function [g1, g2] = exactg(x) + g1(1) = cos(x(1)*x(2))*x(2) + exp(x(2)*x(3)+x(1)); + g1(2) = cos(x(1)*x(2))*x(1) + exp(x(2)*x(3)+x(1))*x(3); + g1(3) = exp(x(2)*x(3)+x(1))*x(2); + g2(1) = 3*x(1)^2; + g2(2) = 3*x(2)^2; + g2(3) = 3*x(3)^2; +endfunction +// The exact Hessian +function [H1, H2] = exactH(x) + H1(1, 1) = -sin(x(1)*x(2))*x(2)^2 + exp(x(2)*x(3)+x(1)); + H1(1, 2) = cos(x(1)*x(2)) - sin(x(1)*x(2))*x(2)*x(1) + exp(x(2)*x(3)+x(1))*x(3); + H1(1, 3) = exp(x(2)*x(3)+x(1))*x(2); + H1(2, 1) = H1(1, 2); + H1(2, 2) = -sin(x(1)*x(2))*x(1)^2 + exp(x(2)*x(3)+x(1))*x(3)^2; + H1(2, 3) = exp(x(2)*x(3)+x(1)) + exp(x(2)*x(3)+x(1))*x(3)*x(2); + H1(3, 1) = H1(1, 3); + H1(3, 2) = H1(2, 3); + H1(3, 3) = exp(x(2)*x(3)+x(1))*x(2)^2; + // + H2(1, 1) = 6*x(1); + H2(1, 2) = 0; + H2(1, 3) = 0; + H2(2, 1) = H2(1, 2); + H2(2, 2) = 6*x(2); + H2(2, 3) = 0; + H2(3, 1) = H2(1, 3); + H2(3, 2) = H2(2, 3); + H2(3, 3) = 6*x(3); +endfunction + +x=[1; 2; 3]; +[g1, g2] = exactg(x); +[H1, H2] = exactH(x); +Jexpected = [g1'; g2']; +Hexpected = [H1(:)'; H2(:)']; +// 7.1.1 Check Jacobian with default options +Jcomputed = numderivative(myexample, x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +// 7.1.2 Check Jacobian with order = 1 +Jcomputed = numderivative(myexample, x, [], 1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-7 ); +// 7.1.3 Check Jacobian with order = 2 +Jcomputed = numderivative(myexample, x, [], 2); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +// 7.1.4 Check Jacobian with order = 4 +Jcomputed = numderivative(myexample, x, [], 4); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +// 7.2.1 Check Jacobian and Hessian with default options +[Jcomputed, Hcomputed] = numderivative(myexample, x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +// 7.2.2 Check Jacobian and Hessian with order = 1 +[Jcomputed, Hcomputed] = numderivative(myexample, x, [], 1); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-7 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-4 ); +// 7.2.3 Check Jacobian and Hessian with order = 2 +[Jcomputed, Hcomputed] = numderivative(myexample, x, [], 2); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +// 7.2.3 Check Jacobian and Hessian with order = 4 +[Jcomputed, Hcomputed] = numderivative(myexample, x, [], 4); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-10 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-4 , 1e-9); +// +// 7.3 Test with "blockmat" +Jexpected = [g1'; g2']; +Hexpected = [H1; H2]; +[Jcomputed, Hcomputed] = numderivative(myexample, x, [], [], "blockmat"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +// +// 7.4 Test with "hypermat" +Jexpected = [g1'; g2']; +Hexpected = []; +Hexpected(:, :, 1) = H1; +Hexpected(:, :, 2) = H2; +[Jcomputed, Hcomputed] = numderivative(myexample, x, [], [], "hypermat"); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 ); +assert_checkequal ( size(Hcomputed) , [3 3 2] ); +// This is a limitation of assert (http://bugzilla.scilab.org/show_bug.cgi?id=9461) +// assert_checkalmostequal ( Hcomputed , Hexpected , 1.e-6 ); +assert_checkalmostequal ( Hexpected(:, :, 1) , Hexpected(:, :, 1) , 1.e-6); +assert_checkalmostequal ( Hexpected(:, :, 2) , Hexpected(:, :, 2) , 1.e-6); +// +// 8. Check the number of function evaluations +function y = myFevalFun(x) + global FEVAL + FEVAL = FEVAL + 1; + y = sum(x.^3); +endfunction +n = 3; +x = ones(n, 1); +// +// 8.1 Jacobian with various orders +global FEVAL; +FEVAL = 0; +g = numderivative(myFevalFun, x, [], 1); +assert_checkequal ( FEVAL, n+1 ); +// +FEVAL = 0; +g = numderivative(myFevalFun, x, [], 2); +assert_checkequal ( FEVAL, 2*n ); +// +FEVAL = 0; +g = numderivative(myFevalFun, x, [], 4); +assert_checkequal ( FEVAL, 4*n ); +// +// 8.2 Hessian with various orders +FEVAL = 0; +[g, H] = numderivative(myFevalFun, x, [], 1); +assert_checkequal ( FEVAL, (n+1)^2+n+1 ); +// +FEVAL = 0; +[g, H] = numderivative(myFevalFun, x, [], 2); +assert_checkequal ( FEVAL, 4*n^2+2*n ); +// +FEVAL = 0; +[g, H] = numderivative(myFevalFun, x, [], 4); +assert_checkequal ( FEVAL, 16*n^2+4*n ); + +// +// 9. Check error messages. +// +// 9.1 Cannot evaluate the function - Function case +// +x = [1.; 2.]; +Q = qr(rand(2, 2)); +instr = "J = numderivative(myexample, x, [], [], [], Q)"; +lclmsg = "%s: Error while evaluating the function: ""%s""\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", _("Invalid index.") ); +// 9.2 Cannot evaluate the function - List case +function y = myfunction6 (x, p1, p2) + y = p1*x*x + p2; +endfunction +x = [1.; 2.]; +Q = qr(rand(2, 2)); +funf = list(myfunction6, 7., 8.); +instr = "J = numderivative(funf, x, [], [], [], Q)"; +lclmsg = "%s: Error while evaluating the function: ""%s""\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", msprintf(_("Inconsistent multiplication.\n"))); +// 9.3 Various error cases +x = 2; +// Correct calling sequence: [J, H] = numderivative(myfunction, x) +// Number of input arguments +instr = "J = numderivative()"; +lclmsg = "%s: Wrong number of input arguments: %d to %d expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 2, 6 ); +// Wrong type of f +myfunction7 = "myfunction"; +instr = "[J, H] = numderivative(myfunction7, x)"; +lclmsg = "%s: Wrong type for argument #%d: Function or list expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 1 ); +// Wrong type of x +xx = ""; +instr = "[J, H] = numderivative(myfunction, xx)"; +lclmsg = "%s: Wrong type for argument #%d: Matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 2 ); +// Wrong type of h +hh = ""; +instr = "[J, H] = numderivative(myfunction, x, hh)"; +lclmsg = "%s: Wrong type for argument #%d: Matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 3 ); +// Wrong type of order +oo = ""; +instr = "[J, H] = numderivative(myfunction, x, [], oo)"; +lclmsg = "%s: Wrong type for argument #%d: Matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 4 ); +// Wrong type of H_form +HHform = 12; +instr = "[J, H] = numderivative(myfunction, x, [], [], HHform)"; +lclmsg = "%s: Wrong type for input argument #%d: String array expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 5 ); +// Wrong type of Q +Q = ""; +instr = "[J, H] = numderivative(myfunction, x, [], [], [], Q)"; +lclmsg = "%s: Wrong type for argument #%d: Matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 6 ); +// Wrong size of f (list case) +myfunl = list(myfunction); +instr = "[J, H] = numderivative(myfunl, x)"; +lclmsg = "%s: Wrong number of elements in input argument #%d: At least %d elements expected, but current number is %d.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 1, 2, 1 ); +// Wrong size of x +x = [1. 2.; 3. 4.]; +xx = x'; +instr = "[J, H] = numderivative(myfunction2, xx)"; +lclmsg = "%s: Wrong size for input argument #%d: Vector expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 2 ); +// Wrong size of h +x = [1.0; 2.0]; +h = [1; 2; 3]; +instr = "[J, H] = numderivative(myfunction2, x, h)"; +lclmsg = "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 3, 1); +// Wrong size of order +x = [1.0; 2.0]; +order = [1; 2; 4]; +instr = "[J, H] = numderivative(myfunction2, x, [], order)"; +lclmsg = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 4, 1, 1); +// Wrong size of H_form +x = [1.0; 2.0]; +H_form = ["blockmat" "hypermat"]; +instr = "[J, H] = numderivative(myfunction2, x, [], [], H_form)"; +lclmsg = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 5, 1, 1); +// Wrong size of Q +x = [1.0; 2.0]; +Q = ones(2, 3); +instr = "[J, H] = numderivative(myfunction2, x, [], [], [], Q)"; +lclmsg = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror (instr, lclmsg, [], "numderivative", 6, 2, 2); + +// 10. Check that a nonzero step is used for components of x which are zero. +// Check also that a scaled step is used. +x=[0; 0; 1.e-50]; +[g1, g2] = exactg(x); +[H1, H2] = exactH(x); +Jexpected = [g1'; g2']; +Hexpected = [H1(:)'; H2(:)']; +// 10.1 Check Jacobian and Hessian with default options +Jcomputed = numderivative(myexample, x); +assert_checkalmostequal ( Jcomputed , Jexpected , 1.e-9 , 1.e-10); +// For the Jacobian, the step used is h = [%eps^(1/3); %eps^(1/3); %eps^(1/3)*1.e50] + +// 11. Prove the numerical superiority of numderivative. +// Although the step provided by numderivative is not always +// optimal, it is often sufficiently accurate. +// Print the number of significant digits. +// x = 1.00D-100, numdiff = 0, derivative = 0, numderivative = 11 +// x = 1.000D-32, numdiff = 0, derivative = 0, numderivative = 10 +// x = 1.000D+32, numdiff = 5, derivative = 0, numderivative = 11 +// x = 1.00D+100, numdiff = 5, derivative = 0, numderivative = 10 +// x = 1, numdiff = 7, derivative = 11, numderivative = 11 + +function y = myfunction10 (x) + y = x^3; +endfunction +function y = g10 (x) + y = 3*x^2; +endfunction +for x = [10^-100 10^-32 10^32 10^100 1] + exact = g10 (x); + g3 = numderivative(myfunction10, x); + d3 = assert_computedigits ( g3, exact ); + assert_checktrue ( d3 > 9 ); +end + +// 12. Check that numderivative also accepts row vector x +function f = myfunction11(x) + f = x(1)*x(1) + x(1)*x(2); +endfunction +// 12.1 Check with row x +x = [5 8]; +g = numderivative(myfunction11, x); +exact = [18 5]; +assert_checkalmostequal ( g , exact , 1.e-9 ); +// 12.2 Check with h +h = sqrt(%eps)*(1+1d-3*abs(x)); +g = numderivative(myfunction11, x, h); +assert_checkalmostequal ( g , exact , 1.e-8 ); + +// 13. Check that we can derivate a compiled function +x = 1; +g = numderivative (sqrt, x); +assert_checkalmostequal ( g , 0.5 , 1.e-8 ); + +// 14.1 Check that numderivative works when f takes extra arguments +function y = f(x, A, p, w) + y = x'*A*x + p'*x + w; +endfunction +// with Jacobian and Hessian given +// by J(x) = x'*(A+A')+p' and H(x) = A+A'. +A = rand(3, 3); +p = rand(3, 1); +w = 1; +x = rand(3, 1); +h = 1; +[J, H] = numderivative(list(f, A, p, w), x, h, [], "blockmat"); +assert_checkalmostequal( J , x'*(A+A')+p' ); +assert_checkalmostequal( H , A+A' ); +// 14.2 Same test with a different function +function y = G(x, p) + f1 = sin(x(1)*x(2)*p) + exp(x(2)*x(3)+x(1)); + f2 = sum(x.^3); + y = [f1; f2]; +endfunction +x = rand(3, 1); +p = 1; +df1_dx1 = cos(x(1)*x(2)*p)*x(2)*p+exp(x(2)*x(3)+x(1)); +df1_dx2 = cos(x(1)*x(2)*p)*x(1)*p+exp(x(2)*x(3)+x(1))*x(3); +df1_dx3 = exp(x(2)*x(3)+x(1))*x(2); +df2_dx1 = 3*x(1)^2; +df2_dx2 = 3*x(2)^2; +df2_dx3 = 3*x(3)^2; +expectedJ = [df1_dx1 df1_dx2 df1_dx3; +df2_dx1 df2_dx2 df2_dx3 ]; +df1_dx11 = -sin(x(1)*x(2)*p)*x(2)^2*p^2+exp(x(2)*x(3)+x(1)); +df1_dx12 = -sin(x(1)*x(2)*p)*x(1)*x(2)*p^2+cos(x(1)*x(2)*p)*p+exp(x(2)*x(3)+x(1))*x(3); +df1_dx13 = exp(x(2)*x(3)+x(1))*x(2); +df1_dx21 = df1_dx12; +df1_dx22 = -sin(x(1)*x(2)*p)*x(1)^2*p^2+exp(x(2)*x(3)+x(1))*x(3)^2; +df1_dx23 = exp(x(2)*x(3)+x(1))*(1+x(3)*x(2)); +df1_dx31 = df1_dx13; +df1_dx32 = df1_dx23; +df1_dx33 = exp(x(2)*x(3)+x(1))*x(2)^2; +df2_dx11 = 6*x(1); +df2_dx12 = 0; +df2_dx13 = 0; +df2_dx21 = 0; +df2_dx22 = 6*x(2); +df2_dx23 = 0; +df2_dx31 = 0; +df2_dx32 = 0; +df2_dx33 = 6*x(3); +expectedH = [df1_dx11 df1_dx12 df1_dx13 df1_dx21 df1_dx22 df1_dx23 df1_dx31 df1_dx32 df1_dx33; +df2_dx11 df2_dx12 df2_dx13 df2_dx21 df2_dx22 df2_dx23 df2_dx31 df2_dx32 df2_dx33 ]; +[J, H] = numderivative(list(G, p), x); +assert_checkalmostequal( J , expectedJ ); +assert_checkalmostequal( H , expectedH , [], 1e-7); diff --git a/modules/optimization/tests/unit_tests/optim_costflist.dia.ref b/modules/optimization/tests/unit_tests/optim_costflist.dia.ref new file mode 100755 index 000000000..be83daeb3 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_costflist.dia.ref @@ -0,0 +1,59 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) ????-2008 - INRIA - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// +// optim_costflist.tst -- +// Test the optim command in the case where the cost function is a list. +// +// +// In the following case, costf is equal to list(sipn,sip2,ne,nc,cpen) +// where sipn is a function. +// The case is even more complex, since the 3d argument +// of sipn is the dummy argument sip1, which is, in turn, +// a function which real value is sip2. +// penalization (see doc) +// +// min (x1^2 +x2^2)/2 ; x1>=0, x1 + x2 =1 (solution [0.5 0.5] ) +function [f,g,ind]=sip2(x,ind) + f= [ x(1)+x(2)-1, -x(1), (x(1)^2+x(2)^2)/2] + g= [ 1, -1, x(1); 1, 0, x(2)] +endfunction +cpen=50; +ne=1; +nc=2; +bi=[0 0]; +bs=[2 2]; +function [fpen,gpen,ind]=sipn(x,ind,sip1,ne,nc,cpen) + [f,g,indic]=sip1(x,ind) + if indic < 0 then + ind=indic + return + end + if nc >ne then + for i=ne+1:nc + f(i)=max([0 f(i)]) + end + end + fpen=f(nc+1) + cpen*norm(f(1:nc))^2/2'; + if ind==2 then + return + end + gpen=g(:,nc+1) + if ne > 0 then + for i=1:ne + gpen=gpen + cpen*f(i)*g(:,i) + end + end + if nc > ne then + for i=ne+1:nc + if f(i) > 0 then + gpen=gpen + cpen*f(i)*g(:,i) + end + end + end; +endfunction +[f,x,g]=optim(list(sipn,sip2,ne,nc,cpen),... + 'b',bi,bs,[1 1],'ar',20,20,1.e-15); +if norm(x-[0.5 0.5]) + norm(g) > 0.1 then bugmes();quit;end diff --git a/modules/optimization/tests/unit_tests/optim_costflist.tst b/modules/optimization/tests/unit_tests/optim_costflist.tst new file mode 100755 index 000000000..78d8c62b3 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_costflist.tst @@ -0,0 +1,66 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// optim_costflist.tst -- +// Test the optim command in the case where the cost function is a list. +// +// +// In the following case, costf is equal to list(sipn,sip2,ne,nc,cpen) +// where sipn is a function. +// The case is even more complex, since the 3d argument +// of sipn is the dummy argument sip1, which is, in turn, +// a function which real value is sip2. +// penalization (see doc) +// +// min (x1^2 +x2^2)/2 ; x1>=0, x1 + x2 =1 (solution [0.5 0.5] ) + +function [f,g,ind]=sip2(x,ind) + f= [ x(1)+x(2)-1, -x(1), (x(1)^2+x(2)^2)/2] + g= [ 1, -1, x(1); 1, 0, x(2)] +endfunction + +cpen=50; +ne=1; +nc=2; +bi=[0 0]; +bs=[2 2]; + +function [fpen,gpen,ind]=sipn(x,ind,sip1,ne,nc,cpen) + [f,g,indic]=sip1(x,ind) + if indic < 0 then + ind=indic + return + end + if nc >ne then + for i=ne+1:nc + f(i)=max([0 f(i)]) + end + end + fpen=f(nc+1) + cpen*norm(f(1:nc))^2/2'; + if ind==2 then + return + end + gpen=g(:,nc+1) + if ne > 0 then + for i=1:ne + gpen=gpen + cpen*f(i)*g(:,i) + end + end + if nc > ne then + for i=ne+1:nc + if f(i) > 0 then + gpen=gpen + cpen*f(i)*g(:,i) + end + end + end; +endfunction +[f,x,g]=optim(list(sipn,sip2,ne,nc,cpen),... + 'b',bi,bs,[1 1],'ar',20,20,1.e-15); +if norm(x-[0.5 0.5]) + norm(g) > 0.1 then pause,end + diff --git a/modules/optimization/tests/unit_tests/optim_matrix.dia.ref b/modules/optimization/tests/unit_tests/optim_matrix.dia.ref new file mode 100755 index 000000000..849818e9d --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_matrix.dia.ref @@ -0,0 +1,38 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) ????-2008 - INRIA - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// +// optim_matrix.tst -- +// Test the optim command when the optimized unknown is a matrix. +// +Leps=8.e-5; +// Test #1 +// The expected solution of the problem is A^-1 +// Test with norm 2 +deff('[f,g,ind]=ndsim1(x,ind)', 'y=A*x-b;f=norm(y,2)^2;g=2*A''*y') +A=rand(2,2); +b=eye(A); +x0=eye(2,2); +[f,X,g]=optim(ndsim1,x0); +if norm(X-inv(A))>Leps then bugmes();quit;end +// Test #2 +// The expected solution of the problem is the solution of Ax=b +deff('[f,g,ind]=ndsim2(x,ind)', 'y=A*x-b;f=sum(abs(y));g=A''*sign(y)') +A=rand(2,2); +b=[1;0]; +Ai=inv(A); +[f,x,g]=optim(ndsim2,[1;0],'nd'); +if norm(x-Ai(:,1))>Leps then bugmes();quit;end +// Test #3 +deff('[f,g,ind]=ndsim3(x,ind)', [ +'y=A*x-b;f=max(abs(y)),sel=abs(y)==f' +'g=A(sel,:)''*sign(y(sel))']); +// TODO : test something ! These are hidden dead bodies... +//A=rand(2,2); +//b=[1;0]; +//Ai=inv(A); +//[f,x,g]=optim(ndsim,[1;0],'nd'); +//if norm(x-Ai(:,1))>Leps then bugmes();quit;end diff --git a/modules/optimization/tests/unit_tests/optim_matrix.tst b/modules/optimization/tests/unit_tests/optim_matrix.tst new file mode 100755 index 000000000..6ad5ca3ba --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_matrix.tst @@ -0,0 +1,42 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) ????-2008 - INRIA - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// +// optim_matrix.tst -- +// Test the optim command when the optimized unknown is a matrix. +// +Leps=8.e-5; +// Test #1 +// The expected solution of the problem is A^-1 +// Test with norm 2 +deff('[f,g,ind]=ndsim1(x,ind)', 'y=A*x-b;f=norm(y,2)^2;g=2*A''*y') +A=rand(2,2); +b=eye(A); +x0=eye(2,2); +[f,X,g]=optim(ndsim1,x0); +if norm(X-inv(A))>Leps then pause,end +// Test #2 +// The expected solution of the problem is the solution of Ax=b +deff('[f,g,ind]=ndsim2(x,ind)', 'y=A*x-b;f=sum(abs(y));g=A''*sign(y)') +A=rand(2,2); +b=[1;0]; +Ai=inv(A); +[f,x,g]=optim(ndsim2,[1;0],'nd'); +if norm(x-Ai(:,1))>Leps then pause,end +// Test #3 +deff('[f,g,ind]=ndsim3(x,ind)', [ +'y=A*x-b;f=max(abs(y)),sel=abs(y)==f' +'g=A(sel,:)''*sign(y(sel))']); +// TODO : test something ! These are hidden dead bodies... +//A=rand(2,2); +//b=[1;0]; +//Ai=inv(A); +//[f,x,g]=optim(ndsim,[1;0],'nd'); +//if norm(x-Ai(:,1))>Leps then pause,end + diff --git a/modules/optimization/tests/unit_tests/optim_scilabscript.dia.ref b/modules/optimization/tests/unit_tests/optim_scilabscript.dia.ref new file mode 100755 index 000000000..7f701fa6e --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_scilabscript.dia.ref @@ -0,0 +1,1435 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Michael Baudin +// Copyright (C) 2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// <-- NO CHECK REF --> +// +// Do not check ref, because imp option create an output messages +// which contains lots of floating point values which may +// be slightly different across platforms, without being bugs. +// +// optim_script.tst -- +// Test the optim command with the Rosenbrock test case +// in the case where the cost function is a Scilab function. +// The expected solution is x=(1,...,1) where f(x)=0 +// +Leps=1.e-3; +bs=[5 5]; +bi=-bs; +x0=[-1.2 1]; +xopt=[1 1]; +fopt = 0.0; +gopt = [0.0 0.0]; +function [ f , g , ind ] = rosenbrock ( x , ind ) + if ind == 2 | ind == 4 then + f = 100.0 *(x(2)-x(1)^2)^2 + (1-x(1))^2; + end + if ind == 2 | ind == 4 then + g(1) = - 400. * ( x(2) - x(1)**2 ) * x(1) -2. * ( 1. - x(1) ) + g(2) = 200. * ( x(2) - x(1)**2 ) + end +endfunction +// +// Configure the test so that verbose message do not interrupt the test. +lines(0); +// +// 1. Test unconstrained BFGS +// Test without arguments +[f,x,g,tr]=optim(rosenbrock,x0); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function +[f,x,g]=optim(rosenbrock,x0,'qn','ar',50); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with hot-restart array tr +[f,x,g,tr]=optim(rosenbrock,x0,'qn','ar',50); +[f,x,g]=optim(rosenbrock,x0,tr); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function, maximum number of iterations +[f,x,g]=optim(rosenbrock,x0,'qn','ar', 50 , 100 ); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with various imp levels +// imp = 0 : No messages +[f,x,g]=optim(rosenbrock,x0,'qn',imp=0); +// imp = 1 : one line at start, one line at end +[f,x,g]=optim(rosenbrock,x0,'qn',imp=1); + +***** enters -qn code- (without bound cstr) +dimension= 2, epsq= 0.2220446049250313E-15, verbosity level: imp= 1 +max number of iterations allowed: iter= 100 +max number of calls to costf allowed: nap= 100 +------------------------------------------------ + iter num 38, nb calls= 46, f=0.0000E+00 +***** leaves -qn code-, gradient norm= 0.0000000000000000E+00 +Norm of projected gradient lower than 0.0000000D+00. + +// imp = 2 : one line by iteration +[f,x,g]=optim(rosenbrock,x0,'qn',imp=2); + +***** enters -qn code- (without bound cstr) +dimension= 2, epsq= 0.2220446049250313E-15, verbosity level: imp= 2 +max number of iterations allowed: iter= 100 +max number of calls to costf allowed: nap= 100 +------------------------------------------------ + iter num 1, nb calls= 1, f= 24.20 + iter num 2, nb calls= 2, f= 7.272 + iter num 3, nb calls= 3, f= 4.350 + iter num 4, nb calls= 5, f= 3.417 + iter num 5, nb calls= 6, f= 3.109 + iter num 6, nb calls= 8, f= 2.888 + iter num 7, nb calls= 9, f= 2.528 + iter num 8, nb calls= 10, f= 2.079 + iter num 9, nb calls= 11, f= 1.684 + iter num 10, nb calls= 13, f= 1.487 + iter num 11, nb calls= 14, f= 1.331 + iter num 12, nb calls= 15, f= 1.094 + iter num 13, nb calls= 17, f=0.9515 + iter num 14, nb calls= 18, f=0.7438 + iter num 15, nb calls= 19, f=0.5691 + iter num 16, nb calls= 21, f=0.4953 + iter num 17, nb calls= 22, f=0.4021 + iter num 18, nb calls= 23, f=0.2856 + iter num 19, nb calls= 25, f=0.2208 + iter num 20, nb calls= 26, f=0.1793 + iter num 21, nb calls= 27, f=0.1226 + iter num 22, nb calls= 29, f=0.8763E-01 + iter num 23, nb calls= 30, f=0.6050E-01 + iter num 24, nb calls= 31, f=0.3408E-01 + iter num 25, nb calls= 33, f=0.1690E-01 + iter num 26, nb calls= 34, f=0.1151E-01 + iter num 27, nb calls= 35, f=0.4470E-02 + iter num 28, nb calls= 36, f=0.1802E-02 + iter num 29, nb calls= 37, f=0.4269E-03 + iter num 30, nb calls= 38, f=0.4499E-04 + iter num 31, nb calls= 39, f=0.1626E-05 + iter num 32, nb calls= 40, f=0.1849E-07 + iter num 33, nb calls= 41, f=0.8950E-10 + iter num 34, nb calls= 42, f=0.2801E-15 + iter num 35, nb calls= 43, f=0.4239E-20 + iter num 36, nb calls= 44, f=0.2642E-25 + iter num 37, nb calls= 45, f=0.4980E-29 + iter num 38, nb calls= 46, f=0.0000E+00 +***** leaves -qn code-, gradient norm= 0.0000000000000000E+00 +Norm of projected gradient lower than 0.0000000D+00. + +// imp = 3 : one line by iteration + one line by line search +[f,x,g]=optim(rosenbrock,x0,'qn',imp=3); + +***** enters -qn code- (without bound cstr) +dimension= 2, epsq= 0.2220446049250313E-15, verbosity level: imp= 3 +max number of iterations allowed: iter= 100 +max number of calls to costf allowed: nap= 100 +------------------------------------------------ + iter num 1, nb calls= 1, f= 24.20 + linear search: initial derivative=-232.9 + step length=0.1000E-01, df=-16.93 , derivative=-85.60 + iter num 2, nb calls= 2, f= 7.272 + linear search: initial derivative=-42.24 + step length= 1.000 , df=-2.923 , derivative=-1.329 + iter num 3, nb calls= 3, f= 4.350 + linear search: initial derivative=-1.898 + step length= 1.000 , df=-.1237 , derivative=-1.824 + step length= 10.00 , df=-.9331 , derivative=0.2202 + iter num 4, nb calls= 5, f= 3.417 + linear search: initial derivative=-5.550 + step length= 1.000 , df=-.3079 , derivative=-3.790 + iter num 5, nb calls= 6, f= 3.109 + linear search: initial derivative=-1.647 + step length=0.4722 , df=-.4528E-01, derivative= 2.629 + step length=0.2798 , df=-.2206 , derivative=-.3888E-01 + iter num 6, nb calls= 8, f= 2.888 + linear search: initial derivative=-4.438 + step length=0.6098 , df=-.3600 , derivative=-2.968 + iter num 7, nb calls= 9, f= 2.528 + linear search: initial derivative=-3.266 + step length= 1.000 , df=-.4494 , derivative=-1.801 + iter num 8, nb calls= 10, f= 2.079 + linear search: initial derivative=-4.375 + step length= 1.000 , df=-.3951 , derivative=-2.224 + iter num 9, nb calls= 11, f= 1.684 + linear search: initial derivative=-2.203 + step length=0.2673 , df= 1.009 , derivative= 13.78 + step length=0.1089 , df=-.1964 , derivative=0.1570 + iter num 10, nb calls= 13, f= 1.487 + linear search: initial derivative=-2.478 + step length= 1.000 , df=-.1558 , derivative=-1.410 + iter num 11, nb calls= 14, f= 1.331 + linear search: initial derivative=-4.524 + step length=0.5294 , df=-.2371 , derivative=-2.628 + iter num 12, nb calls= 15, f= 1.094 + linear search: initial derivative=-1.940 + step length= 1.000 , df=0.5590E-01, derivative= 4.817 + step length=0.5465 , df=-.1427 , derivative=-.4464E-01 + iter num 13, nb calls= 17, f=0.9515 + linear search: initial derivative=-2.968 + step length= 1.000 , df=-.2076 , derivative=-1.697 + iter num 14, nb calls= 18, f=0.7438 + linear search: initial derivative=-2.579 + step length= 1.000 , df=-.1747 , derivative=-1.324 + iter num 15, nb calls= 19, f=0.5691 + linear search: initial derivative=-1.362 + step length=0.5720 , df=0.6117 , derivative= 10.41 + step length=0.2117 , df=-.7377E-01, derivative=0.1629 + iter num 16, nb calls= 21, f=0.4953 + linear search: initial derivative=-1.489 + step length= 1.000 , df=-.9325E-01, derivative=-.9504 + iter num 17, nb calls= 22, f=0.4021 + linear search: initial derivative=-1.740 + step length=0.9187 , df=-.1165 , derivative=-.6277 + iter num 18, nb calls= 23, f=0.2856 + linear search: initial derivative=-.8565 + step length=0.7197 , df=0.2244 , derivative= 4.627 + step length=0.3184 , df=-.6478E-01, derivative=0.4025E-01 + iter num 19, nb calls= 25, f=0.2208 + linear search: initial derivative=-.6915 + step length= 1.000 , df=-.4156E-01, derivative=-.4294 + iter num 20, nb calls= 26, f=0.1793 + linear search: initial derivative=-1.024 + step length=0.5978 , df=-.5666E-01, derivative=-.4359 + iter num 21, nb calls= 27, f=0.1226 + linear search: initial derivative=-.4236 + step length= 1.000 , df=0.2045E-01, derivative= 1.162 + step length=0.5356 , df=-.3498E-01, derivative=-.7704E-02 + iter num 22, nb calls= 29, f=0.8763E-01 + linear search: initial derivative=-.4234 + step length= 1.000 , df=-.2712E-01, derivative=-.2548 + iter num 23, nb calls= 30, f=0.6050E-01 + linear search: initial derivative=-.5418 + step length= 1.000 , df=-.2643E-01, derivative=-.8204E-01 + iter num 24, nb calls= 31, f=0.3408E-01 + linear search: initial derivative=-.2244 + step length=0.8549 , df=0.1962E-01, derivative=0.7472 + step length=0.4325 , df=-.1717E-01, derivative=-.6534E-03 + iter num 25, nb calls= 33, f=0.1690E-01 + linear search: initial derivative=-.1257 + step length= 1.000 , df=-.5392E-02, derivative=-.6886E-01 + iter num 26, nb calls= 34, f=0.1151E-01 + linear search: initial derivative=-.1993 + step length=0.6643 , df=-.7042E-02, derivative=-.7138E-01 + iter num 27, nb calls= 35, f=0.4470E-02 + linear search: initial derivative=-.6177E-01 + step length= 1.000 , df=-.2669E-02, derivative=0.1873E-01 + iter num 28, nb calls= 36, f=0.1802E-02 + linear search: initial derivative=-.5318 + step length= 1.000 , df=-.1375E-02, derivative=-.7452E-01 + iter num 29, nb calls= 37, f=0.4269E-03 + linear search: initial derivative=-.1952E-01 + step length= 1.000 , df=-.3819E-03, derivative=-.5887E-02 + iter num 30, nb calls= 38, f=0.4499E-04 + linear search: initial derivative=-.6081E-02 + step length= 1.000 , df=-.4337E-04, derivative=-.6785E-03 + iter num 31, nb calls= 39, f=0.1626E-05 + linear search: initial derivative=-.2438E-02 + step length= 1.000 , df=-.1608E-05, derivative=0.7953E-04 + iter num 32, nb calls= 40, f=0.1849E-07 + linear search: initial derivative=-.1711E-03 + step length= 1.000 , df=-.1840E-07, derivative=0.1167E-04 + iter num 33, nb calls= 41, f=0.8950E-10 + linear search: initial derivative=-.1010E-04 + step length= 1.000 , df=-.8950E-10, derivative=0.1344E-07 + iter num 34, nb calls= 42, f=0.2801E-15 + linear search: initial derivative=-.5481E-07 + step length= 1.000 , df=-.2801E-15, derivative=-.1438E-09 + iter num 35, nb calls= 43, f=0.4239E-20 + linear search: initial derivative=-.1106E-09 + step length= 1.000 , df=-.4239E-20, derivative=-.2044E-12 + iter num 36, nb calls= 44, f=0.2642E-25 + linear search: initial derivative=-.1512E-12 + step length= 1.000 , df=-.2642E-25, derivative=0.4543E-15 + iter num 37, nb calls= 45, f=0.4980E-29 + linear search: initial derivative=-.2682E-13 + step length= 1.000 , df=-.4980E-29, derivative=0.0000E+00 + iter num 38, nb calls= 46, f=0.0000E+00 +***** leaves -qn code-, gradient norm= 0.0000000000000000E+00 +Norm of projected gradient lower than 0.0000000D+00. + +// Negative imp : call back the cost function with ind = 0 each -imp iteration +[f,x,g]=optim(rosenbrock,x0,'qn',imp=-5); +Norm of projected gradient lower than 0.0000000D+00. + +// +// 2. Test unconstrained Limited Memory BFGS +[f,x,g]=optim(rosenbrock,x0,'gc'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +[f,x,g]=optim(rosenbrock,x0,'gc','ar',50); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with various imp levels +// imp = 0 : No messages +[f,x,g]=optim(rosenbrock,x0,'gc',imp=0); +// imp = 1,2 : one line at start, one line at end +[f,x,g]=optim(rosenbrock,x0,'gc',imp=1); + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 1 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + ------------------------------------------------------------------------------- + n1qn3: output mode is 1 + number of iterations: 41 + number of simulations: 52 + realized relative precision on g: 0.00D+00 + norm of x = 0.14142136D+01 + f = 0.00000000D+00 + norm of x = 0.00000000D+00 +Norm of projected gradient lower than 0.0000000D+00. + +// imp = 3 : one line by iteration +[f,x,g]=optim(rosenbrock,x0,'gc',imp=2); + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 2 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + ------------------------------------------------------------------------------- + n1qn3: output mode is 1 + number of iterations: 41 + number of simulations: 52 + realized relative precision on g: 0.00D+00 + norm of x = 0.14142136D+01 + f = 0.00000000D+00 + norm of x = 0.00000000D+00 +Norm of projected gradient lower than 0.0000000D+00. + +// imp = 4 : one line by iteration + one line by line search +[f,x,g]=optim(rosenbrock,x0,'gc',imp=3); + n1qn3: entry point + dimension of the problem (n): 2 + absolute precision on x (dxmin): 0.22D-15 + expected decrease for f (df1): 0.10D+01 + relative precision on g (epsg): 0.95D-18 + maximal number of iterations (niter): 100 + maximal number of simulations (nsim): 100 + printing level (impres): 3 + allocated memory (nrz) : 58 + used memory : 58 + number of updates : 10 + + f = 0.24200000D+02 + norm of g = 0.23286769D+03 + ------------------------------------------------------------------------------- + + n1qn3: iter 1, simul 1, f= 0.24200000D+02, h'(0)=-0.20000D+01 + n1qn3: iter 2, simul 3, f= 0.94705115D+01, h'(0)=-0.92378D+01 + n1qn3: iter 3, simul 4, f= 0.42678391D+01, h'(0)=-0.24478D+00 + n1qn3: iter 4, simul 5, f= 0.41332370D+01, h'(0)=-0.58072D-02 + n1qn3: iter 5, simul 6, f= 0.41288855D+01, h'(0)=-0.83281D-02 + n1qn3: iter 6, simul 7, f= 0.41219818D+01, h'(0)=-0.27767D-01 + n1qn3: iter 7, simul 8, f= 0.40992137D+01, h'(0)=-0.82808D-01 + n1qn3: iter 8, simul 9, f= 0.40279192D+01, h'(0)=-0.40499D+00 + n1qn3: iter 9, simul 13, f= 0.26255752D+01, h'(0)=-0.16053D+00 + n1qn3: iter 10, simul 15, f= 0.26148282D+01, h'(0)=-0.38378D-01 + n1qn3: iter 11, simul 17, f= 0.22964498D+01, h'(0)=-0.62657D+00 + n1qn3: iter 12, simul 18, f= 0.19818830D+01, h'(0)=-0.70680D+00 + n1qn3: iter 13, simul 19, f= 0.15797116D+01, h'(0)=-0.49943D+00 + n1qn3: iter 14, simul 20, f= 0.13542803D+01, h'(0)=-0.33867D+00 + n1qn3: iter 15, simul 21, f= 0.12033040D+01, h'(0)=-0.20678D+00 + n1qn3: iter 16, simul 22, f= 0.10169710D+01, h'(0)=-0.64958D+00 + n1qn3: iter 17, simul 24, f= 0.88479939D+00, h'(0)=-0.18657D+00 + n1qn3: iter 18, simul 25, f= 0.73594988D+00, h'(0)=-0.31085D+00 + n1qn3: iter 19, simul 26, f= 0.63444380D+00, h'(0)=-0.42075D+00 + n1qn3: iter 20, simul 27, f= 0.45317910D+00, h'(0)=-0.12594D+00 + n1qn3: iter 21, simul 28, f= 0.34356270D+00, h'(0)=-0.22838D+00 + n1qn3: iter 22, simul 30, f= 0.30624971D+00, h'(0)=-0.55446D-01 + n1qn3: iter 23, simul 31, f= 0.25851790D+00, h'(0)=-0.14344D+00 + n1qn3: iter 24, simul 32, f= 0.17073487D+00, h'(0)=-0.12793D+00 + n1qn3: iter 25, simul 33, f= 0.10886882D+00, h'(0)=-0.10034D+00 + n1qn3: iter 26, simul 34, f= 0.93394350D-01, h'(0)=-0.12026D+00 + n1qn3: iter 27, simul 35, f= 0.68247280D-01, h'(0)=-0.20762D-01 + n1qn3: iter 28, simul 36, f= 0.49926731D-01, h'(0)=-0.55493D-01 + n1qn3: iter 29, simul 38, f= 0.36769034D-01, h'(0)=-0.91754D-02 + n1qn3: iter 30, simul 39, f= 0.28635889D-01, h'(0)=-0.25872D-01 + n1qn3: iter 31, simul 40, f= 0.11210346D-01, h'(0)=-0.94861D-02 + n1qn3: iter 32, simul 41, f= 0.47312611D-02, h'(0)=-0.12658D-01 + n1qn3: iter 33, simul 43, f= 0.27115703D-02, h'(0)=-0.27047D-02 + n1qn3: iter 34, simul 44, f= 0.78629249D-03, h'(0)=-0.10616D-02 + n1qn3: iter 35, simul 45, f= 0.10596409D-03, h'(0)=-0.16467D-03 + n1qn3: iter 36, simul 46, f= 0.65779244D-05, h'(0)=-0.12836D-04 + n1qn3: iter 37, simul 47, f= 0.65335854D-06, h'(0)=-0.24142D-05 + n1qn3: iter 38, simul 48, f= 0.48517342D-06, h'(0)=-0.97016D-06 + n1qn3: iter 39, simul 49, f= 0.72461377D-12, h'(0)=-0.14375D-11 + n1qn3: iter 40, simul 50, f= 0.49419780D-16, h'(0)=-0.98838D-16 + n1qn3: iter 41, simul 51, f= 0.23045863D-24, h'(0)=-0.46082D-24 + ------------------------------------------------------------------------------- + n1qn3: output mode is 1 + number of iterations: 41 + number of simulations: 52 + realized relative precision on g: 0.00D+00 + norm of x = 0.14142136D+01 + f = 0.00000000D+00 + norm of x = 0.00000000D+00 +Norm of projected gradient lower than 0.0000000D+00. + +// +// 3. Test unconstrained non-differentiable method +[f,x,g]=optim(rosenbrock,x0,'nd'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function +[f,x,g]=optim(rosenbrock,x0,'nd','ar',100); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function, maximum number of iterations +[f,x,g]=optim(rosenbrock,x0,'nd','ar', 100 , 100 ); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with various imp levels +// imp = 0 : No messages +[f,x,g]=optim(rosenbrock,x0,'nd',imp=0); +// imp = 1,2 : one line at start, one line at end +[f,x,g]=optim(rosenbrock,x0,'nd',imp=1); +entry in n1fc1 . n= 2 memax= 10 +minimal array sizes: iz( 22) rz( 70) dz( 198) +n1fc1 Incorrect end of fprf2 +End of optimization. + +// imp = 3 : one line by iteration +[f,x,g]=optim(rosenbrock,x0,'nd',imp=2); +entry in n1fc1 . n= 2 memax= 10 +minimal array sizes: iz( 22) rz( 70) dz( 198) + n1fc1 diam1= 0.739D+00 eta2= 0.000D+00 ap= 0.299D-28 + n1fc1 10 32 0.2102076D+01 faisceau reduit a 2 gradients + n1fc1 18 56 0.5316674D-01 faisceau reduit a 2 gradients +n1fc1 eta2 assigned to 0.444D-14 + n1fc1 26 76 0.1360041D-02 convergence a 0.224D-02 pres ( 0.44D-15) + n1fc1 26 77 0.7792185D-03 faisceau reduit a 3 gradients +n1fc1 eta2 assigned to 0.444D-14 + n1fc1 33 88 0.2192247D-06 convergence a 0.926D-06 pres ( 0.00D+00) + n1fc1 33 90 0.1890964D-06 faisceau reduit a 2 gradients +n1fc1 Incorrect end of fprf2 +End of optimization. + +// imp = 4 : one line by iteration + one line by line search +[f,x,g]=optim(rosenbrock,x0,'nd',imp=3); +entry in n1fc1 . n= 2 memax= 10 +minimal array sizes: iz( 22) rz( 70) dz( 198) +n1fc1 1 1 0.2420000D+02 0.10D+01 0.54D+05 0.00D+00 2 + n1fc1 diam1= 0.739D+00 eta2= 0.000D+00 ap= 0.299D-28 +n1fc1 2 4 0.4198816D+01 0.10D+01 0.15D+03 0.00D+00 2 +n1fc1 3 8 0.4198816D+01 0.10D+01 0.15D+03 0.00D+00 3 +n1fc1 4 10 0.4198816D+01 0.10D+01 0.14D+03 0.00D+00 3 +n1fc1 5 12 0.4198816D+01 0.10D+01 0.12D+03 0.00D+00 3 +n1fc1 6 17 0.4131268D+01 0.25D+00 0.33D+01 0.00D+00 3 +n1fc1 7 19 0.3662595D+01 0.10D+01 0.61D+00 0.00D+00 3 +n1fc1 8 23 0.3639147D+01 0.47D-01 0.10D+04 0.15D+04 2 +n1fc1 9 26 0.2590584D+01 0.10D+01 0.40D+00 0.00D+00 3 +n1fc1 10 31 0.2359570D+01 0.14D+00 0.25D+02 0.28D+03 2 + n1fc1 10 32 0.2102076D+01 faisceau reduit a 2 gradients +n1fc1 11 32 0.2102076D+01 0.46D+00 0.54D+01 0.00D+00 2 +n1fc1 12 39 0.8277294D+00 0.10D+01 0.35D+01 0.00D+00 3 +n1fc1 13 44 0.6868523D+00 0.27D+00 0.23D+01 0.00D+00 3 +n1fc1 14 46 0.6037192D+00 0.16D+00 0.20D+02 0.15D+03 2 +n1fc1 15 48 0.4376910D+00 0.33D+00 0.12D+01 0.00D+00 3 +n1fc1 16 50 0.3030057D+00 0.19D+00 0.84D+00 0.00D+00 3 +n1fc1 17 52 0.2144893D+00 0.16D+00 0.73D+00 0.26D+01 3 +n1fc1 18 54 0.7256611D-01 0.35D+00 0.34D+00 0.00D+00 3 + n1fc1 18 56 0.5316674D-01 faisceau reduit a 2 gradients +n1fc1 19 56 0.5316674D-01 0.58D-01 0.34D-01 0.00D+00 3 +n1fc1 20 58 0.4531702D-01 0.15D-01 0.71D+01 0.52D+03 2 +n1fc1 21 60 0.2482046D-01 0.41D-01 0.13D-01 0.00D+00 3 +n1fc1 22 62 0.1225140D-01 0.16D-01 0.12D-02 0.00D+00 3 +n1fc1 23 66 0.1190406D-01 0.11D-02 0.54D+01 0.25D+04 2 +n1fc1 24 69 0.5110747D-02 0.14D-01 0.12D-03 0.00D+00 3 +n1fc1 25 74 0.2527134D-02 0.82D-03 0.96D+00 0.61D+03 2 +n1fc1 eta2 assigned to 0.444D-14 + n1fc1 26 76 0.1360041D-02 convergence a 0.224D-02 pres ( 0.44D-15) +n1fc1 26 76 0.1360041D-02 0.22D-03 0.93D-03 0.46D+00 3 + n1fc1 26 77 0.7792185D-03 faisceau reduit a 3 gradients +n1fc1 27 77 0.7792185D-03 0.22D-03 0.31D+00 0.16D+04 2 +n1fc1 28 79 0.2612544D-03 0.22D-03 0.19D+00 0.46D+03 2 +n1fc1 29 81 0.3217976D-04 0.22D-03 0.33D-05 0.27D-01 3 +n1fc1 30 83 0.6090815D-05 0.57D-04 0.35D-06 0.19D-01 3 +n1fc1 31 85 0.1944220D-05 0.84D-05 0.75D-03 0.68D+02 2 +n1fc1 32 87 0.7841516D-06 0.23D-05 0.23D-06 0.65D-01 3 +n1fc1 eta2 assigned to 0.444D-14 + n1fc1 33 88 0.2192247D-06 convergence a 0.926D-06 pres ( 0.00D+00) +n1fc1 33 88 0.2192247D-06 0.93D-07 0.51D-04 0.12D+03 2 + n1fc1 33 90 0.1890964D-06 faisceau reduit a 2 gradients +n1fc1 34 90 0.1890964D-06 0.93D-07 0.14D-06 0.00D+00 3 +n1fc1 35 92 0.8733602D-08 0.93D-07 0.15D-07 0.00D+00 3 +n1fc1 36 95 0.2709627D-08 0.12D-07 0.75D-06 0.32D+02 2 +n1fc1 Incorrect end of fprf2 +End of optimization. + +// +// 4. Test bound-constrained BFGS +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn','ar',50); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function, maximum number of iterations +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn','ar', 100 , 100 ); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with various imp levels +// imp = 0 : No messages +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn',imp=0); +// imp = 1,2 : one line at start, one line at end +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn',imp=1); + *********** qnbd **************** + qnbd : indqn= 13 +End of optimization (linear search fails). + +// imp = 3 : one line by iteration +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn',imp=2); + *********** qnbd **************** + qnbd : iter= 1 f= 0.2420000D+02 + qnbd : nbre fact 2 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.5062D+02 epsf,diff= 0.0000D+00 0.1784D+02 nap= 3 + qnbd : iter= 2 f= 0.6363632D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2926D+01 epsf,diff= 0.0000D+00 0.2276D+01 nap= 5 + qnbd : iter= 3 f= 0.4088059D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1462D+01 epsf,diff= 0.0000D+00 0.7160D-02 nap= 6 + qnbd : iter= 4 f= 0.4080900D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1281D+01 epsf,diff= 0.0000D+00 0.4927D-02 nap= 7 + qnbd : iter= 5 f= 0.4075972D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2639D+01 epsf,diff= 0.0000D+00 0.1666D-01 nap= 8 + qnbd : iter= 6 f= 0.4059314D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.5535D+01 epsf,diff= 0.0000D+00 0.3949D-01 nap= 9 + qnbd : iter= 7 f= 0.4019827D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1029D+02 epsf,diff= 0.0000D+00 0.9032D-01 nap= 10 + qnbd : iter= 8 f= 0.3929503D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1482D+02 epsf,diff= 0.0000D+00 0.1269D+00 nap= 11 + qnbd : iter= 9 f= 0.3802616D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1584D+02 epsf,diff= 0.0000D+00 0.1911D+00 nap= 12 + qnbd : iter= 10 f= 0.3611527D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1335D+02 epsf,diff= 0.0000D+00 0.4793D+00 nap= 13 + qnbd : iter= 11 f= 0.3132213D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.4831D+01 epsf,diff= 0.0000D+00 0.5408D+00 nap= 14 + qnbd : iter= 12 f= 0.2591395D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.9927D+01 epsf,diff= 0.0000D+00 0.2198D+00 nap= 16 + qnbd : iter= 13 f= 0.2371631D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.7508D+01 epsf,diff= 0.0000D+00 0.3368D+00 nap= 17 + qnbd : iter= 14 f= 0.2034811D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1723D+01 epsf,diff= 0.0000D+00 0.3605D+00 nap= 18 + qnbd : iter= 15 f= 0.1674355D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.6425D+01 epsf,diff= 0.0000D+00 0.2554D+00 nap= 20 + qnbd : iter= 16 f= 0.1418994D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2962D+01 epsf,diff= 0.0000D+00 0.1320D+00 nap= 21 + qnbd : iter= 17 f= 0.1286986D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2970D+01 epsf,diff= 0.0000D+00 0.2772D+00 nap= 22 + qnbd : iter= 18 f= 0.1009809D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.7110D+01 epsf,diff= 0.0000D+00 0.9782D-01 nap= 23 + qnbd : iter= 19 f= 0.9119930D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1223D+01 epsf,diff= 0.0000D+00 0.2439D+00 nap= 24 + qnbd : iter= 20 f= 0.6680716D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1598D+01 epsf,diff= 0.0000D+00 0.1495D+00 nap= 25 + qnbd : iter= 21 f= 0.5185575D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.4195D+01 epsf,diff= 0.0000D+00 0.5204D-01 nap= 27 + qnbd : iter= 22 f= 0.4665182D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1092D+01 epsf,diff= 0.0000D+00 0.1651D+00 nap= 29 + qnbd : iter= 23 f= 0.3014090D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.3616D+01 epsf,diff= 0.0000D+00 0.4378D-01 nap= 31 + qnbd : iter= 24 f= 0.2576320D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2649D+01 epsf,diff= 0.0000D+00 0.8347D-01 nap= 32 + qnbd : iter= 25 f= 0.1741653D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.7655D+00 epsf,diff= 0.0000D+00 0.5731D-01 nap= 33 + qnbd : iter= 26 f= 0.1168531D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.3144D+01 epsf,diff= 0.0000D+00 0.3345D-01 nap= 35 + qnbd : iter= 27 f= 0.8340131D-01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1683D+01 epsf,diff= 0.0000D+00 0.2213D-01 nap= 36 + qnbd : iter= 28 f= 0.6127324D-01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.4212D+01 epsf,diff= 0.0000D+00 0.1946D-01 nap= 37 + qnbd : iter= 29 f= 0.4181115D-01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1112D+01 epsf,diff= 0.0000D+00 0.2302D-01 nap= 38 + qnbd : iter= 30 f= 0.1879567D-01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.4225D+00 epsf,diff= 0.0000D+00 0.1025D-01 nap= 39 + qnbd : iter= 31 f= 0.8546911D-02 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1351D+01 epsf,diff= 0.0000D+00 0.2852D-02 nap= 41 + qnbd : iter= 32 f= 0.5695252D-02 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.8746D+00 epsf,diff= 0.0000D+00 0.2625D-02 nap= 42 + qnbd : iter= 33 f= 0.3069880D-02 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2491D+00 epsf,diff= 0.0000D+00 0.2494D-02 nap= 43 + qnbd : iter= 34 f= 0.5755995D-03 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2501D+00 epsf,diff= 0.0000D+00 0.4653D-03 nap= 44 + qnbd : iter= 35 f= 0.1103321D-03 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2082D+00 epsf,diff= 0.0000D+00 0.6258D-04 nap= 45 + qnbd : iter= 36 f= 0.4774899D-04 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.9357D-02 epsf,diff= 0.0000D+00 0.4743D-04 nap= 46 + qnbd : iter= 37 f= 0.3189662D-06 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.7401D-03 epsf,diff= 0.0000D+00 0.3183D-06 nap= 47 + qnbd : iter= 38 f= 0.6829435D-09 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2102D-04 epsf,diff= 0.0000D+00 0.6824D-09 nap= 48 + qnbd : iter= 39 f= 0.4984941D-12 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2913D-06 epsf,diff= 0.0000D+00 0.4981D-12 nap= 49 + qnbd : iter= 40 f= 0.3925578D-15 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2479D-08 epsf,diff= 0.0000D+00 0.3925D-15 nap= 50 + qnbd : iter= 41 f= 0.5929270D-19 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.4715D-10 epsf,diff= 0.0000D+00 0.5929D-19 nap= 51 + qnbd : iter= 42 f= 0.2854806D-23 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.1902D-10 epsf,diff= 0.0000D+00 0.1961D-23 nap= 56 + qnbd : iter= 43 f= 0.8942187D-24 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2730D-10 epsf,diff= 0.0000D+00 0.7863D-25 nap= 63 + qnbd : iter= 44 f= 0.8155913D-24 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2231D-10 epsf,diff= 0.0000D+00 0.2484D-25 nap= 70 + qnbd : iter= 45 f= 0.7907465D-24 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2553D-10 epsf,diff= 0.0000D+00 0.8508D-26 nap= 77 + qnbd : iter= 46 f= 0.7822385D-24 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2405D-10 epsf,diff= 0.0000D+00 0.5487D-26 nap= 85 + qnbd : iter= 47 f= 0.7767511D-24 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : epsg,difg= 0.2220D-15 0.2436D-10 epsf,diff= 0.0000D+00 0.2594D-26 nap= 95 + qnbd : iter= 48 f= 0.7741575D-24 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + qnbd : indqn= 13 +End of optimization (linear search fails). + +// imp = 4 : one line by iteration + one line by line search +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn',imp=3); + *********** qnbd **************** + qnbd : iter= 1 f= 0.2420000D+02 + qnbd : nbre fact 2 defact 0 total var factorisees 2 + rlbd tp= 0.2876E-01 tmax= 0.1000E+11 dh0/dt=-0.5423E+05 +e t= 0.3688E-04 h=-0.1945E+01 dh/dt=-0.5124E+05 dfh/dt=-0.5273E+05 dt 0.4E-04 + t= 0.5135E-03 h=-0.1784E+02 dh/dt=-0.1667E+05 dfh/dt=-0.3334E+05 dt 0.5E-03 + qnbd : epsg,difg= 0.2220D-15 0.5062D+02 epsf,diff= 0.0000D+00 0.1784D+02 nap= 3 + qnbd : iter= 2 f= 0.6363632D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1089E+03 tmax= 0.1000E+11 dh0/dt=-0.3720E+01 +ic t= 0.9589E+01 h= 0.5286E+02 dh/dt= 0.9380E+01 dfh/dt= 0.5513E+01 dt 0.1E+02 + t= 0.1322E+01 h=-0.2276E+01 dh/dt= 0.1483E+00 dfh/dt= 0.6670E+01 dt-0.8E+01 + qnbd : epsg,difg= 0.2220D-15 0.2926D+01 epsf,diff= 0.0000D+00 0.2276D+01 nap= 5 + qnbd : iter= 3 f= 0.4088059D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1871E+04 tmax= 0.1000E+11 dh0/dt=-0.1067E-01 + t= 0.1000E+01 h=-0.7160E-02 dh/dt=-0.3644E-02 dfh/dt=-0.7160E-02 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.1462D+01 epsf,diff= 0.0000D+00 0.7160D-02 nap= 6 + qnbd : iter= 4 f= 0.4080900D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.2129E+04 tmax= 0.1000E+11 dh0/dt=-0.5871E-02 + t= 0.1000E+01 h=-0.4927E-02 dh/dt=-0.3984E-02 dfh/dt=-0.4927E-02 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.1281D+01 epsf,diff= 0.0000D+00 0.4927D-02 nap= 7 + qnbd : iter= 5 f= 0.4075972D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.4921E+03 tmax= 0.1000E+11 dh0/dt=-0.2087E-01 + t= 0.1000E+01 h=-0.1666E-01 dh/dt=-0.1244E-01 dfh/dt=-0.1666E-01 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.2639D+01 epsf,diff= 0.0000D+00 0.1666D-01 nap= 8 + qnbd : iter= 6 f= 0.4059314D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1794E+03 tmax= 0.1000E+11 dh0/dt=-0.4910E-01 + t= 0.1000E+01 h=-0.3949E-01 dh/dt=-0.2960E-01 dfh/dt=-0.3949E-01 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.5535D+01 epsf,diff= 0.0000D+00 0.3949D-01 nap= 9 + qnbd : iter= 7 f= 0.4019827D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.6788E+02 tmax= 0.1000E+11 dh0/dt=-0.1202E+00 + t= 0.1000E+01 h=-0.9032E-01 dh/dt=-0.5611E-01 dfh/dt=-0.9032E-01 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.1029D+02 epsf,diff= 0.0000D+00 0.9032D-01 nap= 10 + qnbd : iter= 8 f= 0.3929503D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.4367E+02 tmax= 0.1000E+11 dh0/dt=-0.1810E+00 + t= 0.1000E+01 h=-0.1269E+00 dh/dt=-0.5900E-01 dfh/dt=-0.1269E+00 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.1482D+02 epsf,diff= 0.0000D+00 0.1269D+00 nap= 11 + qnbd : iter= 9 f= 0.3802616D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.4643E+02 tmax= 0.1000E+11 dh0/dt=-0.2391E+00 + t= 0.1000E+01 h=-0.1911E+00 dh/dt=-0.1369E+00 dfh/dt=-0.1911E+00 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.1584D+02 epsf,diff= 0.0000D+00 0.1911D+00 nap= 12 + qnbd : iter= 10 f= 0.3611527D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.2935E+02 tmax= 0.1000E+11 dh0/dt=-0.6544E+00 + t= 0.1000E+01 h=-0.4793E+00 dh/dt=-0.3144E+00 dfh/dt=-0.4793E+00 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.1335D+02 epsf,diff= 0.0000D+00 0.4793D+00 nap= 13 + qnbd : iter= 11 f= 0.3132213D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.5262E+02 tmax= 0.1000E+11 dh0/dt=-0.7617E+00 + t= 0.1000E+01 h=-0.5408E+00 dh/dt=-0.3919E+00 dfh/dt=-0.5408E+00 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.4831D+01 epsf,diff= 0.0000D+00 0.5408D+00 nap= 14 + qnbd : iter= 12 f= 0.2591395D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1420E+02 tmax= 0.1000E+11 dh0/dt=-0.8312E+00 +ic t= 0.1000E+01 h= 0.7497E+00 dh/dt= 0.4176E+01 dfh/dt= 0.7497E+00 dt 0.1E+01 + t= 0.4382E+00 h=-0.2198E+00 dh/dt= 0.4016E-01 dfh/dt= 0.1726E+01 dt-0.6E+00 + qnbd : epsg,difg= 0.2220D-15 0.9927D+01 epsf,diff= 0.0000D+00 0.2198D+00 nap= 16 + qnbd : iter= 13 f= 0.2371631D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.5731E+02 tmax= 0.1000E+11 dh0/dt=-0.4306E+00 + t= 0.1000E+01 h=-0.3368E+00 dh/dt=-0.2579E+00 dfh/dt=-0.3368E+00 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.7508D+01 epsf,diff= 0.0000D+00 0.3368D+00 nap= 17 + qnbd : iter= 14 f= 0.2034811D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.5735E+02 tmax= 0.1000E+11 dh0/dt=-0.6267E+00 + t= 0.1000E+01 h=-0.3605E+00 dh/dt=-0.1724E+00 dfh/dt=-0.3605E+00 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.1723D+01 epsf,diff= 0.0000D+00 0.3605D+00 nap= 18 + qnbd : iter= 15 f= 0.1674355D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1099E+02 tmax= 0.1000E+11 dh0/dt=-0.1363E+01 +ic t= 0.1000E+01 h= 0.6994E+01 dh/dt= 0.2893E+02 dfh/dt= 0.6994E+01 dt 0.1E+01 + t= 0.3516E+00 h=-0.2554E+00 dh/dt= 0.7273E+00 dfh/dt= 0.1118E+02 dt-0.6E+00 + qnbd : epsg,difg= 0.2220D-15 0.6425D+01 epsf,diff= 0.0000D+00 0.2554D+00 nap= 20 + qnbd : iter= 16 f= 0.1418994D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1891E+03 tmax= 0.1000E+11 dh0/dt=-0.1977E+00 + t= 0.1000E+01 h=-0.1320E+00 dh/dt=-0.6635E-01 dfh/dt=-0.1320E+00 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.2962D+01 epsf,diff= 0.0000D+00 0.1320D+00 nap= 21 + qnbd : iter= 17 f= 0.1286986D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.3721E+02 tmax= 0.1000E+11 dh0/dt=-0.3536E+00 + t= 0.1000E+01 h=-0.2772E+00 dh/dt=-0.1853E+00 dfh/dt=-0.2772E+00 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.2970D+01 epsf,diff= 0.0000D+00 0.2772D+00 nap= 22 + qnbd : iter= 18 f= 0.1009809D+01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.2944E+02 tmax= 0.1000E+11 dh0/dt=-0.3275E+00 + t= 0.1000E+01 h=-0.9782E-01 dh/dt= 0.3071E+00 dfh/dt=-0.9782E-01 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.7110D+01 epsf,diff= 0.0000D+00 0.9782D-01 nap= 23 + qnbd : iter= 19 f= 0.9119930D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.9911E+02 tmax= 0.1000E+11 dh0/dt=-0.4982E+00 + t= 0.1000E+01 h=-0.2439E+00 dh/dt= 0.1033E-01 dfh/dt=-0.2439E+00 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.1223D+01 epsf,diff= 0.0000D+00 0.2439D+00 nap= 24 + qnbd : iter= 20 f= 0.6680716D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.4542E+02 tmax= 0.1000E+11 dh0/dt=-0.1736E+00 + t= 0.1000E+01 h=-0.1495E+00 dh/dt=-0.9751E-01 dfh/dt=-0.1495E+00 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.1598D+01 epsf,diff= 0.0000D+00 0.1495D+00 nap= 25 + qnbd : iter= 21 f= 0.5185575D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.2050E+02 tmax= 0.1000E+11 dh0/dt=-0.2727E+00 +ic t= 0.1000E+01 h= 0.4900E+00 dh/dt= 0.2064E+01 dfh/dt= 0.4900E+00 dt 0.1E+01 + t= 0.3554E+00 h=-0.5204E-01 dh/dt= 0.3697E-01 dfh/dt= 0.8409E+00 dt-0.6E+00 + qnbd : epsg,difg= 0.2220D-15 0.4195D+01 epsf,diff= 0.0000D+00 0.5204D-01 nap= 27 + qnbd : iter= 22 f= 0.4665182D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1410E+03 tmax= 0.1000E+11 dh0/dt=-0.9467E-01 +e t= 0.1000E+01 h=-0.7980E-01 dh/dt=-0.6688E-01 dfh/dt=-0.7980E-01 dt 0.1E+01 + t= 0.2612E+01 h=-0.1651E+00 dh/dt=-0.4242E-01 dfh/dt=-0.5292E-01 dt 0.2E+01 + qnbd : epsg,difg= 0.2220D-15 0.1092D+01 epsf,diff= 0.0000D+00 0.1651D+00 nap= 29 + qnbd : iter= 23 f= 0.3014090D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.3134E+02 tmax= 0.1000E+11 dh0/dt=-0.1393E+00 +ic t= 0.1000E+01 h= 0.2342E-01 dh/dt= 0.3255E+00 dfh/dt= 0.2342E-01 dt 0.1E+01 + t= 0.5240E+00 h=-0.4378E-01 dh/dt=-0.1060E-02 dfh/dt= 0.1412E+00 dt-0.5E+00 + qnbd : epsg,difg= 0.2220D-15 0.3616D+01 epsf,diff= 0.0000D+00 0.4378D-01 nap= 31 + qnbd : iter= 24 f= 0.2576320D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.5270E+02 tmax= 0.1000E+11 dh0/dt=-0.1139E+00 + t= 0.1000E+01 h=-0.8347E-01 dh/dt=-0.5954E-01 dfh/dt=-0.8347E-01 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.2649D+01 epsf,diff= 0.0000D+00 0.8347D-01 nap= 32 + qnbd : iter= 25 f= 0.1741653D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.5702E+02 tmax= 0.1000E+11 dh0/dt=-0.9052E-01 + t= 0.1000E+01 h=-0.5731E-01 dh/dt=-0.3243E-01 dfh/dt=-0.5731E-01 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.7655D+00 epsf,diff= 0.0000D+00 0.5731D-01 nap= 33 + qnbd : iter= 26 f= 0.1168531D+00 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1523E+02 tmax= 0.1000E+11 dh0/dt=-0.1721E+00 +ic t= 0.1000E+01 h= 0.5149E+00 dh/dt= 0.2154E+01 dfh/dt= 0.5149E+00 dt 0.1E+01 + t= 0.3552E+00 h=-0.3345E-01 dh/dt= 0.4665E-01 dfh/dt= 0.8504E+00 dt-0.6E+00 + qnbd : epsg,difg= 0.2220D-15 0.3144D+01 epsf,diff= 0.0000D+00 0.3345D-01 nap= 35 + qnbd : iter= 27 f= 0.8340131D-01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1267E+03 tmax= 0.1000E+11 dh0/dt=-0.2710E-01 + t= 0.1000E+01 h=-0.2213E-01 dh/dt=-0.1760E-01 dfh/dt=-0.2213E-01 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.1683D+01 epsf,diff= 0.0000D+00 0.2213D-01 nap= 36 + qnbd : iter= 28 f= 0.6127324D-01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.2794E+02 tmax= 0.1000E+11 dh0/dt=-0.5182E-01 + t= 0.1000E+01 h=-0.1946E-01 dh/dt= 0.2933E-01 dfh/dt=-0.1946E-01 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.4212D+01 epsf,diff= 0.0000D+00 0.1946D-01 nap= 37 + qnbd : iter= 29 f= 0.4181115D-01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.2113E+03 tmax= 0.1000E+11 dh0/dt=-0.5837E-01 + t= 0.1000E+01 h=-0.2302E-01 dh/dt= 0.1234E-01 dfh/dt=-0.2302E-01 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.1112D+01 epsf,diff= 0.0000D+00 0.2302D-01 nap= 38 + qnbd : iter= 30 f= 0.1879567D-01 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.6064E+02 tmax= 0.1000E+11 dh0/dt=-0.1349E-01 + t= 0.1000E+01 h=-0.1025E-01 dh/dt=-0.5166E-02 dfh/dt=-0.1025E-01 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.4225D+00 epsf,diff= 0.0000D+00 0.1025D-01 nap= 39 + qnbd : iter= 31 f= 0.8546911D-02 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.4124E+02 tmax= 0.1000E+11 dh0/dt=-0.9192E-02 +ic t= 0.1000E+01 h=-0.1115E-03 dh/dt= 0.1345E-01 dfh/dt=-0.1115E-03 dt 0.1E+01 + t= 0.5527E+00 h=-0.2852E-02 dh/dt=-0.5725E-04 dfh/dt= 0.6127E-02 dt-0.4E+00 + qnbd : epsg,difg= 0.2220D-15 0.1351D+01 epsf,diff= 0.0000D+00 0.2852D-02 nap= 41 + qnbd : iter= 32 f= 0.5695252D-02 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1606E+03 tmax= 0.1000E+11 dh0/dt=-0.3214E-02 + t= 0.1000E+01 h=-0.2625E-02 dh/dt=-0.2090E-02 dfh/dt=-0.2625E-02 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.8746D+00 epsf,diff= 0.0000D+00 0.2625D-02 nap= 42 + qnbd : iter= 33 f= 0.3069880D-02 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.8464E+02 tmax= 0.1000E+11 dh0/dt=-0.3887E-02 + t= 0.1000E+01 h=-0.2494E-02 dh/dt=-0.1350E-02 dfh/dt=-0.2494E-02 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.2491D+00 epsf,diff= 0.0000D+00 0.2494D-02 nap= 43 + qnbd : iter= 34 f= 0.5755995D-03 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1302E+03 tmax= 0.1000E+11 dh0/dt=-0.7571E-03 + t= 0.1000E+01 h=-0.4653E-03 dh/dt=-0.1769E-03 dfh/dt=-0.4653E-03 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.2501D+00 epsf,diff= 0.0000D+00 0.4653D-03 nap= 44 + qnbd : iter= 35 f= 0.1103321D-03 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.4072E+03 tmax= 0.1000E+11 dh0/dt=-0.2997E-03 + t= 0.1000E+01 h=-0.6258E-04 dh/dt= 0.1693E-03 dfh/dt=-0.6258E-04 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.2082D+00 epsf,diff= 0.0000D+00 0.6258D-04 nap= 45 + qnbd : iter= 36 f= 0.4774899D-04 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.8042E+03 tmax= 0.1000E+11 dh0/dt=-0.1003E-03 + t= 0.1000E+01 h=-0.4743E-04 dh/dt= 0.6575E-05 dfh/dt=-0.4743E-04 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.9357D-02 epsf,diff= 0.0000D+00 0.4743D-04 nap= 46 + qnbd : iter= 37 f= 0.3189662D-06 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.6116E+04 tmax= 0.1000E+11 dh0/dt=-0.6644E-06 + t= 0.1000E+01 h=-0.3183E-06 dh/dt= 0.2630E-07 dfh/dt=-0.3183E-06 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.7401D-03 epsf,diff= 0.0000D+00 0.3183D-06 nap= 47 + qnbd : iter= 38 f= 0.6829435D-09 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1710E+06 tmax= 0.1000E+11 dh0/dt=-0.1340E-08 + t= 0.1000E+01 h=-0.6824E-09 dh/dt=-0.2448E-10 dfh/dt=-0.6824E-09 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.2102D-04 epsf,diff= 0.0000D+00 0.6824D-09 nap= 48 + qnbd : iter= 39 f= 0.4984941D-12 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1312E+08 tmax= 0.1000E+11 dh0/dt=-0.9764E-12 + t= 0.1000E+01 h=-0.4981E-12 dh/dt=-0.1984E-13 dfh/dt=-0.4981E-12 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.2913D-06 epsf,diff= 0.0000D+00 0.4981D-12 nap= 49 + qnbd : iter= 40 f= 0.3925578D-15 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1721E+09 tmax= 0.1000E+11 dh0/dt=-0.7785E-15 + t= 0.1000E+01 h=-0.3925E-15 dh/dt=-0.6537E-17 dfh/dt=-0.3925E-15 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.2479D-08 epsf,diff= 0.0000D+00 0.3925D-15 nap= 50 + qnbd : iter= 41 f= 0.5929270D-19 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1308E+11 tmax= 0.1000E+11 dh0/dt=-0.1180E-18 + t= 0.1000E+01 h=-0.5929E-19 dh/dt=-0.5949E-21 dfh/dt=-0.5929E-19 dt 0.1E+01 + qnbd : epsg,difg= 0.2220D-15 0.4715D-10 epsf,diff= 0.0000D+00 0.5929D-19 nap= 51 + qnbd : iter= 42 f= 0.2854806D-23 + qnbd : emploi truc powell (y,s)= 0.1174D-18 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.1233E+12 tmax= 0.1000E+11 dh0/dt=-0.8132E-22 +d t= 0.1000E+01 h= 0.7180E-21 dh/dt= 0.1517E-20 dfh/dt= 0.7180E-21 dt 0.1E+01 +d t= 0.5000E+00 h= 0.1592E-21 dh/dt= 0.7180E-21 dfh/dt= 0.1118E-20 dt-0.5E+00 +d t= 0.2500E+00 h= 0.2963E-22 dh/dt= 0.3184E-21 dfh/dt= 0.5181E-21 dt-0.2E+00 +d t= 0.1250E+00 h= 0.2325E-23 dh/dt= 0.1185E-21 dfh/dt= 0.2184E-21 dt-0.1E+00 + t= 0.6250E-01 h=-0.1961E-23 dh/dt= 0.1862E-22 dfh/dt= 0.6857E-22 dt-0.6E-01 + qnbd : epsg,difg= 0.2220D-15 0.1902D-10 epsf,diff= 0.0000D+00 0.1961D-23 nap= 56 + qnbd : iter= 43 f= 0.8942187D-24 + qnbd : emploi truc powell (y,s)= 0.6247D-23 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.6780E+11 tmax= 0.1000E+11 dh0/dt=-0.2325E-22 +d t= 0.1000E+01 h= 0.1132E-20 dh/dt= 0.2288E-20 dfh/dt= 0.1132E-20 dt 0.1E+01 +d t= 0.5000E+00 h= 0.2773E-21 dh/dt= 0.1132E-20 dfh/dt= 0.1710E-20 dt-0.5E+00 +d t= 0.2500E+00 h= 0.6644E-22 dh/dt= 0.5547E-21 dfh/dt= 0.8434E-21 dt-0.2E+00 +d t= 0.1250E+00 h= 0.1515E-22 dh/dt= 0.2657E-21 dfh/dt= 0.4103E-21 dt-0.1E+00 +d t= 0.6250E-01 h= 0.3062E-23 dh/dt= 0.1212E-21 dfh/dt= 0.1934E-21 dt-0.6E-01 +d t= 0.3125E-01 h= 0.4061E-24 dh/dt= 0.4904E-22 dfh/dt= 0.8499E-22 dt-0.3E-01 + t= 0.1563E-01 h=-0.7863E-25 dh/dt= 0.1291E-22 dfh/dt= 0.3102E-22 dt-0.2E-01 + qnbd : epsg,difg= 0.2220D-15 0.2730D-10 epsf,diff= 0.0000D+00 0.7863D-25 nap= 63 + qnbd : iter= 44 f= 0.8155913D-24 + qnbd : emploi truc powell (y,s)= 0.5658D-24 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.3429E+11 tmax= 0.1000E+11 dh0/dt=-0.3998E-22 +id t= 0.1000E+01 h= 0.1023E-19 dh/dt= 0.2049E-19 dfh/dt= 0.1023E-19 dt 0.1E+01 +d t= 0.1000E+00 h= 0.9866E-22 dh/dt= 0.2013E-20 dfh/dt= 0.1125E-19 dt-0.9E+00 +d t= 0.5000E-01 h= 0.2367E-22 dh/dt= 0.9866E-21 dfh/dt= 0.1500E-20 dt-0.5E-01 +d t= 0.2500E-01 h= 0.5417E-23 dh/dt= 0.4733E-21 dfh/dt= 0.7300E-21 dt-0.3E-01 +d t= 0.1250E-01 h= 0.1105E-23 dh/dt= 0.2166E-21 dfh/dt= 0.3450E-21 dt-0.1E-01 +d t= 0.6250E-02 h= 0.1496E-24 dh/dt= 0.8849E-22 dfh/dt= 0.1528E-21 dt-0.6E-02 + t= 0.3125E-02 h=-0.2484E-25 dh/dt= 0.2420E-22 dfh/dt= 0.5584E-22 dt-0.3E-02 + qnbd : epsg,difg= 0.2220D-15 0.2231D-10 epsf,diff= 0.0000D+00 0.2484D-25 nap= 70 + qnbd : iter= 45 f= 0.7907465D-24 + qnbd : emploi truc powell (y,s)= 0.2006D-24 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.7009E+10 tmax= 0.1000E+11 dh0/dt=-0.8031E-22 +id t= 0.1000E+01 h= 0.1088E-18 dh/dt= 0.2176E-18 dfh/dt= 0.1088E-18 dt 0.1E+01 +id t= 0.1000E+00 h= 0.1081E-20 dh/dt= 0.2169E-19 dfh/dt= 0.1197E-18 dt-0.9E+00 +d t= 0.1000E-01 h= 0.1009E-22 dh/dt= 0.2097E-20 dfh/dt= 0.1190E-19 dt-0.9E-01 +d t= 0.5000E-02 h= 0.2314E-23 dh/dt= 0.1008E-20 dfh/dt= 0.1554E-20 dt-0.5E-02 +d t= 0.2500E-02 h= 0.4799E-24 dh/dt= 0.4640E-21 dfh/dt= 0.7337E-21 dt-0.3E-02 +d t= 0.1250E-02 h= 0.6986E-25 dh/dt= 0.1919E-21 dfh/dt= 0.3281E-21 dt-0.1E-02 + t= 0.6250E-03 h=-0.8508E-26 dh/dt= 0.5560E-22 dfh/dt= 0.1254E-21 dt-0.6E-03 + qnbd : epsg,difg= 0.2220D-15 0.2553D-10 epsf,diff= 0.0000D+00 0.8508D-26 nap= 77 + qnbd : iter= 46 f= 0.7822385D-24 + qnbd : emploi truc powell (y,s)= 0.8484D-25 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.2254E+10 tmax= 0.1000E+11 dh0/dt=-0.2593E-21 +id t= 0.1000E+01 h= 0.2369E-17 dh/dt= 0.4737E-17 dfh/dt= 0.2369E-17 dt 0.1E+01 +id t= 0.1000E+00 h= 0.2366E-19 dh/dt= 0.4735E-18 dfh/dt= 0.2605E-17 dt-0.9E+00 +id t= 0.1000E-01 h= 0.2343E-21 dh/dt= 0.4712E-19 dfh/dt= 0.2603E-18 dt-0.9E-01 +d t= 0.1000E-02 h= 0.2110E-23 dh/dt= 0.4477E-20 dfh/dt= 0.2580E-19 dt-0.9E-02 +d t= 0.5000E-03 h= 0.4624E-24 dh/dt= 0.2110E-20 dfh/dt= 0.3294E-20 dt-0.5E-03 +d t= 0.2500E-03 h= 0.8387E-25 dh/dt= 0.9243E-21 dfh/dt= 0.1514E-20 dt-0.3E-03 +d t= 0.1250E-03 h= 0.2587E-26 dh/dt= 0.3350E-21 dfh/dt= 0.6502E-21 dt-0.1E-03 + t= 0.6250E-04 h=-0.5487E-26 dh/dt= 0.3532E-22 dfh/dt= 0.1292E-21 dt-0.6E-04 + qnbd : epsg,difg= 0.2220D-15 0.2405D-10 epsf,diff= 0.0000D+00 0.5487D-26 nap= 85 + qnbd : iter= 47 f= 0.7767511D-24 + qnbd : emploi truc powell (y,s)= 0.1833D-25 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.3148E+09 tmax= 0.1000E+11 dh0/dt=-0.2565E-21 +id t= 0.1000E+01 h= 0.5352E-16 dh/dt= 0.1070E-15 dfh/dt= 0.5352E-16 dt 0.1E+01 +id t= 0.1000E+00 h= 0.5352E-18 dh/dt= 0.1070E-16 dfh/dt= 0.5888E-16 dt-0.9E+00 +id t= 0.1000E-01 h= 0.5350E-20 dh/dt= 0.1070E-17 dfh/dt= 0.5887E-17 dt-0.9E-01 +id t= 0.1000E-02 h= 0.5327E-22 dh/dt= 0.1068E-18 dfh/dt= 0.5885E-18 dt-0.9E-02 +d t= 0.1000E-03 h= 0.5117E-24 dh/dt= 0.1046E-19 dfh/dt= 0.5862E-19 dt-0.9E-03 +d t= 0.5000E-04 h= 0.1218E-24 dh/dt= 0.5099E-20 dfh/dt= 0.7796E-20 dt-0.5E-04 +d t= 0.2500E-04 h= 0.2743E-25 dh/dt= 0.2421E-20 dfh/dt= 0.3777E-20 dt-0.3E-04 +d t= 0.1250E-04 h= 0.6249E-26 dh/dt= 0.1086E-20 dfh/dt= 0.1694E-20 dt-0.1E-04 +d t= 0.6250E-05 h= 0.1019E-26 dh/dt= 0.4148E-21 dfh/dt= 0.8367E-21 dt-0.6E-05 + t= 0.3125E-05 h=-0.2594E-26 dh/dt= 0.6735E-22 dfh/dt= 0.1156E-20 dt-0.3E-05 + qnbd : epsg,difg= 0.2220D-15 0.2436D-10 epsf,diff= 0.0000D+00 0.2594D-26 nap= 95 + qnbd : iter= 48 f= 0.7741575D-24 + qnbd : emploi truc powell (y,s)= 0.9833D-27 + qnbd : nbre fact 0 defact 0 total var factorisees 2 + rlbd tp= 0.4866E+07 tmax= 0.1000E+11 dh0/dt=-0.3485E-19 +id t= 0.1000E+01 h= 0.2126E-12 dh/dt= 0.4252E-12 dfh/dt= 0.2126E-12 dt 0.1E+01 +id t= 0.1000E-02 h= 0.2126E-18 dh/dt= 0.4252E-15 dfh/dt= 0.2128E-12 dt-0.1E+01 +id t= 0.1000E-04 h= 0.2092E-22 dh/dt= 0.4218E-17 dfh/dt= 0.2147E-15 dt-0.1E-02 +d t= 0.1000E-05 h= 0.1767E-24 dh/dt= 0.3901E-18 dfh/dt= 0.2305E-17 dt-0.9E-05 +d t= 0.5000E-06 h= 0.3717E-25 dh/dt= 0.1781E-18 dfh/dt= 0.2790E-18 dt-0.5E-06 + t= 0.2500E-06 h= 0.5251E-26 dh/dt= 0.1781E-18 dfh/dt= 0.0000E+00 dt-0.3E-06 + qnbd : indqn= 13 +End of optimization (linear search fails). + +// +// 5. Test bound-constrained Limited Memory BFGS +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc','ar',100); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function, maximum number of iterations +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc','ar', 100 , 100 ); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with various imp levels +// imp = 0 : No messages +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc',imp=0); +// imp = 1,2 : one line at start, one line at end +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc',imp=1); + gcbd max appels simul + gcbd : retour avec indgc= 4 + f,norme grad,nap,iter,indgc= 0.6214E-20 0.8448E-10 100 43 4 +Optim stops: maximum number of calls to f is reached. + +// imp = 3 : one line by iteration +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc',imp=2); + dans gcbd iter= 1 f= 0.2420000D+02 + gcbd. epsg,difg= 0.2220D-15 0.7159D+02 epsf,diff= 0.0000D+00 0.1784D+02 nap= 2 + dans gcbd iter= 2 f= 0.6363632D+01 + gcbd. epsg,difg= 0.2220D-15 0.2340D+01 epsf,diff= 0.0000D+00 0.2231D+01 nap= 4 + dans gcbd iter= 3 f= 0.4132134D+01 + gcbd. epsg,difg= 0.2220D-15 0.1913D+01 epsf,diff= 0.0000D+00 0.4550D-02 nap= 6 + dans gcbd iter= 4 f= 0.4127584D+01 + gcbd. epsg,difg= 0.2220D-15 0.5416D+01 epsf,diff= 0.0000D+00 0.1486D-01 nap= 8 + dans gcbd iter= 5 f= 0.4112720D+01 + gcbd. epsg,difg= 0.2220D-15 0.2091D+02 epsf,diff= 0.0000D+00 0.1464D+00 nap= 10 + dans gcbd iter= 6 f= 0.3966314D+01 + gcbd. epsg,difg= 0.2220D-15 0.2247D+02 epsf,diff= 0.0000D+00 0.6344D+00 nap= 12 + dans gcbd iter= 7 f= 0.3331870D+01 + gcbd. epsg,difg= 0.2220D-15 0.2143D+01 epsf,diff= 0.0000D+00 0.6856D+00 nap= 13 + dans gcbd iter= 8 f= 0.2646310D+01 + gcbd. epsg,difg= 0.2220D-15 0.8030D+01 epsf,diff= 0.0000D+00 0.7397D+00 nap= 15 + dans gcbd iter= 9 f= 0.1906596D+01 + gcbd. epsg,difg= 0.2220D-15 0.1073D+02 epsf,diff= 0.0000D+00 0.3822D-01 nap= 18 + dans gcbd iter= 10 f= 0.1868373D+01 + gcbd. epsg,difg= 0.2220D-15 0.7322D+01 epsf,diff= 0.0000D+00 0.4014D+00 nap= 20 + dans gcbd iter= 11 f= 0.1467012D+01 + gcbd. epsg,difg= 0.2220D-15 0.9099D+01 epsf,diff= 0.0000D+00 0.2159D+00 nap= 22 + dans gcbd iter= 12 f= 0.1251075D+01 + gcbd. epsg,difg= 0.2220D-15 0.2373D+01 epsf,diff= 0.0000D+00 0.2771D+00 nap= 23 + dans gcbd iter= 13 f= 0.9739653D+00 + gcbd. epsg,difg= 0.2220D-15 0.5464D+01 epsf,diff= 0.0000D+00 0.7093D-01 nap= 25 + dans gcbd iter= 14 f= 0.9030358D+00 + gcbd. epsg,difg= 0.2220D-15 0.6580D+01 epsf,diff= 0.0000D+00 0.2702D+00 nap= 30 + dans gcbd iter= 15 f= 0.6328802D+00 + gcbd. epsg,difg= 0.2220D-15 0.2530D+01 epsf,diff= 0.0000D+00 0.2982D-01 nap= 32 + dans gcbd iter= 16 f= 0.6030573D+00 + gcbd. epsg,difg= 0.2220D-15 0.7873D+01 epsf,diff= 0.0000D+00 0.8989D-01 nap= 34 + dans gcbd iter= 17 f= 0.5131695D+00 + gcbd. epsg,difg= 0.2220D-15 0.1104D+01 epsf,diff= 0.0000D+00 0.8223D-01 nap= 35 + dans gcbd iter= 18 f= 0.4309425D+00 + gcbd. epsg,difg= 0.2220D-15 0.3437D+01 epsf,diff= 0.0000D+00 0.1651D-01 nap= 37 + dans gcbd iter= 19 f= 0.4144307D+00 + gcbd. epsg,difg= 0.2220D-15 0.4566D+01 epsf,diff= 0.0000D+00 0.1344D+00 nap= 39 + dans gcbd iter= 20 f= 0.2800585D+00 + gcbd. epsg,difg= 0.2220D-15 0.6863D+01 epsf,diff= 0.0000D+00 0.7865D-01 nap= 41 + dans gcbd iter= 21 f= 0.2014068D+00 + gcbd. epsg,difg= 0.2220D-15 0.1826D+01 epsf,diff= 0.0000D+00 0.7752D-01 nap= 42 + dans gcbd iter= 22 f= 0.1238910D+00 + gcbd. epsg,difg= 0.2220D-15 0.2529D+01 epsf,diff= 0.0000D+00 0.7119D-01 nap= 44 + dans gcbd iter= 23 f= 0.5270207D-01 + gcbd. epsg,difg= 0.2220D-15 0.4306D+01 epsf,diff= 0.0000D+00 0.6135D-02 nap= 47 + dans gcbd iter= 24 f= 0.4656719D-01 + gcbd. epsg,difg= 0.2220D-15 0.1231D+01 epsf,diff= 0.0000D+00 0.2703D-01 nap= 49 + dans gcbd iter= 25 f= 0.1953329D-01 + gcbd. epsg,difg= 0.2220D-15 0.1445D+01 epsf,diff= 0.0000D+00 0.1631D-01 nap= 51 + dans gcbd iter= 26 f= 0.3222476D-02 + gcbd. epsg,difg= 0.2220D-15 0.6193D+00 epsf,diff= 0.0000D+00 0.2216D-02 nap= 53 + dans gcbd iter= 27 f= 0.1006378D-02 + gcbd. epsg,difg= 0.2220D-15 0.3527D+00 epsf,diff= 0.0000D+00 0.5871D-03 nap= 55 + dans gcbd iter= 28 f= 0.4193247D-03 + gcbd. epsg,difg= 0.2220D-15 0.1105D+00 epsf,diff= 0.0000D+00 0.3655D-03 nap= 56 + dans gcbd iter= 29 f= 0.5385147D-04 + gcbd. epsg,difg= 0.2220D-15 0.9174D-01 epsf,diff= 0.0000D+00 0.4928D-04 nap= 58 + dans gcbd iter= 30 f= 0.4571613D-05 + gcbd. epsg,difg= 0.2220D-15 0.1255D-01 epsf,diff= 0.0000D+00 0.4367D-05 nap= 60 + dans gcbd iter= 31 f= 0.2050776D-06 + gcbd. epsg,difg= 0.2220D-15 0.9260D-03 epsf,diff= 0.0000D+00 0.2043D-06 nap= 63 + dans gcbd iter= 32 f= 0.7658047D-09 + gcbd. epsg,difg= 0.2220D-15 0.6032D-04 epsf,diff= 0.0000D+00 0.7625D-09 nap= 65 + dans gcbd iter= 33 f= 0.3300830D-11 + gcbd. epsg,difg= 0.2220D-15 0.2425D-06 epsf,diff= 0.0000D+00 0.3301D-11 nap= 67 + dans gcbd iter= 34 f= 0.5127616D-16 + gcbd. epsg,difg= 0.2220D-15 0.3168D-08 epsf,diff= 0.0000D+00 0.5126D-16 nap= 71 + dans gcbd iter= 35 f= 0.1131843D-19 + gcbd. epsg,difg= 0.2220D-15 0.8861D-09 epsf,diff= 0.0000D+00 0.4625D-20 nap= 78 + dans gcbd iter= 36 f= 0.6693058D-20 + gcbd. epsg,difg= 0.2220D-15 0.4257D-09 epsf,diff= 0.0000D+00 0.3089D-21 nap= 82 + dans gcbd iter= 37 f= 0.6384148D-20 + gcbd. epsg,difg= 0.2220D-15 0.3053D-09 epsf,diff= 0.0000D+00 0.5249D-22 nap= 84 + dans gcbd iter= 38 f= 0.6331659D-20 + gcbd. epsg,difg= 0.2220D-15 0.8042D-10 epsf,diff= 0.0000D+00 0.4895D-22 nap= 85 + dans gcbd iter= 39 f= 0.6282712D-20 + gcbd. epsg,difg= 0.2220D-15 0.2603D-09 epsf,diff= 0.0000D+00 0.7315D-23 nap= 87 + dans gcbd iter= 40 f= 0.6275397D-20 + gcbd. epsg,difg= 0.2220D-15 0.2373D-09 epsf,diff= 0.0000D+00 0.1517D-22 nap= 96 + dans gcbd iter= 41 f= 0.6260226D-20 + gcbd. epsg,difg= 0.2220D-15 0.1259D-09 epsf,diff= 0.0000D+00 0.2288D-22 nap= 97 + dans gcbd iter= 42 f= 0.6237341D-20 + gcbd. epsg,difg= 0.2220D-15 0.8448D-10 epsf,diff= 0.0000D+00 0.1153D-22 nap= 99 + dans gcbd iter= 43 f= 0.6225811D-20 + gcbd max appels simul + gcbd : retour avec indgc= 4 + f,norme grad,nap,iter,indgc= 0.6214E-20 0.8448E-10 100 43 4 +Optim stops: maximum number of calls to f is reached. + +// imp = 4 : one line by iteration + one line by line search +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc',imp=3); + dans gcbd iter= 1 f= 0.2420000D+02 + relvar1. valeur de eps1= 0.1020000D+02 + redemarrage. icycl= 2 + rlbd tp= 0.2876E-01 tmax= 0.1000E+11 dh0/dt=-0.5423E+05 +e t= 0.3688E-04 h=-0.1945E+01 dh/dt=-0.5124E+05 dfh/dt=-0.5273E+05 dt 0.4E-04 + t= 0.5135E-03 h=-0.1784E+02 dh/dt=-0.1667E+05 dfh/dt=-0.3334E+05 dt 0.5E-03 + retour mlibd indrl= 1 pas= 0.5135D-03 f= 0.6364D+01 + gcbd. epsg,difg= 0.2220D-15 0.7159D+02 epsf,diff= 0.0000D+00 0.1784D+02 nap= 2 + dans gcbd iter= 2 f= 0.6363632D+01 + relvar1. valeur de eps1= 0.3799926D+01 + rlbd tp= 0.1253E+03 tmax= 0.1000E+11 dh0/dt=-0.3802E+01 +ic t= 0.9384E+01 h= 0.6768E+02 dh/dt= 0.1385E+02 dfh/dt= 0.7212E+01 dt 0.9E+01 + t= 0.1228E+01 h=-0.2231E+01 dh/dt= 0.7747E-01 dfh/dt= 0.8572E+01 dt-0.8E+01 + retour mlibd indrl= 1 pas= 0.1228D+01 f= 0.4132D+01 + gcbd. epsg,difg= 0.2220D-15 0.2340D+01 epsf,diff= 0.0000D+00 0.2231D+01 nap= 4 + dans gcbd iter= 3 f= 0.4132134D+01 + relvar1. valeur de eps1= 0.4060355D-02 + redemarrage. icycl= 3 + rlbd tp= 0.3491E+04 tmax= 0.1000E+11 dh0/dt=-0.4314E-02 +id t= 0.1035E+04 h= 0.1274E+04 dh/dt= 0.2763E+01 dfh/dt= 0.1231E+01 dt 0.1E+04 + t= 0.1613E+01 h=-0.4550E-02 dh/dt=-0.1328E-02 dfh/dt= 0.1233E+01 dt-0.1E+04 + retour mlibd indrl= 1 pas= 0.1613D+01 f= 0.4128D+01 + gcbd. epsg,difg= 0.2220D-15 0.1913D+01 epsf,diff= 0.0000D+00 0.4550D-02 nap= 6 + dans gcbd iter= 4 f= 0.4127584D+01 + relvar1. valeur de eps1= 0.2713482D-02 + rlbd tp= 0.1714E+04 tmax= 0.1000E+11 dh0/dt=-0.5472E-02 +e t= 0.1663E+01 h=-0.7784E-02 dh/dt=-0.3889E-02 dfh/dt=-0.4681E-02 dt 0.2E+01 + t= 0.4407E+01 h=-0.1486E-01 dh/dt=-0.1270E-02 dfh/dt=-0.2580E-02 dt 0.3E+01 + retour mlibd indrl= 1 pas= 0.4407D+01 f= 0.4113D+01 + gcbd. epsg,difg= 0.2220D-15 0.5416D+01 epsf,diff= 0.0000D+00 0.1486D-01 nap= 8 + dans gcbd iter= 5 f= 0.4112720D+01 + relvar1. valeur de eps1= 0.2174276D-01 + rlbd tp= 0.3394E+03 tmax= 0.1000E+11 dh0/dt=-0.2756E-01 +e t= 0.1079E+01 h=-0.2860E-01 dh/dt=-0.2543E-01 dfh/dt=-0.2652E-01 dt 0.1E+01 + t= 0.1071E+02 h=-0.1464E+00 dh/dt= 0.4420E-02 dfh/dt=-0.1223E-01 dt 0.1E+02 + retour mlibd indrl= 1 pas= 0.1071D+02 f= 0.3966D+01 + gcbd. epsg,difg= 0.2220D-15 0.2091D+02 epsf,diff= 0.0000D+00 0.1464D+00 nap= 10 + dans gcbd iter= 6 f= 0.3966314D+01 + relvar1. valeur de eps1= 0.3241092D+00 + rlbd tp= 0.5571E+02 tmax= 0.1000E+11 dh0/dt=-0.3012E+00 +e t= 0.9721E+00 h=-0.2598E+00 dh/dt=-0.2366E+00 dfh/dt=-0.2673E+00 dt 0.1E+01 + t= 0.3474E+01 h=-0.6344E+00 dh/dt=-0.2926E-01 dfh/dt=-0.1497E+00 dt 0.3E+01 + retour mlibd indrl= 1 pas= 0.3474D+01 f= 0.3332D+01 + gcbd. epsg,difg= 0.2220D-15 0.2247D+02 epsf,diff= 0.0000D+00 0.6344D+00 nap= 12 + dans gcbd iter= 7 f= 0.3331870D+01 + relvar1. valeur de eps1= 0.3741640D+00 + rlbd tp= 0.1088E+03 tmax= 0.1000E+11 dh0/dt=-0.5645E+00 + t= 0.2248E+01 h=-0.6856E+00 dh/dt=-0.1262E+00 dfh/dt=-0.3050E+00 dt 0.2E+01 + retour mlibd indrl= 1 pas= 0.2248D+01 f= 0.2646D+01 + gcbd. epsg,difg= 0.2220D-15 0.2143D+01 epsf,diff= 0.0000D+00 0.6856D+00 nap= 13 + dans gcbd iter= 8 f= 0.2646310D+01 + relvar1. valeur de eps1= 0.3403105D-02 + rlbd tp= 0.7769E+02 tmax= 0.1000E+11 dh0/dt=-0.1859E+00 +ic t= 0.7377E+01 h= 0.6756E+00 dh/dt= 0.1233E+01 dfh/dt= 0.9159E-01 dt 0.7E+01 + t= 0.4255E+01 h=-0.7397E+00 dh/dt=-0.4571E-01 dfh/dt= 0.4535E+00 dt-0.3E+01 + retour mlibd indrl= 1 pas= 0.4255D+01 f= 0.1907D+01 + gcbd. epsg,difg= 0.2220D-15 0.8030D+01 epsf,diff= 0.0000D+00 0.7397D+00 nap= 15 + dans gcbd iter= 9 f= 0.1906596D+01 + relvar1. valeur de eps1= 0.4780419D-01 + rlbd tp= 0.3212E+02 tmax= 0.1000E+11 dh0/dt=-0.2472E+00 +id t= 0.5985E+01 h= 0.1537E+03 dh/dt= 0.9159E+02 dfh/dt= 0.2567E+02 dt 0.6E+01 +e t= 0.1611E-01 h=-0.3896E-02 dh/dt=-0.2364E+00 dfh/dt= 0.2574E+02 dt-0.6E+01 + t= 0.2846E+00 h=-0.3822E-01 dh/dt=-0.8113E-04 dfh/dt=-0.1279E+00 dt 0.3E+00 + retour mlibd indrl= 1 pas= 0.2846D+00 f= 0.1868D+01 + gcbd. epsg,difg= 0.2220D-15 0.1073D+02 epsf,diff= 0.0000D+00 0.3822D-01 nap= 18 + dans gcbd iter= 10 f= 0.1868373D+01 + relvar1. valeur de eps1= 0.8535631D-01 + rlbd tp= 0.1129E+03 tmax= 0.1000E+11 dh0/dt=-0.1980E+00 +e t= 0.3861E+00 h=-0.7241E-01 dh/dt=-0.1777E+00 dfh/dt=-0.1876E+00 dt 0.4E+00 + t= 0.2884E+01 h=-0.4014E+00 dh/dt=-0.9237E-01 dfh/dt=-0.1317E+00 dt 0.2E+01 + retour mlibd indrl= 1 pas= 0.2884D+01 f= 0.1467D+01 + gcbd. epsg,difg= 0.2220D-15 0.7322D+01 epsf,diff= 0.0000D+00 0.4014D+00 nap= 20 + dans gcbd iter= 11 f= 0.1467012D+01 + relvar1. valeur de eps1= 0.3974892D-01 + rlbd tp= 0.4776E+02 tmax= 0.1000E+11 dh0/dt=-0.2843E+00 +ic t= 0.2824E+01 h= 0.4689E+00 dh/dt= 0.1143E+01 dfh/dt= 0.1661E+00 dt 0.3E+01 + t= 0.1342E+01 h=-0.2159E+00 dh/dt= 0.7689E-02 dfh/dt= 0.4621E+00 dt-0.1E+01 + retour mlibd indrl= 1 pas= 0.1342D+01 f= 0.1251D+01 + gcbd. epsg,difg= 0.2220D-15 0.9099D+01 epsf,diff= 0.0000D+00 0.2159D+00 nap= 22 + dans gcbd iter= 12 f= 0.1251075D+01 + relvar1. valeur de eps1= 0.6137646D-01 + rlbd tp= 0.2230E+03 tmax= 0.1000E+11 dh0/dt=-0.2142E+00 + t= 0.2016E+01 h=-0.2771E+00 dh/dt=-0.6822E-01 dfh/dt=-0.1375E+00 dt 0.2E+01 + retour mlibd indrl= 1 pas= 0.2016D+01 f= 0.9740D+00 + gcbd. epsg,difg= 0.2220D-15 0.2373D+01 epsf,diff= 0.0000D+00 0.2771D+00 nap= 23 + dans gcbd iter= 13 f= 0.9739653D+00 + relvar1. valeur de eps1= 0.4173212D-02 + rlbd tp= 0.1759E+03 tmax= 0.1000E+11 dh0/dt=-0.7701E-01 +ic t= 0.7196E+01 h= 0.1711E-01 dh/dt= 0.2397E-02 dfh/dt= 0.2377E-02 dt 0.7E+01 + t= 0.2294E+01 h=-0.7093E-01 dh/dt= 0.3779E-02 dfh/dt= 0.1796E-01 dt-0.5E+01 + retour mlibd indrl= 1 pas= 0.2294D+01 f= 0.9030D+00 + gcbd. epsg,difg= 0.2220D-15 0.5464D+01 epsf,diff= 0.0000D+00 0.7093D-01 nap= 25 + dans gcbd iter= 14 f= 0.9030358D+00 + relvar1. valeur de eps1= 0.2213301D-01 + rlbd tp= 0.1925E+03 tmax= 0.1000E+11 dh0/dt=-0.5988E-01 +es t= 0.2369E+01 h=-0.1457E+00 dh/dt=-0.6005E-01 dfh/dt=-0.6152E-01 dt 0.2E+01 +ic t= 0.1925E+03 h= 0.6099E+05 dh/dt= 0.1255E+04 dfh/dt= 0.3208E+03 dt 0.2E+03 +ic t= 0.6286E+02 h= 0.7424E+03 dh/dt= 0.4626E+02 dfh/dt= 0.4648E+03 dt-0.1E+03 +ic t= 0.1991E+02 h= 0.7578E+01 dh/dt= 0.1633E+01 dfh/dt= 0.1711E+02 dt-0.4E+02 + t= 0.7386E+01 h=-0.2702E+00 dh/dt= 0.4024E-01 dfh/dt= 0.6267E+00 dt-0.1E+02 + retour mlibd indrl= 1 pas= 0.7386D+01 f= 0.6329D+00 + gcbd. epsg,difg= 0.2220D-15 0.6580D+01 epsf,diff= 0.0000D+00 0.2702D+00 nap= 30 + dans gcbd iter= 15 f= 0.6328802D+00 + relvar1. valeur de eps1= 0.3209633D-01 + rlbd tp= 0.8587E+02 tmax= 0.1000E+11 dh0/dt=-0.1289E+00 +ic t= 0.4193E+01 h= 0.5736E+00 dh/dt= 0.1516E+00 dfh/dt= 0.1368E+00 dt 0.4E+01 + t= 0.5819E+00 h=-0.2982E-01 dh/dt= 0.1805E-01 dfh/dt= 0.1671E+00 dt-0.4E+01 + retour mlibd indrl= 1 pas= 0.5819D+00 f= 0.6031D+00 + gcbd. epsg,difg= 0.2220D-15 0.2530D+01 epsf,diff= 0.0000D+00 0.2982D-01 nap= 32 + dans gcbd iter= 16 f= 0.6030573D+00 + relvar1. valeur de eps1= 0.4746197D-02 + rlbd tp= 0.2718E+03 tmax= 0.1000E+11 dh0/dt=-0.2597E-01 +e t= 0.2297E+01 h=-0.5336E-01 dh/dt=-0.2015E-01 dfh/dt=-0.2323E-01 dt 0.2E+01 + t= 0.7857E+01 h=-0.8989E-01 dh/dt= 0.1364E-01 dfh/dt=-0.6570E-02 dt 0.6E+01 + retour mlibd indrl= 1 pas= 0.7857D+01 f= 0.5132D+00 + gcbd. epsg,difg= 0.2220D-15 0.7873D+01 epsf,diff= 0.0000D+00 0.8989D-01 nap= 34 + dans gcbd iter= 17 f= 0.5131695D+00 + relvar1. valeur de eps1= 0.4594621D-01 + rlbd tp= 0.3039E+03 tmax= 0.1000E+11 dh0/dt=-0.1195E+00 + t= 0.1504E+01 h=-0.8223E-01 dh/dt= 0.7334E-02 dfh/dt=-0.5466E-01 dt 0.2E+01 + retour mlibd indrl= 1 pas= 0.1504D+01 f= 0.4309D+00 + gcbd. epsg,difg= 0.2220D-15 0.1104D+01 epsf,diff= 0.0000D+00 0.8223D-01 nap= 35 + dans gcbd iter= 18 f= 0.4309425D+00 + relvar1. valeur de eps1= 0.9029729D-03 + rlbd tp= 0.1063E+04 tmax= 0.1000E+11 dh0/dt=-0.4518E-02 +ic t= 0.3640E+02 h= 0.5310E+00 dh/dt= 0.4494E-01 dfh/dt= 0.1459E-01 dt 0.4E+02 + t= 0.7310E+01 h=-0.1651E-01 dh/dt= 0.3403E-03 dfh/dt= 0.1882E-01 dt-0.3E+02 + retour mlibd indrl= 1 pas= 0.7310D+01 f= 0.4144D+00 + gcbd. epsg,difg= 0.2220D-15 0.3437D+01 epsf,diff= 0.0000D+00 0.1651D-01 nap= 37 + dans gcbd iter= 19 f= 0.4144307D+00 + relvar1. valeur de eps1= 0.8757447D-02 + rlbd tp= 0.2773E+03 tmax= 0.1000E+11 dh0/dt=-0.2666E-01 +e t= 0.1239E+01 h=-0.3089E-01 dh/dt=-0.2333E-01 dfh/dt=-0.2493E-01 dt 0.1E+01 + t= 0.7614E+01 h=-0.1344E+00 dh/dt=-0.7689E-02 dfh/dt=-0.1623E-01 dt 0.6E+01 + retour mlibd indrl= 1 pas= 0.7614D+01 f= 0.2801D+00 + gcbd. epsg,difg= 0.2220D-15 0.4566D+01 epsf,diff= 0.0000D+00 0.1344D+00 nap= 39 + dans gcbd iter= 20 f= 0.2800585D+00 + relvar1. valeur de eps1= 0.1545384D-01 + rlbd tp= 0.7879E+02 tmax= 0.1000E+11 dh0/dt=-0.7000E-01 +ic t= 0.3839E+01 h= 0.4880E-01 dh/dt= 0.1721E+00 dfh/dt= 0.1271E-01 dt 0.4E+01 + t= 0.2019E+01 h=-0.7865E-01 dh/dt=-0.1462E-02 dfh/dt= 0.7004E-01 dt-0.2E+01 + retour mlibd indrl= 1 pas= 0.2019D+01 f= 0.2014D+00 + gcbd. epsg,difg= 0.2220D-15 0.6863D+01 epsf,diff= 0.0000D+00 0.7865D-01 nap= 41 + dans gcbd iter= 21 f= 0.2014068D+00 + relvar1. valeur de eps1= 0.3491271D-01 + rlbd tp= 0.1452E+03 tmax= 0.1000E+11 dh0/dt=-0.7317E-01 + t= 0.2150E+01 h=-0.7752E-01 dh/dt=-0.1664E-02 dfh/dt=-0.3606E-01 dt 0.2E+01 + retour mlibd indrl= 1 pas= 0.2150D+01 f= 0.1239D+00 + gcbd. epsg,difg= 0.2220D-15 0.1826D+01 epsf,diff= 0.0000D+00 0.7752D-01 nap= 42 + dans gcbd iter= 22 f= 0.1238910D+00 + relvar1. valeur de eps1= 0.2472755D-02 + rlbd tp= 0.6021E+03 tmax= 0.1000E+11 dh0/dt=-0.3742E-02 +ic t= 0.4144E+02 h= 0.4582E-01 dh/dt= 0.1733E-01 dfh/dt= 0.1106E-02 dt 0.4E+02 + t= 0.2377E+02 h=-0.7119E-01 dh/dt=-0.5166E-03 dfh/dt= 0.6624E-02 dt-0.2E+02 + retour mlibd indrl= 1 pas= 0.2377D+02 f= 0.5270D-01 + gcbd. epsg,difg= 0.2220D-15 0.2529D+01 epsf,diff= 0.0000D+00 0.7119D-01 nap= 44 + dans gcbd iter= 23 f= 0.5270207D-01 + relvar1. valeur de eps1= 0.4743240D-02 + rlbd tp= 0.5996E+02 tmax= 0.1000E+11 dh0/dt=-0.1525E-01 +id t= 0.9339E+01 h= 0.6520E+01 dh/dt= 0.2531E+01 dfh/dt= 0.6982E+00 dt 0.9E+01 +e t= 0.5592E-01 h=-0.8282E-03 dh/dt=-0.1437E-01 dfh/dt= 0.7025E+00 dt-0.9E+01 + t= 0.7449E+00 h=-0.6135E-02 dh/dt= 0.3026E-03 dfh/dt=-0.7702E-02 dt 0.7E+00 + retour mlibd indrl= 1 pas= 0.7449D+00 f= 0.4657D-01 + gcbd. epsg,difg= 0.2220D-15 0.4306D+01 epsf,diff= 0.0000D+00 0.6135D-02 nap= 47 + dans gcbd iter= 24 f= 0.4656719D-01 + relvar1. valeur de eps1= 0.1374282D-01 + rlbd tp= 0.9843E+02 tmax= 0.1000E+11 dh0/dt=-0.2153E-01 +e t= 0.5698E+00 h=-0.1080E-01 dh/dt=-0.1656E-01 dfh/dt=-0.1895E-01 dt 0.6E+00 + t= 0.1891E+01 h=-0.2703E-01 dh/dt=-0.8803E-02 dfh/dt=-0.1229E-01 dt 0.1E+01 + retour mlibd indrl= 1 pas= 0.1891D+01 f= 0.1953D-01 + gcbd. epsg,difg= 0.2220D-15 0.1231D+01 epsf,diff= 0.0000D+00 0.2703D-01 nap= 49 + dans gcbd iter= 25 f= 0.1953329D-01 + relvar1. valeur de eps1= 0.1122833D-02 + rlbd tp= 0.6390E+02 tmax= 0.1000E+11 dh0/dt=-0.1231E-01 +ic t= 0.4393E+01 h= 0.2726E-02 dh/dt= 0.2652E-01 dfh/dt= 0.6205E-03 dt 0.4E+01 + t= 0.2476E+01 h=-0.1631E-01 dh/dt=-0.9453E-03 dfh/dt= 0.9927E-02 dt-0.2E+01 + retour mlibd indrl= 1 pas= 0.2476D+01 f= 0.3222D-02 + gcbd. epsg,difg= 0.2220D-15 0.1445D+01 epsf,diff= 0.0000D+00 0.1631D-01 nap= 51 + dans gcbd iter= 26 f= 0.3222476D-02 + relvar1. valeur de eps1= 0.1548651D-02 + rlbd tp= 0.2501E+03 tmax= 0.1000E+11 dh0/dt=-0.2338E-02 +ic t= 0.1396E+02 h= 0.3783E-01 dh/dt= 0.4338E-02 dfh/dt= 0.2710E-02 dt 0.1E+02 + t= 0.2121E+01 h=-0.2216E-02 dh/dt= 0.1389E-03 dfh/dt= 0.3384E-02 dt-0.1E+02 + retour mlibd indrl= 1 pas= 0.2121D+01 f= 0.1006D-02 + gcbd. epsg,difg= 0.2220D-15 0.6193D+00 epsf,diff= 0.0000D+00 0.2216D-02 nap= 53 + dans gcbd iter= 27 f= 0.1006378D-02 + relvar1. valeur de eps1= 0.2843555D-03 + redemarrage. icycl= 4 + rlbd tp= 0.1091E+04 tmax= 0.1000E+11 dh0/dt=-0.2329E-03 +ic t= 0.1903E+02 h= 0.6140E-02 dh/dt= 0.1045E-02 dfh/dt= 0.3226E-03 dt 0.2E+02 + t= 0.4894E+01 h=-0.5871E-03 dh/dt= 0.2637E-05 dfh/dt= 0.4758E-03 dt-0.1E+02 + retour mlibd indrl= 1 pas= 0.4894D+01 f= 0.4193D-03 + gcbd. epsg,difg= 0.2220D-15 0.3527D+00 epsf,diff= 0.0000D+00 0.5871D-03 nap= 55 + dans gcbd iter= 28 f= 0.4193247D-03 + relvar1. valeur de eps1= 0.9222784D-04 + rlbd tp= 0.1062E+04 tmax= 0.1000E+11 dh0/dt=-0.8678E-04 + t= 0.1353E+02 h=-0.3655E-03 dh/dt= 0.2643E-04 dfh/dt=-0.2701E-04 dt 0.1E+02 + retour mlibd indrl= 1 pas= 0.1353D+02 f= 0.5385D-04 + gcbd. epsg,difg= 0.2220D-15 0.1105D+00 epsf,diff= 0.0000D+00 0.3655D-03 nap= 56 + dans gcbd iter= 29 f= 0.5385147D-04 + relvar1. valeur de eps1= 0.9059077D-05 + redemarrage. icycl= 5 + rlbd tp= 0.4375E+03 tmax= 0.1000E+11 dh0/dt=-0.1214E-03 +ic t= 0.6022E+01 h= 0.1322E-02 dh/dt= 0.4847E-03 dfh/dt= 0.2195E-03 dt 0.6E+01 + t= 0.9155E+00 h=-0.4928E-04 dh/dt= 0.9833E-05 dfh/dt= 0.2685E-03 dt-0.5E+01 + retour mlibd indrl= 1 pas= 0.9155D+00 f= 0.4572D-05 + gcbd. epsg,difg= 0.2220D-15 0.9174D-01 epsf,diff= 0.0000D+00 0.4928D-04 nap= 58 + dans gcbd iter= 30 f= 0.4571613D-05 + relvar1. valeur de eps1= 0.6239751D-05 + rlbd tp= 0.2108E+05 tmax= 0.1000E+11 dh0/dt=-0.5025E-05 +icb t= 0.1961E+02 h= 0.4515E-03 dh/dt= 0.5112E-04 dfh/dt= 0.2302E-04 dt 0.2E+02 + t= 0.1961E+01 h=-0.4367E-05 dh/dt= 0.5731E-06 dfh/dt= 0.2582E-04 dt-0.2E+02 + retour mlibd indrl= 1 pas= 0.1961D+01 f= 0.2051D-06 + gcbd. epsg,difg= 0.2220D-15 0.1255D-01 epsf,diff= 0.0000D+00 0.4367D-05 nap= 60 + dans gcbd iter= 31 f= 0.2050776D-06 + relvar1. valeur de eps1= 0.1168284D-06 + redemarrage. icycl= 6 + rlbd tp= 0.9888E+04 tmax= 0.1000E+11 dh0/dt=-0.3710E-06 +icb t= 0.2354E+02 h= 0.7839E-04 dh/dt= 0.6768E-05 dfh/dt= 0.3330E-05 dt 0.2E+02 +ic t= 0.2354E+01 h= 0.5630E-07 dh/dt= 0.4160E-06 dfh/dt= 0.3698E-05 dt-0.2E+02 + t= 0.1103E+01 h=-0.2043E-06 dh/dt= 0.4074E-12 dfh/dt= 0.2084E-06 dt-0.1E+01 + retour mlibd indrl= 1 pas= 0.1103D+01 f= 0.7658D-09 + gcbd. epsg,difg= 0.2220D-15 0.9260D-03 epsf,diff= 0.0000D+00 0.2043D-06 nap= 63 + dans gcbd iter= 32 f= 0.7658047D-09 + relvar1. valeur de eps1= 0.6356802D-09 + rlbd tp= 0.3886E+06 tmax= 0.1000E+11 dh0/dt=-0.6357E-09 +id t= 0.6428E+03 h= 0.5664E-04 dh/dt= 0.1809E-06 dfh/dt= 0.8811E-07 dt 0.6E+03 + t= 0.2251E+01 h=-0.7625E-09 dh/dt=-0.4174E-10 dfh/dt= 0.8842E-07 dt-0.6E+03 + retour mlibd indrl= 1 pas= 0.2251D+01 f= 0.3301D-11 + gcbd. epsg,difg= 0.2220D-15 0.6032D-04 epsf,diff= 0.0000D+00 0.7625D-09 nap= 65 + dans gcbd iter= 33 f= 0.3300830D-11 + relvar1. valeur de eps1= 0.2697842D-11 + redemarrage. icycl= 7 + rlbd tp= 0.2431E+07 tmax= 0.1000E+11 dh0/dt=-0.6603E-11 +id t= 0.2309E+03 h= 0.1751E-06 dh/dt= 0.1525E-08 dfh/dt= 0.7581E-09 dt 0.2E+03 + t= 0.9958E+00 h=-0.3301E-11 dh/dt=-0.2602E-13 dfh/dt= 0.7614E-09 dt-0.2E+03 + retour mlibd indrl= 1 pas= 0.9958D+00 f= 0.5128D-16 + gcbd. epsg,difg= 0.2220D-15 0.2425D-06 epsf,diff= 0.0000D+00 0.3301D-11 nap= 67 + dans gcbd iter= 34 f= 0.5127616D-16 + relvar1. valeur de eps1= 0.0000000D+00 + rlbd tp= 0.6222E+09 tmax= 0.1000E+11 dh0/dt=-0.1025E-15 +id t= 0.6439E+05 h= 0.2131E-06 dh/dt= 0.6629E-11 dfh/dt= 0.3310E-11 dt 0.6E+05 +icb t= 0.6439E+02 h= 0.2059E-12 dh/dt= 0.6498E-14 dfh/dt= 0.3313E-11 dt-0.6E+05 +ic t= 0.6439E+01 h= 0.1465E-14 dh/dt= 0.5576E-15 dfh/dt= 0.3528E-14 dt-0.6E+02 + t= 0.1000E+01 h=-0.5126E-16 dh/dt=-0.6186E-23 dfh/dt= 0.2788E-15 dt-0.5E+01 + retour mlibd indrl= 1 pas= 0.1000D+01 f= 0.1132D-19 + gcbd. epsg,difg= 0.2220D-15 0.3168D-08 epsf,diff= 0.0000D+00 0.5126D-16 nap= 71 + dans gcbd iter= 35 f= 0.1131843D-19 + relvar1. valeur de eps1= 0.0000000D+00 + redemarrage. icycl= 8 + rlbd tp= 0.1883E+13 tmax= 0.1000E+11 dh0/dt=-0.7441E-20 +id t= 0.1378E+05 h= 0.5241E-12 dh/dt= 0.7609E-16 dfh/dt= 0.3804E-16 dt 0.1E+05 +id t= 0.1378E+04 h= 0.5232E-14 dh/dt= 0.7602E-17 dfh/dt= 0.4184E-16 dt-0.1E+05 +id t= 0.1378E+03 h= 0.5140E-16 dh/dt= 0.7535E-18 dfh/dt= 0.4178E-17 dt-0.1E+04 +d t= 0.1378E+02 h= 0.4217E-18 dh/dt= 0.6865E-19 dfh/dt= 0.4111E-18 dt-0.1E+03 +d t= 0.6889E+01 h= 0.7979E-19 dh/dt= 0.3061E-19 dfh/dt= 0.4963E-19 dt-0.7E+01 +d t= 0.3445E+01 h= 0.7131E-20 dh/dt= 0.1158E-19 dfh/dt= 0.2109E-19 dt-0.3E+01 + t= 0.1722E+01 h=-0.4625E-20 dh/dt= 0.2070E-20 dfh/dt= 0.6826E-20 dt-0.2E+01 + retour mlibd indrl= 1 pas= 0.1722D+01 f= 0.6693D-20 + gcbd. epsg,difg= 0.2220D-15 0.8861D-09 epsf,diff= 0.0000D+00 0.4625D-20 nap= 78 + dans gcbd iter= 36 f= 0.6693058D-20 + relvar1. valeur de eps1= 0.0000000D+00 + rlbd tp= 0.1067E+14 tmax= 0.1000E+11 dh0/dt=-0.5821E-21 +d t= 0.1589E+02 h= 0.4498E-19 dh/dt= 0.6243E-20 dfh/dt= 0.2830E-20 dt 0.2E+02 +d t= 0.7947E+01 h= 0.8933E-20 dh/dt= 0.2830E-20 dfh/dt= 0.4537E-20 dt-0.8E+01 +d t= 0.3973E+01 h= 0.1077E-20 dh/dt= 0.1124E-20 dfh/dt= 0.1977E-20 dt-0.4E+01 + t= 0.1987E+01 h=-0.3089E-21 dh/dt= 0.2711E-21 dfh/dt= 0.6976E-21 dt-0.2E+01 + retour mlibd indrl= 1 pas= 0.1987D+01 f= 0.6384D-20 + gcbd. epsg,difg= 0.2220D-15 0.4257D-09 epsf,diff= 0.0000D+00 0.3089D-21 nap= 82 + dans gcbd iter= 37 f= 0.6384148D-20 + relvar1. valeur de eps1= 0.0000000D+00 + redemarrage. icycl= 9 + rlbd tp= 0.1325E+14 tmax= 0.1000E+11 dh0/dt=-0.1343E-21 +d t= 0.4600E+01 h= 0.4080E-21 dh/dt= 0.3117E-21 dfh/dt= 0.8869E-22 dt 0.5E+01 + t= 0.2300E+01 h=-0.5249E-22 dh/dt= 0.8867E-22 dfh/dt= 0.2002E-21 dt-0.2E+01 + retour mlibd indrl= 1 pas= 0.2300D+01 f= 0.6332D-20 + gcbd. epsg,difg= 0.2220D-15 0.3053D-09 epsf,diff= 0.0000D+00 0.5249D-22 nap= 84 + dans gcbd iter= 38 f= 0.6331659D-20 + relvar1. valeur de eps1= 0.0000000D+00 + rlbd tp= 0.2753E+14 tmax= 0.1000E+11 dh0/dt=-0.6909E-22 + t= 0.1519E+01 h=-0.4895E-22 dh/dt= 0.4659E-23 dfh/dt=-0.3222E-22 dt 0.2E+01 + retour mlibd indrl= 1 pas= 0.1519D+01 f= 0.6283D-20 + gcbd. epsg,difg= 0.2220D-15 0.8042D-10 epsf,diff= 0.0000D+00 0.4895D-22 nap= 85 + dans gcbd iter= 39 f= 0.6282712D-20 + relvar1. valeur de eps1= 0.0000000D+00 + redemarrage. icycl= 10 + rlbd tp= 0.8214E+14 tmax= 0.1000E+11 dh0/dt=-0.4794E-23 +d t= 0.2042E+02 h= 0.6864E-22 dh/dt= 0.1152E-22 dfh/dt= 0.3361E-23 dt 0.2E+02 + t= 0.1021E+02 h=-0.7315E-23 dh/dt= 0.3361E-23 dfh/dt= 0.7439E-23 dt-0.1E+02 + retour mlibd indrl= 1 pas= 0.1021D+02 f= 0.6275D-20 + gcbd. epsg,difg= 0.2220D-15 0.2603D-09 epsf,diff= 0.0000D+00 0.7315D-23 nap= 87 + dans gcbd iter= 40 f= 0.6275397D-20 + relvar1. valeur de eps1= 0.0000000D+00 + rlbd tp= 0.3083E+14 tmax= 0.1000E+11 dh0/dt=-0.5022E-22 +e t= 0.2914E+00 h=-0.1318E-22 dh/dt=-0.4014E-22 dfh/dt=-0.4523E-22 dt 0.3E+00 +d t= 0.2914E+03 h= 0.1452E-17 dh/dt= 0.1001E-19 dfh/dt= 0.4987E-20 dt 0.3E+03 +d t= 0.1458E+03 h= 0.3600E-18 dh/dt= 0.4987E-20 dfh/dt= 0.7501E-20 dt-0.1E+03 +d t= 0.7306E+02 h= 0.8852E-19 dh/dt= 0.2473E-20 dfh/dt= 0.3730E-20 dt-0.7E+02 +d t= 0.3667E+02 h= 0.2139E-19 dh/dt= 0.1217E-20 dfh/dt= 0.1845E-20 dt-0.4E+02 +d t= 0.1848E+02 h= 0.4972E-20 dh/dt= 0.5882E-21 dfh/dt= 0.9024E-21 dt-0.2E+02 +d t= 0.9387E+01 h= 0.1051E-20 dh/dt= 0.2740E-21 dfh/dt= 0.4312E-21 dt-0.9E+01 +d t= 0.4839E+01 h= 0.1615E-21 dh/dt= 0.1169E-21 dfh/dt= 0.1955E-21 dt-0.5E+01 + t= 0.2565E+01 h=-0.1517E-22 dh/dt= 0.3839E-22 dfh/dt= 0.7767E-22 dt-0.2E+01 + retour mlibd indrl= 1 pas= 0.2565D+01 f= 0.6260D-20 + gcbd. epsg,difg= 0.2220D-15 0.2373D-09 epsf,diff= 0.0000D+00 0.1517D-22 nap= 96 + dans gcbd iter= 41 f= 0.6260226D-20 + relvar1. valeur de eps1= 0.0000000D+00 + rlbd tp= 0.2303E+14 tmax= 0.1000E+11 dh0/dt=-0.4176E-22 + t= 0.7266E+00 h=-0.2288E-22 dh/dt=-0.2121E-22 dfh/dt=-0.3150E-22 dt 0.7E+00 + retour mlibd indrl= 1 pas= 0.7266D+00 f= 0.6237D-20 + gcbd. epsg,difg= 0.2220D-15 0.1259D-09 epsf,diff= 0.0000D+00 0.2288D-22 nap= 97 + dans gcbd iter= 42 f= 0.6237341D-20 + relvar1. valeur de eps1= 0.0000000D+00 + redemarrage. icycl= 11 + rlbd tp= 0.4323E+14 tmax= 0.1000E+11 dh0/dt=-0.1175E-22 +d t= 0.3894E+01 h=-0.3634E-24 dh/dt= 0.1157E-22 dfh/dt=-0.9333E-25 dt 0.4E+01 + t= 0.1947E+01 h=-0.1153E-22 dh/dt=-0.9088E-25 dfh/dt= 0.5735E-23 dt-0.2E+01 + retour mlibd indrl= 1 pas= 0.1947D+01 f= 0.6226D-20 + gcbd. epsg,difg= 0.2220D-15 0.8448D-10 epsf,diff= 0.0000D+00 0.1153D-22 nap= 99 + dans gcbd iter= 43 f= 0.6225811D-20 + relvar1. valeur de eps1= 0.0000000D+00 + rlbd tp= 0.6434E+14 tmax= 0.1000E+11 dh0/dt=-0.5291E-23 + t= 0.4359E+01 h=-0.1174E-22 dh/dt=-0.9310E-25 dfh/dt=-0.2693E-23 dt 0.4E+01 + retour mlibd indrl= 1 pas= 0.4359D+01 f= 0.6214D-20 + gcbd max appels simul + gcbd : retour avec indgc= 4 + f,norme grad,nap,iter,indgc= 0.6214E-20 0.8448E-10 100 43 4 +Optim stops: maximum number of calls to f is reached. + +// +// 6. Test "sd", "si", "td", "ti" options +[f,x,g,td]=optim(rosenbrock,x0,'sd'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +[f,x,g,ti]=optim(rosenbrock,x0,'si'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +[f,x,g,ti,td]=optim(rosenbrock,x0,'si','sd'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +[f,x,g,ti,td]=optim(rosenbrock,x0,"ti",[2 2 2],"td",[1.1 1.1 1.1],'si','sd'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); diff --git a/modules/optimization/tests/unit_tests/optim_scilabscript.tst b/modules/optimization/tests/unit_tests/optim_scilabscript.tst new file mode 100755 index 000000000..072266c7b --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_scilabscript.tst @@ -0,0 +1,193 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Michael Baudin +// Copyright (C) 2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// <-- NO CHECK REF --> +// +// Do not check ref, because imp option create output messages +// which contains lots of floating point values which may +// be slightly different across platforms, without being bugs. +// +// optim_script.tst -- +// Test the optim command with the Rosenbrock test case +// in the case where the cost function is a Scilab function. +// The expected solution is x=(1,...,1) where f(x)=0 +// + + +Leps=1.e-3; +bs=[5 5]; +bi=-bs; +x0=[-1.2 1]; +xopt=[1 1]; +fopt = 0.0; +gopt = [0.0 0.0]; +function [ f , g , ind ] = rosenbrock ( x , ind ) + if ind == 2 | ind == 4 then + f = 100.0 *(x(2)-x(1)^2)^2 + (1-x(1))^2; + end + if ind == 2 | ind == 4 then + g(1) = - 400. * ( x(2) - x(1)**2 ) * x(1) -2. * ( 1. - x(1) ) + g(2) = 200. * ( x(2) - x(1)**2 ) + end +endfunction +// +// Configure the test so that verbose message do not interrupt the test. +lines(0); +// +// 1. Test unconstrained BFGS +// Test without arguments +[f,x,g,tr]=optim(rosenbrock,x0); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function +[f,x,g]=optim(rosenbrock,x0,'qn','ar',50); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with hot-restart array tr +[f,x,g,tr]=optim(rosenbrock,x0,'qn','ar',50); +[f,x,g]=optim(rosenbrock,x0,tr); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function, maximum number of iterations +[f,x,g]=optim(rosenbrock,x0,'qn','ar', 50 , 100 ); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with various imp levels +// imp = 0 : No messages +[f,x,g]=optim(rosenbrock,x0,'qn',imp=0); +// imp = 1 : one line at start, one line at end +[f,x,g]=optim(rosenbrock,x0,'qn',imp=1); +// imp = 2 : one line by iteration +[f,x,g]=optim(rosenbrock,x0,'qn',imp=2); +// imp = 3 : one line by iteration + one line by line search +[f,x,g]=optim(rosenbrock,x0,'qn',imp=3); +// Negative imp : call back the cost function with ind = 0 each -imp iteration +[f,x,g]=optim(rosenbrock,x0,'qn',imp=-5); +// +// 2. Test unconstrained Limited Memory BFGS +[f,x,g]=optim(rosenbrock,x0,'gc'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +[f,x,g]=optim(rosenbrock,x0,'gc','ar',50); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with various imp levels +// imp = 0 : No messages +[f,x,g]=optim(rosenbrock,x0,'gc',imp=0); +// imp = 1,2 : one line at start, one line at end +[f,x,g]=optim(rosenbrock,x0,'gc',imp=1); +// imp = 3 : one line by iteration +[f,x,g]=optim(rosenbrock,x0,'gc',imp=2); +// imp = 4 : one line by iteration + one line by line search +[f,x,g]=optim(rosenbrock,x0,'gc',imp=3); +// +// 3. Test unconstrained non-differentiable method +[f,x,g]=optim(rosenbrock,x0,'nd'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function +[f,x,g]=optim(rosenbrock,x0,'nd','ar',100); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function, maximum number of iterations +[f,x,g]=optim(rosenbrock,x0,'nd','ar', 100 , 100 ); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with various imp levels +// imp = 0 : No messages +[f,x,g]=optim(rosenbrock,x0,'nd',imp=0); +// imp = 1,2 : one line at start, one line at end +[f,x,g]=optim(rosenbrock,x0,'nd',imp=1); +// imp = 3 : one line by iteration +[f,x,g]=optim(rosenbrock,x0,'nd',imp=2); +// imp = 4 : one line by iteration + one line by line search +[f,x,g]=optim(rosenbrock,x0,'nd',imp=3); + +// +// 4. Test bound-constrained BFGS +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn','ar',50); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function, maximum number of iterations +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn','ar', 100 , 100 ); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with various imp levels +// imp = 0 : No messages +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn',imp=0); +// imp = 1,2 : one line at start, one line at end +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn',imp=1); +// imp = 3 : one line by iteration +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn',imp=2); +// imp = 4 : one line by iteration + one line by line search +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'qn',imp=3); +// +// 5. Test bound-constrained Limited Memory BFGS +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc','ar',100); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with maximum number of call to cost function, maximum number of iterations +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc','ar', 100 , 100 ); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +// Test with various imp levels +// imp = 0 : No messages +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc',imp=0); +// imp = 1,2 : one line at start, one line at end +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc',imp=1); +// imp = 3 : one line by iteration +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc',imp=2); +// imp = 4 : one line by iteration + one line by line search +[f,x,g]=optim(rosenbrock,'b',bi,bs,x0,'gc',imp=3); +// +// 6. Test "sd", "si", "td", "ti" options +[f,x,g,td]=optim(rosenbrock,x0,'sd'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +[f,x,g,ti]=optim(rosenbrock,x0,'si'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +[f,x,g,ti,td]=optim(rosenbrock,x0,'si','sd'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); +[f,x,g,ti,td]=optim(rosenbrock,x0,"ti",[2 2 2],"td",[1.1 1.1 1.1],'si','sd'); +assert_checkalmostequal ( x , xopt , Leps ); +assert_checkalmostequal ( f , fopt , [] , Leps ); +assert_checkalmostequal ( g , gopt , [] , Leps ); + + + diff --git a/modules/optimization/tests/unit_tests/optim_sourcec.dia.ref b/modules/optimization/tests/unit_tests/optim_sourcec.dia.ref new file mode 100755 index 000000000..da1ee3ed8 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_sourcec.dia.ref @@ -0,0 +1,76 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Michael Baudin +// Copyright (C) 2009 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> +// optim.tst -- +// Test the optim command with the Rosenbrock test case +// in the case where the cost function is provided as a Fortran +// routine. +// The "genros" function is defined in optimization/sci_gateway/fortran/Ex-optim.f +// +// This is the precision measured with experiments. +ilib_verbose(0); +Leps=10^12*%eps; +// n : dimension of the problem +n=3; +bs=10.*ones(n,1); +bi=-bs; +x0=1.2*ones(n,1); +epsx=1.e-15*x0; +xopt=ones(n,1); +// Move into the temporary directory to create the temporary files there +cur_dir = pwd(); +chdir(TMPDIR); +// External function written in C (C compiler required) +// write down the C code (Rosenbrock problem) +C=['#include <math.h>' +'double sq(double x)' +'{ return x*x;}' +'void rosenc(int *ind, int *n, double *x, double *f, double *g, ' +' int *ti, float *tr, double *td)' +'{' +' double p;' +' int i;' +' p=td[0];' +' if (*ind==2||*ind==4) {' +' *f=1.0;' +' for (i=1;i<*n;i++)' +' *f+=p*sq(x[i]-sq(x[i-1]))+sq(1.0-x[i]);' +' }' +' if (*ind==3||*ind==4) {' +' g[0]=-4.0*p*(x[1]-sq(x[0]))*x[0];' +' for (i=1;i<*n-1;i++)' +' g[i]=2.0*p*(x[i]-sq(x[i-1]))-4.0*p*(x[i+1]-sq(x[i]))*x[i]-2.0*(1.0-x[i]);' +' g[*n-1]=2.0*p*(x[*n-1]-sq(x[*n-2]))-2.0*(1.0-x[*n-1]);' +' }' +'}']; +mputl(C,'rosenc.c'); +// compile the C code +libpath=ilib_for_link('rosenc','rosenc.c',[],'c'); +// incremental linking +exec loader.sce; +chdir(cur_dir); +//solve the problem +valtd=100; +// Test with default solver and default settings. +[f,x,g]=optim('rosenc',x0,'td',valtd); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +// Test with all solvers +solverlist=["gc" "qn" "nd"]; +for solver=solverlist + [f,x,g]=optim('rosenc',x0,solver,'td',valtd); + if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +end +// Test all verbose levels with all possible solvers +verboselevels=[0]; +for verbose=verboselevels + for solver=solverlist + [f,x,g]=optim('rosenc',x0,solver,'td',valtd,imp=verbose); + if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end + end +end diff --git a/modules/optimization/tests/unit_tests/optim_sourcec.tst b/modules/optimization/tests/unit_tests/optim_sourcec.tst new file mode 100755 index 000000000..1ae43f6b1 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_sourcec.tst @@ -0,0 +1,81 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Michael Baudin +// Copyright (C) 2009 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> +// <-- ENGLISH IMPOSED --> + +// optim.tst -- +// Test the optim command with the Rosenbrock test case +// in the case where the cost function is provided as a Fortran +// routine. +// The "genros" function is defined in optimization/sci_gateway/fortran/Ex-optim.f +// +// This is the precision measured with experiments. + +ilib_verbose(0); + +Leps=10^12*%eps; +// n : dimension of the problem +n=3; +bs=10.*ones(n,1); +bi=-bs; +x0=1.2*ones(n,1); +epsx=1.e-15*x0; +xopt=ones(n,1); +// Move into the temporary directory to create the temporary files there +cur_dir = pwd(); +chdir(TMPDIR); +// External function written in C (C compiler required) +// write down the C code (Rosenbrock problem) +C=['#include <math.h>' +'double sq(double x)' +'{ return x*x;}' +'void rosenc(int *ind, int *n, double *x, double *f, double *g, ' +' int *ti, float *tr, double *td)' +'{' +' double p;' +' int i;' +' p=td[0];' +' if (*ind==2||*ind==4) {' +' *f=1.0;' +' for (i=1;i<*n;i++)' +' *f+=p*sq(x[i]-sq(x[i-1]))+sq(1.0-x[i]);' +' }' +' if (*ind==3||*ind==4) {' +' g[0]=-4.0*p*(x[1]-sq(x[0]))*x[0];' +' for (i=1;i<*n-1;i++)' +' g[i]=2.0*p*(x[i]-sq(x[i-1]))-4.0*p*(x[i+1]-sq(x[i]))*x[i]-2.0*(1.0-x[i]);' +' g[*n-1]=2.0*p*(x[*n-1]-sq(x[*n-2]))-2.0*(1.0-x[*n-1]);' +' }' +'}']; +mputl(C,'rosenc.c'); +// compile the C code +libpath=ilib_for_link('rosenc','rosenc.c',[],'c'); +// incremental linking +exec loader.sce; +chdir(cur_dir); +//solve the problem +valtd=100; +// Test with default solver and default settings. +[f,x,g]=optim('rosenc',x0,'td',valtd); +if abs(f-1+norm(x-xopt) ) > Leps then pause,end +// Test with all solvers +solverlist=["gc" "qn" "nd"]; +for solver=solverlist + [f,x,g]=optim('rosenc',x0,solver,'td',valtd); + if abs(f-1+norm(x-xopt) ) > Leps then pause,end +end +// Test all verbose levels with all possible solvers +verboselevels=[0]; +for verbose=verboselevels + for solver=solverlist + [f,x,g]=optim('rosenc',x0,solver,'td',valtd,imp=verbose); + if abs(f-1+norm(x-xopt) ) > Leps then pause,end + end +end + diff --git a/modules/optimization/tests/unit_tests/optim_sourcefortran1.dia.ref b/modules/optimization/tests/unit_tests/optim_sourcefortran1.dia.ref new file mode 100755 index 000000000..102b83799 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_sourcefortran1.dia.ref @@ -0,0 +1,79 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Michael Baudin +// Copyright (C) 2009 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// optim.tst -- +// Test the optim command with the Rosenbrock test case +// in the case where the cost function is provided as a Fortran +// routine and the parameter is given as a scilab variable, using the "td" option. +// +// Note : the following source code was copied from optimization/sci_gateway/fortran/Ex-optim.f +// Thus, the "genros" function from Ex-optim.f is not needed anymore. +// +// This is the precision measured with experiments. +ilib_verbose(0); +Leps = 10^12 * %eps; +n = 3; +xopt = ones(n, 1); +// Move into the temporary directory to create the temporary files there +cur_dir = pwd(); +chdir(TMPDIR); +// +// Define a fortran source code and compile it (fortran compiler required) +// +// External function written in Fortran (Fortran compiler required) +// write down the Fortran code (Rosenbrock problem) +F=[ ' subroutine rosenf(ind, n, x, f, g, ti, tr, td)' +' integer ind,n,ti(*)' +' double precision x(n),f,g(n),td(*)' +' real tr(*)' +'c' +' double precision y,p' +' p=td(1)' +' if (ind.eq.2.or.ind.eq.4) then' +' f=1.0d0' +' do i=2,n' +' f=f+p*(x(i)-x(i-1)**2)**2+(1.0d0-x(i))**2' +' enddo' +' endif' +' if (ind.eq.3.or.ind.eq.4) then' +' g(1)=-4.0d0*p*(x(2)-x(1)**2)*x(1)' +' if(n.gt.2) then' +' do i=2,n-1' +' g(i)=2.0d0*p*(x(i)-x(i-1)**2)-4.0d0*p*(x(i+1)-x(i)**2)*x(i)' +' & -2.0d0*(1.0d0-x(i))' +' enddo' +' endif' +' g(n)=2.0d0*p*(x(n)-x(n-1)**2)-2.0d0*(1.0d0-x(n))' +' endif' +' return' +' end']; +mputl(F,TMPDIR + '/rosenf.f'); +// compile the Fortran code +ilib_for_link('rosenf', 'rosenf.f', [], 'f'); +exec loader.sce; +chdir(cur_dir); +//solve the problem +x0 = 1.2*ones(n, 1); +valtd = 100; +[f, xo, go] = optim('rosenf', x0, 'td', valtd); +// Test with all solvers +solverlist = ["gc" "qn" "nd"]; +for solver = solverlist + [f, x, g] = optim('rosenf', x0, solver, 'td', valtd); + if abs(f - 1 + norm(x - xopt) ) > Leps then bugmes();quit;end +end +// Test all verbose levels with all possible solvers +verboselevels = [0]; +for verbose = verboselevels + for solver = solverlist + [f,x,g] = optim('rosenf', x0, solver, 'td', valtd, imp = verbose); + if abs(f - 1 + norm(x - xopt) ) > Leps then bugmes();quit;end + end +end +// Clean-up +ulink(); diff --git a/modules/optimization/tests/unit_tests/optim_sourcefortran1.tst b/modules/optimization/tests/unit_tests/optim_sourcefortran1.tst new file mode 100755 index 000000000..b653bcfd9 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_sourcefortran1.tst @@ -0,0 +1,86 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Michael Baudin +// Copyright (C) 2009 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// optim.tst -- +// Test the optim command with the Rosenbrock test case +// in the case where the cost function is provided as a Fortran +// routine and the parameter is given as a scilab variable, using the "td" option. +// +// Note : the following source code was copied from optimization/sci_gateway/fortran/Ex-optim.f +// Thus, the "genros" function from Ex-optim.f is not needed anymore. +// +// This is the precision measured with experiments. + +ilib_verbose(0); + +Leps = 10^12 * %eps; +n = 3; +xopt = ones(n, 1); +// Move into the temporary directory to create the temporary files there +cur_dir = pwd(); +chdir(TMPDIR); +// +// Define a fortran source code and compile it (fortran compiler required) +// +// External function written in Fortran (Fortran compiler required) +// write down the Fortran code (Rosenbrock problem) +F=[ ' subroutine rosenf(ind, n, x, f, g, ti, tr, td)' +' integer ind,n,ti(*)' +' double precision x(n),f,g(n),td(*)' +' real tr(*)' +'c' +' double precision y,p' +' p=td(1)' +' if (ind.eq.2.or.ind.eq.4) then' +' f=1.0d0' +' do i=2,n' +' f=f+p*(x(i)-x(i-1)**2)**2+(1.0d0-x(i))**2' +' enddo' +' endif' +' if (ind.eq.3.or.ind.eq.4) then' +' g(1)=-4.0d0*p*(x(2)-x(1)**2)*x(1)' +' if(n.gt.2) then' +' do i=2,n-1' +' g(i)=2.0d0*p*(x(i)-x(i-1)**2)-4.0d0*p*(x(i+1)-x(i)**2)*x(i)' +' & -2.0d0*(1.0d0-x(i))' +' enddo' +' endif' +' g(n)=2.0d0*p*(x(n)-x(n-1)**2)-2.0d0*(1.0d0-x(n))' +' endif' +' return' +' end']; + + +mputl(F,TMPDIR + '/rosenf.f'); +// compile the Fortran code +ilib_for_link('rosenf', 'rosenf.f', [], 'f'); +exec loader.sce; +chdir(cur_dir); +//solve the problem +x0 = 1.2*ones(n, 1); +valtd = 100; +[f, xo, go] = optim('rosenf', x0, 'td', valtd); +// Test with all solvers +solverlist = ["gc" "qn" "nd"]; +for solver = solverlist + [f, x, g] = optim('rosenf', x0, solver, 'td', valtd); + if abs(f - 1 + norm(x - xopt) ) > Leps then pause, end +end +// Test all verbose levels with all possible solvers +verboselevels = [0]; +for verbose = verboselevels + for solver = solverlist + [f,x,g] = optim('rosenf', x0, solver, 'td', valtd, imp = verbose); + if abs(f - 1 + norm(x - xopt) ) > Leps then pause,end + end +end +// Clean-up +ulink(); + diff --git a/modules/optimization/tests/unit_tests/optim_sourcefortran2.dia.ref b/modules/optimization/tests/unit_tests/optim_sourcefortran2.dia.ref new file mode 100755 index 000000000..af9d8786d --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_sourcefortran2.dia.ref @@ -0,0 +1,167 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Michael Baudin +// Copyright (C) 2009 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// optim.tst -- +// Test the optim command with the Rosenbrock test case +// in the case where the cost function is provided as a Fortran +// routine and use the "in" option. +// +// Note : the following source code was copied from optimization/sci_gateway/fortran/Ex-optim.f +// Thus, the "genros" function from Ex-optim.f is not needed anymore. +// +// +// Define a fortran source code and compile it (fortran compiler required) +// +ilib_verbose(0); +// Move into the temporary directory to create the temporary files there +cur_dir = pwd(); +chdir(TMPDIR); +fortransource=[" subroutine rosenf(ind,n,x,f,g,izs,rzs,dzs)" +"C -------------------------------------------" +"c (DLL Digital Visual Fortran)" +"c On Windows , we need to import common nird from scilab" +"cDEC$ IF DEFINED (FORDLL)" +"cDEC$ ATTRIBUTES DLLIMPORT:: /nird/" +"cDEC$ ENDIF" +"C -------------------------------------------" +"c Example of cost function given by a subroutine" +"c if n<=2 returns ind=0" +"c f.bonnans, oct 86" +" implicit double precision (a-h,o-z)" +" real rzs(1)" +" double precision dzs(*)" +" dimension x(n),g(n),izs(*)" +" common/nird/nizs,nrzs,ndzs" +" if (n.lt.3) then" +" ind=0" +" return" +" endif" +" if(ind.eq.10) then" +" nizs=2" +" nrzs=1" +" ndzs=1" +" return" +" endif" +" if(ind.eq.11) then" +" izs(1)=5" +" izs(2)=10" +" dzs(1)=100.0d+0" +" return" +" endif" +" if(ind.eq.2)go to 5" +" if(ind.eq.3)go to 20" +" if(ind.eq.4)go to 5" +" ind=-1" +" return" +"5 f=1.0d+0" +" do 10 i=2,n" +" im1=i-1" +"10 f=f + dzs(1)*(x(i)-x(im1)**2)**2 + (1.0d+0-x(i))**2" +" if(ind.eq.2)return" +"20 g(1)=-4.0d+0*dzs(1)*(x(2)-x(1)**2)*x(1)" +" nm1=n-1" +" do 30 i=2,nm1" +" im1=i-1" +" ip1=i+1" +" g(i)=2.0d+0*dzs(1)*(x(i)-x(im1)**2)" +"30 g(i)=g(i) -4.0d+0*dzs(1)*(x(ip1)-x(i)**2)*x(i) - " +" & 2.0d+0*(1.0d+0-x(i))" +" g(n)=2.0d+0*dzs(1)*(x(n)-x(nm1)**2) - 2.0d+0*(1.0d+0-x(n))" +" return" +" end"]; +mputl(fortransource, TMPDIR + "/rosenf.f"); +ilib_for_link("rosenf", "rosenf.f", [], "f"); +exec loader.sce; +chdir(cur_dir); +// +// Define some constants +// +Leps = 10e3 * 8.e-5; +bs = 10.*ones(1, 5); +bi = -bs; +x0 = 0.12 * bs; +epsx = 1.e-15 * x0; +xopt = .1*bs; +// +// Solve the problem +// +[f, x, g] = optim("rosenf", x0, "in"); +if abs(f - 1 + norm(x - xopt) ) > Leps then bugmes();quit;end +[f, x, g] = optim("rosenf", x0, "gc", "in"); +if abs(f - 1 + norm(x - xopt) ) > Leps then bugmes();quit;end +// +[f, x, g] = optim("rosenf", x0, "nd", "in"); +if abs(f - 1 + norm(x - xopt) ) > Leps then bugmes();quit;end +[f, x, g] = optim("rosenf", x0, "qn", 1, "in"); +if abs(f - 1 + norm(x - xopt) ) > Leps then bugmes();quit;end +[f, x, g] = optim("rosenf", x0, "gc", 1, 50, "in"); +if abs(f - 1 + norm(x - xopt) ) > Leps then bugmes();quit;end +// +[f, x ,g] = optim("rosenf", x0, "nd", 1,50, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x1, g] =optim("rosenf", x0, "ar", 100, 6, "in"); +[f, x, g, to] = optim("rosenf", x0, "ar", 100, 3, "in"); +[f, x, g, to] = optim("rosenf", x , to, "ar", 100, 3, "in"); +if norm(x-x1)/norm(x-xopt) > 0.1 then bugmes();quit;end +[f, x1, g] = optim("rosenf", "b", bi, bs, x0, "ar", 100, 6, "in"); +[f, x, g, to] = optim("rosenf", "b", bi, bs, x0, "ar", 100, 3, "in"); +[f, x, g] =optim("rosenf", "b", bi, bs, x, to, "ar", 100, 3, "in"); +if norm(x-x1)/norm(x-xopt) > 0.1 then bugmes();quit;end +// +// Test all possible stop criteria settings +// +[f, x, g] = optim("rosenf", x0, "ar", "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g] = optim("rosenf", x0, "ar", 100, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g] = optim("rosenf", x0, "ar", 100, 100, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g] = optim("rosenf", x0, "ar", 100, 100, %eps, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g] = optim("rosenf", x0, "ar", 100, 100, %eps, %eps, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g] = optim("rosenf", x0, "ar", 100, 100, 10.*%eps, %eps, epsx, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g] = optim("rosenf", x0, "gc", "ar", 100, 100, %eps, %eps, epsx, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +// +[f, x, g] = optim("rosenf", "b", bi, bs, x0, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g] = optim("rosenf", "b", bi, bs, x0, "gc", "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x] = optim("rosenf", "b", bi, bs, x0, "ar", 100, 100, 1.d-8, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g] = optim("rosenf", .. +"b", bi, bs, x0, "gc", "ar", 100, 100, %eps, %eps, epsx, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g, to, td] = optim("rosenf", x0, "in", "sd"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g, ti] = optim("rosenf", x0, "gc", "in", "si"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g, to, ti, td] = optim("rosenf", x0, to, "in", "si", "sd"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g, td] = optim("rosenf", .. +"b", bi, bs, x0, "gc", "ar", 100, 100, %eps, %eps, epsx, "in", "sd"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g, ti] = optim("rosenf", x0, "gc", "ar", 100, 100, %eps, "in", "si"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g, ti, td] = optim("rosenf", .. +x0, "gc", "ar", 100, 100, %eps, "in", "si", "sd"); +if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end +[f, x, g, ti, td] = optim("rosenf", .. +x0, "gc", "ar", 100, 100, %eps, "in", "ti", ti, "td", td, "si", "sd"); +if abs(f - 1 + norm(x - xopt) ) > Leps then bugmes();quit;end +// +// init ti and td +[f, x, g, ti, td] = optim("rosenf", x0, "in", "si", "sd"); +// reuses it +[f, x, g, ti2, td2] = optim("rosenf", x0, "ti", ti, "td", td, "si", "sd"); +assert_checkequal(ti, ti2); +assert_checkequal(td, td2); +// Clean-up +ulink(); diff --git a/modules/optimization/tests/unit_tests/optim_sourcefortran2.tst b/modules/optimization/tests/unit_tests/optim_sourcefortran2.tst new file mode 100755 index 000000000..80685cd2a --- /dev/null +++ b/modules/optimization/tests/unit_tests/optim_sourcefortran2.tst @@ -0,0 +1,174 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA - Michael Baudin +// Copyright (C) 2009 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// optim.tst -- +// Test the optim command with the Rosenbrock test case +// in the case where the cost function is provided as a Fortran +// routine and use the "in" option. +// +// Note : the following source code was copied from optimization/sci_gateway/fortran/Ex-optim.f +// Thus, the "genros" function from Ex-optim.f is not needed anymore. +// +// +// Define a fortran source code and compile it (fortran compiler required) +// + +ilib_verbose(0); + +// Move into the temporary directory to create the temporary files there +cur_dir = pwd(); +chdir(TMPDIR); +fortransource=[" subroutine rosenf(ind,n,x,f,g,izs,rzs,dzs)" +"C -------------------------------------------" +"c (DLL Digital Visual Fortran)" +"c On Windows , we need to import common nird from scilab" +"cDEC$ IF DEFINED (FORDLL)" +"cDEC$ ATTRIBUTES DLLIMPORT:: /nird/" +"cDEC$ ENDIF" +"C -------------------------------------------" +"c Example of cost function given by a subroutine" +"c if n<=2 returns ind=0" +"c f.bonnans, oct 86" +" implicit double precision (a-h,o-z)" +" real rzs(1)" +" double precision dzs(*)" +" dimension x(n),g(n),izs(*)" +" common/nird/nizs,nrzs,ndzs" +" if (n.lt.3) then" +" ind=0" +" return" +" endif" +" if(ind.eq.10) then" +" nizs=2" +" nrzs=1" +" ndzs=1" +" return" +" endif" +" if(ind.eq.11) then" +" izs(1)=5" +" izs(2)=10" +" dzs(1)=100.0d+0" +" return" +" endif" +" if(ind.eq.2)go to 5" +" if(ind.eq.3)go to 20" +" if(ind.eq.4)go to 5" +" ind=-1" +" return" +"5 f=1.0d+0" +" do 10 i=2,n" +" im1=i-1" +"10 f=f + dzs(1)*(x(i)-x(im1)**2)**2 + (1.0d+0-x(i))**2" +" if(ind.eq.2)return" +"20 g(1)=-4.0d+0*dzs(1)*(x(2)-x(1)**2)*x(1)" +" nm1=n-1" +" do 30 i=2,nm1" +" im1=i-1" +" ip1=i+1" +" g(i)=2.0d+0*dzs(1)*(x(i)-x(im1)**2)" +"30 g(i)=g(i) -4.0d+0*dzs(1)*(x(ip1)-x(i)**2)*x(i) - " +" & 2.0d+0*(1.0d+0-x(i))" +" g(n)=2.0d+0*dzs(1)*(x(n)-x(nm1)**2) - 2.0d+0*(1.0d+0-x(n))" +" return" +" end"]; +mputl(fortransource, TMPDIR + "/rosenf.f"); +ilib_for_link("rosenf", "rosenf.f", [], "f"); +exec loader.sce; +chdir(cur_dir); +// +// Define some constants +// +Leps = 10e3 * 8.e-5; +bs = 10.*ones(1, 5); +bi = -bs; +x0 = 0.12 * bs; +epsx = 1.e-15 * x0; +xopt = .1*bs; +// +// Solve the problem +// +[f, x, g] = optim("rosenf", x0, "in"); +if abs(f - 1 + norm(x - xopt) ) > Leps then pause,end +[f, x, g] = optim("rosenf", x0, "gc", "in"); +if abs(f - 1 + norm(x - xopt) ) > Leps then pause, end +// +[f, x, g] = optim("rosenf", x0, "nd", "in"); +if abs(f - 1 + norm(x - xopt) ) > Leps then pause, end + +[f, x, g] = optim("rosenf", x0, "qn", 1, "in"); +if abs(f - 1 + norm(x - xopt) ) > Leps then pause,end +[f, x, g] = optim("rosenf", x0, "gc", 1, 50, "in"); +if abs(f - 1 + norm(x - xopt) ) > Leps then pause,end +// +[f, x ,g] = optim("rosenf", x0, "nd", 1,50, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause,end + +[f, x1, g] =optim("rosenf", x0, "ar", 100, 6, "in"); +[f, x, g, to] = optim("rosenf", x0, "ar", 100, 3, "in"); +[f, x, g, to] = optim("rosenf", x , to, "ar", 100, 3, "in"); +if norm(x-x1)/norm(x-xopt) > 0.1 then pause, end +[f, x1, g] = optim("rosenf", "b", bi, bs, x0, "ar", 100, 6, "in"); +[f, x, g, to] = optim("rosenf", "b", bi, bs, x0, "ar", 100, 3, "in"); +[f, x, g] =optim("rosenf", "b", bi, bs, x, to, "ar", 100, 3, "in"); +if norm(x-x1)/norm(x-xopt) > 0.1 then pause, end +// +// Test all possible stop criteria settings +// +[f, x, g] = optim("rosenf", x0, "ar", "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g] = optim("rosenf", x0, "ar", 100, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g] = optim("rosenf", x0, "ar", 100, 100, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g] = optim("rosenf", x0, "ar", 100, 100, %eps, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g] = optim("rosenf", x0, "ar", 100, 100, %eps, %eps, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g] = optim("rosenf", x0, "ar", 100, 100, 10.*%eps, %eps, epsx, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g] = optim("rosenf", x0, "gc", "ar", 100, 100, %eps, %eps, epsx, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +// +[f, x, g] = optim("rosenf", "b", bi, bs, x0, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g] = optim("rosenf", "b", bi, bs, x0, "gc", "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x] = optim("rosenf", "b", bi, bs, x0, "ar", 100, 100, 1.d-8, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g] = optim("rosenf", .. +"b", bi, bs, x0, "gc", "ar", 100, 100, %eps, %eps, epsx, "in"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g, to, td] = optim("rosenf", x0, "in", "sd"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g, ti] = optim("rosenf", x0, "gc", "in", "si"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g, to, ti, td] = optim("rosenf", x0, to, "in", "si", "sd"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g, td] = optim("rosenf", .. +"b", bi, bs, x0, "gc", "ar", 100, 100, %eps, %eps, epsx, "in", "sd"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g, ti] = optim("rosenf", x0, "gc", "ar", 100, 100, %eps, "in", "si"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g, ti, td] = optim("rosenf", .. +x0, "gc", "ar", 100, 100, %eps, "in", "si", "sd"); +if abs(f-1+norm(x-xopt) ) > Leps then pause, end +[f, x, g, ti, td] = optim("rosenf", .. +x0, "gc", "ar", 100, 100, %eps, "in", "ti", ti, "td", td, "si", "sd"); +if abs(f - 1 + norm(x - xopt) ) > Leps then pause, end +// +// init ti and td +[f, x, g, ti, td] = optim("rosenf", x0, "in", "si", "sd"); +// reuses it +[f, x, g, ti2, td2] = optim("rosenf", x0, "ti", ti, "td", td, "si", "sd"); +assert_checkequal(ti, ti2); +assert_checkequal(td, td2); +// Clean-up +ulink(); + diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_checkbounds.dia.ref b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkbounds.dia.ref new file mode 100755 index 000000000..e6cf8b9ce --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkbounds.dia.ref @@ -0,0 +1,40 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Test optimbase_checkbounds method +// +// +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +// The bounds are consistent +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +opt = optimbase_checkbounds ( opt ); +// The min bound does not have a consistent size +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0 10.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +instr = "opt = optimbase_checkbounds ( opt );"; +lclmsg = gettext("%s: The number of variables %d does not match the number of min bounds: %d.\n"); +assert_checkerror(instr,lclmsg,[],"optimbase_checkbounds",2,3); +// The max bound does not have a consistent size +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0 10.0] ); +instr = "opt = optimbase_checkbounds ( opt );"; +lclmsg = gettext("%s: The number of variables %d does not match the number of max bounds: %d.\n"); +assert_checkerror(instr,lclmsg,[],"optimbase_checkbounds",2,3); +// The bounds are not consistent +opt = optimbase_configure ( opt , "-boundsmin" , [5.0 5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [-5.0 -5.0] ); +instr = "opt = optimbase_checkbounds ( opt );"; +lclmsg = gettext("%s: The max bound %s for variable #%d is lower than the min bound %s.\n"); +assert_checkerror(instr,lclmsg,[],"optimbase_checkbounds","-5",1,"5"); +opt = optimbase_destroy(opt); diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_checkbounds.tst b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkbounds.tst new file mode 100755 index 000000000..5906d98f0 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkbounds.tst @@ -0,0 +1,46 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + + + +// +// Test optimbase_checkbounds method +// +// +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +// The bounds are consistent +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +opt = optimbase_checkbounds ( opt ); +// The min bound does not have a consistent size +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0 10.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +instr = "opt = optimbase_checkbounds ( opt );"; +lclmsg = gettext("%s: The number of variables %d does not match the number of min bounds: %d.\n"); +assert_checkerror(instr,lclmsg,[],"optimbase_checkbounds",2,3); +// The max bound does not have a consistent size +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0 10.0] ); +instr = "opt = optimbase_checkbounds ( opt );"; +lclmsg = gettext("%s: The number of variables %d does not match the number of max bounds: %d.\n"); +assert_checkerror(instr,lclmsg,[],"optimbase_checkbounds",2,3); +// The bounds are not consistent +opt = optimbase_configure ( opt , "-boundsmin" , [5.0 5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [-5.0 -5.0] ); +instr = "opt = optimbase_checkbounds ( opt );"; +lclmsg = gettext("%s: The max bound %s for variable #%d is lower than the min bound %s.\n"); +assert_checkerror(instr,lclmsg,[],"optimbase_checkbounds","-5",1,"5"); +opt = optimbase_destroy(opt); + diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_checkcostfun.dia.ref b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkcostfun.dia.ref new file mode 100755 index 000000000..283f278d1 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkcostfun.dia.ref @@ -0,0 +1,231 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Here, the cost function is OK +// +function [ y , index ] = rosenbrockOk ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-x0",[1.1 1.1]'); +opt = optimbase_configure(opt,"-function",rosenbrockOk); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); +// +// Here, the cost function is not callable +// +function [ y , index ] = rosenbrock2 ( x , index ) + y = fdsmklqfjdsf; +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-x0",[1.1 1.1]'); +opt = optimbase_configure(opt,"-function",rosenbrock2); +cmd = "opt = optimbase_checkcostfun(opt);"; +lclmsg = "%s: Cannot evaluate cost function with ""%s"": %s"; +scimsg = msprintf(_("Undefined variable: %s\n"), "fdsmklqfjdsf"); +assert_checkerror(cmd,lclmsg,[],"optimbase_checkcostfun","[f,index]=costf(x0,1)", scimsg); +opt = optimbase_destroy(opt); +// +// Here, the cost function is callable, but returns a matrix, +// instead of a scalar. +// +function [ y , index ] = rosenbrock3 ( x , index ) + y = ones(10,10); +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-x0",[1.1 1.1]'); +opt = optimbase_configure(opt,"-function",rosenbrock3); +cmd = "opt = optimbase_checkcostfun(opt);"; +assert_checkerror(cmd,"%s: The matrix %s from costf(x0,%d) has %d rows, instead of %d.",[],"optimbase_checkcostfun","f",2,10,1); +opt = optimbase_destroy(opt); +// +// Test with good non linear constraints +// +function [ f , c , index ] = optimtestcase ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +opt = optimbase_configure(opt,"-nbineqconst",3); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); +// +// Test a wrong configuration: we forgot to configure "-nbineqconst" +// +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +cmd="opt = optimbase_checkcostfun(opt)"; +errmsg = "%s: The matrix %s from costf(x0,%d) has %d rows, instead of %d."; +assert_checkerror(cmd,errmsg,[], "optimbase_checkcostfun" , "index" , 1 , 0 , 1); +opt = optimbase_destroy(opt); +// +// Test with wrong non linear constraints f(x0,2) is not a row vector +// The cost function transposes the column vector. +// +function [ f , c , index ] = optimtestcase2 ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3].' + end +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase2); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +opt = optimbase_configure(opt,"-nbineqconst",3); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); +// +// Test with wrong non linear constraints f(x0,2) is a row vector with 5 components instead of 3 +// +function [ f , c , index ] = optimtestcase3 ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3 0.0 0.0] + end +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase3); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +opt = optimbase_configure(opt,"-nbineqconst",3); +cmd = "opt = optimbase_checkcostfun(opt);"; +assert_checkerror(cmd,"%s: The matrix %s from costf(x0,%d) has %d columns, instead of %d.",[],"optimbase_checkcostfun","c",5,5,3); +opt = optimbase_destroy(opt); +// +// Test with wrong non linear constraints f(x0,3) is a column vector +// The cost function transposes the column vector. +// +function [ f , c , index ] = optimtestcase4 ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3].' + end +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase4); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +opt = optimbase_configure(opt,"-nbineqconst",3); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); +// +// Test with wrong non linear constraints f(x0,3) is a row vector with 5 columns instead of 4 +// +function [ f , c , index ] = optimtestcase5 ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3 0.0] + end +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase5); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +opt = optimbase_configure(opt,"-nbineqconst",3); +cmd = "opt = optimbase_checkcostfun(opt);"; +assert_checkerror(cmd,"%s: The matrix %s from costf(x0,%d) has %d columns, instead of %d.",[],"optimbase_checkcostfun","c",5,4,3); +opt = optimbase_destroy(opt); +// +// Test with correct rosenbrock function +// +function [ f , g , index ] = rosenbrock ( x , index ) + f = 100.0 *(x(2)-x(1)^2)^2 + (1-x(1))^2; + g(1,1) = - 400. * ( x(2) - x(1)**2 ) * x(1) -2. * ( 1. - x(1) ) + g(1,2) = 200. * ( x(2) - x(1)**2 ) +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function", rosenbrock ); +opt = optimbase_configure(opt,"-withderivatives",%t); +opt = optimbase_configure(opt,"-x0",[-1.2 1.0].'); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); +// +// Test with not correct rosenbrock function : g is a column vector instead of row vector +// The cost function transposes the column vector. +function [ f , g , index ] = rosenbrock4 ( x , index ) + f = 100.0 *(x(2)-x(1)^2)^2 + (1-x(1))^2; + g(1) = - 400. * ( x(2) - x(1)**2 ) * x(1) -2. * ( 1. - x(1) ) + g(2) = 200. * ( x(2) - x(1)**2 ) +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function", rosenbrock4 ); +opt = optimbase_configure(opt,"-withderivatives",%t); +opt = optimbase_configure(opt,"-x0",[-1.2 1.0].'); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_checkcostfun.tst b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkcostfun.tst new file mode 100755 index 000000000..3dc5686e6 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkcostfun.tst @@ -0,0 +1,246 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// +// Here, the cost function is OK +// +function [ y , index ] = rosenbrockOk ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-x0",[1.1 1.1]'); +opt = optimbase_configure(opt,"-function",rosenbrockOk); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); + +// +// Here, the cost function is not callable +// +function [ y , index ] = rosenbrock2 ( x , index ) + y = fdsmklqfjdsf; +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-x0",[1.1 1.1]'); +opt = optimbase_configure(opt,"-function",rosenbrock2); +cmd = "opt = optimbase_checkcostfun(opt);"; +lclmsg = "%s: Cannot evaluate cost function with ""%s"": %s"; +scimsg = msprintf(_("Undefined variable: %s\n"), "fdsmklqfjdsf"); +assert_checkerror(cmd,lclmsg,[],"optimbase_checkcostfun","[f,index]=costf(x0,1)", scimsg); +opt = optimbase_destroy(opt); + +// +// Here, the cost function is callable, but returns a matrix, +// instead of a scalar. +// +function [ y , index ] = rosenbrock3 ( x , index ) + y = ones(10,10); +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-x0",[1.1 1.1]'); +opt = optimbase_configure(opt,"-function",rosenbrock3); +cmd = "opt = optimbase_checkcostfun(opt);"; +assert_checkerror(cmd,"%s: The matrix %s from costf(x0,%d) has %d rows, instead of %d.",[],"optimbase_checkcostfun","f",2,10,1); +opt = optimbase_destroy(opt); + +// +// Test with good non linear constraints +// +function [ f , c , index ] = optimtestcase ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +opt = optimbase_configure(opt,"-nbineqconst",3); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); + +// +// Test a wrong configuration: we forgot to configure "-nbineqconst" +// +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +cmd="opt = optimbase_checkcostfun(opt)"; +errmsg = "%s: The matrix %s from costf(x0,%d) has %d rows, instead of %d."; +assert_checkerror(cmd,errmsg,[], "optimbase_checkcostfun" , "index" , 1 , 0 , 1); +opt = optimbase_destroy(opt); + +// +// Test with wrong non linear constraints f(x0,2) is not a row vector +// The cost function transposes the column vector. +// +function [ f , c , index ] = optimtestcase2 ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3].' + end +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase2); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +opt = optimbase_configure(opt,"-nbineqconst",3); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); + +// +// Test with wrong non linear constraints f(x0,2) is a row vector with 5 components instead of 3 +// +function [ f , c , index ] = optimtestcase3 ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3 0.0 0.0] + end +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase3); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +opt = optimbase_configure(opt,"-nbineqconst",3); +cmd = "opt = optimbase_checkcostfun(opt);"; +assert_checkerror(cmd,"%s: The matrix %s from costf(x0,%d) has %d columns, instead of %d.",[],"optimbase_checkcostfun","c",5,5,3); +opt = optimbase_destroy(opt); + +// +// Test with wrong non linear constraints f(x0,3) is a column vector +// The cost function transposes the column vector. +// +function [ f , c , index ] = optimtestcase4 ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3].' + end +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase4); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +opt = optimbase_configure(opt,"-nbineqconst",3); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); + +// +// Test with wrong non linear constraints f(x0,3) is a row vector with 5 columns instead of 4 +// +function [ f , c , index ] = optimtestcase5 ( x , index ) + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3 0.0] + end +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt = optimbase_configure(opt,"-function",optimtestcase5); +opt = optimbase_configure(opt,"-x0",[0.0 0.0 0.0 0.0]'); +opt = optimbase_configure(opt,"-nbineqconst",3); +cmd = "opt = optimbase_checkcostfun(opt);"; +assert_checkerror(cmd,"%s: The matrix %s from costf(x0,%d) has %d columns, instead of %d.",[],"optimbase_checkcostfun","c",5,4,3); +opt = optimbase_destroy(opt); + + +// +// Test with correct rosenbrock function +// +function [ f , g , index ] = rosenbrock ( x , index ) + f = 100.0 *(x(2)-x(1)^2)^2 + (1-x(1))^2; + g(1,1) = - 400. * ( x(2) - x(1)**2 ) * x(1) -2. * ( 1. - x(1) ) + g(1,2) = 200. * ( x(2) - x(1)**2 ) +endfunction + +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function", rosenbrock ); +opt = optimbase_configure(opt,"-withderivatives",%t); +opt = optimbase_configure(opt,"-x0",[-1.2 1.0].'); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); +// +// Test with not correct rosenbrock function : g is a column vector instead of row vector +// The cost function transposes the column vector. +function [ f , g , index ] = rosenbrock4 ( x , index ) + f = 100.0 *(x(2)-x(1)^2)^2 + (1-x(1))^2; + g(1) = - 400. * ( x(2) - x(1)**2 ) * x(1) -2. * ( 1. - x(1) ) + g(2) = 200. * ( x(2) - x(1)**2 ) +endfunction + +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function", rosenbrock4 ); +opt = optimbase_configure(opt,"-withderivatives",%t); +opt = optimbase_configure(opt,"-x0",[-1.2 1.0].'); +opt = optimbase_checkcostfun(opt); +opt = optimbase_destroy(opt); + diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_checkx0.dia.ref b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkx0.dia.ref new file mode 100755 index 000000000..97e204e0f --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkx0.dia.ref @@ -0,0 +1,98 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// gould.nonconvex -- +// The Gould test case with additional inequality constraints. +// Arguments +// x : the point where to compute the cost +// index : a flag which states what is to compute +// * if index=1, or no index, returns the value of the cost +// function (default case) +// * if index=2, returns the value of the nonlinear inequality +// constraints, as a row array +// * if index=3, returns an array which contains +// at index #0, the value of the cost function +// at index #1 to the end is the list of the values of the nonlinear +// constraints +// Discussion: +// The problem is to minimize a cost function with 4 non linear constraints. +// This is Problem 4.1 in Subrahmanyam, extracted from Gould. +// Non convex. +// The constraint region is a narrow winding (half-moon shaped) valley. +// Solution showed with tolerance 1.e-8. +// +// Reference: +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 +// +function [ f , c , index ] = gouldnonconvex ( x , index ) + f = [] + c = [] + if ( index==2 | index==6 ) then + f = (x(1) - 10.0 )^3 + ( x(2) - 20.0 ) ^ 3 + end + if ( index==5 | index==6 ) then + c1 = x(1) - 13.0 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - 100.0 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + 82.81 + c4 = x(2) + c = [c1 c2 c3 c4] + end +endfunction +// +// Test optimbase_checkx0 method +// +// Test without anything +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_checkx0 ( opt ); +opt = optimbase_destroy(opt); +// +// Test with satisfied/unsatisfied bounds constraints +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +opt = optimbase_configure ( opt , "-x0", [1.0 1.0]' ); +opt = optimbase_checkx0 ( opt ); +opt = optimbase_configure ( opt , "-x0",[-6.0 1.0]'); +instr = "opt = optimbase_checkx0 ( opt )"; +lclmsg = gettext("%s: Initial guess is not feasible."); +assert_checkerror(instr,lclmsg,[],"optimbase_checkx0" ); +Component #1/2 of x is lower than min bound -5 +opt = optimbase_destroy(opt); +// +// Test with satisfied/unsatisfied nonlinear inequality constraints +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_configure ( opt , "-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , gouldnonconvex ); +opt = optimbase_configure ( opt , "-x0" , [ 14.0950013 , 0.8429636 ]'); +opt = optimbase_checkx0 ( opt ); +Function Evaluation #1, index=5, x= [14.095001 0.8429636] +opt = optimbase_configure ( opt , "-x0" , [ 14.0950013 , 0.0 ]'); +instr = "opt = optimbase_checkx0 ( opt )"; +lclmsg = gettext("%s: Initial guess is not feasible."); +assert_checkerror(instr,lclmsg,[],"optimbase_checkx0" ); +Function Evaluation #2, index=5, x= [14.095001 0] +Inequality constraint #3/4 is not satisfied for x +opt = optimbase_destroy(opt); diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_checkx0.tst b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkx0.tst new file mode 100755 index 000000000..e1bada0a8 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_checkx0.tst @@ -0,0 +1,98 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + +// +// gould.nonconvex -- +// The Gould test case with additional inequality constraints. +// Arguments +// x : the point where to compute the cost +// index : a flag which states what is to compute +// * if index=1, or no index, returns the value of the cost +// function (default case) +// * if index=2, returns the value of the nonlinear inequality +// constraints, as a row array +// * if index=3, returns an array which contains +// at index #0, the value of the cost function +// at index #1 to the end is the list of the values of the nonlinear +// constraints +// Discussion: +// The problem is to minimize a cost function with 4 non linear constraints. +// This is Problem 4.1 in Subrahmanyam, extracted from Gould. +// Non convex. +// The constraint region is a narrow winding (half-moon shaped) valley. +// Solution showed with tolerance 1.e-8. +// +// Reference: +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 +// +function [ f , c , index ] = gouldnonconvex ( x , index ) + f = [] + c = [] + if ( index==2 | index==6 ) then + f = (x(1) - 10.0 )^3 + ( x(2) - 20.0 ) ^ 3 + end + if ( index==5 | index==6 ) then + c1 = x(1) - 13.0 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - 100.0 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + 82.81 + c4 = x(2) + c = [c1 c2 c3 c4] + end +endfunction +// +// Test optimbase_checkx0 method +// +// Test without anything +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_checkx0 ( opt ); +opt = optimbase_destroy(opt); +// +// Test with satisfied/unsatisfied bounds constraints +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +opt = optimbase_configure ( opt , "-x0", [1.0 1.0]' ); +opt = optimbase_checkx0 ( opt ); +opt = optimbase_configure ( opt , "-x0",[-6.0 1.0]'); +instr = "opt = optimbase_checkx0 ( opt )"; +lclmsg = gettext("%s: Initial guess is not feasible."); +assert_checkerror(instr,lclmsg,[],"optimbase_checkx0" ); +opt = optimbase_destroy(opt); +// +// Test with satisfied/unsatisfied nonlinear inequality constraints +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_configure ( opt , "-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , gouldnonconvex ); +opt = optimbase_configure ( opt , "-x0" , [ 14.0950013 , 0.8429636 ]'); +opt = optimbase_checkx0 ( opt ); +opt = optimbase_configure ( opt , "-x0" , [ 14.0950013 , 0.0 ]'); +instr = "opt = optimbase_checkx0 ( opt )"; +lclmsg = gettext("%s: Initial guess is not feasible."); +assert_checkerror(instr,lclmsg,[],"optimbase_checkx0" ); +opt = optimbase_destroy(opt); + diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_function.dia.ref b/modules/optimization/tests/unit_tests/optimbase/optimbase_function.dia.ref new file mode 100755 index 000000000..cbe6f563c --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_function.dia.ref @@ -0,0 +1,328 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Test the call to the cost function +// +// Test when there is no cost function +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +cmd = "[ opt , f , index ] = optimbase_function ( opt , [0.0 0.0] , 1 );"; +assert_checkerror(cmd,"%s: Empty function (use -function option).",[],"optimbase_function"); +opt = optimbase_destroy(opt); +// Test simple case +function [ y , index ] = rosenbrock ( x , index ) + [lhs,rhs]=argn(); + if ( rhs <> 2 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "rosenbrock", 2); + error(errmsg) + end + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +opt = optimbase_new (); +funevals = optimbase_get ( opt , "-funevals" ); +assert_checkequal ( funevals , 0 ); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function",rosenbrock); +[ opt , f , index ] = optimbase_function ( opt , [0.0 0.0] , 1 ); +assert_checkalmostequal ( f , 1.0 , %eps ); +assert_checkequal ( index , 1 ); +funevals = optimbase_get ( opt , "-funevals" ); +assert_checkequal ( funevals , 1 ); +opt = optimbase_destroy(opt); +// Test simple case where the index is changed +function [ y , index ] = rosenbrock0 ( x , index ) + [lhs,rhs]=argn(); + if ( rhs <> 2 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "rosenbrock0", 2); + error(errmsg) + end + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; + index = 0; +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function",rosenbrock0); +[ opt , f , index ] = optimbase_function ( opt , [0.0 0.0] , 1 ); +assert_checkalmostequal ( f , 1.0 , %eps ); +assert_checkequal ( index , 0 ); +opt = optimbase_destroy(opt); +// +// Test with an additional argument +// In this case, the mydata variable is passed +// explicitely by the optimization class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function [ y , index ] = rosenbrock2 ( x , index , mydata ) + [lhs,rhs]=argn(); + if ( rhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "rosenbrock2", 3); + error(errmsg) + end + a = mydata.a + y = 100*(x(2)-x(1)^2)^2 + ( a - x(1))^2; +endfunction +mystuff = tlist(["T_MYSTUFF","a"]); +mystuff.a = 12.0; +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function",list(rosenbrock2,mystuff)); +[ opt , f , index ] = optimbase_function ( opt , [0.0 0.0] , 1 ); +assert_checkalmostequal ( f , 144. , %eps ); +assert_checkequal ( index , 1 ); +opt = optimbase_destroy(opt); +// +// Test with non linear constraints : there is an index +// optimtestcase -- +// Non linear inequality constraints are positive. +// +// Arguments +// x: the point where to compute the function +// index : the stuff to compute +// Note +// The following protocol is used +// * if index=2, returns f, the value of the cost +// function +// * if index=5, returns c, the value of the nonlinear inequality +// constraints, as a row array +// * if index=6, returns f and c +// The inequality constraints are expected to be positive. +// +function [ f , c , index ] = optimtestcase ( x , index ) + [lhs,rhs]=argn(); + if ( rhs <> 2 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "optimtestcase", 2); + error(errmsg) + end + if ( lhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of output argument: %d expected.\n"), "optimtestcase", 3); + error(errmsg) + end + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction +x0 = [0.0 0.0 0.0 0.0].'; +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt= optimbase_configure(opt,"-function",optimtestcase); +opt= optimbase_configure(opt,"-nbineqconst",3); +[this,f,c,index] = optimbase_function ( opt , x0 , 2 ); +assert_checkequal ( index , 2 ); +assert_checkalmostequal ( f , 0. , %eps ); +assert_checkequal ( c , [] ); +[this,f,c,index] = optimbase_function ( opt , x0 , 5 ); +assert_checkequal ( index , 5 ); +assert_checkequal ( f , [] ); +assert_checkalmostequal ( c , [8. 10. 5.] , %eps ); +[this,f,c,index] = optimbase_function ( opt , x0 , 6 ); +assert_checkequal ( index , 6 ); +assert_checkalmostequal ( f , 0. , %eps ); +assert_checkalmostequal ( c , [8. 10. 5.] , %eps ); +opt = optimbase_destroy(opt); +// +// Test when there are both nonlinear constraints and a customized data +// boxproblemA -- +// Computes the Box problem A cost function and +// inequality constraints. +// +// Arguments +// x: the point where to compute the function +// index : what to compute +// if index=2, returns f +// if index=5, returns c +// if index=6, returns f and c +// data : the parameters of Box cost function +// Note +// The inequality constraints are expected to be positive. +// +function [ f , c , index ] = boxproblemA ( x , index , data ) + [lhs,rhs]=argn(); + if ( rhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "boxproblemA", 3); + error(errmsg) + end + if ( lhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of output argument: %d expected.\n"), "boxproblemA", 3); + error(errmsg) + end + f = [] + c = [] + b = x(2) + 0.01 * x(3) + x6 = (data.k1 + data.k2 * x(2) ... + + data.k3 * x(3) + data.k4 * x(4) + data.k5 * x(5)) * x(1) + y1 = data.k6 + data.k7 * x(2) + data.k8 * x(3) ... + + data.k9 * x(4) + data.k10 * x(5) + y2 = data.k11 + data.k12 * x(2) + data.k13 * x(3) ... + + data.k14 * x(4) + data.k15 * x(5) + y3 = data.k16 + data.k17 * x(2) + data.k18 * x(3) ... + + data.k19 * x(4) + data.k20 * x(5) + y4 = data.k21 + data.k22 * x(2) + data.k23 * x(3) ... + + data.k24 * x(4) + data.k25 * x(5) + x7 = ( y1 + y2 + y3 ) * x(1) + x8 = (data.k26 + data.k27 * x(2) + data.k28 * x(3) ... + + data.k29 * x(4) ... + + data.k30 * x(5) ) * x(1) + x6 + x7 + if ( index==2 | index==6 ) then + f = (data.a2 * y1 + data.a3 * y2 + data.a4 * y3 + data.a5 * y4 ... + + 7840 * data.a6 - 100000 * data.a0 ... + - 50800 * b * data.a7 + data.k31 + data.k32 * x(2) + data.k33 * x(3) ... + + data.k34 * x(4) + data.k35 * x(5)) * x(1) ... + - 24345 + data.a1 * x6 + f = -f + end + if ( index==5 | index==6 ) then + c1 = x6 + c2 = 294000 - x6 + c3 = x7 + c4 = 294000 - x7 + c5 = x8 + c6 = 277200 - x8 + c = [c1 c2 c3 c4 c5 c6] + end +endfunction +boxparams = struct(); +boxparams.a0 = 9; +boxparams.a1 = 15; +boxparams.a2 = 50; +boxparams.a3 = 9.583; +boxparams.a4 = 20; +boxparams.a5 = 15; +boxparams.a6 = 6; +boxparams.a7 = 0.75; +boxparams.k1 = -145421.402; +boxparams.k2 = 2931.1506; +boxparams.k3 = -40.427932; +boxparams.k4 = 5106.192; +boxparams.k5 = 15711.36; +boxparams.k6 = -161622.577; +boxparams.k7 = 4176.15328; +boxparams.k8 = 2.8260078; +boxparams.k9 = 9200.476; +boxparams.k10 = 13160.295; +boxparams.k11 = -21686.9194; +boxparams.k12 = 123.56928; +boxparams.k13 = -21.1188894; +boxparams.k14 = 706.834; +boxparams.k15 = 2898.573; +boxparams.k16 = 28298.388; +boxparams.k17 = 60.81096; +boxparams.k18 = 31.242116; +boxparams.k19 = 329.574; +boxparams.k20 = -2882.082; +boxparams.k21 = 74095.3845; +boxparams.k22 = -306.262544; +boxparams.k23 = 16.243649; +boxparams.k24 = -3094.252; +boxparams.k25 = -5566.2628; +boxparams.k26 = -26237.0; +boxparams.k27 = 99.0; +boxparams.k28 = -0.42; +boxparams.k29 = 1300.0; +boxparams.k30 = 2100.0; +boxparams.k31 = 925548.252; +boxparams.k32 = -61968.8432; +boxparams.k33 = 23.3088196; +boxparams.k34 = -27097.648; +boxparams.k35 = -50843.766; +x0 = [2.52 2.0 37.5 9.25 6.8].'; +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",5); +opt= optimbase_configure(opt,"-function",list(boxproblemA,boxparams)); +opt = optimbase_configure(opt,"-nbineqconst",6); +[this,f,c,index] = optimbase_function ( opt , x0 , 2 ); +assert_checkequal ( index , 2 ); +assert_checkalmostequal ( f , -2351243.5 , 1.e-7 ); +assert_checkequal ( c , [] ); +[this,f,c,index] = optimbase_function ( opt , x0 , 5 ); +assert_checkequal ( index , 5 ); +assert_checkequal ( f , [] ); +assert_checkalmostequal ( c , [32745.827 261254.17 96991.969 197008.03 130368.43 146831.57] , 1.e-7 ); +[this,f,c,index] = optimbase_function ( opt , x0 , 6 ); +assert_checkequal ( index , 6 ); +assert_checkalmostequal ( f , -2351243.5 , 1.e-7 ); +assert_checkalmostequal ( c , [ 32745.827 261254.17 96991.969 197008.03 130368.43 146831.57] , 1.e-7 ); +opt = optimbase_destroy(opt); +// +// Test with an additional argument. +// +function [ y , index ] = rosenbrock3 ( x , index , mydata ) + [lhs,rhs]=argn(); + if ( rhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "rosenbrock3", 3); + error(errmsg) + end + if ( lhs <> 2 ) then + errmsg = msprintf(gettext("%s: Wrong number of output argument: %d expected.\n"), "rosenbrock3", 2); + error(errmsg) + end + y = 100*(x(2)-x(1)^2)^2 + ( 1.0 - x(1))^2; +endfunction +mystuff = tlist(["T_MYSTUFF","n"]); +mystuff.n = 0; +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function",list(rosenbrock3,mystuff)); +[ opt , f , index ] = optimbase_function ( opt , [0.0 0.0] , 2 ); +assert_checkequal ( index , 2 ); +assert_checkalmostequal ( f , 1.0 , %eps ); +opt = optimbase_destroy(opt); +// +// rosenbrock -- +// Defines the Rosenbrock test function. +// Arguments +// x : the current point +// index : a flag which indicates what to compute +// if index=1, output a message +// if index=2, compute f +// if index=3, compute g +// if index=4, compute f and g +// Note : +// This function could be accepted by optim, hence the test. +// +function [ f , g , index ] = rosenbrock4 ( x , index ) + [lhs,rhs]=argn(); + if ( rhs <> 2 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "rosenbrock4", 2); + error(errmsg) + end + if ( lhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of output argument: %d expected.\n"), "rosenbrock4", 3); + error(errmsg) + end + if index == 1 then + mprintf ( "index = %d, x = [%f %f]\n" , index , x(1) , x(2) ); + end + f = 100.0 *(x(2)-x(1)^2)^2 + (1-x(1))^2; + g(1) = - 400. * ( x(2) - x(1)**2 ) * x(1) -2. * ( 1. - x(1) ) + g(2) = 200. * ( x(2) - x(1)**2 ) +endfunction +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt= optimbase_configure(opt,"-function", rosenbrock4 ); +opt = optimbase_configure(opt,"-withderivatives",%t); +[ opt , f , g , index ] = optimbase_function ( opt , [-1.2 1.0] , 4 ); +assert_checkequal ( index , 4 ); +assert_checkalmostequal ( f , 24.2 , %eps ); +assert_checkalmostequal ( g , [-215.6 -88.0].' , %eps ); +opt = optimbase_destroy(opt); diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_function.tst b/modules/optimization/tests/unit_tests/optimbase/optimbase_function.tst new file mode 100755 index 000000000..9b383af17 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_function.tst @@ -0,0 +1,351 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// +// Test the call to the cost function +// + + +// Test when there is no cost function +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +cmd = "[ opt , f , index ] = optimbase_function ( opt , [0.0 0.0] , 1 );"; +assert_checkerror(cmd,"%s: Empty function (use -function option).",[],"optimbase_function"); +opt = optimbase_destroy(opt); + +// Test simple case +function [ y , index ] = rosenbrock ( x , index ) + [lhs,rhs]=argn(); + if ( rhs <> 2 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "rosenbrock", 2); + error(errmsg) + end + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +opt = optimbase_new (); +funevals = optimbase_get ( opt , "-funevals" ); +assert_checkequal ( funevals , 0 ); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function",rosenbrock); +[ opt , f , index ] = optimbase_function ( opt , [0.0 0.0] , 1 ); +assert_checkalmostequal ( f , 1.0 , %eps ); +assert_checkequal ( index , 1 ); +funevals = optimbase_get ( opt , "-funevals" ); +assert_checkequal ( funevals , 1 ); +opt = optimbase_destroy(opt); + +// Test simple case where the index is changed +function [ y , index ] = rosenbrock0 ( x , index ) + [lhs,rhs]=argn(); + if ( rhs <> 2 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "rosenbrock0", 2); + error(errmsg) + end + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; + index = 0; +endfunction + +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function",rosenbrock0); +[ opt , f , index ] = optimbase_function ( opt , [0.0 0.0] , 1 ); +assert_checkalmostequal ( f , 1.0 , %eps ); +assert_checkequal ( index , 0 ); +opt = optimbase_destroy(opt); + + +// +// Test with an additional argument +// In this case, the mydata variable is passed +// explicitely by the optimization class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function [ y , index ] = rosenbrock2 ( x , index , mydata ) + [lhs,rhs]=argn(); + if ( rhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "rosenbrock2", 3); + error(errmsg) + end + a = mydata.a + y = 100*(x(2)-x(1)^2)^2 + ( a - x(1))^2; +endfunction + +mystuff = tlist(["T_MYSTUFF","a"]); +mystuff.a = 12.0; + +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function",list(rosenbrock2,mystuff)); +[ opt , f , index ] = optimbase_function ( opt , [0.0 0.0] , 1 ); +assert_checkalmostequal ( f , 144. , %eps ); +assert_checkequal ( index , 1 ); +opt = optimbase_destroy(opt); + +// +// Test with non linear constraints : there is an index +// optimtestcase -- +// Non linear inequality constraints are positive. +// +// Arguments +// x: the point where to compute the function +// index : the stuff to compute +// Note +// The following protocol is used +// * if index=2, returns f, the value of the cost +// function +// * if index=5, returns c, the value of the nonlinear inequality +// constraints, as a row array +// * if index=6, returns f and c +// The inequality constraints are expected to be positive. +// +function [ f , c , index ] = optimtestcase ( x , index ) + [lhs,rhs]=argn(); + if ( rhs <> 2 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "optimtestcase", 2); + error(errmsg) + end + if ( lhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of output argument: %d expected.\n"), "optimtestcase", 3); + error(errmsg) + end + f = [] + c = [] + if ( index == 2 | index == 6 ) then + f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ... + - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4) + end + if ( index == 5 | index == 6 ) then + c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ... + - x(1) + x(2) - x(3) + x(4) + 8 + c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ... + + x(1) + x(4) + 10.0 + c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ... + + x(2) + x(4) + 5.0 + c = [c1 c2 c3] + end +endfunction +x0 = [0.0 0.0 0.0 0.0].'; +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",4); +opt= optimbase_configure(opt,"-function",optimtestcase); +opt= optimbase_configure(opt,"-nbineqconst",3); +[this,f,c,index] = optimbase_function ( opt , x0 , 2 ); +assert_checkequal ( index , 2 ); +assert_checkalmostequal ( f , 0. , %eps ); +assert_checkequal ( c , [] ); +[this,f,c,index] = optimbase_function ( opt , x0 , 5 ); +assert_checkequal ( index , 5 ); +assert_checkequal ( f , [] ); +assert_checkalmostequal ( c , [8. 10. 5.] , %eps ); +[this,f,c,index] = optimbase_function ( opt , x0 , 6 ); +assert_checkequal ( index , 6 ); +assert_checkalmostequal ( f , 0. , %eps ); +assert_checkalmostequal ( c , [8. 10. 5.] , %eps ); +opt = optimbase_destroy(opt); + + +// +// Test when there are both nonlinear constraints and a customized data +// boxproblemA -- +// Computes the Box problem A cost function and +// inequality constraints. +// +// Arguments +// x: the point where to compute the function +// index : what to compute +// if index=2, returns f +// if index=5, returns c +// if index=6, returns f and c +// data : the parameters of Box cost function +// Note +// The inequality constraints are expected to be positive. +// +function [ f , c , index ] = boxproblemA ( x , index , data ) + [lhs,rhs]=argn(); + if ( rhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "boxproblemA", 3); + error(errmsg) + end + if ( lhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of output argument: %d expected.\n"), "boxproblemA", 3); + error(errmsg) + end + f = [] + c = [] + b = x(2) + 0.01 * x(3) + x6 = (data.k1 + data.k2 * x(2) ... + + data.k3 * x(3) + data.k4 * x(4) + data.k5 * x(5)) * x(1) + y1 = data.k6 + data.k7 * x(2) + data.k8 * x(3) ... + + data.k9 * x(4) + data.k10 * x(5) + y2 = data.k11 + data.k12 * x(2) + data.k13 * x(3) ... + + data.k14 * x(4) + data.k15 * x(5) + y3 = data.k16 + data.k17 * x(2) + data.k18 * x(3) ... + + data.k19 * x(4) + data.k20 * x(5) + y4 = data.k21 + data.k22 * x(2) + data.k23 * x(3) ... + + data.k24 * x(4) + data.k25 * x(5) + x7 = ( y1 + y2 + y3 ) * x(1) + x8 = (data.k26 + data.k27 * x(2) + data.k28 * x(3) ... + + data.k29 * x(4) ... + + data.k30 * x(5) ) * x(1) + x6 + x7 + if ( index==2 | index==6 ) then + f = (data.a2 * y1 + data.a3 * y2 + data.a4 * y3 + data.a5 * y4 ... + + 7840 * data.a6 - 100000 * data.a0 ... + - 50800 * b * data.a7 + data.k31 + data.k32 * x(2) + data.k33 * x(3) ... + + data.k34 * x(4) + data.k35 * x(5)) * x(1) ... + - 24345 + data.a1 * x6 + f = -f + end + if ( index==5 | index==6 ) then + c1 = x6 + c2 = 294000 - x6 + c3 = x7 + c4 = 294000 - x7 + c5 = x8 + c6 = 277200 - x8 + c = [c1 c2 c3 c4 c5 c6] + end +endfunction + +boxparams = struct(); +boxparams.a0 = 9; +boxparams.a1 = 15; +boxparams.a2 = 50; +boxparams.a3 = 9.583; +boxparams.a4 = 20; +boxparams.a5 = 15; +boxparams.a6 = 6; +boxparams.a7 = 0.75; +boxparams.k1 = -145421.402; +boxparams.k2 = 2931.1506; +boxparams.k3 = -40.427932; +boxparams.k4 = 5106.192; +boxparams.k5 = 15711.36; +boxparams.k6 = -161622.577; +boxparams.k7 = 4176.15328; +boxparams.k8 = 2.8260078; +boxparams.k9 = 9200.476; +boxparams.k10 = 13160.295; +boxparams.k11 = -21686.9194; +boxparams.k12 = 123.56928; +boxparams.k13 = -21.1188894; +boxparams.k14 = 706.834; +boxparams.k15 = 2898.573; +boxparams.k16 = 28298.388; +boxparams.k17 = 60.81096; +boxparams.k18 = 31.242116; +boxparams.k19 = 329.574; +boxparams.k20 = -2882.082; +boxparams.k21 = 74095.3845; +boxparams.k22 = -306.262544; +boxparams.k23 = 16.243649; +boxparams.k24 = -3094.252; +boxparams.k25 = -5566.2628; +boxparams.k26 = -26237.0; +boxparams.k27 = 99.0; +boxparams.k28 = -0.42; +boxparams.k29 = 1300.0; +boxparams.k30 = 2100.0; +boxparams.k31 = 925548.252; +boxparams.k32 = -61968.8432; +boxparams.k33 = 23.3088196; +boxparams.k34 = -27097.648; +boxparams.k35 = -50843.766; +x0 = [2.52 2.0 37.5 9.25 6.8].'; + +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",5); +opt= optimbase_configure(opt,"-function",list(boxproblemA,boxparams)); +opt = optimbase_configure(opt,"-nbineqconst",6); +[this,f,c,index] = optimbase_function ( opt , x0 , 2 ); +assert_checkequal ( index , 2 ); +assert_checkalmostequal ( f , -2351243.5 , 1.e-7 ); +assert_checkequal ( c , [] ); +[this,f,c,index] = optimbase_function ( opt , x0 , 5 ); +assert_checkequal ( index , 5 ); +assert_checkequal ( f , [] ); +assert_checkalmostequal ( c , [32745.827 261254.17 96991.969 197008.03 130368.43 146831.57] , 1.e-7 ); +[this,f,c,index] = optimbase_function ( opt , x0 , 6 ); +assert_checkequal ( index , 6 ); +assert_checkalmostequal ( f , -2351243.5 , 1.e-7 ); +assert_checkalmostequal ( c , [ 32745.827 261254.17 96991.969 197008.03 130368.43 146831.57] , 1.e-7 ); +opt = optimbase_destroy(opt); + +// +// Test with an additional argument. +// +function [ y , index ] = rosenbrock3 ( x , index , mydata ) + [lhs,rhs]=argn(); + if ( rhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "rosenbrock3", 3); + error(errmsg) + end + if ( lhs <> 2 ) then + errmsg = msprintf(gettext("%s: Wrong number of output argument: %d expected.\n"), "rosenbrock3", 2); + error(errmsg) + end + y = 100*(x(2)-x(1)^2)^2 + ( 1.0 - x(1))^2; +endfunction + +mystuff = tlist(["T_MYSTUFF","n"]); +mystuff.n = 0; + +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-function",list(rosenbrock3,mystuff)); +[ opt , f , index ] = optimbase_function ( opt , [0.0 0.0] , 2 ); +assert_checkequal ( index , 2 ); +assert_checkalmostequal ( f , 1.0 , %eps ); +opt = optimbase_destroy(opt); + +// +// rosenbrock -- +// Defines the Rosenbrock test function. +// Arguments +// x : the current point +// index : a flag which indicates what to compute +// if index=1, output a message +// if index=2, compute f +// if index=3, compute g +// if index=4, compute f and g +// Note : +// This function could be accepted by optim, hence the test. +// +function [ f , g , index ] = rosenbrock4 ( x , index ) + [lhs,rhs]=argn(); + if ( rhs <> 2 ) then + errmsg = msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "rosenbrock4", 2); + error(errmsg) + end + if ( lhs <> 3 ) then + errmsg = msprintf(gettext("%s: Wrong number of output argument: %d expected.\n"), "rosenbrock4", 3); + error(errmsg) + end + if index == 1 then + mprintf ( "index = %d, x = [%f %f]\n" , index , x(1) , x(2) ); + end + f = 100.0 *(x(2)-x(1)^2)^2 + (1-x(1))^2; + g(1) = - 400. * ( x(2) - x(1)**2 ) * x(1) -2. * ( 1. - x(1) ) + g(2) = 200. * ( x(2) - x(1)**2 ) +endfunction + +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt= optimbase_configure(opt,"-function", rosenbrock4 ); +opt = optimbase_configure(opt,"-withderivatives",%t); +[ opt , f , g , index ] = optimbase_function ( opt , [-1.2 1.0] , 4 ); +assert_checkequal ( index , 4 ); +assert_checkalmostequal ( f , 24.2 , %eps ); +assert_checkalmostequal ( g , [-215.6 -88.0].' , %eps ); +opt = optimbase_destroy(opt); + diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_hasbounds.dia.ref b/modules/optimization/tests/unit_tests/optimbase/optimbase_hasbounds.dia.ref new file mode 100755 index 000000000..25b4048e1 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_hasbounds.dia.ref @@ -0,0 +1,26 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Test hasbounds method +// +// Case where there is no bound +opt = optimbase_new (); +[ opt , hasbounds ] = optimbase_hasbounds ( opt ); +assert_checkequal ( hasbounds , %F ); +opt = optimbase_destroy( opt ); +// Case where there are bounds +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +[ opt , hasbounds ] = optimbase_hasbounds ( opt ); +assert_checkequal ( hasbounds , %T ); +opt = optimbase_destroy(opt); diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_hasbounds.tst b/modules/optimization/tests/unit_tests/optimbase/optimbase_hasbounds.tst new file mode 100755 index 000000000..46f2d6cd9 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_hasbounds.tst @@ -0,0 +1,30 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + +// +// Test hasbounds method +// +// Case where there is no bound +opt = optimbase_new (); +[ opt , hasbounds ] = optimbase_hasbounds ( opt ); +assert_checkequal ( hasbounds , %F ); +opt = optimbase_destroy( opt ); +// Case where there are bounds +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +[ opt , hasbounds ] = optimbase_hasbounds ( opt ); +assert_checkequal ( hasbounds , %T ); +opt = optimbase_destroy(opt); + diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_isfeasible.dia.ref b/modules/optimization/tests/unit_tests/optimbase/optimbase_isfeasible.dia.ref new file mode 100755 index 000000000..c7c28003d --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_isfeasible.dia.ref @@ -0,0 +1,135 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// gould.nonconvex -- +// The Gould test case with additional inequality constraints. +// Arguments +// x : the point where to compute the cost +// index : a flag which states what is to compute +// * if index=1, or no index, returns the value of the cost +// function (default case) +// * if index=2, returns the value of the nonlinear inequality +// constraints, as a row array +// * if index=3, returns an array which contains +// at index #1, the value of the cost function +// at index #2 to the end is the list of the values of the nonlinear +// inequality constraints +// Discussion: +// The problem is to minimize a cost function with 4 non linear constraints. +// This is Problem 4.1 in Subrahmanyam, extracted from Gould. +// Non convex. +// The constraint region is a narrow winding (half-moon shaped) valley. +// Solution showed with tolerance 1.e-8. +// +// Reference: +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 +// +function [ f , c , index ] = gouldnonconvex ( x , index ) + f = [] + c = [] + if ( index==2 | index==6 ) then + f = (x(1) - 10.0 )^3 + ( x(2) - 20.0 ) ^ 3 + end + if ( index==5 | index==6 ) then + c1 = x(1) - 13.0 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - 100.0 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + 82.81 + c4 = x(2) + c = [c1 c2 c3 c4] + end +endfunction +// +// The same cost function as before, with an +// additional argument, which contains parameters of the +// cost function and constraints. +// In this case, the mydata variable is passed +// explicitely by the optimization class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function [ f , c , index , mydata ] = gouldnonconvex2 ( x , index , mydata ) + f = [] + c = [] + if ( index==2 | index==6 ) then + f = (x(1) - mydata.f1 )^3 + ( x(2) - mydata.f2 ) ^ 3 + end + if ( index==5 | index==6 ) then + c1 = x(1) - mydata.a1 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - mydata.a2 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + mydata.a3 + c4 = x(2) + c = [c1 c2 c3 c4] + end +endfunction +// +// Test optimbase_isfeasible method +// +// Test with bounds +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [0.0 0.0] ); +assert_checkequal ( isfeasible , 1 ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [-6.0 0.0] ); +Component #1/2 of x is lower than min bound -5 +assert_checkequal ( isfeasible , 0 ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [0.0 6.0] ); +Component #2/2 of x is greater than max bound 5 +assert_checkequal ( isfeasible , 0 ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure(opt,"-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , gouldnonconvex ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [ 14.0950013 , 0.8429636 ] ); +Function Evaluation #1, index=5, x= [14.095001 0.8429636] +assert_checkequal ( isfeasible , 1 ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [ 14.0950013 , 0.0 ] ); +Function Evaluation #2, index=5, x= [14.095001 0] +Inequality constraint #3/4 is not satisfied for x +assert_checkequal ( isfeasible , -1 ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints and additional argument in cost function +// Set verbose to 1 to check that verbose mode is operationnal. +mystuff = struct(); +mystuff.f1 = 10.0; +mystuff.f2 = 20.0; +mystuff.a1 = 13.0; +mystuff.a2 = 100.0; +mystuff.a3 = 82.81; +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_configure ( opt , "-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , list(gouldnonconvex2,mystuff) ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [ 14.0950013 , 0.8429636 ] ); +Function Evaluation #1, index=5, x= [14.095001 0.8429636] +assert_checkequal ( isfeasible , 1 ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [ 14.0950013 , 0.0 ] ); +Function Evaluation #2, index=5, x= [14.095001 0] +Inequality constraint #3/4 is not satisfied for x +assert_checkequal ( isfeasible , -1 ); +opt = optimbase_destroy(opt); diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_isfeasible.tst b/modules/optimization/tests/unit_tests/optimbase/optimbase_isfeasible.tst new file mode 100755 index 000000000..7fa541ac9 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_isfeasible.tst @@ -0,0 +1,133 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + + + +// +// gould.nonconvex -- +// The Gould test case with additional inequality constraints. +// Arguments +// x : the point where to compute the cost +// index : a flag which states what is to compute +// * if index=1, or no index, returns the value of the cost +// function (default case) +// * if index=2, returns the value of the nonlinear inequality +// constraints, as a row array +// * if index=3, returns an array which contains +// at index #1, the value of the cost function +// at index #2 to the end is the list of the values of the nonlinear +// inequality constraints +// Discussion: +// The problem is to minimize a cost function with 4 non linear constraints. +// This is Problem 4.1 in Subrahmanyam, extracted from Gould. +// Non convex. +// The constraint region is a narrow winding (half-moon shaped) valley. +// Solution showed with tolerance 1.e-8. +// +// Reference: +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 +// +function [ f , c , index ] = gouldnonconvex ( x , index ) + f = [] + c = [] + if ( index==2 | index==6 ) then + f = (x(1) - 10.0 )^3 + ( x(2) - 20.0 ) ^ 3 + end + if ( index==5 | index==6 ) then + c1 = x(1) - 13.0 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - 100.0 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + 82.81 + c4 = x(2) + c = [c1 c2 c3 c4] + end +endfunction +// +// The same cost function as before, with an +// additional argument, which contains parameters of the +// cost function and constraints. +// In this case, the mydata variable is passed +// explicitely by the optimization class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function [ f , c , index , mydata ] = gouldnonconvex2 ( x , index , mydata ) + f = [] + c = [] + if ( index==2 | index==6 ) then + f = (x(1) - mydata.f1 )^3 + ( x(2) - mydata.f2 ) ^ 3 + end + if ( index==5 | index==6 ) then + c1 = x(1) - mydata.a1 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - mydata.a2 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + mydata.a3 + c4 = x(2) + c = [c1 c2 c3 c4] + end +endfunction +// +// Test optimbase_isfeasible method +// +// Test with bounds +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [0.0 0.0] ); +assert_checkequal ( isfeasible , 1 ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [-6.0 0.0] ); +assert_checkequal ( isfeasible , 0 ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [0.0 6.0] ); +assert_checkequal ( isfeasible , 0 ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure(opt,"-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , gouldnonconvex ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [ 14.0950013 , 0.8429636 ] ); +assert_checkequal ( isfeasible , 1 ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [ 14.0950013 , 0.0 ] ); +assert_checkequal ( isfeasible , -1 ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints and additional argument in cost function +// Set verbose to 1 to check that verbose mode is operationnal. +mystuff = struct(); +mystuff.f1 = 10.0; +mystuff.f2 = 20.0; +mystuff.a1 = 13.0; +mystuff.a2 = 100.0; +mystuff.a3 = 82.81; +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_configure ( opt , "-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , list(gouldnonconvex2,mystuff) ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [ 14.0950013 , 0.8429636 ] ); +assert_checkequal ( isfeasible , 1 ); +[ opt , isfeasible ] = optimbase_isfeasible ( opt , [ 14.0950013 , 0.0 ] ); +assert_checkequal ( isfeasible , -1 ); +opt = optimbase_destroy(opt); + diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_isinbounds.dia.ref b/modules/optimization/tests/unit_tests/optimbase/optimbase_isinbounds.dia.ref new file mode 100755 index 000000000..b4766e84a --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_isinbounds.dia.ref @@ -0,0 +1,156 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// gould.nonconvex -- +// The Gould test case with additional inequality constraints. +// Arguments +// x : the point where to compute the cost +// index : a flag which states what is to compute +// * if index=1, or no index, returns the value of the cost +// function (default case) +// * if index=2, returns the value of the nonlinear inequality +// constraints, as a row array +// * if index=3, returns an array which contains +// at index #1, the value of the cost function +// at index #2 to the end is the list of the values of the nonlinear +// inequality constraints +// Discussion: +// The problem is to minimize a cost function with 4 non linear constraints. +// This is Problem 4.1 in Subrahmanyam, extracted from Gould. +// Non convex. +// The constraint region is a narrow winding (half-moon shaped) valley. +// Solution showed with tolerance 1.e-8. +// +// Reference: +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 +// +function result = gouldnonconvex ( x , index ) + if (~isdef("index","local")) then + index = 1 + end + if ( index==1 | index==3 ) then + f = (x(1) - 10.0 )^3 + ( x(2) - 20.0 ) ^ 3 + end + if ( index==2 | index==3 ) then + c1 = x(1) - 13.0 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - 100.0 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + 82.81 + c4 = x(2) + end + select index + case 1 then + result = f + mprintf( "Computed f = %e\n", f); + case 2 + result = [c1 c2 c3 c4] + mprintf( "Computed constraints = %e %e %e %e\n", c1 , c2 , c3 , c4); + case 3 + result = [f c1 c2 c3 c4] + mprintf( "Computed f = %e and constraints = %e %e %e %e\n", f , c1 , c2 , c3 , c4); + else + errmsg = sprintf("Unknown index %d", index ) + error(errmsg) + end +endfunction +// +// The same cost function as before, with an +// additional argument, which contains parameters of the +// cost function and constraints. +// In this case, the mydata variable is passed +// explicitely by the optimization class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function result = gouldnonconvex2 ( x , index , mydata ) + if (~isdef("index","local")) then + index = 1 + end + if ( index==1 | index==3 ) then + f = (x(1) - mydata.f1 )^3 + ( x(2) - mydata.f2 ) ^ 3 + end + if ( index==2 | index==3 ) then + c1 = x(1) - mydata.a1 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - mydata.a2 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + mydata.a3 + c4 = x(2) + end + select index + case 1 then + result = f + mprintf( "Computed f = %e\n", f); + case 2 + result = [c1 c2 c3 c4] + mprintf( "Computed constraints = %e %e %e %e\n", c1 , c2 , c3 , c4); + case 3 + result = [f c1 c2 c3 c4] + mprintf( "Computed f = %e and constraints = %e %e %e %e\n", f , c1 , c2 , c3 , c4); + else + errmsg = sprintf("Unknown index %d", index ) + error(errmsg) + end +endfunction +// +// Test optimbase_isfeasible method +// +// Test with bounds +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [0.0 0.0] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [-6.0 0.0] ); +Component #1/2 of x is lower than min bound -5 +assert_checkequal ( isfeasible , %f ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [0.0 6.0] ); +Component #2/2 of x is greater than max bound 5 +assert_checkequal ( isfeasible , %f ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure(opt,"-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , gouldnonconvex ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [ 14.0950013 , 0.8429636 ] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [ 14.0950013 , 0.0 ] ); +assert_checkequal ( isfeasible , %t ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints and additional argument in cost function +mystuff = struct(); +mystuff.f1 = 10.0; +mystuff.f2 = 20.0; +mystuff.a1 = 13.0; +mystuff.a2 = 100.0; +mystuff.a3 = 82.81; +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_configure ( opt , "-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , list(gouldnonconvex2,mystuff) ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [ 14.0950013 , 0.8429636 ] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [ 14.0950013 , 0.0 ] ); +assert_checkequal ( isfeasible , %t ); +opt = optimbase_destroy(opt); diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_isinbounds.tst b/modules/optimization/tests/unit_tests/optimbase/optimbase_isinbounds.tst new file mode 100755 index 000000000..0f4d4d32c --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_isinbounds.tst @@ -0,0 +1,160 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + + + +// +// gould.nonconvex -- +// The Gould test case with additional inequality constraints. +// Arguments +// x : the point where to compute the cost +// index : a flag which states what is to compute +// * if index=1, or no index, returns the value of the cost +// function (default case) +// * if index=2, returns the value of the nonlinear inequality +// constraints, as a row array +// * if index=3, returns an array which contains +// at index #1, the value of the cost function +// at index #2 to the end is the list of the values of the nonlinear +// inequality constraints +// Discussion: +// The problem is to minimize a cost function with 4 non linear constraints. +// This is Problem 4.1 in Subrahmanyam, extracted from Gould. +// Non convex. +// The constraint region is a narrow winding (half-moon shaped) valley. +// Solution showed with tolerance 1.e-8. +// +// Reference: +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 +// +function result = gouldnonconvex ( x , index ) + if (~isdef("index","local")) then + index = 1 + end + if ( index==1 | index==3 ) then + f = (x(1) - 10.0 )^3 + ( x(2) - 20.0 ) ^ 3 + end + if ( index==2 | index==3 ) then + c1 = x(1) - 13.0 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - 100.0 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + 82.81 + c4 = x(2) + end + select index + case 1 then + result = f + mprintf( "Computed f = %e\n", f); + case 2 + result = [c1 c2 c3 c4] + mprintf( "Computed constraints = %e %e %e %e\n", c1 , c2 , c3 , c4); + case 3 + result = [f c1 c2 c3 c4] + mprintf( "Computed f = %e and constraints = %e %e %e %e\n", f , c1 , c2 , c3 , c4); + else + errmsg = sprintf("Unknown index %d", index ) + error(errmsg) + end +endfunction +// +// The same cost function as before, with an +// additional argument, which contains parameters of the +// cost function and constraints. +// In this case, the mydata variable is passed +// explicitely by the optimization class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function result = gouldnonconvex2 ( x , index , mydata ) + if (~isdef("index","local")) then + index = 1 + end + if ( index==1 | index==3 ) then + f = (x(1) - mydata.f1 )^3 + ( x(2) - mydata.f2 ) ^ 3 + end + if ( index==2 | index==3 ) then + c1 = x(1) - mydata.a1 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - mydata.a2 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + mydata.a3 + c4 = x(2) + end + select index + case 1 then + result = f + mprintf( "Computed f = %e\n", f); + case 2 + result = [c1 c2 c3 c4] + mprintf( "Computed constraints = %e %e %e %e\n", c1 , c2 , c3 , c4); + case 3 + result = [f c1 c2 c3 c4] + mprintf( "Computed f = %e and constraints = %e %e %e %e\n", f , c1 , c2 , c3 , c4); + else + errmsg = sprintf("Unknown index %d", index ) + error(errmsg) + end +endfunction +// +// Test optimbase_isfeasible method +// +// Test with bounds +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [0.0 0.0] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [-6.0 0.0] ); +assert_checkequal ( isfeasible , %f ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [0.0 6.0] ); +assert_checkequal ( isfeasible , %f ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure(opt,"-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , gouldnonconvex ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [ 14.0950013 , 0.8429636 ] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [ 14.0950013 , 0.0 ] ); +assert_checkequal ( isfeasible , %t ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints and additional argument in cost function +mystuff = struct(); +mystuff.f1 = 10.0; +mystuff.f2 = 20.0; +mystuff.a1 = 13.0; +mystuff.a2 = 100.0; +mystuff.a3 = 82.81; +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_configure ( opt , "-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , list(gouldnonconvex2,mystuff) ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [ 14.0950013 , 0.8429636 ] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinbounds ( opt , [ 14.0950013 , 0.0 ] ); +assert_checkequal ( isfeasible , %t ); +opt = optimbase_destroy(opt); + diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_isinnonlincons.dia.ref b/modules/optimization/tests/unit_tests/optimbase/optimbase_isinnonlincons.dia.ref new file mode 100755 index 000000000..1b3420e85 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_isinnonlincons.dia.ref @@ -0,0 +1,132 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// gould.nonconvex -- +// The Gould test case with additional inequality constraints. +// Arguments +// x : the point where to compute the cost +// index : a flag which states what is to compute +// * if index=1, or no index, returns the value of the cost +// function (default case) +// * if index=2, returns the value of the nonlinear inequality +// constraints, as a row array +// * if index=3, returns an array which contains +// at index #1, the value of the cost function +// at index #2 to the end is the list of the values of the nonlinear +// inequality constraints +// Discussion: +// The problem is to minimize a cost function with 4 non linear constraints. +// This is Problem 4.1 in Subrahmanyam, extracted from Gould. +// Non convex. +// The constraint region is a narrow winding (half-moon shaped) valley. +// Solution showed with tolerance 1.e-8. +// +// Reference: +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 +// +function [ f , c , index ] = gouldnonconvex ( x , index ) + f = [] + c = [] + if ( index==2 | index==6 ) then + f = (x(1) - 10.0 )^3 + ( x(2) - 20.0 ) ^ 3 + end + if ( index==5 | index==6 ) then + c1 = x(1) - 13.0 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - 100.0 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + 82.81 + c4 = x(2) + c = [c1 c2 c3 c4] + end +endfunction +// +// The same cost function as before, with an +// additional argument, which contains parameters of the +// cost function and constraints. +// In this case, the mydata variable is passed +// explicitely by the optimization class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function [ f , c , index , mystuff ] = gouldnonconvex2 ( x , index , mydata ) + f = [] + c = [] + if ( index==2 | index==6 ) then + f = (x(1) - mydata.f1 )^3 + ( x(2) - mydata.f2 ) ^ 3 + end + if ( index==5 | index==6 ) then + c1 = x(1) - mydata.a1 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - mydata.a2 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + mydata.a3 + c4 = x(2) + c = [c1 c2 c3 c4] + end +endfunction +// +// Test optimbase_isfeasible method +// +// Test with bounds +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [0.0 0.0] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [-6.0 0.0] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [0.0 6.0] ); +assert_checkequal ( isfeasible , %t ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure(opt,"-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , gouldnonconvex ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [ 14.0950013 , 0.8429636 ] ); +Function Evaluation #1, index=5, x= [14.095001 0.8429636] +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [ 14.0950013 , 0.0 ] ); +Function Evaluation #2, index=5, x= [14.095001 0] +Inequality constraint #3/4 is not satisfied for x +assert_checkequal ( isfeasible , %f ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints and additional argument in cost function +mystuff = struct(); +mystuff.f1 = 10.0; +mystuff.f2 = 20.0; +mystuff.a1 = 13.0; +mystuff.a2 = 100.0; +mystuff.a3 = 82.81; +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_configure ( opt , "-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , list(gouldnonconvex2,mystuff) ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [ 14.0950013 , 0.8429636 ] ); +Function Evaluation #1, index=5, x= [14.095001 0.8429636] +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [ 14.0950013 , 0.0 ] ); +Function Evaluation #2, index=5, x= [14.095001 0] +Inequality constraint #3/4 is not satisfied for x +assert_checkequal ( isfeasible , %f ); +opt = optimbase_destroy(opt); diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_isinnonlincons.tst b/modules/optimization/tests/unit_tests/optimbase/optimbase_isinnonlincons.tst new file mode 100755 index 000000000..b463938c4 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_isinnonlincons.tst @@ -0,0 +1,132 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + + + +// +// gould.nonconvex -- +// The Gould test case with additional inequality constraints. +// Arguments +// x : the point where to compute the cost +// index : a flag which states what is to compute +// * if index=1, or no index, returns the value of the cost +// function (default case) +// * if index=2, returns the value of the nonlinear inequality +// constraints, as a row array +// * if index=3, returns an array which contains +// at index #1, the value of the cost function +// at index #2 to the end is the list of the values of the nonlinear +// inequality constraints +// Discussion: +// The problem is to minimize a cost function with 4 non linear constraints. +// This is Problem 4.1 in Subrahmanyam, extracted from Gould. +// Non convex. +// The constraint region is a narrow winding (half-moon shaped) valley. +// Solution showed with tolerance 1.e-8. +// +// Reference: +// An extension of the simplex method to constrained +// nonlinear optimization +// M.B. Subrahmanyam +// Journal of optimization theory and applications +// Vol. 62, August 1989 +// +// Gould F.J. +// Nonlinear Tolerance Programming +// Numerical methods for Nonlinear optimization +// Edited by F.A. Lootsma, pp 349-366, 1972 +// +function [ f , c , index ] = gouldnonconvex ( x , index ) + f = [] + c = [] + if ( index==2 | index==6 ) then + f = (x(1) - 10.0 )^3 + ( x(2) - 20.0 ) ^ 3 + end + if ( index==5 | index==6 ) then + c1 = x(1) - 13.0 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - 100.0 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + 82.81 + c4 = x(2) + c = [c1 c2 c3 c4] + end +endfunction +// +// The same cost function as before, with an +// additional argument, which contains parameters of the +// cost function and constraints. +// In this case, the mydata variable is passed +// explicitely by the optimization class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function [ f , c , index , mystuff ] = gouldnonconvex2 ( x , index , mydata ) + f = [] + c = [] + if ( index==2 | index==6 ) then + f = (x(1) - mydata.f1 )^3 + ( x(2) - mydata.f2 ) ^ 3 + end + if ( index==5 | index==6 ) then + c1 = x(1) - mydata.a1 + c2 = ( x(1) - 5.0 )^2 + (x(2) - 5.0 )^2 - mydata.a2 + c3 = -( x(1) - 6.0 )^2 - (x(2) - 5.0 )^2 + mydata.a3 + c4 = x(2) + c = [c1 c2 c3 c4] + end +endfunction +// +// Test optimbase_isfeasible method +// +// Test with bounds +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [0.0 0.0] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [-6.0 0.0] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [0.0 6.0] ); +assert_checkequal ( isfeasible , %t ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure(opt,"-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , gouldnonconvex ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [ 14.0950013 , 0.8429636 ] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [ 14.0950013 , 0.0 ] ); +assert_checkequal ( isfeasible , %f ); +opt = optimbase_destroy(opt); +// +// Test with nonlinear inequality constraints and additional argument in cost function +mystuff = struct(); +mystuff.f1 = 10.0; +mystuff.f2 = 20.0; +mystuff.a1 = 13.0; +mystuff.a2 = 100.0; +mystuff.a3 = 82.81; +opt = optimbase_new (); +opt = optimbase_configure ( opt , "-numberofvariables",2); +opt = optimbase_configure ( opt , "-verbose",1); +opt = optimbase_configure ( opt , "-nbineqconst",4); +opt = optimbase_configure ( opt , "-function" , list(gouldnonconvex2,mystuff) ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [ 14.0950013 , 0.8429636 ] ); +assert_checkequal ( isfeasible , %t ); +[ opt , isfeasible ] = optimbase_isinnonlincons ( opt , [ 14.0950013 , 0.0 ] ); +assert_checkequal ( isfeasible , %f ); +opt = optimbase_destroy(opt); + diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_log.dia.ref b/modules/optimization/tests/unit_tests/optimbase/optimbase_log.dia.ref new file mode 100755 index 000000000..75948569c --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_log.dia.ref @@ -0,0 +1,60 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test basic verbose +// +opt = optimbase_new (); +computed = optimbase_cget(opt,"-verbose"); +assert_checkequal ( computed , 0 ); +opt = optimbase_configure(opt,"-verbose",1); +computed = optimbase_cget(opt,"-verbose"); +assert_checkequal ( computed , 1 ); +optimbase_log ( opt , "My interesting message" ); +My interesting message +opt = optimbase_configure(opt,"-verbose",0); +// Log a message relative to the stopping rule +computed = optimbase_cget(opt,"-verbosetermination"); +assert_checkequal ( computed , 0 ); +opt = optimbase_configure(opt,"-verbosetermination",1); +computed = optimbase_cget(opt,"-verbosetermination"); +assert_checkequal ( computed , 1 ); +opt = optimbase_stoplog ( opt , "My interesting stop message" ); +opt = optimbase_configure(opt,"-verbosetermination",0); +opt = optimbase_destroy(opt); +// +// Test logging into a file +// +opt = optimbase_new (); +opt = optimbase_configure(opt,"-verbose",1); +computed = optimbase_cget(opt,"-logfile"); +assert_checkequal ( computed , "" ); +opt = optimbase_configure(opt,"-logfile",fullfile(TMPDIR,"mylogfile.txt")); +computed = optimbase_cget(opt,"-logfile"); +assert_checkequal ( computed , fullfile(TMPDIR,"mylogfile.txt") ); +opt = optimbase_log ( opt , "My interesting message" ); +opt = optimbase_configure(opt,"-verbose",0); +opt = optimbase_log ( opt , "My NOT interesting message" ); +opt = optimbase_destroy(opt); +computed = fileinfo ( fullfile(TMPDIR,"mylogfile.txt") ); +assert_checkequal ( ( computed <> [] ) , %t ); +// Check content +fd = mopen( fullfile(TMPDIR,"mylogfile.txt") , "r" ); +computed = mgetl ( fd , 1 ); // The date is not checked +computed = mgetl ( fd , 1 ); +assert_checkequal ( computed , "My interesting message" ); +computed = meof ( fd ); +assert_checkequal ( computed , 0 ); +mclose ( fd ); +computed = deletefile ( fullfile(TMPDIR,"mylogfile.txt") ); +assert_checkequal ( computed , %t ); diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_log.tst b/modules/optimization/tests/unit_tests/optimbase/optimbase_log.tst new file mode 100755 index 000000000..f69cca15f --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_log.tst @@ -0,0 +1,68 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + + + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test basic verbose +// +opt = optimbase_new (); +computed = optimbase_cget(opt,"-verbose"); +assert_checkequal ( computed , 0 ); +opt = optimbase_configure(opt,"-verbose",1); +computed = optimbase_cget(opt,"-verbose"); +assert_checkequal ( computed , 1 ); +optimbase_log ( opt , "My interesting message" ); +opt = optimbase_configure(opt,"-verbose",0); +// Log a message relative to the stopping rule +computed = optimbase_cget(opt,"-verbosetermination"); +assert_checkequal ( computed , 0 ); +opt = optimbase_configure(opt,"-verbosetermination",1); +computed = optimbase_cget(opt,"-verbosetermination"); +assert_checkequal ( computed , 1 ); +opt = optimbase_stoplog ( opt , "My interesting stop message" ); +opt = optimbase_configure(opt,"-verbosetermination",0); +opt = optimbase_destroy(opt); + +// +// Test logging into a file +// +opt = optimbase_new (); +opt = optimbase_configure(opt,"-verbose",1); +computed = optimbase_cget(opt,"-logfile"); +assert_checkequal ( computed , "" ); +opt = optimbase_configure(opt,"-logfile",fullfile(TMPDIR,"mylogfile.txt")); +computed = optimbase_cget(opt,"-logfile"); +assert_checkequal ( computed , fullfile(TMPDIR,"mylogfile.txt") ); +opt = optimbase_log ( opt , "My interesting message" ); +opt = optimbase_configure(opt,"-verbose",0); +opt = optimbase_log ( opt , "My NOT interesting message" ); +opt = optimbase_destroy(opt); +computed = fileinfo ( fullfile(TMPDIR,"mylogfile.txt") ); +assert_checkequal ( ( computed <> [] ) , %t ); +// Check content +fd = mopen( fullfile(TMPDIR,"mylogfile.txt") , "r" ); +computed = mgetl ( fd , 1 ); // The date is not checked +computed = mgetl ( fd , 1 ); +assert_checkequal ( computed , "My interesting message" ); +computed = meof ( fd ); +assert_checkequal ( computed , 0 ); +mclose ( fd ); +computed = deletefile ( fullfile(TMPDIR,"mylogfile.txt") ); +assert_checkequal ( computed , %t ); + + diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_newdestroy.dia.ref b/modules/optimization/tests/unit_tests/optimbase/optimbase_newdestroy.dia.ref new file mode 100755 index 000000000..0d1cc3704 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_newdestroy.dia.ref @@ -0,0 +1,361 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// myoutputcmd -- +// This command is called back by the Optimization +// algorithm. +// Arguments +// state : the current state of the algorithm +// "init", "iter", "done" +// data : the data at the current state +// This is a tlist with the following entries: +// * x : the optimal vector of parameters +// * fval : the minimum function value +// * iteration : the number of iterations performed +// * funccount : the number of function evaluations +// stop : set to %f to interrupt algorithm +// +function stop = myoutputcmd ( state , data ) + global _OUTPUCMDFLAG_ + // Unload the array, just to make sure that the minimum is there + iter = data.iteration + fc = data.funccount + fval = data.fval + x = data.x + _OUTPUCMDFLAG_ = 1 + stop = %f +endfunction +global _OUTPUCMDFLAG_ +_OUTPUCMDFLAG_ = 0 + _OUTPUCMDFLAG_ = + + 0. +// +// myoutputcmd2 -- +// This command is called back by the Optimization +// algorithm. +// Arguments +// state : the current state of the algorithm +// "init", "iter", "done" +// data : the data at the current state +// This is a tlist with the following entries: +// * x : the optimal vector of parameters +// * fval : the minimum function value +// * iteration : the number of iterations performed +// * funccount : the number of function evaluations +// myobj : a user-defined data structure +// stop : set to %f to interrupt algorithm +// +function stop = myoutputcmd2 ( state , data , myobj ) + global _OUTPUCMDFLAG_ + // Unload the array, just to make sure that the minimum is there + iter = data.iteration + fc = data.funccount + fval = data.fval + x = data.x + _OUTPUCMDFLAG_ = myobj.myarg + stop = %f +endfunction +global _OUTPUCMDFLAG_ +_OUTPUCMDFLAG_ = 0 + _OUTPUCMDFLAG_ = + + 0. +myobj = tlist(["T_MYSTUFF","myarg"]); +myobj.myarg = 12; +// +// In this case, the mydata variable is passed +// explicitely by the optimization class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function [ y , index ] = rosenbrock2 ( x , index , mydata ) + a = mydata.a + y = 100*(x(2)-x(1)^2)^2 + ( a - x(1))^2; +endfunction +// +// Test with an additional argument +// +mystuff = tlist(["T_MYSTUFF","a"]); +mystuff.a = 12.0; +// +// Test nearly all features of the optimization "abstract" class +// +opt = optimbase_new (); +// Check number of variables +opt = optimbase_configure(opt,"-numberofvariables",2); +nbvar = optimbase_cget(opt,"-numberofvariables"); +assert_checkequal ( nbvar , 2 ); +// Check cost function without additional argument +opt = optimbase_configure(opt,"-function",rosenbrock); +[this,f , index ] = optimbase_function ( opt , [0.0 0.0] , 2 ); +assert_checkalmostequal ( f , 1.0 , %eps ); +// Check cost function with additional argument +opt = optimbase_configure(opt,"-function",list(rosenbrock2,mystuff)); +[this,f, index ] = optimbase_function ( opt , [0.0 0.0] , 2 ); +assert_checkalmostequal ( f , 144.0 , %eps ); +// Check initial guess +opt = optimbase_configure(opt,"-x0",[-1.2 1.0]'); +x0 = optimbase_cget(opt,"-x0"); +assert_checkalmostequal ( x0 , [-1.2 1.0]' , %eps); +// Check maxiter +opt = optimbase_configure(opt,"-maxiter",200); +maxiter = optimbase_cget(opt,"-maxiter"); +assert_checkequal ( maxiter , 200); +// Check maxfunevals +opt = optimbase_configure(opt,"-maxfunevals",200); +maxfunevals = optimbase_cget(opt,"-maxfunevals"); +assert_checkequal ( maxfunevals , 200); +// Check tolfunrelative +opt = optimbase_configure(opt,"-tolfunrelative",10*%eps); +tolfunrelative = optimbase_cget(opt,"-tolfunrelative"); +assert_checkequal ( tolfunrelative , 10*%eps ); +// Check tolxrelative +opt = optimbase_configure(opt,"-tolxrelative",10*%eps); +tolxrelative = optimbase_cget(opt,"-tolxrelative"); +assert_checkequal ( tolxrelative , 10*%eps ); +// Check verbose +opt = optimbase_configure(opt,"-verbose",1); +verbose = optimbase_cget(opt,"-verbose"); +assert_checkequal ( verbose , 1 ); +opt = optimbase_configure(opt,"-verbose",0); +// Check verbose termination +opt = optimbase_configure(opt,"-verbosetermination",1); +verbosetermination = optimbase_cget(opt,"-verbosetermination"); +assert_checkequal ( verbosetermination , 1 ); +opt = optimbase_configure(opt,"-verbosetermination",0); +// Check optimum +opt = optimbase_set(opt,"-xopt",[1.0 1.0]); +xopt = optimbase_get(opt,"-xopt"); +assert_checkalmostequal ( xopt , [1.0 1.0], %eps ); +// Check function value at optimum +opt = optimbase_set(opt,"-fopt",1.0); +fopt = optimbase_get(opt,"-fopt"); +assert_checkalmostequal ( fopt , 1.0 , %eps ); +// Check status +opt = optimbase_set(opt,"-status","maxiter"); +status = optimbase_get(opt,"-status"); +assert_checkequal ( status , "maxiter" ); +// Log a message +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_log ( opt , "My interesting message" ); +My interesting message +opt = optimbase_configure(opt,"-verbose",0); +// Log a message relative to the stopping rule +opt = optimbase_configure(opt,"-verbosetermination",1); +opt = optimbase_stoplog ( opt , "My interesting stop message" ); +opt = optimbase_configure(opt,"-verbosetermination",0); +// Check output command without additional argument +opt = optimbase_configure(opt,"-outputcommand",myoutputcmd); +brutedata = optimbase_outstruct ( opt ); +mydata = tlist(["T_MYDATA",... + "x","fval","iteration","funccount",... + "myspecialdata"]); +mydata.x = brutedata.x; +mydata.fval = brutedata.fval; +mydata.iteration = brutedata.iteration; +mydata.funccount = brutedata.funccount; +mydata.myspecialdata = "yahoo !"; +optimbase_outputcmd ( opt , "init" , mydata ); +assert_checkequal ( _OUTPUCMDFLAG_ , 1 ); +// Check output command with additional argument +opt = optimbase_configure(opt,"-outputcommand",list(myoutputcmd2,myobj)); +brutedata = optimbase_outstruct ( opt ); +mydata = tlist(["T_MYDATA",... + "x","fval","iteration","funccount",... + "myspecialdata"]); +mydata.x = brutedata.x; +mydata.fval = brutedata.fval; +mydata.iteration = brutedata.iteration; +mydata.funccount = brutedata.funccount; +mydata.myspecialdata = "yahoo !"; +optimbase_outputcmd ( opt , "init" , mydata ); +assert_checkequal ( _OUTPUCMDFLAG_ , 12. ); +// Check incriter +opt = optimbase_incriter ( opt ); +iter = optimbase_get ( opt , "-iterations"); +assert_checkequal ( iter , 1 ); +// Check history storing with xopt +opt = optimbase_configure ( opt , "-storehistory" , %t ); +opt = optimbase_histset ( opt , 1 , "-xopt" , [1.0 1.0]' ); +x0 = optimbase_histget ( opt , 1 , "-xopt" ); +assert_checkalmostequal ( x0 , [1.0 1.0]', %eps ); +// Check history storing with fopt +opt = optimbase_configure ( opt , "-storehistory" , %t ); +opt = optimbase_histset ( opt , 1 , "-fopt" , 1.0 ); +f0 = optimbase_histget ( opt , 1 , "-fopt" ); +assert_checkalmostequal ( f0 , 1.0, %eps ); +// Check the boundsmin, boundsmax and nbineqconst +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +boundsmin = optimbase_cget ( opt , "-boundsmin" ); +assert_checkequal ( boundsmin , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +boundsmax = optimbase_cget ( opt , "-boundsmax" ); +assert_checkequal ( boundsmax , [5.0 5.0] ); +opt = optimbase_configure ( opt , "-nbineqconst" , 3 ); +nbineqconst = optimbase_cget ( opt , "-nbineqconst" ); +assert_checkequal ( nbineqconst , 3 ); +// Cleanup +opt = optimbase_destroy(opt); +// +// Test error cases +// +opt = optimbase_new (); +// +// Test wrong initial guess +// +cmd = "optimbase_configure(opt,''-x0'',[-1.2 1.0; -1.0 1.2])"; +assert_checkerror(cmd,"%s: Wrong size for x0 argument: A vector expected.", [], "optimbase_configure"); +// +// Test wrong -tolxmethod +// +cmd = "optimbase_configure(opt,''-tolxmethod'',''foo'')"; +assert_checkerror(cmd,"%s: Expected boolean but for variable %s at input #%d, got %s instead.",[],"optimbase_typeboolean","value",3,"string"); +// +// Test wrong -tolfunmethod +// +cmd = "optimbase_configure(opt,''-tolfunmethod'',''foo'')"; +assert_checkerror(cmd,"%s: Expected boolean but for variable %s at input #%d, got %s instead.",[],"optimbase_typeboolean","value",3,"string"); +opt = optimbase_destroy(opt); +// +// Test outstruct when no -outputcommand is defined +// +opt = optimbase_new (); +cmd = "data = optimbase_outstruct ( opt )"; +assert_checkerror(cmd,"%s: No output command is defined.",[], "optimbase_outstruct"); +opt = optimbase_destroy(opt); +// +// Test optimbase_cget with unknown key +// +opt = optimbase_new (); +cmd = "value = optimbase_cget (opt,''foo'')"; +assert_checkerror(cmd,"%s: Unknown key %s",[],"optimbase_cget" , "foo"); +opt = optimbase_destroy(opt); +// +// Test optimbase_get with unknown key +// +opt = optimbase_new (); +cmd = "value = optimbase_get (opt,''foo'')"; +assert_checkerror(cmd,"%s: Unknown key %s",[],"optimbase_get" , "foo"); +opt = optimbase_destroy(opt); +// +// Test various errors +// +opt = optimbase_new (); +// Test -historyxopt when there is no history +cmd = "value = optimbase_get (opt,''-historyxopt'')"; +assert_checkerror(cmd,"%s: History disabled ; enable -storehistory option.",[],"optimbase_get"); +// Test -historyfopt when there is no history +cmd = "value = optimbase_get (opt,''-historyfopt'')"; +assert_checkerror(cmd,"%s: History disabled ; enable -storehistory option.",[],"optimbase_get"); +// Test optimbase_function when there is no function +cmd = "[ opt , f , index ] = optimbase_function ( opt , [] , %t )"; +assert_checkerror(cmd,"%s: Empty function (use -function option).",[],"optimbase_function"); +// Test optimbase_histget ( this , iter , key ) when there is no history +cmd = "optimbase_histget ( opt , 1 , ''-xopt'' )"; +assert_checkerror(cmd,"%s: History disabled ; turn on -storehistory option.",[],"optimbase_histget"); +// Test optimbase_histget ( this , iter , key ) with negative iteration +opt = optimbase_configure ( opt , "-storehistory" , %t ); +cmd = "optimbase_histget ( opt , -1 , ''-xopt'' )"; +assert_checkerror(cmd,"%s: Negative iteration index %d is not allowed.",[],"optimbase_histget",-1); +// Cleanup +opt = optimbase_destroy(opt); +// +// Test the printing system +// +opt = optimbase_new (); +string(opt) + ans = + +!Optim Base Object: ! +! ! +!================== ! +! ! +!Number of variables : 0 ! +! ! +!Initial Guess : [] ! +! ! +!Initial Function Value : ! +! ! +!Number of Inequality Constraints :0 ! +! ! +!Bounds Mininimum : [] ! +! ! +!Bounds Maxinimum :[] ! +! ! +!Optimum Parameters : [0] ! +! ! +!Optimum Function Value :0 ! +! ! +!Number of iterations : 0 ! +! ! +!Maximum number of iterations : 100 ! +! ! +!Number function evaluations : 0 ! +! ! +!Maximum number of function evaluations : 100 ! +! ! +!Termination Method on function value : F ! +! ! +!Termination Absolute Tolerance on function value : 0 ! +! ! +!Termination Relative Tolerance on function value : 2.220D-16 ! +! ! +!Termination Method on x : T ! +! ! +!Termination Absolute Tolerance on x : 0 ! +! ! +!Termination Relative Tolerance on x : 1.490D-08 ! +! ! +!Optimization Status : ! +! ! +!Verbose logging : 0 ! +! ! +!Verbose Termination : 0 ! +! ! +!Verbose Log File : ! +! ! +!Verbose Log File Startup Up: F ! +! ! +!Store History : F ! +opt + opt = + +Optim Base Object: +================== +Number of variables : 0 +Initial Guess : [] +Initial Function Value : +Number of Inequality Constraints :0 +Bounds Mininimum : [] +Bounds Maxinimum :[] +Optimum Parameters : [0] +Optimum Function Value :0 +Number of iterations : 0 +Maximum number of iterations : 100 +Number function evaluations : 0 +Maximum number of function evaluations : 100 +Termination Method on function value : F +Termination Absolute Tolerance on function value : 0 +Termination Relative Tolerance on function value : 2.220D-16 +Termination Method on x : T +Termination Absolute Tolerance on x : 0 +Termination Relative Tolerance on x : 1.490D-08 +Optimization Status : +Verbose logging : 0 +Verbose Termination : 0 +Verbose Log File : +Verbose Log File Startup Up: F +Store History : F +opt = optimbase_destroy(opt); diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_newdestroy.tst b/modules/optimization/tests/unit_tests/optimbase/optimbase_newdestroy.tst new file mode 100755 index 000000000..e529f02f8 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_newdestroy.tst @@ -0,0 +1,292 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +function [ y , index ] = rosenbrock ( x , index ) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// myoutputcmd -- +// This command is called back by the Optimization +// algorithm. +// Arguments +// state : the current state of the algorithm +// "init", "iter", "done" +// data : the data at the current state +// This is a tlist with the following entries: +// * x : the optimal vector of parameters +// * fval : the minimum function value +// * iteration : the number of iterations performed +// * funccount : the number of function evaluations +// stop : set to %f to interrupt algorithm +// +function stop = myoutputcmd ( state , data ) + global _OUTPUCMDFLAG_ + // Unload the array, just to make sure that the minimum is there + iter = data.iteration + fc = data.funccount + fval = data.fval + x = data.x + _OUTPUCMDFLAG_ = 1 + stop = %f +endfunction + +global _OUTPUCMDFLAG_ +_OUTPUCMDFLAG_ = 0 + +// +// myoutputcmd2 -- +// This command is called back by the Optimization +// algorithm. +// Arguments +// state : the current state of the algorithm +// "init", "iter", "done" +// data : the data at the current state +// This is a tlist with the following entries: +// * x : the optimal vector of parameters +// * fval : the minimum function value +// * iteration : the number of iterations performed +// * funccount : the number of function evaluations +// myobj : a user-defined data structure +// stop : set to %f to interrupt algorithm +// +function stop = myoutputcmd2 ( state , data , myobj ) + global _OUTPUCMDFLAG_ + // Unload the array, just to make sure that the minimum is there + iter = data.iteration + fc = data.funccount + fval = data.fval + x = data.x + _OUTPUCMDFLAG_ = myobj.myarg + stop = %f +endfunction + + +global _OUTPUCMDFLAG_ +_OUTPUCMDFLAG_ = 0 + +myobj = tlist(["T_MYSTUFF","myarg"]); +myobj.myarg = 12; + +// +// In this case, the mydata variable is passed +// explicitely by the optimization class. +// So the actual name "mydata" does not matter +// and whatever variable name can be used. +// +function [ y , index ] = rosenbrock2 ( x , index , mydata ) + a = mydata.a + y = 100*(x(2)-x(1)^2)^2 + ( a - x(1))^2; +endfunction + +// +// Test with an additional argument +// +mystuff = tlist(["T_MYSTUFF","a"]); +mystuff.a = 12.0; + +// +// Test nearly all features of the optimization "abstract" class +// + +opt = optimbase_new (); +// Check number of variables +opt = optimbase_configure(opt,"-numberofvariables",2); +nbvar = optimbase_cget(opt,"-numberofvariables"); +assert_checkequal ( nbvar , 2 ); +// Check cost function without additional argument +opt = optimbase_configure(opt,"-function",rosenbrock); +[this,f , index ] = optimbase_function ( opt , [0.0 0.0] , 2 ); +assert_checkalmostequal ( f , 1.0 , %eps ); +// Check cost function with additional argument +opt = optimbase_configure(opt,"-function",list(rosenbrock2,mystuff)); +[this,f, index ] = optimbase_function ( opt , [0.0 0.0] , 2 ); +assert_checkalmostequal ( f , 144.0 , %eps ); +// Check initial guess +opt = optimbase_configure(opt,"-x0",[-1.2 1.0]'); +x0 = optimbase_cget(opt,"-x0"); +assert_checkalmostequal ( x0 , [-1.2 1.0]' , %eps); +// Check maxiter +opt = optimbase_configure(opt,"-maxiter",200); +maxiter = optimbase_cget(opt,"-maxiter"); +assert_checkequal ( maxiter , 200); +// Check maxfunevals +opt = optimbase_configure(opt,"-maxfunevals",200); +maxfunevals = optimbase_cget(opt,"-maxfunevals"); +assert_checkequal ( maxfunevals , 200); +// Check tolfunrelative +opt = optimbase_configure(opt,"-tolfunrelative",10*%eps); +tolfunrelative = optimbase_cget(opt,"-tolfunrelative"); +assert_checkequal ( tolfunrelative , 10*%eps ); +// Check tolxrelative +opt = optimbase_configure(opt,"-tolxrelative",10*%eps); +tolxrelative = optimbase_cget(opt,"-tolxrelative"); +assert_checkequal ( tolxrelative , 10*%eps ); +// Check verbose +opt = optimbase_configure(opt,"-verbose",1); +verbose = optimbase_cget(opt,"-verbose"); +assert_checkequal ( verbose , 1 ); +opt = optimbase_configure(opt,"-verbose",0); +// Check verbose termination +opt = optimbase_configure(opt,"-verbosetermination",1); +verbosetermination = optimbase_cget(opt,"-verbosetermination"); +assert_checkequal ( verbosetermination , 1 ); +opt = optimbase_configure(opt,"-verbosetermination",0); +// Check optimum +opt = optimbase_set(opt,"-xopt",[1.0 1.0]); +xopt = optimbase_get(opt,"-xopt"); +assert_checkalmostequal ( xopt , [1.0 1.0], %eps ); +// Check function value at optimum +opt = optimbase_set(opt,"-fopt",1.0); +fopt = optimbase_get(opt,"-fopt"); +assert_checkalmostequal ( fopt , 1.0 , %eps ); +// Check status +opt = optimbase_set(opt,"-status","maxiter"); +status = optimbase_get(opt,"-status"); +assert_checkequal ( status , "maxiter" ); +// Log a message +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_log ( opt , "My interesting message" ); +opt = optimbase_configure(opt,"-verbose",0); +// Log a message relative to the stopping rule +opt = optimbase_configure(opt,"-verbosetermination",1); +opt = optimbase_stoplog ( opt , "My interesting stop message" ); +opt = optimbase_configure(opt,"-verbosetermination",0); +// Check output command without additional argument +opt = optimbase_configure(opt,"-outputcommand",myoutputcmd); +brutedata = optimbase_outstruct ( opt ); +mydata = tlist(["T_MYDATA",... +"x","fval","iteration","funccount",... +"myspecialdata"]); +mydata.x = brutedata.x; +mydata.fval = brutedata.fval; +mydata.iteration = brutedata.iteration; +mydata.funccount = brutedata.funccount; +mydata.myspecialdata = "yahoo !"; +optimbase_outputcmd ( opt , "init" , mydata ); +assert_checkequal ( _OUTPUCMDFLAG_ , 1 ); +// Check output command with additional argument +opt = optimbase_configure(opt,"-outputcommand",list(myoutputcmd2,myobj)); +brutedata = optimbase_outstruct ( opt ); +mydata = tlist(["T_MYDATA",... +"x","fval","iteration","funccount",... +"myspecialdata"]); +mydata.x = brutedata.x; +mydata.fval = brutedata.fval; +mydata.iteration = brutedata.iteration; +mydata.funccount = brutedata.funccount; +mydata.myspecialdata = "yahoo !"; +optimbase_outputcmd ( opt , "init" , mydata ); +assert_checkequal ( _OUTPUCMDFLAG_ , 12. ); +// Check incriter +opt = optimbase_incriter ( opt ); +iter = optimbase_get ( opt , "-iterations"); +assert_checkequal ( iter , 1 ); +// Check history storing with xopt +opt = optimbase_configure ( opt , "-storehistory" , %t ); +opt = optimbase_histset ( opt , 1 , "-xopt" , [1.0 1.0]' ); +x0 = optimbase_histget ( opt , 1 , "-xopt" ); +assert_checkalmostequal ( x0 , [1.0 1.0]', %eps ); +// Check history storing with fopt +opt = optimbase_configure ( opt , "-storehistory" , %t ); +opt = optimbase_histset ( opt , 1 , "-fopt" , 1.0 ); +f0 = optimbase_histget ( opt , 1 , "-fopt" ); +assert_checkalmostequal ( f0 , 1.0, %eps ); +// Check the boundsmin, boundsmax and nbineqconst +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +boundsmin = optimbase_cget ( opt , "-boundsmin" ); +assert_checkequal ( boundsmin , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +boundsmax = optimbase_cget ( opt , "-boundsmax" ); +assert_checkequal ( boundsmax , [5.0 5.0] ); +opt = optimbase_configure ( opt , "-nbineqconst" , 3 ); +nbineqconst = optimbase_cget ( opt , "-nbineqconst" ); +assert_checkequal ( nbineqconst , 3 ); +// Cleanup +opt = optimbase_destroy(opt); + +// +// Test error cases +// +opt = optimbase_new (); +// +// Test wrong initial guess +// +cmd = "optimbase_configure(opt,''-x0'',[-1.2 1.0; -1.0 1.2])"; +assert_checkerror(cmd,"%s: Wrong size for x0 argument: A vector expected.", [], "optimbase_configure"); +// +// Test wrong -tolxmethod +// +cmd = "optimbase_configure(opt,''-tolxmethod'',''foo'')"; +assert_checkerror(cmd,"%s: Expected boolean but for variable %s at input #%d, got %s instead.",[],"optimbase_typeboolean","value",3,"string"); +// +// Test wrong -tolfunmethod +// +cmd = "optimbase_configure(opt,''-tolfunmethod'',''foo'')"; +assert_checkerror(cmd,"%s: Expected boolean but for variable %s at input #%d, got %s instead.",[],"optimbase_typeboolean","value",3,"string"); +opt = optimbase_destroy(opt); + +// +// Test outstruct when no -outputcommand is defined +// +opt = optimbase_new (); +cmd = "data = optimbase_outstruct ( opt )"; +assert_checkerror(cmd,"%s: No output command is defined.",[], "optimbase_outstruct"); +opt = optimbase_destroy(opt); + +// +// Test optimbase_cget with unknown key +// +opt = optimbase_new (); +cmd = "value = optimbase_cget (opt,''foo'')"; +assert_checkerror(cmd,"%s: Unknown key %s",[],"optimbase_cget" , "foo"); +opt = optimbase_destroy(opt); + +// +// Test optimbase_get with unknown key +// +opt = optimbase_new (); +cmd = "value = optimbase_get (opt,''foo'')"; +assert_checkerror(cmd,"%s: Unknown key %s",[],"optimbase_get" , "foo"); +opt = optimbase_destroy(opt); + +// +// Test various errors +// +opt = optimbase_new (); +// Test -historyxopt when there is no history +cmd = "value = optimbase_get (opt,''-historyxopt'')"; +assert_checkerror(cmd,"%s: History disabled ; enable -storehistory option.",[],"optimbase_get"); +// Test -historyfopt when there is no history +cmd = "value = optimbase_get (opt,''-historyfopt'')"; +assert_checkerror(cmd,"%s: History disabled ; enable -storehistory option.",[],"optimbase_get"); +// Test optimbase_function when there is no function +cmd = "[ opt , f , index ] = optimbase_function ( opt , [] , %t )"; +assert_checkerror(cmd,"%s: Empty function (use -function option).",[],"optimbase_function"); +// Test optimbase_histget ( this , iter , key ) when there is no history +cmd = "optimbase_histget ( opt , 1 , ''-xopt'' )"; +assert_checkerror(cmd,"%s: History disabled ; turn on -storehistory option.",[],"optimbase_histget"); +// Test optimbase_histget ( this , iter , key ) with negative iteration +opt = optimbase_configure ( opt , "-storehistory" , %t ); +cmd = "optimbase_histget ( opt , -1 , ''-xopt'' )"; +assert_checkerror(cmd,"%s: Negative iteration index %d is not allowed.",[],"optimbase_histget",-1); +// Cleanup +opt = optimbase_destroy(opt); + +// +// Test the printing system +// +opt = optimbase_new (); +string(opt) +opt +opt = optimbase_destroy(opt); + diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_proj2bnds.dia.ref b/modules/optimization/tests/unit_tests/optimbase/optimbase_proj2bnds.dia.ref new file mode 100755 index 000000000..c36bccb2c --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_proj2bnds.dia.ref @@ -0,0 +1,37 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Test proj2bnds method +// +// +// Test with bounds +// +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +[ opt , p ] = optimbase_proj2bnds ( opt , [0.0 0.0] ); +assert_checkequal ( p , [0.0 0.0] ); +[ opt , p ] = optimbase_proj2bnds ( opt , [-6.0 6.0] ); +Projecting p(1) = -6 on min bound -5 +Projecting p(2) = 6 on max bound 5 +assert_checkequal ( p , [-5.0 5.0] ); +opt = optimbase_destroy(opt); +// +// Test without bounds +// +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +[ opt , p ] = optimbase_proj2bnds ( opt , [0.0 0.0] ); +assert_checkequal ( p , [0.0 0.0] ); +opt = optimbase_destroy(opt); diff --git a/modules/optimization/tests/unit_tests/optimbase/optimbase_proj2bnds.tst b/modules/optimization/tests/unit_tests/optimbase/optimbase_proj2bnds.tst new file mode 100755 index 000000000..d4ddf9245 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimbase/optimbase_proj2bnds.tst @@ -0,0 +1,40 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + + +// +// Test proj2bnds method +// +// +// Test with bounds +// +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] ); +opt = optimbase_configure ( opt , "-boundsmax" , [5.0 5.0] ); +[ opt , p ] = optimbase_proj2bnds ( opt , [0.0 0.0] ); +assert_checkequal ( p , [0.0 0.0] ); +[ opt , p ] = optimbase_proj2bnds ( opt , [-6.0 6.0] ); +assert_checkequal ( p , [-5.0 5.0] ); +opt = optimbase_destroy(opt); +// +// Test without bounds +// +opt = optimbase_new (); +opt = optimbase_configure(opt,"-numberofvariables",2); +opt = optimbase_configure(opt,"-verbose",1); +[ opt , p ] = optimbase_proj2bnds ( opt , [0.0 0.0] ); +assert_checkequal ( p , [0.0 0.0] ); +opt = optimbase_destroy(opt); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_axes.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_axes.dia.ref new file mode 100755 index 000000000..6bb278a02 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_axes.dia.ref @@ -0,0 +1,94 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test with x0 only +// +s1 = optimsimplex_new ( "axes" , [-1.2 1.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 0. -1.2 1. + 0. -0.2 1. + 0. -1.2 2. +]; +assert_checkalmostequal ( computed , expected , 10*%eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with function only +// +s1 = optimsimplex_new ( "axes" , [-1.2 1.0] , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 24.2 -1.2 1. + 93.6 -0.2 1. + 36.2 -1.2 2. +]; +assert_checkalmostequal ( computed , expected , 10*%eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with a scalar length +// +s1 = optimsimplex_new ( "axes" , [-1.2 1.0] , rosenbrock , 2.0 ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 24.2 -1.2 1. + 13. 0.8 1. + 248.2 -1.2 3. +]; +assert_checkalmostequal ( computed , expected , 10*%eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with a vector length +// +s1 = optimsimplex_new ( "axes" , [-1.2 1.0] , rosenbrock , [1.0 2.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ +24.2 -1.2 1. +93.6 -0.2 1. +248.2 -1.2 3. +]; +assert_checkalmostequal ( computed , expected , 10*%eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with a scalar length and an additional object +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +[ s1 , myobj ] = optimsimplex_new ( "axes" , [-1.2 1.0] , mycostf , 1.0, myobj ); +computed = optimsimplex_getall ( s1 ); +expected = [ +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +assert_checkalmostequal ( computed , expected , 10*%eps ); +assert_checkequal ( myobj.nb , 3 ); +nbve = optimsimplex_getnbve ( s1 ); +assert_checkequal ( nbve , 3 ); +s1 = optimsimplex_destroy ( s1 ); +// Test with a unconsistent x0 and len +cmd = "newobj = optimsimplex_new ( ""axes"" , [1 2] , rosenbrock , [1 2 3] )"; +instr = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror(cmd, instr, [],"optimsimplex_new", 4, 1, 2); +// Test with a unconsistent x0 +cmd = "newobj = optimsimplex_new ( ""axes"" , [1 2;3 4] , rosenbrock )"; +instr = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror(cmd,instr,[],"optimsimplex_new",2,1,2); +// Test with a unconsistent len +cmd = "newobj = optimsimplex_new ( ""axes"" , [1 2] , rosenbrock , ""foo"" )"; +instr = "%s: Expected real variable for variable %s at input #%d, but got %s instead."; +assert_checkerror(cmd,instr,[],"assert_typereal", "len" , 1 , "string" ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_axes.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_axes.tst new file mode 100755 index 000000000..60d74bf8e --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_axes.tst @@ -0,0 +1,104 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test with x0 only +// +s1 = optimsimplex_new ( "axes" , [-1.2 1.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ +0. -1.2 1. +0. -0.2 1. +0. -1.2 2. +]; +assert_checkalmostequal ( computed , expected , 10*%eps ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Test with function only +// +s1 = optimsimplex_new ( "axes" , [-1.2 1.0] , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +expected = [ +24.2 -1.2 1. +93.6 -0.2 1. +36.2 -1.2 2. +]; +assert_checkalmostequal ( computed , expected , 10*%eps ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Test with a scalar length +// +s1 = optimsimplex_new ( "axes" , [-1.2 1.0] , rosenbrock , 2.0 ); +computed = optimsimplex_getall ( s1 ); +expected = [ +24.2 -1.2 1. +13. 0.8 1. +248.2 -1.2 3. +]; +assert_checkalmostequal ( computed , expected , 10*%eps ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Test with a vector length +// +s1 = optimsimplex_new ( "axes" , [-1.2 1.0] , rosenbrock , [1.0 2.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ +24.2 -1.2 1. +93.6 -0.2 1. +248.2 -1.2 3. +]; +assert_checkalmostequal ( computed , expected , 10*%eps ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Test with a scalar length and an additional object +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +[ s1 , myobj ] = optimsimplex_new ( "axes" , [-1.2 1.0] , mycostf , 1.0, myobj ); +computed = optimsimplex_getall ( s1 ); +expected = [ +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +assert_checkalmostequal ( computed , expected , 10*%eps ); +assert_checkequal ( myobj.nb , 3 ); +nbve = optimsimplex_getnbve ( s1 ); +assert_checkequal ( nbve , 3 ); +s1 = optimsimplex_destroy ( s1 ); + +// Test with a unconsistent x0 and len +cmd = "newobj = optimsimplex_new ( ""axes"" , [1 2] , rosenbrock , [1 2 3] )"; +instr = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror(cmd, instr, [],"optimsimplex_new", 4, 1, 2); + +// Test with a unconsistent x0 +cmd = "newobj = optimsimplex_new ( ""axes"" , [1 2;3 4] , rosenbrock )"; +instr = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror(cmd,instr,[],"optimsimplex_new",2,1,2); + +// Test with a unconsistent len +cmd = "newobj = optimsimplex_new ( ""axes"" , [1 2] , rosenbrock , ""foo"" )"; +instr = "%s: Expected real variable for variable %s at input #%d, but got %s instead."; +assert_checkerror(cmd,instr,[],"assert_typereal", "len" , 1 , "string" ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_center.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_center.dia.ref new file mode 100755 index 000000000..3107295f2 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_center.dia.ref @@ -0,0 +1,25 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Check behaviour with default settings. +// +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +coords = [... + 0. 0. + 3. 0. + 0. 6. +]; +s1 = optimsimplex_new ( coords ); +sicenter = optimsimplex_center ( s1 ); +assert_checkalmostequal ( sicenter , [1.0 2.0], %eps ); +s1 = optimsimplex_destroy(s1); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_center.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_center.tst new file mode 100755 index 000000000..5a793ac87 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_center.tst @@ -0,0 +1,31 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// +// Check behaviour with default settings. +// + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +coords = [... + 0. 0. + 3. 0. + 0. 6. +]; +s1 = optimsimplex_new ( coords ); +sicenter = optimsimplex_center ( s1 ); +assert_checkalmostequal ( sicenter , [1.0 2.0], %eps ); +s1 = optimsimplex_destroy(s1); + + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_check.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_check.dia.ref new file mode 100755 index 000000000..c601d25d7 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_check.dia.ref @@ -0,0 +1,169 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test optimsimplex_check. +// +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,3); +newsimplex = [ + 1. 2. + 3. 4. + 5. 6. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0]' ); +optimsimplex_check ( s1 ); +s1 = optimsimplex_destroy(s1); +// +// Test with empty simplex +// +s1 = optimsimplex_new (); +optimsimplex_check ( s1 ); +s1 = optimsimplex_destroy(s1); +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +newsimplex = [ + 1. 2. + 3. 4. + 5. 6. + 7. 8. + 9. 10. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0 7.0]' ); +optimsimplex_check ( s1 ); +s1 = optimsimplex_destroy(s1); +// +// Test error case : number of function values does not match number of vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setnbve(s1,5); +cmd = "s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0]'' );"; +assert_checkerror ( cmd , "%s: The number of rows in the function value array is %d, while expected %d.",[], "optimsimplex_setallfv" , 4 , 5); +s1 = optimsimplex_destroy(s1); +// +// Test error case : number of columns does not match number of vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +newsimplex = [ + 1. 2. + 3. 4. + 5. 6. + 7. 8. +]; +cmd = "s1 = optimsimplex_setallx ( s1 , newsimplex );"; +assert_checkerror(cmd,"%s: The number of rows in x is %d, while expected %d.", [],"optimsimplex_setallx" , 4 , 5 ); +s1 = optimsimplex_destroy(s1); +// +// Test error case : number of columns does not match dimension +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +newsimplex = [ +1.0 +3.0 +5.0 +7.0 +8.0 +]; +cmd = "s1 = optimsimplex_setallx ( s1 , newsimplex );"; +assert_checkerror(cmd,"%s: The number of columns in x is %d, while expected %d.", [], "optimsimplex_setallx" , 1 , 2); +s1 = optimsimplex_destroy(s1); +// +// Test error case : dimension in the x array does not match the value of n +// because of unconsistent configurations +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +newsimplex = [ + 1. 1. + 3. 3. + 5. 5. + 7. 7. + 8. 8. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setnbve(s1,6); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0 7.0 8.0]' ); +cmd = "optimsimplex_check ( s1 );"; +assert_checkerror(cmd,"%s: Number of rows of x is %d, which is different from number of vertices = %d.",[],"optimsimplex_check" , 5 , 6); +s1 = optimsimplex_destroy(s1); +// +// Test error case : number of vertices in the fv array does not match nbve +// because of unconsistent configurations +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setnbve(s1,6); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0 7.0 8.0]' ); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +newsimplex = [ + 1. 1. + 3. 3. + 5. 5. + 7. 7. + 8. 8. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +cmd = "optimsimplex_check ( s1 );"; +assert_checkerror(cmd,"%s: Number of rows of fv is %d, which is different from number of vertices = %d.",[],"optimsimplex_check" , 6 , 5); +s1 = optimsimplex_destroy(s1); +// +// Test error case : unconsistent number of columns in the fv array +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setnbve(s1,6); +fv = [ +3.0 3.0 +4.0 4.0 +5.0 5.0 +6.0 6.0 +7.0 7.0 +8.0 8.0 +]; +cmd = "s1 = optimsimplex_setallfv ( s1 , fv );"; +assert_checkerror(cmd,"%s: The number of columns in the function value array is %d, while expected 1.", [],"optimsimplex_setallfv" , 2); +s1 = optimsimplex_destroy(s1); +// +// Test error case : number of vertices in the x array does not match nbve +// because of unconsistent configurations +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0 7.0]' ); +newsimplex = [ + 1. 1. + 3. 3. + 5. 5. + 7. 7. + 8. 8. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setn(s1,3); +cmd = "optimsimplex_check ( s1 );"; +assert_checkerror(cmd,"%s: Number of columns of x is %d, which is different from dimension = %d.",[],"optimsimplex_check" , 2 , 3); +s1 = optimsimplex_destroy(s1); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_check.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_check.tst new file mode 100755 index 000000000..526772d71 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_check.tst @@ -0,0 +1,174 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test optimsimplex_check. +// +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,3); +newsimplex = [ + 1. 2. + 3. 4. + 5. 6. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0]' ); +optimsimplex_check ( s1 ); +s1 = optimsimplex_destroy(s1); +// +// Test with empty simplex +// +s1 = optimsimplex_new (); +optimsimplex_check ( s1 ); +s1 = optimsimplex_destroy(s1); +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +newsimplex = [ + 1. 2. + 3. 4. + 5. 6. + 7. 8. + 9. 10. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0 7.0]' ); +optimsimplex_check ( s1 ); +s1 = optimsimplex_destroy(s1); + +// +// Test error case : number of function values does not match number of vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setnbve(s1,5); +cmd = "s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0]'' );"; +assert_checkerror ( cmd , "%s: The number of rows in the function value array is %d, while expected %d.",[], "optimsimplex_setallfv" , 4 , 5); +s1 = optimsimplex_destroy(s1); +// +// Test error case : number of columns does not match number of vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +newsimplex = [ + 1. 2. + 3. 4. + 5. 6. + 7. 8. +]; +cmd = "s1 = optimsimplex_setallx ( s1 , newsimplex );"; +assert_checkerror(cmd,"%s: The number of rows in x is %d, while expected %d.", [],"optimsimplex_setallx" , 4 , 5 ); +s1 = optimsimplex_destroy(s1); +// +// Test error case : number of columns does not match dimension +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +newsimplex = [ +1.0 +3.0 +5.0 +7.0 +8.0 +]; +cmd = "s1 = optimsimplex_setallx ( s1 , newsimplex );"; +assert_checkerror(cmd,"%s: The number of columns in x is %d, while expected %d.", [], "optimsimplex_setallx" , 1 , 2); +s1 = optimsimplex_destroy(s1); +// +// Test error case : dimension in the x array does not match the value of n +// because of unconsistent configurations +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +newsimplex = [ + 1. 1. + 3. 3. + 5. 5. + 7. 7. + 8. 8. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setnbve(s1,6); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0 7.0 8.0]' ); +cmd = "optimsimplex_check ( s1 );"; +assert_checkerror(cmd,"%s: Number of rows of x is %d, which is different from number of vertices = %d.",[],"optimsimplex_check" , 5 , 6); +s1 = optimsimplex_destroy(s1); +// +// Test error case : number of vertices in the fv array does not match nbve +// because of unconsistent configurations +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setnbve(s1,6); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0 7.0 8.0]' ); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +newsimplex = [ + 1. 1. + 3. 3. + 5. 5. + 7. 7. + 8. 8. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +cmd = "optimsimplex_check ( s1 );"; +assert_checkerror(cmd,"%s: Number of rows of fv is %d, which is different from number of vertices = %d.",[],"optimsimplex_check" , 6 , 5); +s1 = optimsimplex_destroy(s1); +// +// Test error case : unconsistent number of columns in the fv array +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setnbve(s1,6); +fv = [ +3.0 3.0 +4.0 4.0 +5.0 5.0 +6.0 6.0 +7.0 7.0 +8.0 8.0 +]; +cmd = "s1 = optimsimplex_setallfv ( s1 , fv );"; +assert_checkerror(cmd,"%s: The number of columns in the function value array is %d, while expected 1.", [],"optimsimplex_setallfv" , 2); +s1 = optimsimplex_destroy(s1); +// +// Test error case : number of vertices in the x array does not match nbve +// because of unconsistent configurations +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0 7.0]' ); +newsimplex = [ + 1. 1. + 3. 3. + 5. 5. + 7. 7. + 8. 8. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setn(s1,3); +cmd = "optimsimplex_check ( s1 );"; +assert_checkerror(cmd,"%s: Number of columns of x is %d, which is different from dimension = %d.",[],"optimsimplex_check" , 2 , 3); +s1 = optimsimplex_destroy(s1); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_computefv.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_computefv.dia.ref new file mode 100755 index 000000000..7387fa853 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_computefv.dia.ref @@ -0,0 +1,87 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test optimsimplex_computefv +// +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +simplex = [ +0.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 1.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +s1 = optimsimplex_computefv ( s1 , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is re-computed, as expected. +expected = [ +1. 0. 0. +100. 1. 0. +101. 0. 1. +]; +assert_checkequal ( computed , expected ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with an additional argument +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +s1 = optimsimplex_new (); +simplex = [ +0.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 1.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +[ s1 , myobj ] = optimsimplex_computefv ( s1 , mycostf , myobj ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is re-computed, as expected. +expected = [ + 1. 0. 0. + 100. 1. 0. + 101. 0. 1. +]; +assert_checkequal ( computed , expected ); +assert_checkequal ( myobj.nb , 3 ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with 5 vertices +// +s1 = optimsimplex_new (); +simplex = [ +0.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 1.0 +12.0 1.0 1.0 +12.0 2.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +s1 = optimsimplex_computefv ( s1 , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is re-computed, as expected. +expected = [ +1. 0. 0. +100. 1. 0. +101. 0. 1. +0. 1. 1. +401. 2. 2. +]; +assert_checkequal ( computed , expected ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_computefv.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_computefv.tst new file mode 100755 index 000000000..8e6221fda --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_computefv.tst @@ -0,0 +1,93 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test optimsimplex_computefv +// +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +simplex = [ +0.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 1.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +s1 = optimsimplex_computefv ( s1 , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is re-computed, as expected. +expected = [ +1. 0. 0. +100. 1. 0. +101. 0. 1. +]; +assert_checkequal ( computed , expected ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with an additional argument +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +s1 = optimsimplex_new (); +simplex = [ +0.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 1.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +[ s1 , myobj ] = optimsimplex_computefv ( s1 , mycostf , myobj ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is re-computed, as expected. +expected = [ + 1. 0. 0. + 100. 1. 0. + 101. 0. 1. +]; +assert_checkequal ( computed , expected ); +assert_checkequal ( myobj.nb , 3 ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with 5 vertices +// +s1 = optimsimplex_new (); +simplex = [ +0.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 1.0 +12.0 1.0 1.0 +12.0 2.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +s1 = optimsimplex_computefv ( s1 , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is re-computed, as expected. +expected = [ +1. 0. 0. +100. 1. 0. +101. 0. 1. +0. 1. 1. +401. 2. 2. +]; +assert_checkequal ( computed , expected ); +s1 = optimsimplex_destroy ( s1 ); + + + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafv.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafv.dia.ref new file mode 100755 index 000000000..3df4ce61c --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafv.dia.ref @@ -0,0 +1,41 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Test optimsimplex_deltafv +// +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +df = optimsimplex_deltafv ( s1 ); +assert_checkalmostequal ( df , [3.0 6.0]' , %eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with 5 vertices +// +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +9. -3.0 2.0 +11. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +df = optimsimplex_deltafv ( s1 ); +assert_checkalmostequal ( df , [3.0 6.0 8.0 10.0]' , %eps ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafv.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafv.tst new file mode 100755 index 000000000..786709897 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafv.tst @@ -0,0 +1,45 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// +// Test optimsimplex_deltafv +// + +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +df = optimsimplex_deltafv ( s1 ); +assert_checkalmostequal ( df , [3.0 6.0]' , %eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with 5 vertices +// +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +9. -3.0 2.0 +11. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +df = optimsimplex_deltafv ( s1 ); +assert_checkalmostequal ( df , [3.0 6.0 8.0 10.0]' , %eps ); +s1 = optimsimplex_destroy ( s1 ); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafvmax.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafvmax.dia.ref new file mode 100755 index 000000000..de6319449 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafvmax.dia.ref @@ -0,0 +1,41 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// optimsimplex_deltafvmax +// +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +dfm = optimsimplex_deltafvmax ( s1 ); +assert_checkalmostequal ( dfm , 6.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with 5 vertices +// +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +9. -3.0 2.0 +11. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +dfm = optimsimplex_deltafvmax ( s1 ); +assert_checkalmostequal ( dfm , 10.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafvmax.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafvmax.tst new file mode 100755 index 000000000..94b1b6144 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_deltafvmax.tst @@ -0,0 +1,45 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// +// optimsimplex_deltafvmax +// + +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +dfm = optimsimplex_deltafvmax ( s1 ); +assert_checkalmostequal ( dfm , 6.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with 5 vertices +// +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +9. -3.0 2.0 +11. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +dfm = optimsimplex_deltafvmax ( s1 ); +assert_checkalmostequal ( dfm , 10.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_dirmat.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_dirmat.dia.ref new file mode 100755 index 000000000..845f7f0dd --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_dirmat.dia.ref @@ -0,0 +1,38 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// Test optimsimplex_dirmat +// Test with 3 vertices +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +m = optimsimplex_dirmat ( s1 ); +assert_checkalmostequal ( m , [1. -1.;2. 1.], %eps ); +s1 = optimsimplex_destroy ( s1 ); +// Test with 5 vertices +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +9. -5.0 3.0 +11. -7.0 4.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +m = optimsimplex_dirmat ( s1 ); +assert_checkalmostequal ( m , [ +1. -1. -3. -5.0 +2. 1. 2.0 3.0 +], %eps ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_dirmat.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_dirmat.tst new file mode 100755 index 000000000..ac5132329 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_dirmat.tst @@ -0,0 +1,43 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// Test optimsimplex_dirmat + +// Test with 3 vertices +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +m = optimsimplex_dirmat ( s1 ); +assert_checkalmostequal ( m , [1. -1.;2. 1.], %eps ); +s1 = optimsimplex_destroy ( s1 ); + +// Test with 5 vertices +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +9. -5.0 3.0 +11. -7.0 4.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +m = optimsimplex_dirmat ( s1 ); +assert_checkalmostequal ( m , [ +1. -1. -3. -5.0 +2. 1. 2.0 3.0 +], %eps ); +s1 = optimsimplex_destroy ( s1 ); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvmean.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvmean.dia.ref new file mode 100755 index 000000000..9762cca2f --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvmean.dia.ref @@ -0,0 +1,35 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// Test optimsimplex_fvmean +// Test with 3 vertices +s1 = optimsimplex_new (); +simplex = [ +24. -2.0 1.0 +93. -1.0 3.0 +36. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +m = optimsimplex_fvmean ( s1 ); +assert_checkalmostequal ( m , 51.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); +// Test with 5 vertices +s1 = optimsimplex_new (); +simplex = [ +24. -2.0 1.0 +93. -1.0 3.0 +36. -3.0 2.0 +37. -3.0 2.0 +38. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +m = optimsimplex_fvmean ( s1 ); +assert_checkalmostequal ( m , 45.6 , %eps ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvmean.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvmean.tst new file mode 100755 index 000000000..e34b537be --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvmean.tst @@ -0,0 +1,40 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// Test optimsimplex_fvmean + +// Test with 3 vertices +s1 = optimsimplex_new (); +simplex = [ +24. -2.0 1.0 +93. -1.0 3.0 +36. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +m = optimsimplex_fvmean ( s1 ); +assert_checkalmostequal ( m , 51.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); + +// Test with 5 vertices +s1 = optimsimplex_new (); +simplex = [ +24. -2.0 1.0 +93. -1.0 3.0 +36. -3.0 2.0 +37. -3.0 2.0 +38. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +m = optimsimplex_fvmean ( s1 ); +assert_checkalmostequal ( m , 45.6 , %eps ); +s1 = optimsimplex_destroy ( s1 ); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvstdev.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvstdev.dia.ref new file mode 100755 index 000000000..1f8eb06c9 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvstdev.dia.ref @@ -0,0 +1,34 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// Test optimsimplex_fvstdev with 3 vertices +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +sd = optimsimplex_fvstdev ( s1 ); +assert_checkalmostequal ( sd , 3.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); +// Test optimsimplex_fvstdev with 5 vertices +s1 = optimsimplex_new (); +simplex = [ +4. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +10. -3.0 2.0 +10. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +sd = optimsimplex_fvstdev ( s1 ); +assert_checkalmostequal ( sd , 3.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvstdev.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvstdev.tst new file mode 100755 index 000000000..2c6c1652f --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvstdev.tst @@ -0,0 +1,38 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// Test optimsimplex_fvstdev with 3 vertices +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +sd = optimsimplex_fvstdev ( s1 ); +assert_checkalmostequal ( sd , 3.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); + +// Test optimsimplex_fvstdev with 5 vertices +s1 = optimsimplex_new (); +simplex = [ +4. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +10. -3.0 2.0 +10. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +sd = optimsimplex_fvstdev ( s1 ); +assert_checkalmostequal ( sd , 3.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvvariance.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvvariance.dia.ref new file mode 100755 index 000000000..db1d36fb7 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvvariance.dia.ref @@ -0,0 +1,23 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +computed = optimsimplex_fvvariance ( s1 ); +assert_checkalmostequal ( computed , 9.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvvariance.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvvariance.tst new file mode 100755 index 000000000..0d24e7ea6 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_fvvariance.tst @@ -0,0 +1,27 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +computed = optimsimplex_fvvariance ( s1 ); +assert_checkalmostequal ( computed , 9.0 , %eps ); +s1 = optimsimplex_destroy ( s1 ); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_getset.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_getset.dia.ref new file mode 100755 index 000000000..40cf98193 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_getset.dia.ref @@ -0,0 +1,256 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test optimsimplex_new, optimsimplex_destroy, optimsimplex_setn, optimsimplex_setx, optimsimplex_setfv, +// optimsimplex_getn, optimsimplex_getx, optimsimplex_getfv +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,3); +s1 = optimsimplex_setx(s1,1,[0.0 0.0]); +s1 = optimsimplex_setfv(s1,1,12.0); +s1 = optimsimplex_setx(s1,2,[1.0 0.0]); +s1 = optimsimplex_setfv(s1,2,13.0); +s1 = optimsimplex_setx(s1,3,[0.0 2.0]); +s1 = optimsimplex_setfv(s1,3,14.0); +// Now check the data +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getx( s1 , 1); +assert_checkequal ( computed , [0.0 0.0] ); +computed = optimsimplex_getx( s1 , 2); +assert_checkequal ( computed , [1.0 0.0] ); +computed = optimsimplex_getx( s1 , 3); +assert_checkequal ( computed , [0.0 2.0] ); +computed = optimsimplex_getfv( s1 , 1); +assert_checkequal ( computed , 12.0 ); +computed = optimsimplex_getfv( s1 , 2); +assert_checkequal ( computed , 13.0 ); +computed = optimsimplex_getfv( s1 , 3); +assert_checkequal ( computed , 14.0 ); +// Print the simplex +disp ( s1 ); + +Optim Simplex Object: +===================== +nbve: 3 +n: 2 +x: 3-by-2 matrix +fv: 3-by-1 matrix +// We are done ! +s1 = optimsimplex_destroy(s1); +// +// Test optimsimplex_setallx, optimsimplex_setallfv, optimsimplex_getallx, optimsimplex_getallfv. +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,3); +s1 = optimsimplex_setx(s1,1,[0.0 0.0]); +s1 = optimsimplex_setfv(s1,1,12.0); +s1 = optimsimplex_setx(s1,2,[1.0 0.0]); +s1 = optimsimplex_setfv(s1,2,13.0); +s1 = optimsimplex_setx(s1,3,[0.0 2.0]); +s1 = optimsimplex_setfv(s1,3,14.0); +// Now check the data +computed = optimsimplex_getallx (s1); +expected = [ +0.0 0.0 +1.0 0.0 +0.0 2.0]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getallfv (s1); +assert_checkequal ( computed , [12.0 13.0 14.0]' ); +// setallx, setallfv +newsimplex = [ +1.0 2.0 +3.0 4.0 +5.0 6.0]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +computed = optimsimplex_getallx (s1); +assert_checkequal ( computed , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0]' ); +computed = optimsimplex_getallfv (s1); +assert_checkequal ( computed , [3.0 4.0 5.0]' ); +s1 = optimsimplex_destroy(s1); +// +// Test optimsimplex_setve, optimsimplex_getve +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn ( s1 , 2 ); +s1 = optimsimplex_setnbve(s1,3); +s1 = optimsimplex_setve ( s1 , 1 , 13.0 , [0.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 2 , 14.0 , [1.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 3 , 15.0 , [0.0 2.0] ); +computed = optimsimplex_getallx ( s1 ); +expected = [ +0.0 0.0 +1.0 0.0 +0.0 2.0]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getallfv ( s1 ); +assert_checkequal ( computed , [13.0 14.0 15.0]' ); +ve1 = optimsimplex_getve ( s1 , 1 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [0.0 0.0] ); +assert_checkequal ( ve1.fv , 13.0 ); +ve2 = optimsimplex_getve ( s1 , 2 ); +assert_checkequal ( ve2.n , 2 ); +assert_checkequal ( ve2.x , [1.0 0.0] ); +assert_checkequal ( ve2.fv , 14.0 ); +ve3 = optimsimplex_getve ( s1 , 3 ); +assert_checkequal ( ve3.n , 2 ); +assert_checkequal ( ve3.x , [0.0 2.0] ); +assert_checkequal ( ve3.fv , 15.0 ); +s1 = optimsimplex_destroy(s1); +// +// optimsimplex_getall, optimsimplex_setall +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn ( s1 , 2 ); +s1 = optimsimplex_setnbve(s1,3); +s1 = optimsimplex_setve ( s1 , 1 , 13.0 , [0.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 2 , 14.0 , [1.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 3 , 15.0 , [0.0 2.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 13. 0. 0. + 14. 1. 0. + 15. 0. 2. +]; +assert_checkequal ( computed , expected ); +simplex = [ +10.0 1.0 2.0 +11.0 3.0 4.0 +12.0 5.0 6.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +ve1 = optimsimplex_getve ( s1 , 1 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [1.0 2.0] ); +assert_checkequal ( ve1.fv , 10.0 ); +ve1 = optimsimplex_getve ( s1 , 2 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [3.0 4.0] ); +assert_checkequal ( ve1.fv , 11.0 ); +ve1 = optimsimplex_getve ( s1 , 3 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [5.0 6.0] ); +assert_checkequal ( ve1.fv , 12.0 ); +s1 = optimsimplex_destroy(s1); +// +// Test setall with wrong simplex : +// there are 3 parameters => 4 columns +// but there is only 3 vertices, while the minimum would be 4. +// +s1 = optimsimplex_new (); +simplex = [ +10.0 1.0 2.0 12.0 +11.0 3.0 4.0 12.0 +12.0 5.0 6.0 12.0 +]; +cmd = "s1 = optimsimplex_setall ( s1 , simplex );"; +assert_checkerror ( cmd , "%s: The number of vertices (i.e. the number of rows) is %d which is smaller than the number of columns %d (i.e. n+1)." , [], "optimsimplex_setall",3,4); +s1 = optimsimplex_destroy(s1); +// +// optimsimplex_getall, optimsimplex_setall with 5 vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn ( s1 , 2 ); +s1 = optimsimplex_setnbve(s1, 5 ); +s1 = optimsimplex_setve ( s1 , 1 , 13.0 , [0.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 2 , 14.0 , [1.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 3 , 15.0 , [0.0 2.0] ); +s1 = optimsimplex_setve ( s1 , 4 , 16.0 , [1.0 3.0] ); +s1 = optimsimplex_setve ( s1 , 5 , 17.0 , [2.0 4.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 13. 0. 0. + 14. 1. 0. + 15. 0. 2. + 16. 1. 3. + 17. 2. 4. +]; +assert_checkequal ( computed , expected ); +simplex = [ +10.0 1.0 2.0 +11.0 3.0 4.0 +12.0 5.0 6.0 +13.0 6.0 7.0 +14.0 7.0 8.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +ve1 = optimsimplex_getve ( s1 , 1 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [1.0 2.0] ); +assert_checkequal ( ve1.fv , 10.0 ); +ve1 = optimsimplex_getve ( s1 , 2 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [3.0 4.0] ); +assert_checkequal ( ve1.fv , 11.0 ); +ve1 = optimsimplex_getve ( s1 , 3 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [5.0 6.0] ); +assert_checkequal ( ve1.fv , 12.0 ); +ve1 = optimsimplex_getve ( s1 , 4 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [6.0 7.0] ); +assert_checkequal ( ve1.fv , 13.0 ); +ve1 = optimsimplex_getve ( s1 , 5 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [7.0 8.0] ); +assert_checkequal ( ve1.fv , 14.0 ); +s1 = optimsimplex_destroy(s1); +// +// Test optimsimplex_setallx, optimsimplex_setallfv, optimsimplex_getallx, optimsimplex_getallfv with 5 vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +s1 = optimsimplex_setx ( s1 , 1 , [0.0 0.0]); +s1 = optimsimplex_setfv ( s1 , 1 , 12.0); +s1 = optimsimplex_setx ( s1 , 2 , [1.0 0.0]); +s1 = optimsimplex_setfv ( s1 , 2 , 13.0); +s1 = optimsimplex_setx ( s1 , 3 , [0.0 2.0]); +s1 = optimsimplex_setfv ( s1 , 3 , 14.0); +s1 = optimsimplex_setx ( s1 , 4 , [1.0 3.0]); +s1 = optimsimplex_setfv ( s1 , 4 , 15.0); +s1 = optimsimplex_setx ( s1 , 5 , [2.0 4.0]); +s1 = optimsimplex_setfv ( s1 , 5 , 16.0); +// Now check the data +computed = optimsimplex_getallx (s1); +expected = [ + 0. 0. + 1. 0. + 0. 2. + 1. 3. + 2. 4. +]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getallfv (s1); +assert_checkequal ( computed , [12.0 13.0 14.0 15.0 16.0]' ); +// setallx, setallfv +newsimplex = [ + 1. 2. + 3. 4. + 5. 6. + 7. 8. + 9. 10. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +computed = optimsimplex_getallx (s1); +assert_checkequal ( computed , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0 7.0]' ); +computed = optimsimplex_getallfv (s1); +assert_checkequal ( computed , [3.0 4.0 5.0 6.0 7.0]' ); +s1 = optimsimplex_destroy(s1); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_getset.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_getset.tst new file mode 100755 index 000000000..a6f39ab12 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_getset.tst @@ -0,0 +1,256 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test optimsimplex_new, optimsimplex_destroy, optimsimplex_setn, optimsimplex_setx, optimsimplex_setfv, +// optimsimplex_getn, optimsimplex_getx, optimsimplex_getfv +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,3); +s1 = optimsimplex_setx(s1,1,[0.0 0.0]); +s1 = optimsimplex_setfv(s1,1,12.0); +s1 = optimsimplex_setx(s1,2,[1.0 0.0]); +s1 = optimsimplex_setfv(s1,2,13.0); +s1 = optimsimplex_setx(s1,3,[0.0 2.0]); +s1 = optimsimplex_setfv(s1,3,14.0); +// Now check the data +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getx( s1 , 1); +assert_checkequal ( computed , [0.0 0.0] ); +computed = optimsimplex_getx( s1 , 2); +assert_checkequal ( computed , [1.0 0.0] ); +computed = optimsimplex_getx( s1 , 3); +assert_checkequal ( computed , [0.0 2.0] ); +computed = optimsimplex_getfv( s1 , 1); +assert_checkequal ( computed , 12.0 ); +computed = optimsimplex_getfv( s1 , 2); +assert_checkequal ( computed , 13.0 ); +computed = optimsimplex_getfv( s1 , 3); +assert_checkequal ( computed , 14.0 ); +// Print the simplex +disp ( s1 ); +// We are done ! +s1 = optimsimplex_destroy(s1); + +// +// Test optimsimplex_setallx, optimsimplex_setallfv, optimsimplex_getallx, optimsimplex_getallfv. +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,3); +s1 = optimsimplex_setx(s1,1,[0.0 0.0]); +s1 = optimsimplex_setfv(s1,1,12.0); +s1 = optimsimplex_setx(s1,2,[1.0 0.0]); +s1 = optimsimplex_setfv(s1,2,13.0); +s1 = optimsimplex_setx(s1,3,[0.0 2.0]); +s1 = optimsimplex_setfv(s1,3,14.0); +// Now check the data +computed = optimsimplex_getallx (s1); +expected = [ +0.0 0.0 +1.0 0.0 +0.0 2.0]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getallfv (s1); +assert_checkequal ( computed , [12.0 13.0 14.0]' ); +// setallx, setallfv +newsimplex = [ +1.0 2.0 +3.0 4.0 +5.0 6.0]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +computed = optimsimplex_getallx (s1); +assert_checkequal ( computed , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0]' ); +computed = optimsimplex_getallfv (s1); +assert_checkequal ( computed , [3.0 4.0 5.0]' ); +s1 = optimsimplex_destroy(s1); + +// +// Test optimsimplex_setve, optimsimplex_getve +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn ( s1 , 2 ); +s1 = optimsimplex_setnbve(s1,3); +s1 = optimsimplex_setve ( s1 , 1 , 13.0 , [0.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 2 , 14.0 , [1.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 3 , 15.0 , [0.0 2.0] ); +computed = optimsimplex_getallx ( s1 ); +expected = [ +0.0 0.0 +1.0 0.0 +0.0 2.0]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getallfv ( s1 ); +assert_checkequal ( computed , [13.0 14.0 15.0]' ); +ve1 = optimsimplex_getve ( s1 , 1 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [0.0 0.0] ); +assert_checkequal ( ve1.fv , 13.0 ); +ve2 = optimsimplex_getve ( s1 , 2 ); +assert_checkequal ( ve2.n , 2 ); +assert_checkequal ( ve2.x , [1.0 0.0] ); +assert_checkequal ( ve2.fv , 14.0 ); +ve3 = optimsimplex_getve ( s1 , 3 ); +assert_checkequal ( ve3.n , 2 ); +assert_checkequal ( ve3.x , [0.0 2.0] ); +assert_checkequal ( ve3.fv , 15.0 ); +s1 = optimsimplex_destroy(s1); +// +// optimsimplex_getall, optimsimplex_setall +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn ( s1 , 2 ); +s1 = optimsimplex_setnbve(s1,3); +s1 = optimsimplex_setve ( s1 , 1 , 13.0 , [0.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 2 , 14.0 , [1.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 3 , 15.0 , [0.0 2.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 13. 0. 0. + 14. 1. 0. + 15. 0. 2. +]; +assert_checkequal ( computed , expected ); +simplex = [ +10.0 1.0 2.0 +11.0 3.0 4.0 +12.0 5.0 6.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +ve1 = optimsimplex_getve ( s1 , 1 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [1.0 2.0] ); +assert_checkequal ( ve1.fv , 10.0 ); +ve1 = optimsimplex_getve ( s1 , 2 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [3.0 4.0] ); +assert_checkequal ( ve1.fv , 11.0 ); +ve1 = optimsimplex_getve ( s1 , 3 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [5.0 6.0] ); +assert_checkequal ( ve1.fv , 12.0 ); +s1 = optimsimplex_destroy(s1); +// +// Test setall with wrong simplex : +// there are 3 parameters => 4 columns +// but there is only 3 vertices, while the minimum would be 4. +// +s1 = optimsimplex_new (); +simplex = [ +10.0 1.0 2.0 12.0 +11.0 3.0 4.0 12.0 +12.0 5.0 6.0 12.0 +]; +cmd = "s1 = optimsimplex_setall ( s1 , simplex );"; +assert_checkerror ( cmd , "%s: The number of vertices (i.e. the number of rows) is %d which is smaller than the number of columns %d (i.e. n+1)." , [], "optimsimplex_setall",3,4); +s1 = optimsimplex_destroy(s1); + +// +// optimsimplex_getall, optimsimplex_setall with 5 vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn ( s1 , 2 ); +s1 = optimsimplex_setnbve(s1, 5 ); +s1 = optimsimplex_setve ( s1 , 1 , 13.0 , [0.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 2 , 14.0 , [1.0 0.0] ); +s1 = optimsimplex_setve ( s1 , 3 , 15.0 , [0.0 2.0] ); +s1 = optimsimplex_setve ( s1 , 4 , 16.0 , [1.0 3.0] ); +s1 = optimsimplex_setve ( s1 , 5 , 17.0 , [2.0 4.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 13. 0. 0. + 14. 1. 0. + 15. 0. 2. + 16. 1. 3. + 17. 2. 4. +]; +assert_checkequal ( computed , expected ); +simplex = [ +10.0 1.0 2.0 +11.0 3.0 4.0 +12.0 5.0 6.0 +13.0 6.0 7.0 +14.0 7.0 8.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +ve1 = optimsimplex_getve ( s1 , 1 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [1.0 2.0] ); +assert_checkequal ( ve1.fv , 10.0 ); +ve1 = optimsimplex_getve ( s1 , 2 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [3.0 4.0] ); +assert_checkequal ( ve1.fv , 11.0 ); +ve1 = optimsimplex_getve ( s1 , 3 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [5.0 6.0] ); +assert_checkequal ( ve1.fv , 12.0 ); +ve1 = optimsimplex_getve ( s1 , 4 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [6.0 7.0] ); +assert_checkequal ( ve1.fv , 13.0 ); +ve1 = optimsimplex_getve ( s1 , 5 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [7.0 8.0] ); +assert_checkequal ( ve1.fv , 14.0 ); +s1 = optimsimplex_destroy(s1); +// +// Test optimsimplex_setallx, optimsimplex_setallfv, optimsimplex_getallx, optimsimplex_getallfv with 5 vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,5); +s1 = optimsimplex_setx ( s1 , 1 , [0.0 0.0]); +s1 = optimsimplex_setfv ( s1 , 1 , 12.0); +s1 = optimsimplex_setx ( s1 , 2 , [1.0 0.0]); +s1 = optimsimplex_setfv ( s1 , 2 , 13.0); +s1 = optimsimplex_setx ( s1 , 3 , [0.0 2.0]); +s1 = optimsimplex_setfv ( s1 , 3 , 14.0); +s1 = optimsimplex_setx ( s1 , 4 , [1.0 3.0]); +s1 = optimsimplex_setfv ( s1 , 4 , 15.0); +s1 = optimsimplex_setx ( s1 , 5 , [2.0 4.0]); +s1 = optimsimplex_setfv ( s1 , 5 , 16.0); +// Now check the data +computed = optimsimplex_getallx (s1); +expected = [ + 0. 0. + 1. 0. + 0. 2. + 1. 3. + 2. 4. +]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getallfv (s1); +assert_checkequal ( computed , [12.0 13.0 14.0 15.0 16.0]' ); +// setallx, setallfv +newsimplex = [ + 1. 2. + 3. 4. + 5. 6. + 7. 8. + 9. 10. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +computed = optimsimplex_getallx (s1); +assert_checkequal ( computed , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [3.0 4.0 5.0 6.0 7.0]' ); +computed = optimsimplex_getallfv (s1); +assert_checkequal ( computed , [3.0 4.0 5.0 6.0 7.0]' ); +s1 = optimsimplex_destroy(s1); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_gradientfv.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_gradientfv.dia.ref new file mode 100755 index 000000000..b3b43302d --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_gradientfv.dia.ref @@ -0,0 +1,53 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// Forward +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +computed = optimsimplex_gradientfv ( s1 ); +assert_checkalmostequal ( computed , [-3.0 3.0]' , 10 * %eps ); +s1 = optimsimplex_destroy ( s1 ); +// Centered +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +computed = optimsimplex_gradientfv ( s1 , method = "centered" , fun = rosenbrock ); +assert_checkalmostequal ( computed , [-1636.3333333333333 -1684.8333333333333]' , 10 * %eps ); +s1 = optimsimplex_destroy ( s1 ); +// Centered with additional arguments +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +[ computed , myobj ] = optimsimplex_gradientfv ( s1 , method = "centered" , fun = mycostf , data = myobj ); +assert_checkalmostequal ( computed , [-1636.3333333333333 -1684.8333333333333]' , 10 * %eps ); +assert_checkequal ( myobj.nb , 2 ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_gradientfv.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_gradientfv.tst new file mode 100755 index 000000000..92a26967b --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_gradientfv.tst @@ -0,0 +1,57 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// Forward +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +computed = optimsimplex_gradientfv ( s1 ); +assert_checkalmostequal ( computed , [-3.0 3.0]' , 10 * %eps ); +s1 = optimsimplex_destroy ( s1 ); +// Centered +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +computed = optimsimplex_gradientfv ( s1 , method = "centered" , fun = rosenbrock ); +assert_checkalmostequal ( computed , [-1636.3333333333333 -1684.8333333333333]' , 10 * %eps ); +s1 = optimsimplex_destroy ( s1 ); +// Centered with additional arguments +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +s1 = optimsimplex_new (); +simplex = [ +1. -2.0 1.0 +4. -1.0 3.0 +7. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +[ computed , myobj ] = optimsimplex_gradientfv ( s1 , method = "centered" , fun = mycostf , data = myobj ); +assert_checkalmostequal ( computed , [-1636.3333333333333 -1684.8333333333333]' , 10 * %eps ); +assert_checkequal ( myobj.nb , 2 ); +s1 = optimsimplex_destroy ( s1 ); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_new.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_new.dia.ref new file mode 100755 index 000000000..903bb3c55 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_new.dia.ref @@ -0,0 +1,185 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test optimsimplex_new with a matrix of coordinates +// +coords = [ + 0. 0. + 1. 0. + 0. 1. +]; +s1 = optimsimplex_new ( coords ); +computed = optimsimplex_getallx ( s1 ); +expected = [ + 0. 0. + 1. 0. + 0. 1. +]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getnbve (s1); +assert_checkequal ( computed , 3 ); +s1 = optimsimplex_destroy(s1); +// +// Test optimsimplex_new with a matrix of coordinates and +// a function +// +coords = [ + 0. 0. + 1. 0. + 0. 1. +]; +s1 = optimsimplex_new ( coords , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 1. 0. 0. + 100. 1. 0. + 101. 0. 1. +]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getnbve (s1); +assert_checkequal ( computed , 3 ); +s1 = optimsimplex_destroy(s1); +// +// Test with a function which has an additional argument +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +coords = [ + 0. 0. + 1. 0. + 0. 1. +]; +[ s1 , myobj ] = optimsimplex_new ( coords , mycostf , myobj ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 1. 0. 0. + 100. 1. 0. + 101. 0. 1. +]; +assert_checkequal ( computed , expected ); +assert_checkequal ( myobj.nb , 3 ); +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getnbve (s1); +assert_checkequal ( computed , 3 ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test optimsimplex_new with a matrix of coordinates made of k=5 vertices +// +coords = [ + 0. 0. + 1. 0. + 0. 1. + 1. 1. + 2. 2. +]; +s1 = optimsimplex_new ( coords , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 1. 0. 0. + 100. 1. 0. + 101. 0. 1. + 0. 1. 1. + 401. 2. 2. +]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getnbve (s1); +assert_checkequal ( computed , 5 ); +s1 = optimsimplex_destroy(s1); +// Check printing system +coords = [ + 0. 0. + 1. 0. + 0. 1. + 1. 1. + 2. 2. +]; +s1 = optimsimplex_new ( coords , rosenbrock ); +string(s1) + ans = + +!Optim Simplex Object: ! +! ! +!===================== ! +! ! +!nbve: 5 ! +! ! +!n: 2 ! +! ! +!x: 5-by-2 matrix ! +! ! +!fv: 5-by-1 matrix ! +s1 + s1 = + +Optim Simplex Object: +===================== +nbve: 5 +n: 2 +x: 5-by-2 matrix +fv: 5-by-1 matrix +s1 = optimsimplex_destroy(s1); +// +coords = [ + 0. 0. + 1. 0. + 0. 1. + 1. 1. + 2. 2. +]; +s1 = optimsimplex_new ( coords ); +s1 + s1 = + +Optim Simplex Object: +===================== +nbve: 5 +n: 2 +x: 5-by-2 matrix +fv: [] matrix +s1 = optimsimplex_destroy(s1); +// Check with empty function +coords = [ + 0. 0. + 1. 0. + 0. 1. + 1. 1. + 2. 2. +]; +s1 = optimsimplex_new ( coords , [] ) + s1 = + +Optim Simplex Object: +===================== +nbve: 5 +n: 2 +x: 5-by-2 matrix +fv: [] matrix +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getnbve (s1); +assert_checkequal ( computed , 5 ); +computed = optimsimplex_getallx(s1); +assert_checkequal ( computed , coords ); +s1 = optimsimplex_destroy(s1); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_new.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_new.tst new file mode 100755 index 000000000..c7c0daeee --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_new.tst @@ -0,0 +1,157 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + + +// <-- CLI SHELL MODE --> + + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test optimsimplex_new with a matrix of coordinates +// +coords = [ + 0. 0. + 1. 0. + 0. 1. +]; +s1 = optimsimplex_new ( coords ); +computed = optimsimplex_getallx ( s1 ); +expected = [ + 0. 0. + 1. 0. + 0. 1. +]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getnbve (s1); +assert_checkequal ( computed , 3 ); +s1 = optimsimplex_destroy(s1); + +// +// Test optimsimplex_new with a matrix of coordinates and +// a function +// +coords = [ + 0. 0. + 1. 0. + 0. 1. +]; +s1 = optimsimplex_new ( coords , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 1. 0. 0. + 100. 1. 0. + 101. 0. 1. +]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getnbve (s1); +assert_checkequal ( computed , 3 ); +s1 = optimsimplex_destroy(s1); + +// +// Test with a function which has an additional argument +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +coords = [ + 0. 0. + 1. 0. + 0. 1. +]; +[ s1 , myobj ] = optimsimplex_new ( coords , mycostf , myobj ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 1. 0. 0. + 100. 1. 0. + 101. 0. 1. +]; +assert_checkequal ( computed , expected ); +assert_checkequal ( myobj.nb , 3 ); +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getnbve (s1); +assert_checkequal ( computed , 3 ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test optimsimplex_new with a matrix of coordinates made of k=5 vertices +// +coords = [ + 0. 0. + 1. 0. + 0. 1. + 1. 1. + 2. 2. +]; +s1 = optimsimplex_new ( coords , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 1. 0. 0. + 100. 1. 0. + 101. 0. 1. + 0. 1. 1. + 401. 2. 2. +]; +assert_checkequal ( computed , expected ); +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getnbve (s1); +assert_checkequal ( computed , 5 ); +s1 = optimsimplex_destroy(s1); + +// Check printing system +coords = [ + 0. 0. + 1. 0. + 0. 1. + 1. 1. + 2. 2. +]; +s1 = optimsimplex_new ( coords , rosenbrock ); +string(s1) +s1 +s1 = optimsimplex_destroy(s1); +// +coords = [ + 0. 0. + 1. 0. + 0. 1. + 1. 1. + 2. 2. +]; +s1 = optimsimplex_new ( coords ); +s1 +s1 = optimsimplex_destroy(s1); + +// Check with empty function +coords = [ + 0. 0. + 1. 0. + 0. 1. + 1. 1. + 2. 2. +]; +s1 = optimsimplex_new ( coords , [] ) +computed = optimsimplex_getn(s1); +assert_checkequal ( computed , 2 ); +computed = optimsimplex_getnbve (s1); +assert_checkequal ( computed , 5 ); +computed = optimsimplex_getallx(s1); +assert_checkequal ( computed , coords ); +s1 = optimsimplex_destroy(s1); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_oriented.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_oriented.dia.ref new file mode 100755 index 000000000..bcf0b6225 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_oriented.dia.ref @@ -0,0 +1,76 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// With base simplex and no function +simplex = [... +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +s1 = optimsimplex_new(); +s1 = optimsimplex_setall ( s1 , simplex ); +s2 = optimsimplex_new ( "oriented" , s1 ); +computed = optimsimplex_getall ( s2 ); +expected = [... +24.2 -1.2 1.0 +0.0 -1.7 1.0 +0.0 -1.2 0.5 +]; +assert_checkalmostequal ( computed , expected , %eps ); +s1 = optimsimplex_destroy(s1); +s2 = optimsimplex_destroy(s2); +// With basic function +simplex = [... +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +s1 = optimsimplex_new(); +s1 = optimsimplex_setall ( s1 , simplex ); +s2 = optimsimplex_new ( "oriented" , s1 , rosenbrock ); +computed = optimsimplex_getall ( s2 ); +expected = [... +24.2 -1.2 1.0 +364.5 -1.7 1.0 +93.2 -1.2 0.5 +]; +assert_checkalmostequal ( computed , expected , %eps ); +s1 = optimsimplex_destroy(s1); +s2 = optimsimplex_destroy(s2); +// +// Test with an additional argument +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +simplex = [... +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +s1 = optimsimplex_new(); +s1 = optimsimplex_setall ( s1 , simplex ); +[s2,myobj] = optimsimplex_new ( "oriented" , s1 , mycostf , myobj ); +computed = optimsimplex_getall ( s2 ); +expected = [... +24.2 -1.2 1.0 +364.5 -1.7 1.0 +93.2 -1.2 0.5 +]; +assert_checkalmostequal ( computed , expected , %eps ); +assert_checkequal ( myobj.nb , 3 ); +s1 = optimsimplex_destroy(s1); +s2 = optimsimplex_destroy(s2); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_oriented.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_oriented.tst new file mode 100755 index 000000000..495ac93fb --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_oriented.tst @@ -0,0 +1,82 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// With base simplex and no function +simplex = [... +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +s1 = optimsimplex_new(); +s1 = optimsimplex_setall ( s1 , simplex ); +s2 = optimsimplex_new ( "oriented" , s1 ); +computed = optimsimplex_getall ( s2 ); +expected = [... +24.2 -1.2 1.0 +0.0 -1.7 1.0 +0.0 -1.2 0.5 +]; +assert_checkalmostequal ( computed , expected , %eps ); +s1 = optimsimplex_destroy(s1); +s2 = optimsimplex_destroy(s2); + +// With basic function +simplex = [... +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +s1 = optimsimplex_new(); +s1 = optimsimplex_setall ( s1 , simplex ); +s2 = optimsimplex_new ( "oriented" , s1 , rosenbrock ); +computed = optimsimplex_getall ( s2 ); +expected = [... +24.2 -1.2 1.0 +364.5 -1.7 1.0 +93.2 -1.2 0.5 +]; +assert_checkalmostequal ( computed , expected , %eps ); +s1 = optimsimplex_destroy(s1); +s2 = optimsimplex_destroy(s2); +// +// Test with an additional argument +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +simplex = [... +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +s1 = optimsimplex_new(); +s1 = optimsimplex_setall ( s1 , simplex ); +[s2,myobj] = optimsimplex_new ( "oriented" , s1 , mycostf , myobj ); +computed = optimsimplex_getall ( s2 ); +expected = [... +24.2 -1.2 1.0 +364.5 -1.7 1.0 +93.2 -1.2 0.5 +]; +assert_checkalmostequal ( computed , expected , %eps ); +assert_checkequal ( myobj.nb , 3 ); +s1 = optimsimplex_destroy(s1); +s2 = optimsimplex_destroy(s2); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_pfeffer.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_pfeffer.dia.ref new file mode 100755 index 000000000..583dafb60 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_pfeffer.dia.ref @@ -0,0 +1,68 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Pfeffer, case with x0 only +// +s1 = optimsimplex_new ( "pfeffer" , [-1.2 0.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 0.0 -1.2 0. + 0.0 -1.26 0. + 0.0 -1.2 0.0075 +]; +assert_checkalmostequal ( computed , expected , 1.e-6 ); +s1 = optimsimplex_destroy ( s1 ); +// +// Pfeffer, case with x0 and function +// +s1 = optimsimplex_new ( "pfeffer" , [-1.2 0.0] , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 212.2 -1.2 0. + 257.15498 -1.26 0. + 210.04562 -1.2 0.0075 +]; +assert_checkalmostequal ( computed , expected , 1.e-6 ); +s1 = optimsimplex_destroy ( s1 ); +// +// Pfeffer, case with specified deltas +// +s1 = optimsimplex_new ( "pfeffer" , [-1.2 0.0] , rosenbrock , 0.1 , 0.01 ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 212.2 -1.2 0. + 308.97818 -1.32 0. + 209.33 -1.2 0.01 +]; +assert_checkalmostequal ( computed , expected , 1.e-6 ); +s1 = optimsimplex_destroy ( s1 ); +// +// Case with additional object +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +[ s1 , myobj ] = optimsimplex_new ( "pfeffer" , [-1.2 1.0] , mycostf , 0.05 , 0.0075 , myobj ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 24.2 -1.2 1. + 39.634976 -1.26 1. + 20.05 -1.2 1.05 +]; +assert_checkalmostequal ( computed , expected , 10 * %eps ); +assert_checkequal ( myobj.nb , 3 ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_pfeffer.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_pfeffer.tst new file mode 100755 index 000000000..8738a8acc --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_pfeffer.tst @@ -0,0 +1,77 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Pfeffer, case with x0 only +// +s1 = optimsimplex_new ( "pfeffer" , [-1.2 0.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ +0.0 -1.2 0. +0.0 -1.26 0. +0.0 -1.2 0.0075 +]; +assert_checkalmostequal ( computed , expected , 1.e-6 ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Pfeffer, case with x0 and function +// +s1 = optimsimplex_new ( "pfeffer" , [-1.2 0.0] , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +expected = [ +212.2 -1.2 0. +257.15498 -1.26 0. +210.04562 -1.2 0.0075 +]; +assert_checkalmostequal ( computed , expected , 1.e-6 ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Pfeffer, case with specified deltas +// +s1 = optimsimplex_new ( "pfeffer" , [-1.2 0.0] , rosenbrock , 0.1 , 0.01 ); +computed = optimsimplex_getall ( s1 ); +expected = [ +212.2 -1.2 0. +308.97818 -1.32 0. +209.33 -1.2 0.01 +]; +assert_checkalmostequal ( computed , expected , 1.e-6 ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Case with additional object +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +[ s1 , myobj ] = optimsimplex_new ( "pfeffer" , [-1.2 1.0] , mycostf , 0.05 , 0.0075 , myobj ); +computed = optimsimplex_getall ( s1 ); +expected = [ +24.2 -1.2 1. +39.634976 -1.26 1. +20.05 -1.2 1.05 +]; +assert_checkalmostequal ( computed , expected , 10 * %eps ); +assert_checkequal ( myobj.nb , 3 ); +s1 = optimsimplex_destroy ( s1 ); + + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_randbounds.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_randbounds.dia.ref new file mode 100755 index 000000000..4a00fe303 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_randbounds.dia.ref @@ -0,0 +1,95 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test randbounds with default number of vertices +// +rand("seed" , 0) +s1 = optimsimplex_new ( "randbounds" , [-1.2 1.0], rosenbrock, ... + [-5.0 -5.0] , [5.0 5.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 24.19999999999999573674 -1.1999999999999999555911 1. + 3347.7382596240795464837 -2.8867513453587889671326 2.5604385416954755783081 + 71189.511402687028748915 -4.9977886537089943885803 -1.69672908261418342590 +] + expected = + + 24.2 - 1.2 1. + 3347.7383 - 2.8867513 2.5604385 + 71189.511 - 4.9977887 - 1.6967291 +assert_checkalmostequal ( computed , expected , %eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test randbounds with 5 vertices +// +rand("seed" , 0) +s1 = optimsimplex_new ( "randbounds" , [-1.2 1.0], rosenbrock, ... + [-5.0 -5.0] , [5.0 5.0], 5 ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 24.19999999999999573674 -1.1999999999999999555911 1. + 3347.7382596240795464837 -2.8867513453587889671326 2.5604385416954755783081 + 71189.511402687028748915 -4.9977886537089943885803 -1.69672908261418342590 + 211.01779965627284241236 1.6538110421970486640930 1.2839178834110498428345 + 10770.01508687966997968 3.497452358715236186981 1.857310198247432708740 +]; +assert_checkalmostequal ( computed , expected , %eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test optimsimplex_randbounds +// +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +// +// Test randbounds with additional object +// +mydude = tlist(["T_MYSTUFF","nb"]); +mydude.nb = 0; +s1 = optimsimplex_new (); +rand("seed" , 0) +[ s1 , mydude ] = optimsimplex_new ( "randbounds" , [-1.2 1.0], mycostf, ... + [-5.0 -5.0] , [5.0 5.0], 5 , mydude ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 24.19999999999999573674 -1.1999999999999999555911 1. + 3347.7382596240795464837 -2.8867513453587889671326 2.5604385416954755783081 + 71189.511402687028748915 -4.9977886537089943885803 -1.69672908261418342590 + 211.01779965627284241236 1.6538110421970486640930 1.2839178834110498428345 + 10770.01508687966997968 3.497452358715236186981 1.857310198247432708740 +] + expected = + + 24.2 - 1.2 1. + 3347.7383 - 2.8867513 2.5604385 + 71189.511 - 4.9977887 - 1.6967291 + 211.0178 1.653811 1.2839179 + 10770.015 3.4974524 1.8573102 +assert_checkequal ( mydude.nb , 5 ); +s1 = optimsimplex_destroy ( s1 ); +// Test unconsistent size of boundsmin +x0 = [1 2]; +boundsmin = [-5 -5 -5]; +boundsmax = [5 5]; +cmd = "newobj = optimsimplex_new ( ""randbounds"" , x0 , rosenbrock , boundsmin , boundsmax );"; +instr = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror ( cmd , instr,[],"optimsimplex_new",4,1,2); +// Test unconsistent size of boundsmax +x0 = [1 2]; +boundsmin = [-5 -5]; +boundsmax = [5 5 5]; +cmd = "newobj = optimsimplex_new ( ""randbounds"" , x0 , rosenbrock , boundsmin , boundsmax );"; +instr = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror ( cmd , instr,[],"optimsimplex_new",5,1,2); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_randbounds.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_randbounds.tst new file mode 100755 index 000000000..38c614b13 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_randbounds.tst @@ -0,0 +1,92 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test randbounds with default number of vertices +// +rand("seed" , 0) +s1 = optimsimplex_new ( "randbounds" , [-1.2 1.0], rosenbrock, ... +[-5.0 -5.0] , [5.0 5.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ +24.19999999999999573674 -1.1999999999999999555911 1. +3347.7382596240795464837 -2.8867513453587889671326 2.5604385416954755783081 +71189.511402687028748915 -4.9977886537089943885803 -1.69672908261418342590 +] +assert_checkalmostequal ( computed , expected , %eps ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Test randbounds with 5 vertices +// +rand("seed" , 0) +s1 = optimsimplex_new ( "randbounds" , [-1.2 1.0], rosenbrock, ... +[-5.0 -5.0] , [5.0 5.0], 5 ); +computed = optimsimplex_getall ( s1 ); +expected = [ +24.19999999999999573674 -1.1999999999999999555911 1. +3347.7382596240795464837 -2.8867513453587889671326 2.5604385416954755783081 +71189.511402687028748915 -4.9977886537089943885803 -1.69672908261418342590 +211.01779965627284241236 1.6538110421970486640930 1.2839178834110498428345 +10770.01508687966997968 3.497452358715236186981 1.857310198247432708740 +]; +assert_checkalmostequal ( computed , expected , %eps ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Test optimsimplex_randbounds +// +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction + +// +// Test randbounds with additional object +// +mydude = tlist(["T_MYSTUFF","nb"]); +mydude.nb = 0; +s1 = optimsimplex_new (); +rand("seed" , 0) +[ s1 , mydude ] = optimsimplex_new ( "randbounds" , [-1.2 1.0], mycostf, ... +[-5.0 -5.0] , [5.0 5.0], 5 , mydude ); +computed = optimsimplex_getall ( s1 ); +expected = [ +24.19999999999999573674 -1.1999999999999999555911 1. +3347.7382596240795464837 -2.8867513453587889671326 2.5604385416954755783081 +71189.511402687028748915 -4.9977886537089943885803 -1.69672908261418342590 +211.01779965627284241236 1.6538110421970486640930 1.2839178834110498428345 +10770.01508687966997968 3.497452358715236186981 1.857310198247432708740 +] +assert_checkequal ( mydude.nb , 5 ); +s1 = optimsimplex_destroy ( s1 ); + +// Test unconsistent size of boundsmin +x0 = [1 2]; +boundsmin = [-5 -5 -5]; +boundsmax = [5 5]; +cmd = "newobj = optimsimplex_new ( ""randbounds"" , x0 , rosenbrock , boundsmin , boundsmax );"; +instr = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror ( cmd , instr,[],"optimsimplex_new",4,1,2); + +// Test unconsistent size of boundsmax +x0 = [1 2]; +boundsmin = [-5 -5]; +boundsmax = [5 5 5]; +cmd = "newobj = optimsimplex_new ( ""randbounds"" , x0 , rosenbrock , boundsmin , boundsmax );"; +instr = "%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"; +assert_checkerror ( cmd , instr,[],"optimsimplex_new",5,1,2); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_reflect.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_reflect.dia.ref new file mode 100755 index 000000000..c6ab8d649 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_reflect.dia.ref @@ -0,0 +1,87 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test optimsimplex_reflect +// +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +r = optimsimplex_reflect ( s1 , rosenbrock ); +computed = optimsimplex_getall ( r ); +expected = [ +24.2 -1.2 1.0 +1484.8 -2.2 1.0 +212.2 -1.2 0.0 +]; +assert_checkalmostequal ( computed , expected , 10 * %eps ); +s1 = optimsimplex_destroy ( s1 ); +r = optimsimplex_destroy ( r ); +// +// Test with an additional argument +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +[ r , myobj ] = optimsimplex_reflect ( s1 , mycostf , myobj ); +computed = optimsimplex_getall ( r ); +expected = [ +24.2 -1.2 1.0 +1484.8 -2.2 1.0 +212.2 -1.2 0.0 +]; +assert_checkalmostequal ( computed , expected , 10 * %eps ); +assert_checkequal ( myobj.nb , 2 ); +s1 = optimsimplex_destroy ( s1 ); +r = optimsimplex_destroy ( r ); +// +// Test with 5 vertices +// +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +12.0 -2.0 -2.0 +24.0 -4.0 4.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +r = optimsimplex_reflect ( s1 , rosenbrock ); +computed = optimsimplex_getall ( r ); +expected = [ + 24.2 -1.2 1. + 1484.8 -2.2 1. + 212.2 -1.2 0. + 1476.52 -0.4 4. + 2079.72 1.6 -2. +]; +assert_checkalmostequal ( computed , expected , 10 * %eps ); +s1 = optimsimplex_destroy ( s1 ); +r = optimsimplex_destroy ( r ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_reflect.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_reflect.tst new file mode 100755 index 000000000..648d660be --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_reflect.tst @@ -0,0 +1,95 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + + + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test optimsimplex_reflect +// + +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +r = optimsimplex_reflect ( s1 , rosenbrock ); +computed = optimsimplex_getall ( r ); +expected = [ +24.2 -1.2 1.0 +1484.8 -2.2 1.0 +212.2 -1.2 0.0 +]; +assert_checkalmostequal ( computed , expected , 10 * %eps ); +s1 = optimsimplex_destroy ( s1 ); +r = optimsimplex_destroy ( r ); +// +// Test with an additional argument +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +[ r , myobj ] = optimsimplex_reflect ( s1 , mycostf , myobj ); +computed = optimsimplex_getall ( r ); +expected = [ +24.2 -1.2 1.0 +1484.8 -2.2 1.0 +212.2 -1.2 0.0 +]; +assert_checkalmostequal ( computed , expected , 10 * %eps ); +assert_checkequal ( myobj.nb , 2 ); +s1 = optimsimplex_destroy ( s1 ); +r = optimsimplex_destroy ( r ); +// +// Test with 5 vertices +// +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +93.6 -0.2 1.0 +36.2 -1.2 2.0 +12.0 -2.0 -2.0 +24.0 -4.0 4.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +r = optimsimplex_reflect ( s1 , rosenbrock ); +computed = optimsimplex_getall ( r ); +expected = [ + 24.2 -1.2 1. + 1484.8 -2.2 1. + 212.2 -1.2 0. + 1476.52 -0.4 4. + 2079.72 1.6 -2. +]; +assert_checkalmostequal ( computed , expected , 10 * %eps ); +s1 = optimsimplex_destroy ( s1 ); +r = optimsimplex_destroy ( r ); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_shrink.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_shrink.dia.ref new file mode 100755 index 000000000..af0eb4678 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_shrink.dia.ref @@ -0,0 +1,90 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test optimsimplex_shrink +// +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,3); +newsimplex = [ + 0. 0. + 1. 0. + 0. 1. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [-12.0 0.0 0.0]' ); +s1 = optimsimplex_shrink ( s1 , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is not re-computed, as expected. +expected = [ + -12. 0. 0. + 6.5 0.5 0. + 26. 0. 0.5 +]; +assert_checkequal ( computed , expected ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with an additional argument +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +s1 = optimsimplex_new (); +newsimplex = [ +-12.0 0.0 0.0 +6.0 1.0 0.0 +7.0 0.0 1.0 +]; +s1 = optimsimplex_setall ( s1 , newsimplex ); +[ s1 , myobj ] = optimsimplex_shrink ( s1 , mycostf , data=myobj ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is not re-computed, as expected. +expected = [ + -12. 0. 0. + 6.5 0.5 0. + 26. 0. 0.5 +]; +assert_checkequal ( computed , expected ); +assert_checkequal ( myobj.nb , 2 ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with 5 vertices +// +s1 = optimsimplex_new (); +newsimplex = [ +12.0 0.0 0.0 +12.0 1.0 0.0 +12.0 0.0 1.0 +12.0 1.0 1.0 +12.0 2.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , newsimplex ); +s1 = optimsimplex_shrink ( s1 , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is not re-computed, as expected. +expected = [ + 12. 0. 0. + 6.5 0.5 0. + 26. 0. 0.5 + 6.5 0.5 0.5 + 0. 1. 1. +]; +assert_checkequal ( computed , expected ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_shrink.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_shrink.tst new file mode 100755 index 000000000..5c917650d --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_shrink.tst @@ -0,0 +1,97 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test optimsimplex_shrink +// +// +// Test with 3 vertices +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,3); +newsimplex = [ + 0. 0. + 1. 0. + 0. 1. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [-12.0 0.0 0.0]' ); +s1 = optimsimplex_shrink ( s1 , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is not re-computed, as expected. +expected = [ + -12. 0. 0. + 6.5 0.5 0. + 26. 0. 0.5 +]; +assert_checkequal ( computed , expected ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with an additional argument +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +s1 = optimsimplex_new (); +newsimplex = [ +-12.0 0.0 0.0 +6.0 1.0 0.0 +7.0 0.0 1.0 +]; +s1 = optimsimplex_setall ( s1 , newsimplex ); +[ s1 , myobj ] = optimsimplex_shrink ( s1 , mycostf , data=myobj ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is not re-computed, as expected. +expected = [ + -12. 0. 0. + 6.5 0.5 0. + 26. 0. 0.5 +]; +assert_checkequal ( computed , expected ); +assert_checkequal ( myobj.nb , 2 ); +s1 = optimsimplex_destroy ( s1 ); + + +// +// Test with 5 vertices +// +s1 = optimsimplex_new (); +newsimplex = [ +12.0 0.0 0.0 +12.0 1.0 0.0 +12.0 0.0 1.0 +12.0 1.0 1.0 +12.0 2.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , newsimplex ); +s1 = optimsimplex_shrink ( s1 , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +// The function value at vertex #1 is not re-computed, as expected. +expected = [ + 12. 0. 0. + 6.5 0.5 0. + 26. 0. 0.5 + 6.5 0.5 0.5 + 0. 1. 1. +]; +assert_checkequal ( computed , expected ); +s1 = optimsimplex_destroy ( s1 ); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_size.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_size.dia.ref new file mode 100755 index 000000000..b30b42932 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_size.dia.ref @@ -0,0 +1,63 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// +// Check behaviour with default settings. +// +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test optimsimplex_size with 3 vertices +// +simplex = [... + 0. 0. + 1. 0. + 0. 2. +]; +s1 = optimsimplex_new(); +s1 = optimsimplex_setn ( s1 , 2 ); +s1 = optimsimplex_setnbve ( s1 , 3 ); +s1 = optimsimplex_setallx ( s1 , simplex ); +ssize = optimsimplex_size ( s1 , "Nash" ); +assert_checkalmostequal ( ssize , 3.0, %eps ); +ssize = optimsimplex_size ( s1 , "diameter" ); +assert_checkalmostequal ( ssize , sqrt(5), %eps ); +ssize = optimsimplex_size ( s1 , "sigmaplus" ); +assert_checkalmostequal ( ssize , 2.0, %eps ); +ssize = optimsimplex_size ( s1 , "sigmaminus" ); +assert_checkalmostequal ( ssize , 1.0, %eps ); +s1 = optimsimplex_destroy(s1); +// +// Test optimsimplex_size with 5 vertices +// +simplex = [... +0.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 2.0 +0.0 1.0 2.0 +0.0 2.0 2.0 +]; +s1 = optimsimplex_new(); +s1 = optimsimplex_setall ( s1 , simplex ); +ssize = optimsimplex_size ( s1 , "Nash" ); +assert_checkalmostequal ( ssize , 10.0 , %eps ); +ssize = optimsimplex_size ( s1 , "diameter" ); +assert_checkalmostequal ( ssize , 2.8284271247461902909492 , %eps ); +ssize = optimsimplex_size ( s1 , "sigmaplus" ); +assert_checkalmostequal ( ssize , 2.8284271247461902909492 , %eps ); +ssize = optimsimplex_size ( s1 , "sigmaminus" ); +assert_checkalmostequal ( ssize , 1.0 , %eps ); +s1 = optimsimplex_destroy(s1); +// Test unknown size method +s1 = optimsimplex_new(); +cmd = "optimsimplex_size ( s1 , ''foo'' )"; +assert_checkerror(cmd,"%s: Unknown simplex size method %s" , [],"optimsimplex_size","foo"); +s1 = optimsimplex_destroy(s1); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_size.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_size.tst new file mode 100755 index 000000000..6d78313c4 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_size.tst @@ -0,0 +1,69 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// +// Check behaviour with default settings. +// + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test optimsimplex_size with 3 vertices +// +simplex = [... + 0. 0. + 1. 0. + 0. 2. +]; +s1 = optimsimplex_new(); +s1 = optimsimplex_setn ( s1 , 2 ); +s1 = optimsimplex_setnbve ( s1 , 3 ); +s1 = optimsimplex_setallx ( s1 , simplex ); +ssize = optimsimplex_size ( s1 , "Nash" ); +assert_checkalmostequal ( ssize , 3.0, %eps ); +ssize = optimsimplex_size ( s1 , "diameter" ); +assert_checkalmostequal ( ssize , sqrt(5), %eps ); +ssize = optimsimplex_size ( s1 , "sigmaplus" ); +assert_checkalmostequal ( ssize , 2.0, %eps ); +ssize = optimsimplex_size ( s1 , "sigmaminus" ); +assert_checkalmostequal ( ssize , 1.0, %eps ); +s1 = optimsimplex_destroy(s1); +// +// Test optimsimplex_size with 5 vertices +// +simplex = [... +0.0 0.0 0.0 +0.0 1.0 0.0 +0.0 0.0 2.0 +0.0 1.0 2.0 +0.0 2.0 2.0 +]; +s1 = optimsimplex_new(); +s1 = optimsimplex_setall ( s1 , simplex ); +ssize = optimsimplex_size ( s1 , "Nash" ); +assert_checkalmostequal ( ssize , 10.0 , %eps ); +ssize = optimsimplex_size ( s1 , "diameter" ); +assert_checkalmostequal ( ssize , 2.8284271247461902909492 , %eps ); +ssize = optimsimplex_size ( s1 , "sigmaplus" ); +assert_checkalmostequal ( ssize , 2.8284271247461902909492 , %eps ); +ssize = optimsimplex_size ( s1 , "sigmaminus" ); +assert_checkalmostequal ( ssize , 1.0 , %eps ); +s1 = optimsimplex_destroy(s1); + +// Test unknown size method +s1 = optimsimplex_new(); +cmd = "optimsimplex_size ( s1 , ''foo'' )"; +assert_checkerror(cmd,"%s: Unknown simplex size method %s" , [],"optimsimplex_size","foo"); +s1 = optimsimplex_destroy(s1); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_sort.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_sort.dia.ref new file mode 100755 index 000000000..376a5e5fc --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_sort.dia.ref @@ -0,0 +1,40 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Test optimsimplex_sort +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,3); +newsimplex = [ + 1. 2. + 3. 4. + 5. 6. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [5.0 2.0 1.0]' ); +s1 = optimsimplex_sort ( s1 ); +ve1 = optimsimplex_getve ( s1 , 1 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [5.0 6.0] ); +assert_checkequal ( ve1.fv , 1.0 ); +ve1 = optimsimplex_getve ( s1 , 2 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [3.0 4.0] ); +assert_checkequal ( ve1.fv , 2.0 ); +ve1 = optimsimplex_getve ( s1 , 3 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [1.0 2.0] ); +assert_checkequal ( ve1.fv , 5.0 ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_sort.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_sort.tst new file mode 100755 index 000000000..408643065 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_sort.tst @@ -0,0 +1,45 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Test optimsimplex_sort +// +s1 = optimsimplex_new (); +s1 = optimsimplex_setn(s1,2); +s1 = optimsimplex_setnbve(s1,3); +newsimplex = [ + 1. 2. + 3. 4. + 5. 6. +]; +s1 = optimsimplex_setallx ( s1 , newsimplex ); +s1 = optimsimplex_setallfv ( s1 , [5.0 2.0 1.0]' ); +s1 = optimsimplex_sort ( s1 ); +ve1 = optimsimplex_getve ( s1 , 1 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [5.0 6.0] ); +assert_checkequal ( ve1.fv , 1.0 ); +ve1 = optimsimplex_getve ( s1 , 2 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [3.0 4.0] ); +assert_checkequal ( ve1.fv , 2.0 ); +ve1 = optimsimplex_getve ( s1 , 3 ); +assert_checkequal ( ve1.n , 2 ); +assert_checkequal ( ve1.x , [1.0 2.0] ); +assert_checkequal ( ve1.fv , 5.0 ); +s1 = optimsimplex_destroy ( s1 ); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_spendley.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_spendley.dia.ref new file mode 100755 index 000000000..32a0b8433 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_spendley.dia.ref @@ -0,0 +1,57 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction +// +// Spendley basic case +// +s1 = optimsimplex_new ( "spendley" , [-1.2 1.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 0.0 -1.2 1. + 0.0 -0.2340741737109317543997 1.2588190451025207394764 + 0.0 -0.9411809548974792161147 1.9659258262890682011914 +]; +assert_checkalmostequal ( computed , expected , 1.e-6 ); +s1 = optimsimplex_destroy ( s1 ); +// +// Spendley basic case +// +s1 = optimsimplex_new ( "spendley" , [-1.2 1.0] , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 24.2 -1.2 1. + 146.4913601204771680386 -0.2340741737109317543997 1.2588190451025207394764 + 120.43069965448485447723 -0.9411809548974792161147 1.9659258262890682011914 +]; +assert_checkalmostequal ( computed , expected , 1.e-6 ); +s1 = optimsimplex_destroy ( s1 ); +// +// Spendley, case with object +// +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +s1 = optimsimplex_new (); +[ s1 , myobj ] = optimsimplex_new ( "spendley" , [-1.2 1.0] , mycostf , 1.0 , myobj ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 24.2 -1.2 1. + 146.4913601204771680386 -0.2340741737109317543997 1.2588190451025207394764 + 120.43069965448485447723 -0.9411809548974792161147 1.9659258262890682011914 +]; +assert_checkalmostequal ( computed , expected , 10 * %eps ); +assert_checkequal ( myobj.nb , 3 ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_spendley.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_spendley.tst new file mode 100755 index 000000000..be2ba13fe --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_spendley.tst @@ -0,0 +1,67 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + + +function y = rosenbrock (x) + y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; +endfunction + +// +// Spendley basic case +// +s1 = optimsimplex_new ( "spendley" , [-1.2 1.0] ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 0.0 -1.2 1. + 0.0 -0.2340741737109317543997 1.2588190451025207394764 + 0.0 -0.9411809548974792161147 1.9659258262890682011914 +]; +assert_checkalmostequal ( computed , expected , 1.e-6 ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Spendley basic case +// +s1 = optimsimplex_new ( "spendley" , [-1.2 1.0] , rosenbrock ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 24.2 -1.2 1. + 146.4913601204771680386 -0.2340741737109317543997 1.2588190451025207394764 + 120.43069965448485447723 -0.9411809548974792161147 1.9659258262890682011914 +]; +assert_checkalmostequal ( computed , expected , 1.e-6 ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Spendley, case with object +// + +myobj = tlist(["T_MYSTUFF","nb"]); +myobj.nb = 0; +function [ y , myobj ] = mycostf ( x , myobj ) + y = rosenbrock(x); + myobj.nb = myobj.nb + 1 +endfunction +s1 = optimsimplex_new (); +[ s1 , myobj ] = optimsimplex_new ( "spendley" , [-1.2 1.0] , mycostf , 1.0 , myobj ); +computed = optimsimplex_getall ( s1 ); +expected = [ + 24.2 -1.2 1. + 146.4913601204771680386 -0.2340741737109317543997 1.2588190451025207394764 + 120.43069965448485447723 -0.9411809548974792161147 1.9659258262890682011914 +]; +assert_checkalmostequal ( computed , expected , 10 * %eps ); +assert_checkequal ( myobj.nb , 3 ); +s1 = optimsimplex_destroy ( s1 ); + + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_tostring.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_tostring.dia.ref new file mode 100755 index 000000000..493b7b7c5 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_tostring.dia.ref @@ -0,0 +1,49 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// Test with 3 vertices +s1 = optimsimplex_new (); +simplex = [ +24. -2.0 1.0 +93. -1.0 3.0 +36. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +str = string ( s1 ); +expected = [ +"Optim Simplex Object:" +"=====================" +"nbve: 3" +"n: 2" +"x: 3-by-2 matrix" +"fv: 3-by-1 matrix" +]; +assert_checkequal ( str , expected ); +s1 = optimsimplex_destroy ( s1 ); +// Test with 4 vertices +s1 = optimsimplex_new (); +simplex = [ +24. -2.0 1.0 +93. -1.0 3.0 +36. -3.0 2.0 +36. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +str = string ( s1 ); +expected = [ +"Optim Simplex Object:" +"=====================" +"nbve: 4" +"n: 2" +"x: 4-by-2 matrix" +"fv: 4-by-1 matrix" +]; +assert_checkequal ( str , expected ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_tostring.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_tostring.tst new file mode 100755 index 000000000..583246be0 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_tostring.tst @@ -0,0 +1,54 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + + +// Test with 3 vertices +s1 = optimsimplex_new (); +simplex = [ +24. -2.0 1.0 +93. -1.0 3.0 +36. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +str = string ( s1 ); +expected = [ +"Optim Simplex Object:" +"=====================" +"nbve: 3" +"n: 2" +"x: 3-by-2 matrix" +"fv: 3-by-1 matrix" +]; +assert_checkequal ( str , expected ); +s1 = optimsimplex_destroy ( s1 ); + +// Test with 4 vertices +s1 = optimsimplex_new (); +simplex = [ +24. -2.0 1.0 +93. -1.0 3.0 +36. -3.0 2.0 +36. -3.0 2.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +str = string ( s1 ); +expected = [ +"Optim Simplex Object:" +"=====================" +"nbve: 4" +"n: 2" +"x: 4-by-2 matrix" +"fv: 4-by-1 matrix" +]; +assert_checkequal ( str , expected ); +s1 = optimsimplex_destroy ( s1 ); + diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_xbar.dia.ref b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_xbar.dia.ref new file mode 100755 index 000000000..f234c98e3 --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_xbar.dia.ref @@ -0,0 +1,73 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt +// <-- CLI SHELL MODE --> +// iexcl by default +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +36.2 -1.2 2.0 +93.6 -0.2 1.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +cen = optimsimplex_xbar ( s1 ); +assert_checkalmostequal ( cen , [-1.2 1.5], %eps ); +s1 = optimsimplex_destroy ( s1 ); +// Case iexcl = 2 +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +36.2 -1.2 2.0 +93.6 -0.2 1.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +cen = optimsimplex_xbar ( s1 , 2 ); +assert_checkalmostequal ( cen , [-0.7 1.0], %eps ); +s1 = optimsimplex_destroy ( s1 ); +// Case iexcl = 2:3 +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +36.2 -1.2 2.0 +93.6 -0.2 1.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +cen = optimsimplex_xbar ( s1 , 2:3 ); +assert_checkalmostequal ( cen , [-1.2 1.0], %eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with 5 vertices and default exclusion +// +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +36.2 -1.2 2.0 +93.6 -0.2 1.0 +93.6 0.0 0.0 +93.6 10.0 10.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +cen = optimsimplex_xbar ( s1 ); +assert_checkalmostequal ( cen , [-0.65 1.0], %eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with 5 vertices and several exclusions +// +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +36.2 -1.2 2.0 +93.6 -0.2 1.0 +93.6 0.0 0.0 +93.6 10.0 10.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +cen = optimsimplex_xbar ( s1 , [1 3 5]); +assert_checkalmostequal ( cen , [-0.6 1.0], 10 * %eps ); +s1 = optimsimplex_destroy ( s1 ); diff --git a/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_xbar.tst b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_xbar.tst new file mode 100755 index 000000000..66ca51d2d --- /dev/null +++ b/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_xbar.tst @@ -0,0 +1,79 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008-2009 - INRIA - Michael Baudin +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +// <-- CLI SHELL MODE --> + +// iexcl by default +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +36.2 -1.2 2.0 +93.6 -0.2 1.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +cen = optimsimplex_xbar ( s1 ); +assert_checkalmostequal ( cen , [-1.2 1.5], %eps ); +s1 = optimsimplex_destroy ( s1 ); + +// Case iexcl = 2 +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +36.2 -1.2 2.0 +93.6 -0.2 1.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +cen = optimsimplex_xbar ( s1 , 2 ); +assert_checkalmostequal ( cen , [-0.7 1.0], %eps ); +s1 = optimsimplex_destroy ( s1 ); + +// Case iexcl = 2:3 +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +36.2 -1.2 2.0 +93.6 -0.2 1.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +cen = optimsimplex_xbar ( s1 , 2:3 ); +assert_checkalmostequal ( cen , [-1.2 1.0], %eps ); +s1 = optimsimplex_destroy ( s1 ); +// +// Test with 5 vertices and default exclusion +// +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +36.2 -1.2 2.0 +93.6 -0.2 1.0 +93.6 0.0 0.0 +93.6 10.0 10.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +cen = optimsimplex_xbar ( s1 ); +assert_checkalmostequal ( cen , [-0.65 1.0], %eps ); +s1 = optimsimplex_destroy ( s1 ); + +// +// Test with 5 vertices and several exclusions +// +s1 = optimsimplex_new (); +simplex = [ +24.2 -1.2 1.0 +36.2 -1.2 2.0 +93.6 -0.2 1.0 +93.6 0.0 0.0 +93.6 10.0 10.0 +]; +s1 = optimsimplex_setall ( s1 , simplex ); +cen = optimsimplex_xbar ( s1 , [1 3 5]); +assert_checkalmostequal ( cen , [-0.6 1.0], 10 * %eps ); +s1 = optimsimplex_destroy ( s1 ); + diff --git a/modules/optimization/tests/unit_tests/pack.dia.ref b/modules/optimization/tests/unit_tests/pack.dia.ref new file mode 100755 index 000000000..7fdb52d28 --- /dev/null +++ b/modules/optimization/tests/unit_tests/pack.dia.ref @@ -0,0 +1,82 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +Z = [ +1 2 0 0 0 0 +2 3 0 0 0 0 +0 0 4 5 6 0 +0 0 5 7 8 0 +0 0 6 8 9 0 +0 0 0 0 0 10 +]; +blocksizes=[2,3,1]; +Z1 = Z(1:2,1:2); +Z2 = Z(3:5,3:5); +Z3 = Z(6,6); +A = list2vec(list(Z1,Z2,Z3)); +[CA,sel] = pack(A,blocksizes); +CA_expected = [ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +]; +sel_expected = [1,2,4,5,6,7,9,10,13,14]; +assert_checkequal(CA,CA_expected); +assert_checkequal(sel,sel_expected); +// +// Define 3 symmetric block-diagonal matrices: F0, F1, F2 +F0=[2,1,0,0; + 1,2,0,0; + 0,0,3,1; + 0,0,1,3]; +F1=[1,2,0,0; + 2,1,0,0; + 0,0,1,3; + 0,0,3,1]; +F2=[2,2,0,0; + 2,2,0,0; + 0,0,3,4; + 0,0,4,4]; +// Define the size of the two blocks: +// the first block has size 2, +// the second block has size 2. +blocksizes=[2,2]; +// Extract the two blocks of the 3 matrices. +F01=F0(1:2,1:2); +F02=F0(3:4,3:4); +F11=F1(1:2,1:2); +F12=F1(3:4,3:4); +F21=F2(1:2,1:2); +F22=F2(3:4,3:4); +// Create 3 column vectors, containing nonzero entries +// in F0, F1, F2. +F0nnz = [F01(:);F02(:)]; +F1nnz = [F11(:);F12(:)]; +F2nnz = [F21(:);F22(:)]; +// Create a 16-by-3 matrix, representing the +// nonzero entries of the 3 matrices F0, F1, F2. +A=[F0nnz,F1nnz,F2nnz]; +// Pack the list of matrices A into CA. +[CA,sel] = pack(A,blocksizes); +CA_expected = [ +2,1,2; +1,2,2; +2,1,2; +3,1,3; +1,3,4; +3,1,4 +]; +sel_expected = [1,2,4,5,6,8]; +assert_checkequal(CA,CA_expected); +assert_checkequal(sel,sel_expected); diff --git a/modules/optimization/tests/unit_tests/pack.tst b/modules/optimization/tests/unit_tests/pack.tst new file mode 100755 index 000000000..eb7642c05 --- /dev/null +++ b/modules/optimization/tests/unit_tests/pack.tst @@ -0,0 +1,86 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +Z = [ +1 2 0 0 0 0 +2 3 0 0 0 0 +0 0 4 5 6 0 +0 0 5 7 8 0 +0 0 6 8 9 0 +0 0 0 0 0 10 +]; +blocksizes=[2,3,1]; +Z1 = Z(1:2,1:2); +Z2 = Z(3:5,3:5); +Z3 = Z(6,6); +A = list2vec(list(Z1,Z2,Z3)); +[CA,sel] = pack(A,blocksizes); +CA_expected = [ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +]; +sel_expected = [1,2,4,5,6,7,9,10,13,14]; +assert_checkequal(CA,CA_expected); +assert_checkequal(sel,sel_expected); + + +// +// Define 3 symmetric block-diagonal matrices: F0, F1, F2 +F0=[2,1,0,0; + 1,2,0,0; + 0,0,3,1; + 0,0,1,3]; +F1=[1,2,0,0; + 2,1,0,0; + 0,0,1,3; + 0,0,3,1]; +F2=[2,2,0,0; + 2,2,0,0; + 0,0,3,4; + 0,0,4,4]; +// Define the size of the two blocks: +// the first block has size 2, +// the second block has size 2. +blocksizes=[2,2]; +// Extract the two blocks of the 3 matrices. +F01=F0(1:2,1:2); +F02=F0(3:4,3:4); +F11=F1(1:2,1:2); +F12=F1(3:4,3:4); +F21=F2(1:2,1:2); +F22=F2(3:4,3:4); +// Create 3 column vectors, containing nonzero entries +// in F0, F1, F2. +F0nnz = [F01(:);F02(:)]; +F1nnz = [F11(:);F12(:)]; +F2nnz = [F21(:);F22(:)]; +// Create a 16-by-3 matrix, representing the +// nonzero entries of the 3 matrices F0, F1, F2. +A=[F0nnz,F1nnz,F2nnz]; +// Pack the list of matrices A into CA. +[CA,sel] = pack(A,blocksizes); +CA_expected = [ +2,1,2; +1,2,2; +2,1,2; +3,1,3; +1,3,4; +3,1,4 +]; +sel_expected = [1,2,4,5,6,8]; +assert_checkequal(CA,CA_expected); +assert_checkequal(sel,sel_expected); diff --git a/modules/optimization/tests/unit_tests/qld.dia.ref b/modules/optimization/tests/unit_tests/qld.dia.ref new file mode 100755 index 000000000..37e35084c --- /dev/null +++ b/modules/optimization/tests/unit_tests/qld.dia.ref @@ -0,0 +1,28 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +//Find x in R^6 such that: +//C1*x = b1 (3 equality constraints i.e me=3) +C1= [1,-1,1,0,3,1; + -1,0,-3,-4,5,6; + 2,5,3,0,1,0]; +b1=[1;2;3]; +//C2*x <= b2 (2 inequality constraints) +C2=[0,1,0,1,2,-1; + -1,0,2,1,1,0]; +b2=[-1;2.5]; +//with x between ci and cs: +ci=[-1000;-10000;0;-1000;-1000;-1000];cs=[10000;100;1.5;100;100;1000]; +//and minimize 0.5*x'*Q*x + p'*x with +p=[1;2;3;4;5;6]; Q=eye(6,6); +//No initial point is given; +C=[C1;C2] ; // +b=[b1;b2] ; // +me=3; +[x,lagr]=qld(Q,p,C,b,ci,cs,me); +if size(lagr,'*') <> 17 then bugmes();quit;end +if size(x,'*') <> 6 then bugmes();quit;end +//Only linear constraints (1 to 4) are active (lagr(1:6)=0): diff --git a/modules/optimization/tests/unit_tests/qld.tst b/modules/optimization/tests/unit_tests/qld.tst new file mode 100755 index 000000000..8a4a200c4 --- /dev/null +++ b/modules/optimization/tests/unit_tests/qld.tst @@ -0,0 +1,33 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +//Find x in R^6 such that: +//C1*x = b1 (3 equality constraints i.e me=3) +C1= [1,-1,1,0,3,1; + -1,0,-3,-4,5,6; + 2,5,3,0,1,0]; +b1=[1;2;3]; +//C2*x <= b2 (2 inequality constraints) +C2=[0,1,0,1,2,-1; + -1,0,2,1,1,0]; +b2=[-1;2.5]; +//with x between ci and cs: +ci=[-1000;-10000;0;-1000;-1000;-1000];cs=[10000;100;1.5;100;100;1000]; +//and minimize 0.5*x'*Q*x + p'*x with +p=[1;2;3;4;5;6]; Q=eye(6,6); +//No initial point is given; +C=[C1;C2] ; // +b=[b1;b2] ; // +me=3; +[x,lagr]=qld(Q,p,C,b,ci,cs,me); +if size(lagr,'*') <> 17 then pause,end +if size(x,'*') <> 6 then pause,end +//Only linear constraints (1 to 4) are active (lagr(1:6)=0): + +
\ No newline at end of file diff --git a/modules/optimization/tests/unit_tests/qpsolve.dia.ref b/modules/optimization/tests/unit_tests/qpsolve.dia.ref new file mode 100755 index 000000000..c7a95b78b --- /dev/null +++ b/modules/optimization/tests/unit_tests/qpsolve.dia.ref @@ -0,0 +1,93 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +//Find x in R^6 such that: +//C1*x = b1 (3 equality constraints i.e me=3) +C1= [1,-1,1,0,3,1; + -1,0,-3,-4,5,6; + 2,5,3,0,1,0]; +b1=[1;2;3]; +//C2*x <= b2 (2 inequality constraints) +C2=[0,1,0,1,2,-1; + -1,0,2,1,1,0]; +b2=[-1;2.5]; +//and minimize 0.5*x'*Q*x + p'*x with +p=[1;2;3;4;5;6]; Q=eye(6,6); +//No initial point is given; +C=[C1;C2] ; // +b=[b1;b2] ; // +me=3; +[x1, iact, iter, f]=qpsolve(Q,p,C,b,[],[],me); +if or(iact<>[1;3;2;4;0]) then bugmes();quit;end +if x1'*p+x1'*Q*x1/2>- 14.843 then bugmes();quit;end +if or(abs(C(1:4,:)*x1-b(1:4))>100*%eps) then bugmes();quit;end +if C(5,:)*x1>b(5) then bugmes();quit;end +//sparse +[x1, iact, iter, f]=qpsolve(Q,p,sparse(C),b,[],[],me); +if or(iact<>[1;3;2;4;0]) then bugmes();quit;end +if x1'*p+x1'*Q*x1/2>- 14.843 then bugmes();quit;end +if or(abs(C(1:4,:)*x1-b(1:4))>100*%eps) then bugmes();quit;end +if C(5,:)*x1>b(5) then bugmes();quit;end +//second test +Q = [0.5 -1; -1 3]; //positive-defined +p = [0; 0]; +C = [1 1]; +b = 1; +me = 1; +x1=qpsolve(Q,p,C,b,[],[],me); +if or(x1-[8;3]/11 >100*%eps) then bugmes();quit;end +if abs(x1'*p+x1'*Q*x1/2-1/22)>100*%eps then bugmes();quit;end +if abs(C*x1-b)>100*%eps then bugmes();quit;end +//sparse +x1=qpsolve(Q,p,sparse(C),b,[],[],me); +if or(x1-[8;3]/11 >100*%eps) then bugmes();quit;end +if abs(x1'*p+x1'*Q*x1/2-1/22)>100*%eps then bugmes();quit;end +if abs(C*x1-b)>100*%eps then bugmes();quit;end +//third test (R) +Q=eye(3,3);p=-[0;5;0]; +C=-[-4 2 0;-3 1 -2;0 0 1];b=-[-8;2;0];me=0; +x1=qpsolve(Q,p,C,b,[],[],me); +if or(x1-[0;5;0] >100*%eps) then bugmes();quit;end +if abs(x1'*p+x1'*Q*x1/2+12.5)>100*%eps then bugmes();quit;end +if or(abs(C*x1-b-[-18;-3;0])>100*%eps) then bugmes();quit;end +//sparse +x1=qpsolve(Q,p,sparse(C),b,[],[],me); +if or(x1-[0;5;0] >100*%eps) then bugmes();quit;end +if abs(x1'*p+x1'*Q*x1/2+12.5)>100*%eps then bugmes();quit;end +if or(abs(C*x1-b-[-18;-3;0])>100*%eps) then bugmes();quit;end +//fourth test (Matlab) +Q= [1 -1; -1 2] ; +p = [-2; -6]; +C = [1 1; -1 2; 2 1]; +b = [2; 2; 3]; +lb = zeros(2,1); +me=0; +x1=qpsolve(Q,p,C,b,[],[],me); +if or(x1-[2;4]/3 >100*%eps) then bugmes();quit;end +if abs(x1'*p+x1'*Q*x1/2+74/9)>100*%eps then bugmes();quit;end +if or(abs(C*x1-b-[0;0;-1/3])>100*%eps) then bugmes();quit;end +//sparse +x1=qpsolve(Q,p,sparse(C),b,[],[],me); +if or(x1-[2;4]/3 >100*%eps) then bugmes();quit;end +if abs(x1'*p+x1'*Q*x1/2+74/9)>100*%eps then bugmes();quit;end +if or(abs(C*x1-b-[0;0;-1/3])>100*%eps) then bugmes();quit;end +//avec bornes +Q= [1 -1; -1 2] ; +p = [-2; -6]; +C = [1 1; -1 2; 2 1]; +b = [2; 2; 3]; +lb = [0.8;0]; //zeros(2,1); +me=0; +x1=qpsolve(Q,p,C,b,lb,[],me); +if or(x1-[0.8;1.2] >100*%eps) then bugmes();quit;end +if abs(x1'*p+x1'*Q*x1/2+8)>100*%eps then bugmes();quit;end +if or(abs(C*x1-b-[0;-0.4;-0.2])>100*%eps) then bugmes();quit;end +//sparse +x1=qpsolve(Q,p,sparse(C),b,lb,[],me); +if or(x1-[0.8;1.2] >100*%eps) then bugmes();quit;end +if abs(x1'*p+x1'*Q*x1/2+8)>100*%eps then bugmes();quit;end +if or(abs(C*x1-b-[0;-0.4;-0.2])>100*%eps) then bugmes();quit;end diff --git a/modules/optimization/tests/unit_tests/qpsolve.tst b/modules/optimization/tests/unit_tests/qpsolve.tst new file mode 100755 index 000000000..db91b9137 --- /dev/null +++ b/modules/optimization/tests/unit_tests/qpsolve.tst @@ -0,0 +1,107 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +//Find x in R^6 such that: +//C1*x = b1 (3 equality constraints i.e me=3) +C1= [1,-1,1,0,3,1; + -1,0,-3,-4,5,6; + 2,5,3,0,1,0]; +b1=[1;2;3]; +//C2*x <= b2 (2 inequality constraints) +C2=[0,1,0,1,2,-1; + -1,0,2,1,1,0]; +b2=[-1;2.5]; + +//and minimize 0.5*x'*Q*x + p'*x with +p=[1;2;3;4;5;6]; Q=eye(6,6); +//No initial point is given; +C=[C1;C2] ; // +b=[b1;b2] ; // +me=3; +[x1, iact, iter, f]=qpsolve(Q,p,C,b,[],[],me); +if or(iact<>[1;3;2;4;0]) then pause,end +if x1'*p+x1'*Q*x1/2>- 14.843 then pause,end +if or(abs(C(1:4,:)*x1-b(1:4))>100*%eps) then pause,end +if C(5,:)*x1>b(5) then pause,end + +//sparse +[x1, iact, iter, f]=qpsolve(Q,p,sparse(C),b,[],[],me); +if or(iact<>[1;3;2;4;0]) then pause,end +if x1'*p+x1'*Q*x1/2>- 14.843 then pause,end +if or(abs(C(1:4,:)*x1-b(1:4))>100*%eps) then pause,end +if C(5,:)*x1>b(5) then pause,end + +//second test +Q = [0.5 -1; -1 3]; //positive-defined +p = [0; 0]; +C = [1 1]; +b = 1; +me = 1; + +x1=qpsolve(Q,p,C,b,[],[],me); +if or(x1-[8;3]/11 >100*%eps) then pause,end +if abs(x1'*p+x1'*Q*x1/2-1/22)>100*%eps then pause,end +if abs(C*x1-b)>100*%eps then pause,end + +//sparse +x1=qpsolve(Q,p,sparse(C),b,[],[],me); +if or(x1-[8;3]/11 >100*%eps) then pause,end +if abs(x1'*p+x1'*Q*x1/2-1/22)>100*%eps then pause,end +if abs(C*x1-b)>100*%eps then pause,end + +//third test (R) + +Q=eye(3,3);p=-[0;5;0]; +C=-[-4 2 0;-3 1 -2;0 0 1];b=-[-8;2;0];me=0; + +x1=qpsolve(Q,p,C,b,[],[],me); +if or(x1-[0;5;0] >100*%eps) then pause,end +if abs(x1'*p+x1'*Q*x1/2+12.5)>100*%eps then pause,end +if or(abs(C*x1-b-[-18;-3;0])>100*%eps) then pause,end +//sparse +x1=qpsolve(Q,p,sparse(C),b,[],[],me); +if or(x1-[0;5;0] >100*%eps) then pause,end +if abs(x1'*p+x1'*Q*x1/2+12.5)>100*%eps then pause,end +if or(abs(C*x1-b-[-18;-3;0])>100*%eps) then pause,end + +//fourth test (Matlab) +Q= [1 -1; -1 2] ; +p = [-2; -6]; +C = [1 1; -1 2; 2 1]; +b = [2; 2; 3]; +lb = zeros(2,1); +me=0; +x1=qpsolve(Q,p,C,b,[],[],me); +if or(x1-[2;4]/3 >100*%eps) then pause,end +if abs(x1'*p+x1'*Q*x1/2+74/9)>100*%eps then pause,end +if or(abs(C*x1-b-[0;0;-1/3])>100*%eps) then pause,end +//sparse +x1=qpsolve(Q,p,sparse(C),b,[],[],me); +if or(x1-[2;4]/3 >100*%eps) then pause,end +if abs(x1'*p+x1'*Q*x1/2+74/9)>100*%eps then pause,end +if or(abs(C*x1-b-[0;0;-1/3])>100*%eps) then pause,end + +//avec bornes +Q= [1 -1; -1 2] ; +p = [-2; -6]; +C = [1 1; -1 2; 2 1]; +b = [2; 2; 3]; +lb = [0.8;0]; //zeros(2,1); +me=0; +x1=qpsolve(Q,p,C,b,lb,[],me); +if or(x1-[0.8;1.2] >100*%eps) then pause,end +if abs(x1'*p+x1'*Q*x1/2+8)>100*%eps then pause,end +if or(abs(C*x1-b-[0;-0.4;-0.2])>100*%eps) then pause,end +//sparse + +x1=qpsolve(Q,p,sparse(C),b,lb,[],me); +if or(x1-[0.8;1.2] >100*%eps) then pause,end +if abs(x1'*p+x1'*Q*x1/2+8)>100*%eps then pause,end +if or(abs(C*x1-b-[0;-0.4;-0.2])>100*%eps) then pause,end + diff --git a/modules/optimization/tests/unit_tests/readmps.dia.ref b/modules/optimization/tests/unit_tests/readmps.dia.ref new file mode 100755 index 000000000..3ef783b3c --- /dev/null +++ b/modules/optimization/tests/unit_tests/readmps.dia.ref @@ -0,0 +1,107 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +path = fullfile(SCI,"modules","optimization","tests","unit_tests"); +stacksize("max"); +// +filename = fullfile(path,"test1.mps"); +huge = number_properties("huge"); +P=readmps(filename,[-huge huge]); +assert_checkequal(typeof(P),"mps"); +assert_checkequal(P.irobj,1); +assert_checkequal(P.namec,"COST "); +assert_checkequal(P.nameb,"RHS1 "); +assert_checkequal(P.namran," "); +assert_checkequal(P.nambnd,"BND1 "); +assert_checkequal(P.name,"TESTPROB"); +assert_checkequal(P.rownames,["COST ";"LIM1 ";"LIM2 ";"MYEQN "]); +assert_checkequal(P.colnames,["XONE ","YTWO ","ZTHREE "]); +assert_checkequal(P.rowstat,[4;3;2;1]); +assert_checkequal(P.rowcode,[4,0;3,0;1,2;0,0]); +assert_checkequal(P.colcode,zeros(3,2)); +assert_checkequal(P.rownmbs,[1;2;3;1;2;4;1;3;4]); +assert_checkequal(P.colpnts,[1,4,7,10]); +assert_checkequal(P.acoeff,[1;1;1;4;1;-1;9;1;1]); +assert_checkequal(P.rhs,[0;5;10;7]); +assert_checkequal(P.ranges,huge*ones(4,1)); +assert_checkequal(P.bounds,[-huge,4;-1,1;-huge,huge]); +assert_checkequal(P.stavar,[1;3;0]); +disp(P) + +MPS Object: +=========== + +irobj: 1 +namec: COST +nameb: RHS1 +namran: +nambnd: BND1 +name: TESTPROB +rownames: 4-by-1 string matrix +colnames: 1-by-3 string matrix +rowstat: 4-by-1 constant matrix +rowcode: 4-by-2 constant matrix +colcode: 3-by-2 constant matrix +rownmbs: 9-by-1 constant matrix +colpnts: 1-by-4 constant matrix +acoeff: 9-by-1 constant matrix +rhs: 4-by-1 constant matrix +ranges: 4-by-1 constant matrix +bounds: 3-by-2 constant matrix +stavar: 3-by-1 constant matrix +refMsg = msprintf(_(" RDMPS1 ERROR: Number of nonzeros of matrix A exceeds MAXNZA.")); +assert_checkerror("P=readmps(filename,[0 10^30],[4 3 8]);", refMsg); +P=readmps(filename,[0 10^30],[4 3 9]); +assert_checkequal(size(P.acoeff), [9 1]); +P=readmps(filename,[0 10^30],[4 3 10]); +assert_checkequal(size(P.acoeff), [10 1]); +// +filename = fullfile(path,"25FV47.SIF"); +huge = number_properties("huge"); +P=readmps(filename,[-huge huge]); +assert_checkequal(typeof(P),"mps"); +assert_checkequal(P.irobj,1); +assert_checkequal(P.namec,"R0000 "); +assert_checkequal(P.nameb,".00001 "); +assert_checkequal(P.namran," "); +assert_checkequal(P.nambnd," "); +assert_checkequal(P.name,"25FV47 "); +assert_checkequal(size(P.rownames),[822,1]); +assert_checkequal(size(P.colnames), [1,1571]); +assert_checkequal(size(P.rowstat),[822,1]); +assert_checkequal(size(P.rowcode),[822,2]); +assert_checkequal(size(P.colcode),[1571,2]); +assert_checkequal(size(P.rownmbs),[11127,1]); +assert_checkequal(size(P.colpnts),[1,1572]); +assert_checkequal(size(P.acoeff),[11127,1]); +assert_checkequal(size(P.rhs),[822,1]); +assert_checkequal(size(P.ranges),[822,1]); +assert_checkequal(size(P.bounds),[1571,2]); +assert_checkequal(size(P.stavar),[1571,1]); +disp(P) + +MPS Object: +=========== + +irobj: 1 +namec: R0000 +nameb: .00001 +namran: +nambnd: +name: 25FV47 +rownames: 822-by-1 string matrix +colnames: 1-by-1571 string matrix +rowstat: 822-by-1 constant matrix +rowcode: 822-by-2 constant matrix +colcode: 1571-by-2 constant matrix +rownmbs: 11127-by-1 constant matrix +colpnts: 1-by-1572 constant matrix +acoeff: 11127-by-1 constant matrix +rhs: 822-by-1 constant matrix +ranges: 822-by-1 constant matrix +bounds: 1571-by-2 constant matrix +stavar: 1571-by-1 constant matrix diff --git a/modules/optimization/tests/unit_tests/readmps.tst b/modules/optimization/tests/unit_tests/readmps.tst new file mode 100755 index 000000000..18dd3f292 --- /dev/null +++ b/modules/optimization/tests/unit_tests/readmps.tst @@ -0,0 +1,65 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +path = fullfile(SCI,"modules","optimization","tests","unit_tests"); +stacksize("max"); +// +filename = fullfile(path,"test1.mps"); +huge = number_properties("huge"); +P=readmps(filename,[-huge huge]); +assert_checkequal(typeof(P),"mps"); +assert_checkequal(P.irobj,1); +assert_checkequal(P.namec,"COST "); +assert_checkequal(P.nameb,"RHS1 "); +assert_checkequal(P.namran," "); +assert_checkequal(P.nambnd,"BND1 "); +assert_checkequal(P.name,"TESTPROB"); +assert_checkequal(P.rownames,["COST ";"LIM1 ";"LIM2 ";"MYEQN "]); +assert_checkequal(P.colnames,["XONE ","YTWO ","ZTHREE "]); +assert_checkequal(P.rowstat,[4;3;2;1]); +assert_checkequal(P.rowcode,[4,0;3,0;1,2;0,0]); +assert_checkequal(P.colcode,zeros(3,2)); +assert_checkequal(P.rownmbs,[1;2;3;1;2;4;1;3;4]); +assert_checkequal(P.colpnts,[1,4,7,10]); +assert_checkequal(P.acoeff,[1;1;1;4;1;-1;9;1;1]); +assert_checkequal(P.rhs,[0;5;10;7]); +assert_checkequal(P.ranges,huge*ones(4,1)); +assert_checkequal(P.bounds,[-huge,4;-1,1;-huge,huge]); +assert_checkequal(P.stavar,[1;3;0]); +disp(P) +refMsg = msprintf(_(" RDMPS1 ERROR: Number of nonzeros of matrix A exceeds MAXNZA.")); +assert_checkerror("P=readmps(filename,[0 10^30],[4 3 8]);", refMsg); +P=readmps(filename,[0 10^30],[4 3 9]); +assert_checkequal(size(P.acoeff), [9 1]); +P=readmps(filename,[0 10^30],[4 3 10]); +assert_checkequal(size(P.acoeff), [10 1]); +// +filename = fullfile(path,"25FV47.SIF"); +huge = number_properties("huge"); +P=readmps(filename,[-huge huge]); +assert_checkequal(typeof(P),"mps"); +assert_checkequal(P.irobj,1); +assert_checkequal(P.namec,"R0000 "); +assert_checkequal(P.nameb,".00001 "); +assert_checkequal(P.namran," "); +assert_checkequal(P.nambnd," "); +assert_checkequal(P.name,"25FV47 "); +assert_checkequal(size(P.rownames),[822,1]); +assert_checkequal(size(P.colnames), [1,1571]); +assert_checkequal(size(P.rowstat),[822,1]); +assert_checkequal(size(P.rowcode),[822,2]); +assert_checkequal(size(P.colcode),[1571,2]); +assert_checkequal(size(P.rownmbs),[11127,1]); +assert_checkequal(size(P.colpnts),[1,1572]); +assert_checkequal(size(P.acoeff),[11127,1]); +assert_checkequal(size(P.rhs),[822,1]); +assert_checkequal(size(P.ranges),[822,1]); +assert_checkequal(size(P.bounds),[1571,2]); +assert_checkequal(size(P.stavar),[1571,1]); +disp(P) diff --git a/modules/optimization/tests/unit_tests/semidef.dia.ref b/modules/optimization/tests/unit_tests/semidef.dia.ref new file mode 100755 index 000000000..a6240786f --- /dev/null +++ b/modules/optimization/tests/unit_tests/semidef.dia.ref @@ -0,0 +1,99 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// 1. Define the initial guess +x0=[0;0]; +// +// 2. Create a compressed representation of F +// Define 3 symmetric block-diagonal matrices: F0, F1, F2 +F0=[2,1,0,0; + 1,2,0,0; + 0,0,3,1; + 0,0,1,3]; +F1=[1,2,0,0; + 2,1,0,0; + 0,0,1,3; + 0,0,3,1]; +F2=[2,2,0,0; + 2,2,0,0; + 0,0,3,4; + 0,0,4,4]; +// Define the size of the two blocks: +// the first block has size 2, +// the second block has size 2. +blocksizes=[2,2]; +// Extract the two blocks of the matrices. +F01=F0(1:2,1:2); +F02=F0(3:4,3:4); +F11=F1(1:2,1:2); +F12=F1(3:4,3:4); +F21=F2(1:2,1:2); +F22=F2(3:4,3:4); +// Create 3 column vectors, containing nonzero entries +// in F0, F1, F2. +F0nnz = list2vec(list(F01,F02)); +F1nnz = list2vec(list(F11,F12)); +F2nnz = list2vec(list(F21,F22)); +// Create a 16-by-3 matrix, representing the +// nonzero entries of the 3 matrices F0, F1, F2. +FF=[F0nnz,F1nnz,F2nnz]; +// Compress FF +CFF = pack(FF,blocksizes); +// +// 3. Create a compressed representation of Z +// Create the matrix Z0 +Z0=2*F0; +// Extract the two blocks of the matrix +Z01=Z0(1:2,1:2); +Z02=Z0(3:4,3:4); +// Create 2 column vectors, containing nonzero entries +// in Z0. +ZZ0 = [Z01(:);Z02(:)]; +// Compress ZZO +CZZ0 = pack(ZZ0,blocksizes); +// +// 4. Create the linear vector c +c=[trace(F1*Z0);trace(F2*Z0)]; +// +// 5. Define the algorithm options +nu = 10; +abstol=1.d-8; +reltol=1.d-10; +tv = 0; +maxiters = 50; +options=[nu,abstol,reltol,tv,maxiters]; +// 6. Solve the problem +[x,CZ,ul,info]=semidef(x0,CZZ0,CFF,blocksizes,c,options); + + primal obj. dual obj. dual. gap + 0.00e+000 -6.00e+001 6.00e+001 + -4.40e+001 -5.09e+001 6.84e+000 + -4.44e+001 -4.50e+001 6.73e-001 + -4.44e+001 -4.45e+001 5.11e-002 + -4.44e+001 -4.44e+001 2.46e-003 + -4.44e+001 -4.44e+001 3.15e-004 + -4.44e+001 -4.44e+001 1.54e-005 + -4.44e+001 -4.44e+001 1.80e-006 + -4.44e+001 -4.44e+001 1.86e-007 + -4.44e+001 -4.44e+001 2.00e-008 + -4.44e+001 -4.44e+001 2.57e-009 +// +// 7. Check the output +// Unpack CZ +Z=unpack(CZ,blocksizes); +w=vec2list(Z,[blocksizes;blocksizes]); +Z=sysdiag(w(1),w(2)); +// Check that info states that absolute convergence occurred +assert_checkequal(info(1),2); +// Check that ul contains the expected values +expectedUl1=c'*x; +assert_checkalmostequal(expectedUl1,ul(1),100*%eps); +expectedUl2=-trace(F0*Z); +assert_checkalmostequal(expectedUl2,ul(2),100*%eps); +// Check Slater's condition, which states that the duality gap is zero at optimum. +dualitygap = ul(1)-ul(2); +assert_checktrue(dualitygap < abstol); diff --git a/modules/optimization/tests/unit_tests/semidef.tst b/modules/optimization/tests/unit_tests/semidef.tst new file mode 100755 index 000000000..ab5af7655 --- /dev/null +++ b/modules/optimization/tests/unit_tests/semidef.tst @@ -0,0 +1,92 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2008 - INRIA +// Copyright (C) 2011 - DIGITEO - INRIA +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> +// <-- NO CHECK REF --> + +// 1. Define the initial guess +x0=[0;0]; +// +// 2. Create a compressed representation of F +// Define 3 symmetric block-diagonal matrices: F0, F1, F2 +F0=[2,1,0,0; + 1,2,0,0; + 0,0,3,1; + 0,0,1,3]; +F1=[1,2,0,0; + 2,1,0,0; + 0,0,1,3; + 0,0,3,1]; +F2=[2,2,0,0; + 2,2,0,0; + 0,0,3,4; + 0,0,4,4]; +// Define the size of the two blocks: +// the first block has size 2, +// the second block has size 2. +blocksizes=[2,2]; +// Extract the two blocks of the matrices. +F01=F0(1:2,1:2); +F02=F0(3:4,3:4); +F11=F1(1:2,1:2); +F12=F1(3:4,3:4); +F21=F2(1:2,1:2); +F22=F2(3:4,3:4); +// Create 3 column vectors, containing nonzero entries +// in F0, F1, F2. +F0nnz = list2vec(list(F01,F02)); +F1nnz = list2vec(list(F11,F12)); +F2nnz = list2vec(list(F21,F22)); +// Create a 16-by-3 matrix, representing the +// nonzero entries of the 3 matrices F0, F1, F2. +FF=[F0nnz,F1nnz,F2nnz]; +// Compress FF +CFF = pack(FF,blocksizes); +// +// 3. Create a compressed representation of Z +// Create the matrix Z0 +Z0=2*F0; +// Extract the two blocks of the matrix +Z01=Z0(1:2,1:2); +Z02=Z0(3:4,3:4); +// Create 2 column vectors, containing nonzero entries +// in Z0. +ZZ0 = [Z01(:);Z02(:)]; +// Compress ZZO +CZZ0 = pack(ZZ0,blocksizes); +// +// 4. Create the linear vector c +c=[trace(F1*Z0);trace(F2*Z0)]; +// +// 5. Define the algorithm options +nu = 10; +abstol=1.d-8; +reltol=1.d-10; +tv = 0; +maxiters = 50; +options=[nu,abstol,reltol,tv,maxiters]; +// 6. Solve the problem +[x,CZ,ul,info]=semidef(x0,CZZ0,CFF,blocksizes,c,options); +// +// 7. Check the output +// Unpack CZ +Z=unpack(CZ,blocksizes); +w=vec2list(Z,[blocksizes;blocksizes]); + +Z=sysdiag(w(1),w(2)); +// Check that info states that absolute convergence occurred +assert_checkequal(info(1),2); +// Check that ul contains the expected values +expectedUl1=c'*x; +assert_checkalmostequal(expectedUl1,ul(1),100*%eps); +expectedUl2=-trace(F0*Z); +assert_checkalmostequal(expectedUl2,ul(2),100*%eps); +// Check Slater's condition, which states that the duality gap is zero at optimum. +dualitygap = ul(1)-ul(2); +assert_checktrue(dualitygap < abstol); + diff --git a/modules/optimization/tests/unit_tests/test1.mps b/modules/optimization/tests/unit_tests/test1.mps new file mode 100755 index 000000000..a7c566d41 --- /dev/null +++ b/modules/optimization/tests/unit_tests/test1.mps @@ -0,0 +1,25 @@ +* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +* Copyright (C) 2011 - DIGITEO - Michael Baudin +* +* This file is distributed under the same license as the Scilab package. +NAME TESTPROB +ROWS + N COST + L LIM1 + G LIM2 + E MYEQN +COLUMNS + XONE COST 1 LIM1 1 + XONE LIM2 1 + YTWO COST 4 LIM1 1 + YTWO MYEQN -1 + ZTHREE COST 9 LIM2 1 + ZTHREE MYEQN 1 +RHS + RHS1 LIM1 5 LIM2 10 + RHS1 MYEQN 7 +BOUNDS + UP BND1 XONE 4 + LO BND1 YTWO -1 + UP BND1 YTWO 1 +ENDATA diff --git a/modules/optimization/tests/unit_tests/unpack.dia.ref b/modules/optimization/tests/unit_tests/unpack.dia.ref new file mode 100755 index 000000000..9a60e4c77 --- /dev/null +++ b/modules/optimization/tests/unit_tests/unpack.dia.ref @@ -0,0 +1,37 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +// <-- CLI SHELL MODE --> +// Define a compressed list of symmetric block-diagonal matrices. +// There are 3 matrices in the list, as indicated by the 3 columns in CA. +// Only the nonzero entries are stored in CA. +// Only the upper part of the symmetric diagonal matrices are stored in CA. +CA = [ +2,1,2; +1,2,2; +2,1,2; +3,1,3; +1,3,4; +3,1,4 +]; +// Each of the 3 block-diagonal matrices has 2 blocks. +// Define the size of the two blocks: +// the first block has size 2, +// the second block has size 2. +blocksizes=[2,2]; +// Unpack the matrices. +A=unpack(CA,blocksizes); +A_expected = [ +2,1,2; +1,2,2; +1,2,2; +2,1,2; +3,1,3; +1,3,4; +1,3,4; +3,1,4 +]; +assert_checkequal(A,A_expected); diff --git a/modules/optimization/tests/unit_tests/unpack.tst b/modules/optimization/tests/unit_tests/unpack.tst new file mode 100755 index 000000000..bd527593f --- /dev/null +++ b/modules/optimization/tests/unit_tests/unpack.tst @@ -0,0 +1,39 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2011 - DIGITEO - Michael Baudin +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> + +// Define a compressed list of symmetric block-diagonal matrices. +// There are 3 matrices in the list, as indicated by the 3 columns in CA. +// Only the nonzero entries are stored in CA. +// Only the upper part of the symmetric diagonal matrices are stored in CA. +CA = [ +2,1,2; +1,2,2; +2,1,2; +3,1,3; +1,3,4; +3,1,4 +]; +// Each of the 3 block-diagonal matrices has 2 blocks. +// Define the size of the two blocks: +// the first block has size 2, +// the second block has size 2. +blocksizes=[2,2]; +// Unpack the matrices. +A=unpack(CA,blocksizes); +A_expected = [ +2,1,2; +1,2,2; +1,2,2; +2,1,2; +3,1,3; +1,3,4; +1,3,4; +3,1,4 +]; +assert_checkequal(A,A_expected); |