Renamed mtlb_fminsearch into fminsearch. Added demos.
[scilab.git] / scilab / modules / optimization / demos / neldermead / nmplot_han2.sce
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2008-2009 - INRIA - Michael Baudin
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10
11 //
12 // han2 --
13 //   Compute the cost function from the Han Phd Thesis
14 //   which exhibits a failure of the NM method.
15 // Reference 
16 //   Algorithms in Unconstrained Optimization
17 //   Han, Lixing
18 //   2000
19 //   Ph.D., The University of Connecticut
20 //
21 function f = han2 ( x )
22   if abs(x(2)) <= 1.0 then
23     rho = 0.0
24   elseif x(2) > 1.0 then
25     rho = x(2) - 1
26   else
27     rho = -x(2) - 1
28   end
29   f = x(1)^2 + rho;
30 endfunction
31
32
33 coords0 = [
34 0.0 0.0 1.0
35 0.5 -0.5 0.0
36 ]
37
38
39 nm = nmplot_new ();
40 nm = nmplot_configure(nm,"-numberofvariables",2);
41 nm = nmplot_configure(nm,"-function",han2);
42 nm = nmplot_configure(nm,"-x0",[1.0 1.0]');
43 nm = nmplot_configure(nm,"-maxiter",50);
44 nm = nmplot_configure(nm,"-maxfunevals",300);
45 nm = nmplot_configure(nm,"-tolfunrelative",10*%eps);
46 nm = nmplot_configure(nm,"-tolxrelative",10*%eps);
47 nm = nmplot_configure(nm,"-simplex0method","given");
48 nm = nmplot_configure(nm,"-coords0",coords0);
49 nm = nmplot_configure(nm,"-simplex0length",1.0);
50 nm = nmplot_configure(nm,"-method","variable");
51 //nm = nmplot_configure(nm,"-verbose",1);
52 nm = nmplot_configure(nm,"-verbosetermination",1);
53 //
54 // Setup output files
55 //
56 nm = nmplot_configure(nm,"-simplexfn","han2-history-simplex.txt");
57 //
58 // Perform optimization
59 //
60 nm = nmplot_search(nm);
61 //
62 // Plot
63 //
64 [nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin = -0.2 , xmax = 1.2 , ymin = -1.5 , ymax = 1.5 , nx = 50 , ny = 50 );
65 f = scf();
66 xset("fpf"," ")
67 contour ( xdata , ydata , zdata , 40 )
68 nmplot_simplexhistory ( nm );
69 xs2png(0,"han2-history-simplex.png");
70 deletefile("han2-history-simplex.txt");
71 nm = nmplot_destroy(nm);
72
73