fminsearch: added (please wait) messages in the demos
[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 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10
11 mprintf("Illustrates the Nelder-Mead algorithm on Rosenbrock test case.\n");
12 mprintf("Defining Rosenbrock function...\n");
13 function [ y , index ] = rosenbrock ( x , index )
14   y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
15 endfunction
16
17 mprintf("Creating nmplot object...\n");
18 nm = nmplot_new ();
19 nm = nmplot_configure(nm,"-numberofvariables",2);
20 nm = nmplot_configure(nm,"-function",rosenbrock);
21 nm = nmplot_configure(nm,"-x0",[-1.2 1.0]');
22 nm = nmplot_configure(nm,"-maxiter",200);
23 nm = nmplot_configure(nm,"-maxfunevals",300);
24 nm = nmplot_configure(nm,"-tolfunrelative",10*%eps);
25 nm = nmplot_configure(nm,"-tolxrelative",10*%eps);
26 nm = nmplot_configure(nm,"-simplex0method","axes");
27 nm = nmplot_configure(nm,"-simplex0length",1.0);
28 nm = nmplot_configure(nm,"-method","variable");
29 //nm = nmplot_configure(nm,"-verbose",1);
30 nm = nmplot_configure(nm,"-verbosetermination",0);
31 //
32 // Setup output files
33 //
34 nm = nmplot_configure(nm,"-simplexfn","rosenbrock.history.simplex.txt");
35 nm = nmplot_configure(nm,"-fbarfn","rosenbrock.history.fbar.txt");
36 nm = nmplot_configure(nm,"-foptfn","rosenbrock.history.fopt.txt");
37 nm = nmplot_configure(nm,"-sigmafn","rosenbrock.history.sigma.txt");
38 //
39 // Perform optimization
40 //
41 mprintf("Searching (please wait)...\n");
42 nm = nmplot_search(nm);
43 nmplot_display(nm);
44 // Plot the contours of the cost function and the simplex history
45 mprintf("Plotting contour (please wait)...\n");
46 [nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin = -2.0 , xmax = 2.0 , ymin = -1.0 , ymax = 2.5 , nx = 50 , ny = 50 );
47 f = scf();
48 drawlater();
49 contour ( xdata , ydata , zdata , [2 10 100 500 1000 2000] )
50 nmplot_simplexhistory ( nm );
51 drawnow();
52 mprintf("Plotting history of fbar...\n");
53 f = scf();
54 nmplot_historyplot ( nm , "rosenbrock.history.fbar.txt" , ...
55   mytitle = "Function Value Average" , myxlabel = "Iterations" );
56 mprintf("Plotting history of fopt...\n");
57 f = scf();
58 nmplot_historyplot ( nm , "rosenbrock.history.fopt.txt" , ...
59   mytitle = "Minimum Function Value" , myxlabel = "Iterations" );
60 mprintf("Plotting history of sigma...\n");
61 f = scf();
62 nmplot_historyplot ( nm , "rosenbrock.history.sigma.txt" , ...
63   mytitle = "Maximum Oriented length" , myxlabel = "Iterations" );
64 mprintf("Cleaning up...\n");
65 deletefile("rosenbrock.history.simplex.txt");
66 deletefile("rosenbrock.history.fbar.txt");
67 deletefile("rosenbrock.history.fopt.txt");
68 deletefile("rosenbrock.history.sigma.txt");
69 nm = nmplot_destroy(nm);
70 mprintf("End of demo.\n");
71
72 //
73 // Load this script into the editor
74 //
75 filename = 'nmplot_rosenbrock.sce';
76 dname = get_absolute_file_path(filename);
77 editor ( dname + filename );
78