fcd2657a73f976acc0d6f6793743c0690cc0d012
[scilab.git] / scilab / modules / optimization / demos / neldermead / neldermead_rosenbrock.sce
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
2 // Copyright (C) 2008-2009 - INRIA - Michael Baudin\r
3 // Copyright (C) 2010 - DIGITEO - Allan CORNET\r
4 // Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS\r
5 //\r
6 // This file must be used under the terms of the CeCILL.\r
7 // This source file is licensed as described in the file COPYING, which\r
8 // you should have received as part of this distribution.  The terms\r
9 // are also available at\r
10 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt\r
11 \r
12 function demo_nelder_rosen()\r
13 \r
14     mprintf(_("Defining Rosenbrock function ...\n"));\r
15 \r
16     function [ y , index ] = rosenbrock ( x , index )\r
17         y = 100*(x(2)-x(1)^2)^2+(1-x(1))^2;\r
18     endfunction\r
19 \r
20     x0 = [-1.2 1.0]';\r
21 \r
22     nm = neldermead_new();\r
23     nm = neldermead_configure(nm, "-numberofvariables", 2);\r
24     nm = neldermead_configure(nm, "-function", rosenbrock);\r
25     nm = neldermead_configure(nm, "-x0", x0);\r
26 \r
27     mprintf(_("Searching (please wait) ...\n"));\r
28     nm = neldermead_search(nm);\r
29 \r
30     fx0 = neldermead_get(nm, "-fx0");\r
31     mprintf("f(x0) = %f, x0=[%s]\n" , fx0 , strcat(string(x0), " "));\r
32     xopt = neldermead_get(nm, "-xopt");\r
33     fopt = neldermead_get(nm, "-fopt");\r
34     mprintf("f(xopt) = %f, xopt=[%s]\n" , fopt , strcat(string(xopt), " "));\r
35     nm = neldermead_destroy(nm);\r
36     mprintf(_("End of demo.\n"));\r
37 \r
38     //\r
39     // Load this script into the editor\r
40     //\r
41     m = messagebox(_("View Code?"), "Question", "question", _(["Yes" "No"]), "modal")\r
42     if(m == 1)\r
43         filename = 'neldermead_rosenbrock.sce';\r
44         dname = get_absolute_file_path(filename);\r
45         editor ( dname + filename, "readonly" );\r
46     end \r
47 endfunction\r
48 \r
49 demo_nelder_rosen();\r
50 clear demo_nelder_rosen;\r
51 \r
52 \r
53 \r
54 \r
55 \r
56 \r\r