Optimization: fixed bug #7723: demos generated warnings
[scilab.git] / scilab / modules / optimization / demos / neldermead / nmplot_rosenbrock.fixed.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_rosen()
13
14   mprintf(_("Illustrates that the fixed-shape Spendley et al. algorithm does NOT perform well on Rosenbrock test case.\n"));
15   mprintf(_("Defining Rosenbrock function...\n"));
16   
17   function [ y , index ] = rosenbrock ( x , index )
18     y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
19   endfunction
20
21   mprintf(_("Creating nmplot object ...\n"));
22   nm = nmplot_new ();
23   nm = nmplot_configure(nm, "-numberofvariables",2);
24   nm = nmplot_configure(nm, "-function",rosenbrock);
25   nm = nmplot_configure(nm, "-x0",[-1.2 1.0]');
26   nm = nmplot_configure(nm, "-maxiter",100);
27   nm = nmplot_configure(nm, "-maxfunevals",300);
28   nm = nmplot_configure(nm, "-tolfunrelative",10*%eps);
29   nm = nmplot_configure(nm, "-tolxrelative",10*%eps);
30   nm = nmplot_configure(nm, "-method","fixed");
31   
32   //
33   // Setup output files
34   //
35   simplexfn = TMPDIR + filesep() + "history.simplex.txt";
36   fbarfn = TMPDIR + filesep() + "history.fbar.txt";
37   foptfn = TMPDIR + filesep() + "history.fopt.txt";
38   sigmafn = TMPDIR + filesep() + "history.sigma.txt";
39   nm = nmplot_configure(nm, "-simplexfn",simplexfn);
40   nm = nmplot_configure(nm, "-fbarfn",fbarfn);
41   nm = nmplot_configure(nm, "-foptfn",foptfn);
42   nm = nmplot_configure(nm, "-sigmafn",sigmafn);
43   
44   //
45   // Perform optimization
46   //
47   mprintf(_("Searching (please wait) ...\n"));
48   nm = nmplot_search(nm);
49   disp(nm);
50   
51   // Plot the contours of the cost function and the simplex history
52   mprintf(_("Plotting contour (please wait) ...\n"));
53   [nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin = -2.0 , xmax = 2.0 , ymin = -2.0 , ymax = 2.0 , nx = 50 , ny = 50 );
54   f = scf();
55   drawlater();
56   contour ( xdata , ydata , zdata , [2 10 100 500 1000 2000] )
57   nmplot_simplexhistory ( nm );
58   drawnow();
59   mprintf(_("Plotting history of fbar ...\n"));
60   f = scf();
61   nmplot_historyplot ( nm , fbarfn, mytitle = _("Function Value Average") , myxlabel = _("Iterations") );
62   mprintf(_("Plotting history of fopt ...\n"));
63   f = scf();
64   nmplot_historyplot ( nm , foptfn, mytitle = _("Minimum Function Value") , myxlabel = _("Iterations") );
65   mprintf(_("Plotting history of sigma ...\n"));
66   f = scf();
67   nmplot_historyplot ( nm , sigmafn, mytitle = _("Maximum Oriented length") , myxlabel = _("Iterations") );
68   deletefile(simplexfn);
69   deletefile(fbarfn);
70   deletefile(foptfn);
71   deletefile(sigmafn);
72   nm = nmplot_destroy(nm);
73   mprintf(_("End of demo.\n"));
74
75   //
76   // Load this script into the editor
77   //
78   
79   filename = 'nmplot_rosenbrock.fixed.sce';
80   dname = get_absolute_file_path(filename);
81   editor ( dname + filename, "readonly" );
82
83 endfunction
84
85 demo_nmplot_rosen()
86 clear demo_nmplot_rosen;