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