6ffc80f1e1995ecb7fda38cb965e94c12095b02e
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
2 // Copyright (C) 2009 - 2011 - DIGITEO - Michael Baudin\r
3 // Copyright (C) 2010 - DIGITEO - Allan CORNET\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_outputfunction()\r
13 \r
14     mprintf(_("Running optimization ...\n"));\r
15 \r
16     function y = banana (x)\r
17         y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;\r
18     endfunction\r
19 \r
20     function stop = outfun ( x , optimValues , state )\r
21         fc = optimValues.funccount;\r
22         fv = optimValues.fval;\r
23         it = optimValues.iteration;\r
24         pr = optimValues.procedure;\r
25         mprintf ( "%d %e %d -%s-\n" , fc , fv , it , pr )\r
26         stop = %f\r
27     endfunction\r
28 \r
29     opt = optimset ( "OutputFcn" , outfun );\r
30     [x,fval,exitflag,output ] = fminsearch ( banana , [-1.2 1] , opt );\r
31 \r
32     //\r
33     // Display results\r
34     //\r
35     mprintf("x = %s\n",strcat(string(x)," "));\r
36     mprintf("fval = %e\n",fval);\r
37 \r
38     mprintf("output.message:\n");\r
39 \r
40     for i =1:3\r
41         mprintf(output.message(i));\r
42         mprintf("\n");\r
43     end\r
44 \r
45     mprintf("output.algorithm:%s\n",output.algorithm);\r
46     mprintf("output.funcCount:%d\n",output.funcCount);\r
47     mprintf("output.iterations:%d\n",output.iterations);\r
48 \r
49     //\r
50     // Load this script into the editor\r
51     //\r
52     m = messagebox(_("View Code?"), "Question", "question", _(["Yes" "No"]), "modal")\r
53     if(m == 1)\r
54         filename = 'fminsearch_outputfunction.sce';\r
55         dname = get_absolute_file_path(filename);\r
56         editor ( dname + filename, "readonly" );\r
57     end\r
58 endfunction\r
59 \r
60 demo_outputfunction();\r
61 clear demo_outputfunction;\r
62 \r
63 \r
64 \r
65 \r
66 \r
67 \r
68 \r\r