Optimization: fixed bug #7723: demos generated warnings
[scilab.git] / scilab / modules / optimization / demos / neldermead / nmplot_han1.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 function demo_nmplot_1()
13
14   mprintf(_("Illustrates the 1st counter example given by Han et al.\n"));
15
16   //
17   // han1 --
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   mprintf(_("Defining Han function...\n"));
27   
28   function [ f , index ] = han1 ( x , index )
29     f = x(1)^2 + x(2) * (x(2) + 2.0) * (x(2) - 0.5) * (x(2) - 2.0);
30   endfunction
31
32
33   mprintf(_("Defining initial simplex coordinates...\n"));
34   coords0 = [
35     0.  -1.  
36     0.   1.  
37     1.   0.  
38   ];
39
40
41   mprintf(_("Creating nmplot object...\n"));
42   nm = nmplot_new ();
43   mprintf(_("Configuring nmplot object...\n"));
44   nm = nmplot_configure(nm, "-numberofvariables", 2);
45   nm = nmplot_configure(nm, "-function", han1);
46   nm = nmplot_configure(nm, "-x0", [1.0 1.0]');
47   nm = nmplot_configure(nm, "-maxiter", 50);
48   nm = nmplot_configure(nm, "-maxfunevals", 300);
49   nm = nmplot_configure(nm, "-tolfunrelative", 10*%eps);
50   nm = nmplot_configure(nm, "-tolxrelative", 10*%eps);
51   nm = nmplot_configure(nm, "-simplex0method", "given");
52   nm = nmplot_configure(nm, "-coords0", coords0);
53   
54   //
55   // Setup output files
56   //
57   mprintf(_("Setup output files...\n"));
58   simplexfn = TMPDIR + filesep() + "history.simplex.txt";
59   fbarfn = TMPDIR + filesep() + "history.fbar.txt";
60   foptfn = TMPDIR + filesep() + "history.fopt.txt";
61   sigmafn = TMPDIR + filesep() + "history.sigma.txt";
62   nm = nmplot_configure(nm, "-simplexfn", simplexfn);
63   nm = nmplot_configure(nm, "-fbarfn", fbarfn);
64   nm = nmplot_configure(nm, "-foptfn", foptfn);
65   nm = nmplot_configure(nm, "-sigmafn", sigmafn);
66   
67   //
68   // Perform optimization
69   //
70   mprintf(_("Searching (please wait)...\n"));
71   nm = nmplot_search(nm);
72   disp(nm);
73   
74   //
75   // Plot the history of the simplex
76   //
77   mprintf(_("Plotting contour (please wait)...\n"));
78   [nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin = -0.2 , xmax = 1.2 , ymin = -2.0 , ymax = 2.0 , nx = 50 , ny = 50 );
79   my_handle = scf(100001);
80   clf(my_handle,"reset");
81   drawlater();
82   contour ( xdata , ydata , zdata , [-5 -4 -2 -1 0 1 1.5] )
83   nmplot_simplexhistory ( nm );
84   drawnow();
85   
86   //
87   // Clean-up
88   //
89   deletefile(simplexfn);
90   deletefile(fbarfn);
91   deletefile(foptfn);
92   deletefile(sigmafn);
93   nm = nmplot_destroy(nm);
94   mprintf(_("End of demo.\n"));
95   
96   //
97   // Load this script into the editor
98   //
99   filename = 'nmplot_han1.sce';
100   dname = get_absolute_file_path(filename);
101   editor ( dname + filename, "readonly" );
102
103 endfunction
104
105 demo_nmplot_1();
106 clear demo_nmplot_1;