Optimization: fixed bug #7723: demos generated warnings
[scilab.git] / scilab / modules / optimization / demos / neldermead / nmplot_quadratic.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_qfixed()
13
14   mprintf(_("Illustrates that the fixed-shape Spendley et al. algorithm performs well on a quadratic test case.\n"));
15   mprintf(_("Defining quadratic function ...\n"));
16   
17   function [ y , index ] = quadratic ( x , index )
18     y = x(1)^2 + x(2)^2 - x(1) * x(2);
19   endfunction
20
21   mprintf(_("Creating nmplot object ...\n"));
22   
23   nm = nmplot_new ();
24   nm = nmplot_configure(nm, "-numberofvariables",2);
25   nm = nmplot_configure(nm, "-function",quadratic);
26   nm = nmplot_configure(nm, "-x0",[2.0 2.0]');
27   nm = nmplot_configure(nm, "-maxiter",100);
28   nm = nmplot_configure(nm, "-maxfunevals",300);
29   nm = nmplot_configure(nm, "-tolxmethod",%f);
30   nm = nmplot_configure(nm, "-tolsimplexizerelative",1.e-8);
31   nm = nmplot_configure(nm, "-simplex0method","spendley");
32   nm = nmplot_configure(nm, "-method","fixed");
33   //
34   // Setup output files
35   //
36   simplexfn = TMPDIR + filesep() + "history.simplex.txt";
37   fbarfn = TMPDIR + filesep() + "history.fbar.txt";
38   foptfn = TMPDIR + filesep() + "history.fopt.txt";
39   sigmafn = TMPDIR + filesep() + "history.sigma.txt";
40   
41   nm = nmplot_configure(nm, "-simplexfn",simplexfn);
42   nm = nmplot_configure(nm, "-fbarfn",fbarfn);
43   nm = nmplot_configure(nm, "-foptfn",foptfn);
44   nm = nmplot_configure(nm, "-sigmafn",sigmafn);
45   
46   //
47   // Perform optimization
48   //
49   mprintf(_("Searching (please wait) ...\n"));
50   nm = nmplot_search(nm);
51   disp(nm);
52   // Plot various histories
53   mprintf(_("Plotting history of fbar ...\n"));
54   f = scf();
55   nmplot_historyplot ( nm , fbarfn, mytitle = _("Function Value Average") , myxlabel = _("Iterations") );
56   mprintf( _("Plotting history of fopt ...\n"));
57   f = scf();
58   nmplot_historyplot ( nm , foptfn, mytitle = _("Logarithm Minimum Function Value") , myxlabel = _("Iterations") );
59   f.children.log_flags = "nln";
60   newticks = tlist(["ticks","locations","labels"]);
61   newticks.labels = ["1.e-20" "1.e-10" "1.e-1"];
62   newticks.locations = [1.e-20 1.e-10 1.e-1];
63   f.children.y_ticks = newticks;
64   f.children.children(1).children.mark_mode = "on";
65   f.children.children(1).children.mark_style = 9;
66   mprintf(_("Plotting history of sigma ...\n"));
67   f = scf();
68   nmplot_historyplot ( nm , sigmafn, mytitle = _("Logarithm Maximum Oriented length") , myxlabel = _("Iterations") );
69   f.children.log_flags = "nln";
70   f.children.y_ticks = newticks;
71   f.children.children(1).children.mark_mode = "on";
72   f.children.children(1).children.mark_style = 9;
73   
74   // Plot the contours of the cost function and the simplex history
75   mprintf(_("Plotting contour (please wait) ...\n"));
76   nm = nmplot_configure(nm, "-verbose",0);
77   [nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin = -2.0 , xmax = 4.0 , ymin = -2.0 , ymax = 4.0 , nx = 50 , ny = 50 );
78   f = scf();
79   drawlater();
80   contour ( xdata , ydata , zdata , [0.1 1.0 2.0 5.0 10.0 15.0 20.0] )
81   nmplot_simplexhistory ( nm );
82   drawnow();
83   
84   // Clean-up
85   deletefile(simplexfn);
86   deletefile(fbarfn);
87   deletefile(foptfn);
88   deletefile(sigmafn);
89   nm = nmplot_destroy(nm);
90   mprintf("End of demo.\n");
91
92   //
93   // Load this script into the editor
94   //
95   filename = 'nmplot_quadratic.fixed.sce';
96   dname = get_absolute_file_path(filename);
97   editor ( dname + filename, "readonly" );
98
99 endfunction 
100
101 demo_nmplot_qfixed();
102 clear demo_nmplot_qfixed;