* Bug 16365 fixed: median(m,'r'|'c') was wrong after 5dc990
[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 // Copyright (C) 2010 - DIGITEO - Allan CORNET
4 // Copyright (C) 2011 - DIGITEO - Michael Baudin
5 // Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
6 //
7 // Copyright (C) 2012 - 2016 - Scilab Enterprises
8 //
9 // This file is hereby licensed under the terms of the GNU GPL v2.0,
10 // pursuant to article 5.3.4 of the CeCILL v.2.1.
11 // This file was originally licensed under the terms of the CeCILL v2.1,
12 // and continues to be available under such terms.
13 // For more information, see the COPYING file which you should have received
14 // along with this program.
15
16 function demo_nmplot_1()
17
18     filename = "nmplot_han1.sce";
19     dname = get_absolute_file_path(filename);
20
21     mprintf(_("Illustrates the 1st counter example given by Han et al.\n"));
22
23     //
24     // han1 --
25     //   Compute the cost function from the Han Phd Thesis
26     //   which exhibits a failure of the NM method.
27     // Reference
28     //   Algorithms in Unconstrained Optimization
29     //   Han, Lixing
30     //   2000
31     //   Ph.D., The University of Connecticut
32     //
33     mprintf(_("Defining Han function...\n"));
34
35     function [ f , index ] = han1 ( x , index )
36         f = x(1)^2 + x(2) * (x(2) + 2.0) * (x(2) - 0.5) * (x(2) - 2.0);
37     endfunction
38     function y = han1C ( x1 , x2 )
39         y = han1 ( [x1 , x2] , 2 )
40     endfunction
41
42
43     mprintf(_("Defining initial simplex coordinates...\n"));
44     coords0 = [
45     0.  -1.
46     0.   1.
47     1.   0.
48     ];
49
50
51     mprintf(_("Creating nmplot object...\n"));
52     nm = nmplot_new ();
53     mprintf(_("Configuring nmplot object...\n"));
54     nm = nmplot_configure(nm, "-numberofvariables", 2);
55     nm = nmplot_configure(nm, "-function", han1);
56     nm = nmplot_configure(nm, "-x0", [1.0 1.0]');
57     nm = nmplot_configure(nm, "-maxiter", 50);
58     nm = nmplot_configure(nm, "-maxfunevals", 300);
59     nm = nmplot_configure(nm, "-tolfunrelative", 10*%eps);
60     nm = nmplot_configure(nm, "-tolxrelative", 10*%eps);
61     nm = nmplot_configure(nm, "-simplex0method", "given");
62     nm = nmplot_configure(nm, "-coords0", coords0);
63
64     //
65     // Setup output files
66     //
67     mprintf(_("Setup output files...\n"));
68     simplexfn = TMPDIR + filesep() + "history.simplex.txt";
69     nm = nmplot_configure(nm, "-simplexfn", simplexfn);
70
71     //
72     // Perform optimization
73     //
74     mprintf(_("Searching (please wait)...\n"));
75     nm = nmplot_search(nm);
76     //
77     // Print a summary
78     //
79     exec(fullfile(dname,"nmplot_summary.sci"),-1);
80     nmplot_summary(nm)
81
82     //
83     // Plot the history of the simplex
84     //
85     mprintf(_("Plotting contour (please wait)...\n"));
86     xmin = -0.2 ;
87     xmax = 1.2 ;
88     ymin = -2.0 ;
89     ymax = 2.0 ;
90     nx = 50 ;
91     ny = 50;
92     xdata=linspace(xmin,xmax,nx);
93     ydata=linspace(ymin,ymax,ny);
94     scf();
95     drawlater();
96     contour ( xdata , ydata , han1C , [-5 -4 -2 -1 0 1 1.5] )
97     nmplot_simplexhistory ( nm );
98     drawnow();
99     demo_viewCode(filename);
100
101     //
102     // Clean-up
103     //
104     deletefile(simplexfn);
105     nm = nmplot_destroy(nm);
106     mprintf(_("End of demo.\n"));
107 endfunction
108
109 demo_nmplot_1();
110 clear demo_nmplot_1;
111
112
113
114
115
116