Optimization: fixed bug #7723: demos generated warnings
[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 // Copyright (C) 2010 - DIGITEO - Allan CORNET
4 // Copyright (C) 2011 - DIGITEO - Michael Baudin
5 //
6 // This file must be used under the terms of the CeCILL.
7 // This source file is licensed as described in the file COPYING, which
8 // you should have received as part of this distribution.  The terms
9 // are also available at
10 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11
12
13 function demo_nmplot_2()
14   mprintf(_("Illustrates the 2nd counter example given by Han et al.\n"));
15
16   //
17   // han2 --
18   //   Compute the cost function from the Han Phd Thesis
19   //   which exhibits a failure of the NM method.
20   // Reference 
21   //   Algorithms in Unconstrained Optimization
22   //   Han, Lixing
23   //   2000
24   //   Ph.D., The University of Connecticut
25   //
26   function [ f , index ] = han2 ( x , index )
27     if abs(x(2)) <= 1.0 then
28       rho = 0.0
29     elseif x(2) > 1.0 then
30       rho = x(2) - 1
31     else
32       rho = -x(2) - 1
33     end
34     f = x(1)^2 + rho;
35   endfunction
36
37
38   coords0 = [
39     0.    0.5  
40     0.   -0.5  
41     1.    0.];
42
43   mprintf(_("Creating nmplot object ...\n"));
44   nm = nmplot_new ();
45   nm = nmplot_configure(nm, "-numberofvariables", 2);
46   nm = nmplot_configure(nm, "-function", han2);
47   nm = nmplot_configure(nm, "-x0", [1.0 1.0]');
48   nm = nmplot_configure(nm, "-maxiter", 50);
49   nm = nmplot_configure(nm, "-maxfunevals", 300);
50   nm = nmplot_configure(nm, "-tolfunrelative", 10*%eps);
51   nm = nmplot_configure(nm, "-tolxrelative", 10*%eps);
52   nm = nmplot_configure(nm, "-simplex0method", "given");
53   nm = nmplot_configure(nm, "-coords0", coords0);
54   
55   //
56   // Setup output files
57   //
58   simplexfn = TMPDIR + filesep() + "history.simplex.txt";
59   nm = nmplot_configure(nm, "-simplexfn", simplexfn);
60   
61   //
62   // Perform optimization
63   //
64   mprintf(_("Searching (please wait) ...\n"));
65   nm = nmplot_search(nm);
66   disp(nm);
67   
68   //
69   // Plot
70   //
71   mprintf(_("Plotting contour (please wait) ...\n"));
72   [nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin = -0.2 , xmax = 1.2 , ymin = -1.5 , ymax = 1.5 , nx = 50 , ny = 50 );
73   f = scf(100001);
74   xset("fpf"," ")
75   drawlater();
76   contour ( xdata , ydata , zdata , [0.1 0.2 0.5 1.0 1.5 1.9] )
77   nmplot_simplexhistory ( nm );
78   drawnow();
79   deletefile(simplexfn);
80   nm = nmplot_destroy(nm);
81   mprintf(_("End of demo.\n"));
82
83   //
84   // Load this script into the editor
85   //
86   filename = 'nmplot_han2.sce';
87   dname = get_absolute_file_path(filename);
88   editor (dname + filename, 'readonly');
89
90 endfunction
91
92 demo_nmplot_2()
93 clear demo_nmplot_2;