6d6a82cd45344e09ba2f93592b6784d289b495db
[scilab.git] / scilab / modules / optimization / demos / neldermead / nmplot_han1.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 //
12 // han1 --
13 //   Compute the cost function from the Han Phd Thesis
14 //   which exhibits a failure of the NM method.
15 // Reference 
16 //   Algorithms in Unconstrained Optimization
17 //   Han, Lixing
18 //   2000
19 //   Ph.D., The University of Connecticut
20 //
21 mprintf("Defining Han function...\n");
22 function f = han1 ( x )
23   f = x(1)^2 + x(2) * (x(2) + 2.0) * (x(2) - 0.5) * (x(2) - 2.0);
24 endfunction
25
26
27 mprintf("Defining initial simplex coordinates...\n");
28 coords0 = [
29     0.  -1.  
30     0.   1.  
31     1.   0.  
32 ]
33
34
35 mprintf("Creating nmplot object...\n");
36 nm = nmplot_new ();
37 mprintf("Configuring nmplot object...\n");
38 nm = nmplot_configure(nm,"-numberofvariables",2);
39 nm = nmplot_configure(nm,"-function",han1);
40 nm = nmplot_configure(nm,"-x0",[1.0 1.0]');
41 nm = nmplot_configure(nm,"-maxiter",50);
42 nm = nmplot_configure(nm,"-maxfunevals",300);
43 nm = nmplot_configure(nm,"-tolfunrelative",10*%eps);
44 nm = nmplot_configure(nm,"-tolxrelative",10*%eps);
45 nm = nmplot_configure(nm,"-simplex0method","given");
46 nm = nmplot_configure(nm,"-coords0",coords0);
47 nm = nmplot_configure(nm,"-simplex0length",1.0);
48 nm = nmplot_configure(nm,"-method","variable");
49 //nm = nmplot_configure(nm,"-verbose",1);
50 nm = nmplot_configure(nm,"-verbosetermination",1);
51 //
52 // Setup output files
53 //
54 mprintf("Setup output files...\n");
55 nm = nmplot_configure(nm,"-simplexfn","han1-history-simplex.txt");
56 nm = nmplot_configure(nm,"-fbarfn","han1-history-fbar.txt");
57 nm = nmplot_configure(nm,"-foptfn","han1-history-fopt.txt");
58 nm = nmplot_configure(nm,"-sigmafn","han1-history-sigma.txt");
59 //
60 // Perform optimization
61 //
62 mprintf("Searching for minimum...\n");
63 nm = nmplot_search(nm);
64 nmplot_display(nm);
65 //
66 // Plot the history of the simplex
67 //
68 mprintf("Plotting contour...\n");
69 [nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin = -0.2 , xmax = 1.2 , ymin = -2.0 , ymax = 2.0 , nx = 50 , ny = 50 );
70 //[nm , xdata , ydata , zdata ] = nmplot_contour ( nm , xmin = -0.2 , xmax = 1.2 , ymin = -1.2 , ymax = 1.2 , nx = 50 , ny = 50 );
71 wnum = 100001;
72 f = scf(wnum);
73 xset("fpf"," ")
74 contour ( xdata , ydata , zdata , [-5 -4 -2 -1 0 1 1.5] )
75 nmplot_simplexhistory ( nm );
76 //
77 // Clean-up
78 //
79 deletefile("han1-history-simplex.txt");
80 deletefile("han1-history-fbar.txt");
81 deletefile("han1-history-fopt.txt");
82 deletefile("han1-history-sigma.txt");
83 nm = nmplot_destroy(nm);
84
85