Optimization: fixed bug #7723: demos generated warnings
[scilab.git] / scilab / modules / optimization / demos / neldermead / nmplot_quadratic.fixed2.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_qfixed2()
13
14   mprintf(_("Illustrates that the fixed-shape Spendley et al. algorithm performs badly on a badly quadratic test case.\n"));
15   mprintf(_("Defining quadratic function...\n"));
16   a = 100;
17   
18   function [ y , index ] = quadratic ( x , index )
19     y = a * x(1)^2 + x(2)^2;
20   endfunction
21
22   mprintf(_("Creating nmplot object ...\n"));
23   nm = nmplot_new ();
24   nm = nmplot_configure(nm, "-numberofvariables",2);
25   nm = nmplot_configure(nm, "-function",quadratic);
26   nm = nmplot_configure(nm, "-x0",[10.0 10.0]');
27   nm = nmplot_configure(nm, "-maxiter",400);
28   nm = nmplot_configure(nm, "-maxfunevals",400);
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   //
35   // Setup output files
36   //
37   simplexfn = TMPDIR + filesep() + "history.simplex.txt";
38   fbarfn = TMPDIR + filesep() + "history.fbar.txt";
39   foptfn = TMPDIR + filesep() + "history.fopt.txt";
40   sigmafn = TMPDIR + filesep() + "history.sigma.txt";
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   // Plot the contours of the cost function and the simplex history
74   mprintf(_("Plotting contour (please wait) ...\n"));
75   nm = nmplot_configure(nm, "-verbose", 0);
76   [nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin = -5.0 , xmax = 12.0 , ymin = -2.0 , ymax = 12.0 , nx = 50 , ny = 50 );
77   f = scf();
78   drawlater();
79   contour ( xdata , ydata , zdata , [10.0 50 100 1000 2000 5000 10000 20000] )
80   nmplot_simplexhistory ( nm );
81   drawnow();
82   
83   // Clean-up
84   deletefile(simplexfn);
85   deletefile(fbarfn);
86   deletefile(foptfn);
87   deletefile(sigmafn);
88   nm = nmplot_destroy(nm);
89   mprintf("End of demo.\n");
90
91   //
92   // Load this script into the editor
93   //
94   filename = 'nmplot_quadratic.fixed2.sce';
95   dname = get_absolute_file_path(filename);
96   editor ( dname + filename, "readonly" );
97
98 endfunction
99
100 demo_nmplot_qfixed2();
101 clear demo_nmplot_qfixed2;
102
103