* Bug #9788 fixed - new input argument for neldermead_search() 11/12611/5
Paul BIGNIER [Fri, 20 Sep 2013 07:49:19 +0000 (09:49 +0200)]
neldermead can now produce a warning when it fails to converge,
thanks to a new input argument "warn", which is a flag for printing information.

Before that, optimization status was only returned in the "-status" element,
so a user had to check that field to check completion.

Change-Id: Iaf9e5f2ae036843dbd5fa07f0d0d1510c8f11737

49 files changed:
SEP/INDEX
SEP/SEP_109_neldermead-search_warn.odt [new file with mode: 0644]
scilab/CHANGES_5.5.X
scilab/modules/optimization/demos/neldermead/neldermead_boxpost.sce
scilab/modules/optimization/demos/neldermead/neldermead_boxproblemA.sce
scilab/modules/optimization/demos/neldermead/neldermead_outputcmd.sce
scilab/modules/optimization/demos/neldermead/neldermead_rosenbrock.sce
scilab/modules/optimization/demos/neldermead/polygon.sce
scilab/modules/optimization/help/en_US/neldermead/neldermead_overview.xml
scilab/modules/optimization/macros/neldermead/fminsearch.sci
scilab/modules/optimization/macros/neldermead/neldermead_search.sci
scilab/modules/optimization/macros/optimbase/optimbase_terminate.sci
scilab/modules/optimization/tests/nonreg_tests/bug_8547.dia.ref
scilab/modules/optimization/tests/nonreg_tests/bug_8547.tst
scilab/modules/optimization/tests/nonreg_tests/bug_8777.dia.ref
scilab/modules/optimization/tests/nonreg_tests/bug_8805.dia.ref
scilab/modules/optimization/tests/nonreg_tests/bug_8805.tst
scilab/modules/optimization/tests/nonreg_tests/bug_9537.dia.ref
scilab/modules/optimization/tests/nonreg_tests/bug_9537.tst
scilab/modules/optimization/tests/nonreg_tests/bug_9788.dia.ref [new file with mode: 0644]
scilab/modules/optimization/tests/nonreg_tests/bug_9788.tst [new file with mode: 0644]
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_configure.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_configure.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_defaultoutput.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_defaultoutput.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_outputcmd.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_outputcmd.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_restart.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_rosensuzuki.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_rosensuzuki.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_search.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_search.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_searchaddarg.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_searchaddarg.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_searchdefault.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_searchdefault.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_searchfixed.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_searchfixed.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_searchvariable.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_searchvariable.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_shapeX.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_shapeX.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_simplex0.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_simplex0.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexaxes.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexaxes.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexregular.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexregular.tst
scilab/modules/optimization/tests/unit_tests/neldermead/nmplot_rosenbrock.dia.ref

index 9fa6d03..a4524ac 100644 (file)
--- a/SEP/INDEX
+++ b/SEP/INDEX
@@ -103,4 +103,5 @@ SEP #104: New optional output argument for routh_t (num)
 SEP #105: Three new optional output arguments to optim().
 SEP #106: Error control in function intc.
 SEP #107: Add an xcosAddToolsMenu and xcosUpdateBlock to ease external tools integration.
-SEP #108: 3-D arrows with xarrows
\ No newline at end of file
+SEP #108: 3-D arrows with xarrows
+SEP #109: New input argument for neldermead_search(), to control warnings.
diff --git a/SEP/SEP_109_neldermead-search_warn.odt b/SEP/SEP_109_neldermead-search_warn.odt
new file mode 100644 (file)
index 0000000..3c0ce3b
Binary files /dev/null and b/SEP/SEP_109_neldermead-search_warn.odt differ
index cd4d129..f11d133 100644 (file)
@@ -465,6 +465,9 @@ Scilab Bug Fixes
 
 * Bug #9780 fixed - gmres solver did not run with complex systems.
 
+* Bug #9788 fixed - neldermead can now produce a warning when it fails to converge,
+                    thanks to a new input argument "warn".
+
 * Bug #9821 fixed - getrelativefilename did not manage matrix of strings.
 
 * Bug #9851 fixed - Error message occurred because of a cut-off frequency of 0.25Hz
index aa7bca4..f09a4e5 100644 (file)
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) 2008-2009 - INRIA - Michael Baudin\r
-// Copyright (C) 2010 - DIGITEO - Michael Baudin\r
-// Copyright (C) 2010 - DIGITEO - Allan CORNET\r
-// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS\r
-//\r
-// This file must be used under the terms of the CeCILL.\r
-// This source file is licensed as described in the file COPYING, which\r
-// you should have received as part of this distribution.  The terms\r
-// are also available at\r
-// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt\r
-\r
-//\r
-// nmplot_boxpost.sce --\r
-//   Show that the Box algorithm is able to reproduce the\r
-//   numerical experiment presented in Richardson and Kuester's paper.\r
-//   Rosenbrock's Post Office\r
-//\r
-\r
-function demo_boxpost()\r
-\r
-    filename = "neldermead_boxpost.sce";\r
-    dname = get_absolute_file_path(filename);\r
-\r
-    mprintf(_("Illustrates Box'' algorithm on Rosenbrock''s Post Office Problem.\n"));\r
-    mprintf(_("Defining Rosenbrock Post Office function...\n"));\r
-\r
-    //\r
-    //  Reference:\r
-    //\r
-    //    Algorithm 454\r
-    //    The complex method for constrained\r
-    //    optimization\r
-    //    Richardson, Kuester\r
-    //    1971\r
-    //\r
-    //    An automatic method for finding the\r
-    //    greatest or least value of a function\r
-    //    Rosenbrock\r
-    //    1960\r
-    //\r
-    //   Richardson and Kuester Results :\r
-    //   F=3456\r
-    //   X1 = 24.01\r
-    //   X2 = 12.00\r
-    //   X3 = 12.00\r
-    //   Iterations : 72\r
-    //\r
-    //\r
-\r
-    //\r
-    // fpostoffice --\r
-    //   Computes the Post Office cost function and\r
-    //   inequality constraints.\r
-    //\r
-    // Arguments\r
-    //   x: the point where to compute the function\r
-    //   index : the stuff to compute\r
-    //\r
-\r
-    function [ f , c , index ] = fpostoffice ( x , index )\r
-        f = []\r
-        c = []\r
-        if ( index==2 | index==6 ) then\r
-            f = -x(1) * x(2) * x(3)\r
-        end\r
-\r
-        if ( index==5 | index==6 ) then\r
-            c1 = x(1) + 2 * x(2) + 2 * x(3)\r
-            c2 = 72 - c1\r
-            c = [c1 c2]\r
-        end\r
-    endfunction\r
-    //\r
-    // Initialize the random number generator, so that the results are always the\r
-    // same.\r
-    //\r
-    rand("seed" , 0)\r
-\r
-    x0 = [1.0 1.0 1.0].';\r
-    // Compute f(x0) : should be close to -1\r
-    fx0 = fpostoffice ( x0 , 2 );\r
-    mprintf("Computed fx0 = %e (expected = %e)\n",fx0 , -1 );\r
-    [ fx0 , cx0, index ] = fpostoffice ( x0 , 6 );\r
-    mprintf("Computed Constraints(x0) = [%e %e]\n", ..\r
-    cx0(1), cx0(2) );\r
-    mprintf("Expected Constraints(x0) = [%e %e]\n", ..\r
-    5 , 67 );\r
-\r
-    xopt = [24 12 12].';\r
-    // Compute f(xopt) : should be 3456\r
-    fopt = fpostoffice ( xopt );\r
-    mprintf("Computed fopt = %e (expected = %e)\n", fopt , -3456 );\r
-\r
-    nm = neldermead_new ();\r
-    nm = neldermead_configure(nm,"-numberofvariables",3);\r
-    nm = neldermead_configure(nm,"-function",fpostoffice);\r
-    nm = neldermead_configure(nm,"-x0",x0);\r
-    nm = neldermead_configure(nm,"-maxiter",300);\r
-    nm = neldermead_configure(nm,"-maxfunevals",300);\r
-    nm = neldermead_configure(nm,"-method","box");\r
-    nm = neldermead_configure(nm,"-verbose",1);\r
-    logfile = TMPDIR + "/postoffice.txt";\r
-    nm = neldermead_configure(nm,"-logfile" , logfile );\r
-    nm = neldermead_configure(nm,"-verbosetermination",1);\r
-    nm = neldermead_configure(nm,"-boundsmin",[0.0 0.0 0.0]);\r
-    nm = neldermead_configure(nm,"-boundsmax",[42.0 42.0 42.0]);\r
-    // Configure like Box\r
-    nm = neldermead_configure(nm,"-simplex0method","randbounds");\r
-    nm = neldermead_configure(nm,"-nbineqconst",2);\r
-    nm = neldermead_configure(nm,"-tolxmethod" , %f );\r
-    nm = neldermead_configure(nm,"-tolsimplexizemethod",%f);\r
-    nm = neldermead_configure(nm,"-boxtermination" , %t );\r
-    nm = neldermead_configure(nm,"-boxtolf" , 0.001 );\r
-    nm = neldermead_configure(nm,"-boxboundsalpha" , 0.0001 );\r
-\r
-    //\r
-    // Check that the cost function is correctly connected.\r
-    //\r
-    [ nm , result ] = neldermead_function ( nm , x0 );\r
-\r
-    //\r
-    // Perform optimization\r
-    //\r
-    mprintf(_("Searching (please wait) ...\n"));\r
-    nm = neldermead_search(nm);\r
-    //\r
-    // Print a summary\r
-    //\r
-    exec(fullfile(dname,"neldermead_summary.sci"),-1);\r
-    neldermead_summary(nm)\r
-    mprintf("==========================\n");\r
-    xcomp = neldermead_get(nm,"-xopt");\r
-    mprintf("x expected = [%s]\n",strcat(string(xopt)," "));\r
-    shift = norm(xcomp-xopt)/norm(xopt);\r
-    mprintf("Shift = %f\n",shift);\r
-    fcomp = neldermead_get(nm,"-fopt");\r
-    mprintf("f expected = %f\n",fopt);\r
-    shift = abs(fcomp-fopt)/abs(fopt);\r
-    mprintf("Shift = %f\n",shift);\r
-    nm = neldermead_destroy(nm);\r
-    deletefile ( logfile )\r
-    mprintf(_("End of demo.\n"));\r
-\r
-    //\r
-    // Load this script into the editor\r
-    //\r
-    m = messagebox(_("View Code?"), "Question", "question", [_("Yes") _("No")], "modal")\r
-    if(m == 1)\r
-        editor ( dname + filename, "readonly" );\r
-    end\r
-endfunction\r
-\r
-demo_boxpost();\r
-clear demo_boxpost;\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2009 - INRIA - Michael Baudin
+// Copyright (C) 2010 - DIGITEO - Michael Baudin
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+//
+// nmplot_boxpost.sce --
+//   Show that the Box algorithm is able to reproduce the
+//   numerical experiment presented in Richardson and Kuester's paper.
+//   Rosenbrock's Post Office
+//
+
+function demo_boxpost()
+
+    filename = "neldermead_boxpost.sce";
+    dname = get_absolute_file_path(filename);
+
+    mprintf(_("Illustrates Box'' algorithm on Rosenbrock''s Post Office Problem.\n"));
+    mprintf(_("Defining Rosenbrock Post Office function...\n"));
+
+    //
+    //  Reference:
+    //
+    //    Algorithm 454
+    //    The complex method for constrained
+    //    optimization
+    //    Richardson, Kuester
+    //    1971
+    //
+    //    An automatic method for finding the
+    //    greatest or least value of a function
+    //    Rosenbrock
+    //    1960
+    //
+    //   Richardson and Kuester Results :
+    //   F=3456
+    //   X1 = 24.01
+    //   X2 = 12.00
+    //   X3 = 12.00
+    //   Iterations : 72
+    //
+    //
+
+    //
+    // fpostoffice --
+    //   Computes the Post Office cost function and
+    //   inequality constraints.
+    //
+    // Arguments
+    //   x: the point where to compute the function
+    //   index : the stuff to compute
+    //
+
+    function [ f , c , index ] = fpostoffice ( x , index )
+        f = []
+        c = []
+        if ( index==2 | index==6 ) then
+            f = -x(1) * x(2) * x(3)
+        end
+
+        if ( index==5 | index==6 ) then
+            c1 = x(1) + 2 * x(2) + 2 * x(3)
+            c2 = 72 - c1
+            c = [c1 c2]
+        end
+    endfunction
+    //
+    // Initialize the random number generator, so that the results are always the
+    // same.
+    //
+    rand("seed" , 0)
+
+    x0 = [1.0 1.0 1.0].';
+    // Compute f(x0) : should be close to -1
+    fx0 = fpostoffice ( x0 , 2 );
+    mprintf("Computed fx0 = %e (expected = %e)\n",fx0 , -1 );
+    [ fx0 , cx0, index ] = fpostoffice ( x0 , 6 );
+    mprintf("Computed Constraints(x0) = [%e %e]\n", ..
+    cx0(1), cx0(2) );
+    mprintf("Expected Constraints(x0) = [%e %e]\n", ..
+    5 , 67 );
+
+    xopt = [24 12 12].';
+    // Compute f(xopt) : should be 3456
+    fopt = fpostoffice ( xopt );
+    mprintf("Computed fopt = %e (expected = %e)\n", fopt , -3456 );
+
+    nm = neldermead_new ();
+    nm = neldermead_configure(nm,"-numberofvariables",3);
+    nm = neldermead_configure(nm,"-function",fpostoffice);
+    nm = neldermead_configure(nm,"-x0",x0);
+    nm = neldermead_configure(nm,"-maxiter",300);
+    nm = neldermead_configure(nm,"-maxfunevals",500);
+    nm = neldermead_configure(nm,"-method","box");
+    nm = neldermead_configure(nm,"-verbose",1);
+    logfile = TMPDIR + "/postoffice.txt";
+    nm = neldermead_configure(nm,"-logfile" , logfile );
+    nm = neldermead_configure(nm,"-verbosetermination",1);
+    nm = neldermead_configure(nm,"-boundsmin",[0.0 0.0 0.0]);
+    nm = neldermead_configure(nm,"-boundsmax",[42.0 42.0 42.0]);
+    // Configure like Box
+    nm = neldermead_configure(nm,"-simplex0method","randbounds");
+    nm = neldermead_configure(nm,"-nbineqconst",2);
+    nm = neldermead_configure(nm,"-tolxmethod" , %f );
+    nm = neldermead_configure(nm,"-tolsimplexizemethod",%f);
+    nm = neldermead_configure(nm,"-boxtermination" , %t );
+    nm = neldermead_configure(nm,"-boxtolf" , 0.001 );
+    nm = neldermead_configure(nm,"-boxboundsalpha" , 0.0001 );
+
+    //
+    // Check that the cost function is correctly connected.
+    //
+    [ nm , result ] = neldermead_function ( nm , x0 );
+
+    //
+    // Perform optimization
+    //
+    mprintf(_("Searching (please wait) ...\n"));
+    nm = neldermead_search(nm);
+    //
+    // Print a summary
+    //
+    exec(fullfile(dname,"neldermead_summary.sci"),-1);
+    neldermead_summary(nm)
+    mprintf("==========================\n");
+    xcomp = neldermead_get(nm,"-xopt");
+    mprintf("x expected = [%s]\n",strcat(string(xopt)," "));
+    shift = norm(xcomp-xopt)/norm(xopt);
+    mprintf("Shift = %f\n",shift);
+    fcomp = neldermead_get(nm,"-fopt");
+    mprintf("f expected = %f\n",fopt);
+    shift = abs(fcomp-fopt)/abs(fopt);
+    mprintf("Shift = %f\n",shift);
+    nm = neldermead_destroy(nm);
+    deletefile ( logfile )
+    mprintf(_("End of demo.\n"));
+
+    //
+    // Load this script into the editor
+    //
+    m = messagebox(_("View Code?"), "Question", "question", [_("Yes") _("No")], "modal")
+    if(m == 1)
+        editor ( dname + filename, "readonly" );
+    end
+endfunction
+
+demo_boxpost();
+clear demo_boxpost;
+
+
+
+
+
+
+
+
+
+
index bae630a..a80384e 100644 (file)
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) 2008-2009 - INRIA - Michael Baudin\r
-// Copyright (C) 2009-2010 - DIGITEO - Michael Baudin\r
-// Copyright (C) 2010 - DIGITEO - Allan CORNET\r
-// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS\r
-//\r
-// This file must be used under the terms of the CeCILL.\r
-// This source file is licensed as described in the file COPYING, which\r
-// you should have received as part of this distribution.  The terms\r
-// are also available at\r
-// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt\r
-\r
-//\r
-// nmplot_boxproblemA.sce --\r
-//   Show that the Box algorithm is able to reproduce the\r
-//   numerical experiment presented in Box's paper.\r
-//\r
-\r
-function demo_boxproblemA()\r
-\r
-    filename = "neldermead_boxproblemA.sce";\r
-    dname = get_absolute_file_path(filename);\r
-\r
-    mprintf(_("Illustrates Box'' algorithm on Box problem A.\n"));\r
-\r
-    mprintf("M.J. Box, \n");\r
-    mprintf(_("""A new method of constrained optimization \n"));\r
-    mprintf(_("and a comparison with other methods"".\n"));\r
-    mprintf("The Computer Journal, Volume 8, Number 1, 1965, 42--52\n");\r
-    mprintf(_("Problem A\n"));\r
-\r
-\r
-    //\r
-    //  Reference:\r
-    //\r
-    //   M.J. Box,\r
-    //   "A new method of constrained optimization\r
-    //   and a comparison with other methods".\r
-    //   The Computer Journal, Volume 8, Number 1, 1965, 42--52\r
-    //   Problem A\r
-    //\r
-    //   Algorithm 454: the complex method for constrained optimization [E4]\r
-    //   Communications of the ACM, Volume 16 ,  Issue 8  (August 1973)\r
-    //   Pages: 487 - 489\r
-    //\r
-\r
-    //\r
-    // boxproblemA --\r
-    //   Computes the Box problem A cost function and\r
-    //   inequality constraints.\r
-    //\r
-    // Arguments\r
-    //   x: the point where to compute the function\r
-    //   index : the stuff to compute\r
-    //   data : the parameters of Box cost function\r
-    //\r
-    function [ f , c , index ] = boxproblemA ( x , index , data )\r
-        f = []\r
-        c = []\r
-        b = x(2) + 0.01 * x(3)\r
-        x6 = (data.k1 + data.k2 * x(2) ...\r
-        + data.k3 * x(3) + data.k4 * x(4) + data.k5 * x(5)) * x(1)\r
-        y1 = data.k6 + data.k7 * x(2) + data.k8 * x(3) ...\r
-        + data.k9 * x(4) + data.k10 * x(5)\r
-        y2 = data.k11 + data.k12 * x(2) + data.k13 * x(3) ...\r
-        + data.k14 * x(4) + data.k15 * x(5)\r
-        y3 = data.k16 + data.k17 * x(2) + data.k18 * x(3) ...\r
-        + data.k19 * x(4) + data.k20 * x(5)\r
-        y4 = data.k21 + data.k22 * x(2) + data.k23 * x(3) ...\r
-        + data.k24 * x(4) + data.k25 * x(5)\r
-        x7 = ( y1 + y2 + y3 ) * x(1)\r
-        x8 = (data.k26 + data.k27 * x(2) + data.k28 * x(3) ...\r
-        + data.k29 * x(4) ...\r
-        + data.k30 * x(5) ) * x(1) + x6 + x7\r
-\r
-        if ( index == 2 | index == 6 ) then\r
-            f = (data.a2 * y1 + data.a3 * y2 + data.a4 * y3 + data.a5 * y4 ...\r
-            + 7840 * data.a6 - 100000 * data.a0 ...\r
-            - 50800 * b * data.a7 + data.k31 + data.k32 * x(2) + data.k33 * x(3) ...\r
-            + data.k34 * x(4) + data.k35 * x(5)) * x(1) ...\r
-            - 24345 + data.a1 * x6\r
-            f = -f\r
-        end\r
-\r
-        if ( index == 5 | index == 6 ) then\r
-            c1 = x6\r
-            c2 = 294000 - x6\r
-            c3 = x7\r
-            c4 = 294000 - x7\r
-            c5 = x8\r
-            c6 = 277200 - x8\r
-            c = [c1 c2 c3 c4 c5 c6]\r
-        end\r
-    endfunction\r
-\r
-    boxparams = struct();\r
-    boxparams.a0 = 9;\r
-    boxparams.a1 = 15;\r
-    boxparams.a2 = 50;\r
-    boxparams.a3 = 9.583;\r
-    boxparams.a4 = 20;\r
-    boxparams.a5 = 15;\r
-    boxparams.a6 = 6;\r
-    boxparams.a7 = 0.75;\r
-    boxparams.k1 = -145421.402;\r
-    boxparams.k2 = 2931.1506;\r
-    boxparams.k3 = -40.427932;\r
-    boxparams.k4 = 5106.192;\r
-    boxparams.k5 = 15711.36;\r
-    boxparams.k6 = -161622.577;\r
-    boxparams.k7 = 4176.15328;\r
-    boxparams.k8 = 2.8260078;\r
-    boxparams.k9 = 9200.476;\r
-    boxparams.k10 = 13160.295;\r
-    boxparams.k11 = -21686.9194;\r
-    boxparams.k12 = 123.56928;\r
-    boxparams.k13 = -21.1188894;\r
-    boxparams.k14 = 706.834;\r
-    boxparams.k15 = 2898.573;\r
-    boxparams.k16 = 28298.388;\r
-    boxparams.k17 = 60.81096;\r
-    boxparams.k18 = 31.242116;\r
-    boxparams.k19 = 329.574;\r
-    boxparams.k20 = -2882.082;\r
-    boxparams.k21 = 74095.3845;\r
-    boxparams.k22 = -306.262544;\r
-    boxparams.k23 = 16.243649;\r
-    boxparams.k24 = -3094.252;\r
-    boxparams.k25 = -5566.2628;\r
-    boxparams.k26 = -26237.0;\r
-    boxparams.k27 = 99.0;\r
-    boxparams.k28 = -0.42;\r
-    boxparams.k29 = 1300.0;\r
-    boxparams.k30 = 2100.0;\r
-    boxparams.k31 = 925548.252;\r
-    boxparams.k32 = -61968.8432;\r
-    boxparams.k33 = 23.3088196;\r
-    boxparams.k34 = -27097.648;\r
-    boxparams.k35 = -50843.766;\r
-\r
-    //\r
-    // Initialize the random number generator, so that the results are always the\r
-    // same.\r
-    //\r
-    rand("seed" , 0)\r
-\r
-    x0 = [2.52 2.0 37.5 9.25 6.8].';\r
-    // Compute f(x0) : should be close to -2351244.0\r
-    [ fx0 , c , index ] = boxproblemA ( x0 , 2 , boxparams );\r
-    mprintf("Computed fx0 = %e (expected = %e)\n",fx0 , -2351244. );\r
-\r
-    xopt = [4.53743 2.4 60.0 9.3 7.0].';\r
-    // Compute f(xopt) : should be -5280334.0\r
-    [ fopt , c , index ] = boxproblemA ( xopt , 2 , boxparams );\r
-    mprintf("Computed fopt = %e (expected = %e)\n", fopt , -5280334.0 );\r
-\r
-    nm = neldermead_new ();\r
-    nm = neldermead_configure(nm,"-numberofvariables",5);\r
-    nm = neldermead_configure(nm,"-function",list(boxproblemA,boxparams));\r
-    nm = neldermead_configure(nm,"-x0",x0);\r
-    nm = neldermead_configure(nm,"-maxiter",300);\r
-    nm = neldermead_configure(nm,"-maxfunevals",1000);\r
-    nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-4);\r
-    nm = neldermead_configure(nm,"-method","box");\r
-\r
-    // Configure like Box\r
-    nm = neldermead_configure(nm,"-boundsmin",[0.0 1.2 20.0 9.0 6.0]);\r
-    nm = neldermead_configure(nm,"-boundsmax",[5.0 2.5 60.0 9.3 7.0]);\r
-    nm = neldermead_configure(nm,"-simplex0method","randbounds");\r
-    nm = neldermead_configure(nm,"-nbineqconst",6);\r
-\r
-    //\r
-    // Check that the cost function is correctly connected.\r
-    //\r
-    [ nm , f ] = neldermead_function ( nm , x0 );\r
-\r
-    //\r
-    // Perform optimization\r
-    //\r
-    mprintf(_("Searching (please wait)...\n"));\r
-    nm = neldermead_search(nm);\r
-    mprintf(_("...Done\n"));\r
-    //\r
-    // Print a summary\r
-    //\r
-    exec(fullfile(dname,"neldermead_summary.sci"),-1);\r
-    neldermead_summary(nm)\r
-    mprintf("==========================\n");\r
-    xcomp = neldermead_get(nm,"-xopt");\r
-    mprintf("x expected = [%s]\n",strcat(string(xopt)," "));\r
-    shift = norm(xcomp-xopt)/norm(xopt);\r
-    mprintf(_("Relative error on x = %e\n"),shift);\r
-    fcomp = neldermead_get(nm,"-fopt");\r
-    mprintf("f expected = %f\n",fopt);\r
-    shift = abs(fcomp-fopt)/abs(fopt);\r
-    mprintf("Relative error on f = %e\n",shift);\r
-    nm = neldermead_destroy(nm);\r
-    mprintf(_("End of demo.\n"));\r
-\r
-    //\r
-    // Load this script into the editor\r
-    //\r
-    m = messagebox(_("View Code?"), "Question", "question", [_("Yes") _("No")], "modal")\r
-    if(m == 1)\r
-        editor ( dname + filename, "readonly" );\r
-    end\r
-endfunction\r
-\r
-demo_boxproblemA();\r
-clear demo_boxproblemA;\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2009 - INRIA - Michael Baudin
+// Copyright (C) 2009-2010 - DIGITEO - Michael Baudin
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+//
+// nmplot_boxproblemA.sce --
+//   Show that the Box algorithm is able to reproduce the
+//   numerical experiment presented in Box's paper.
+//
+
+function demo_boxproblemA()
+
+    filename = "neldermead_boxproblemA.sce";
+    dname = get_absolute_file_path(filename);
+
+    mprintf(_("Illustrates Box'' algorithm on Box problem A.\n"));
+
+    mprintf("M.J. Box, \n");
+    mprintf(_("""A new method of constrained optimization \n"));
+    mprintf(_("and a comparison with other methods"".\n"));
+    mprintf("The Computer Journal, Volume 8, Number 1, 1965, 42--52\n");
+    mprintf(_("Problem A\n"));
+
+
+    //
+    //  Reference:
+    //
+    //   M.J. Box,
+    //   "A new method of constrained optimization
+    //   and a comparison with other methods".
+    //   The Computer Journal, Volume 8, Number 1, 1965, 42--52
+    //   Problem A
+    //
+    //   Algorithm 454: the complex method for constrained optimization [E4]
+    //   Communications of the ACM, Volume 16 ,  Issue 8  (August 1973)
+    //   Pages: 487 - 489
+    //
+
+    //
+    // boxproblemA --
+    //   Computes the Box problem A cost function and
+    //   inequality constraints.
+    //
+    // Arguments
+    //   x: the point where to compute the function
+    //   index : the stuff to compute
+    //   data : the parameters of Box cost function
+    //
+    function [ f , c , index ] = boxproblemA ( x , index , data )
+        f = []
+        c = []
+        b = x(2) + 0.01 * x(3)
+        x6 = (data.k1 + data.k2 * x(2) ...
+        + data.k3 * x(3) + data.k4 * x(4) + data.k5 * x(5)) * x(1)
+        y1 = data.k6 + data.k7 * x(2) + data.k8 * x(3) ...
+        + data.k9 * x(4) + data.k10 * x(5)
+        y2 = data.k11 + data.k12 * x(2) + data.k13 * x(3) ...
+        + data.k14 * x(4) + data.k15 * x(5)
+        y3 = data.k16 + data.k17 * x(2) + data.k18 * x(3) ...
+        + data.k19 * x(4) + data.k20 * x(5)
+        y4 = data.k21 + data.k22 * x(2) + data.k23 * x(3) ...
+        + data.k24 * x(4) + data.k25 * x(5)
+        x7 = ( y1 + y2 + y3 ) * x(1)
+        x8 = (data.k26 + data.k27 * x(2) + data.k28 * x(3) ...
+        + data.k29 * x(4) ...
+        + data.k30 * x(5) ) * x(1) + x6 + x7
+
+        if ( index == 2 | index == 6 ) then
+            f = (data.a2 * y1 + data.a3 * y2 + data.a4 * y3 + data.a5 * y4 ...
+            + 7840 * data.a6 - 100000 * data.a0 ...
+            - 50800 * b * data.a7 + data.k31 + data.k32 * x(2) + data.k33 * x(3) ...
+            + data.k34 * x(4) + data.k35 * x(5)) * x(1) ...
+            - 24345 + data.a1 * x6
+            f = -f
+        end
+
+        if ( index == 5 | index == 6 ) then
+            c1 = x6
+            c2 = 294000 - x6
+            c3 = x7
+            c4 = 294000 - x7
+            c5 = x8
+            c6 = 277200 - x8
+            c = [c1 c2 c3 c4 c5 c6]
+        end
+    endfunction
+
+    boxparams = struct();
+    boxparams.a0 = 9;
+    boxparams.a1 = 15;
+    boxparams.a2 = 50;
+    boxparams.a3 = 9.583;
+    boxparams.a4 = 20;
+    boxparams.a5 = 15;
+    boxparams.a6 = 6;
+    boxparams.a7 = 0.75;
+    boxparams.k1 = -145421.402;
+    boxparams.k2 = 2931.1506;
+    boxparams.k3 = -40.427932;
+    boxparams.k4 = 5106.192;
+    boxparams.k5 = 15711.36;
+    boxparams.k6 = -161622.577;
+    boxparams.k7 = 4176.15328;
+    boxparams.k8 = 2.8260078;
+    boxparams.k9 = 9200.476;
+    boxparams.k10 = 13160.295;
+    boxparams.k11 = -21686.9194;
+    boxparams.k12 = 123.56928;
+    boxparams.k13 = -21.1188894;
+    boxparams.k14 = 706.834;
+    boxparams.k15 = 2898.573;
+    boxparams.k16 = 28298.388;
+    boxparams.k17 = 60.81096;
+    boxparams.k18 = 31.242116;
+    boxparams.k19 = 329.574;
+    boxparams.k20 = -2882.082;
+    boxparams.k21 = 74095.3845;
+    boxparams.k22 = -306.262544;
+    boxparams.k23 = 16.243649;
+    boxparams.k24 = -3094.252;
+    boxparams.k25 = -5566.2628;
+    boxparams.k26 = -26237.0;
+    boxparams.k27 = 99.0;
+    boxparams.k28 = -0.42;
+    boxparams.k29 = 1300.0;
+    boxparams.k30 = 2100.0;
+    boxparams.k31 = 925548.252;
+    boxparams.k32 = -61968.8432;
+    boxparams.k33 = 23.3088196;
+    boxparams.k34 = -27097.648;
+    boxparams.k35 = -50843.766;
+
+    //
+    // Initialize the random number generator, so that the results are always the
+    // same.
+    //
+    rand("seed" , 0)
+
+    x0 = [2.52 2.0 37.5 9.25 6.8].';
+    // Compute f(x0) : should be close to -2351244.0
+    [ fx0 , c , index ] = boxproblemA ( x0 , 2 , boxparams );
+    mprintf("Computed fx0 = %e (expected = %e)\n",fx0 , -2351244. );
+
+    xopt = [4.53743 2.4 60.0 9.3 7.0].';
+    // Compute f(xopt) : should be -5280334.0
+    [ fopt , c , index ] = boxproblemA ( xopt , 2 , boxparams );
+    mprintf("Computed fopt = %e (expected = %e)\n", fopt , -5280334.0 );
+
+    nm = neldermead_new ();
+    nm = neldermead_configure(nm,"-numberofvariables",5);
+    nm = neldermead_configure(nm,"-function",list(boxproblemA,boxparams));
+    nm = neldermead_configure(nm,"-x0",x0);
+    nm = neldermead_configure(nm,"-maxiter",300);
+    nm = neldermead_configure(nm,"-maxfunevals",1000);
+    nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-4);
+    nm = neldermead_configure(nm,"-method","box");
+
+    // Configure like Box
+    nm = neldermead_configure(nm,"-boundsmin",[0.0 1.2 20.0 9.0 6.0]);
+    nm = neldermead_configure(nm,"-boundsmax",[5.0 2.5 60.0 9.3 7.0]);
+    nm = neldermead_configure(nm,"-simplex0method","randbounds");
+    nm = neldermead_configure(nm,"-nbineqconst",6);
+
+    //
+    // Check that the cost function is correctly connected.
+    //
+    [ nm , f ] = neldermead_function ( nm , x0 );
+
+    //
+    // Perform optimization
+    //
+    mprintf(_("Searching (please wait)...\n"));
+    nm = neldermead_search(nm, "off");
+    mprintf(_("...Done\n"));
+    //
+    // Print a summary
+    //
+    exec(fullfile(dname,"neldermead_summary.sci"),-1);
+    neldermead_summary(nm)
+    mprintf("==========================\n");
+    xcomp = neldermead_get(nm,"-xopt");
+    mprintf("x expected = [%s]\n",strcat(string(xopt)," "));
+    shift = norm(xcomp-xopt)/norm(xopt);
+    mprintf(_("Relative error on x = %e\n"),shift);
+    fcomp = neldermead_get(nm,"-fopt");
+    mprintf("f expected = %f\n",fopt);
+    shift = abs(fcomp-fopt)/abs(fopt);
+    mprintf("Relative error on f = %e\n",shift);
+    nm = neldermead_destroy(nm);
+    mprintf(_("End of demo.\n"));
+
+    //
+    // Load this script into the editor
+    //
+    m = messagebox(_("View Code?"), "Question", "question", [_("Yes") _("No")], "modal")
+    if(m == 1)
+        editor ( dname + filename, "readonly" );
+    end
+endfunction
+
+demo_boxproblemA();
+clear demo_boxproblemA;
+
+
+
+
+
+
+
+
index ff504f5..6882b07 100644 (file)
@@ -1,90 +1,90 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) 2008-2009 - INRIA - Michael Baudin\r
-// Copyright (C) 2010 - DIGITEO - Allan CORNET\r
-// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS\r
-//\r
-// This file must be used under the terms of the CeCILL.\r
-// This source file is licensed as described in the file COPYING, which\r
-// you should have received as part of this distribution.  The terms\r
-// are also available at\r
-// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt\r
-\r
-\r
-function demo_outputcmd()\r
-\r
-    function [ y , index ] = rosenbrock ( x , index )\r
-        y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;\r
-    endfunction\r
-\r
-\r
-    //\r
-    // myoutputcmd --\r
-    //  This command is called back by the Nelder-Mead\r
-    //  algorithm.\r
-    // Arguments\r
-    //  state : the current state of the algorithm\r
-    //    "init", "iter", "done"\r
-    //  data : the data at the current state\r
-    //    This is a tlist with the following entries:\r
-    //    * x : the optimal vector of parameters\r
-    //    * fval : the minimum function value\r
-    //    * simplex : the simplex, as a simplex object\r
-    //    * iteration : the number of iterations performed\r
-    //    * funccount : the number of function evaluations\r
-    // stop : set to %t to interrupt the algorithm\r
-    //\r
-\r
-    function stop = myoutputcmd ( state , data )\r
-        iter = data.iteration\r
-        if ( state == "init" ) then\r
-            mprintf ( "=================================\n");\r
-            mprintf ( _("Initialization\n"));\r
-        elseif ( state == "done" ) then\r
-            mprintf ( "=================================\n");\r
-            mprintf ( _("End of Optimization\n"));\r
-        end\r
-        fc = data.funccount\r
-        fval = data.fval\r
-        x = data.x\r
-        simplex = data.simplex\r
-        // Simplex is a data structure, which can be managed\r
-        // by the optimsimplex class.\r
-        ssize = optimsimplex_size ( simplex )\r
-        mprintf ( "Iteration #%d, Feval #%d, Fval = %e, x = %s, Size = %e\n", iter, fc, fval, strcat(string(x)," "), ssize);\r
-        stop = %f\r
-    endfunction\r
-\r
-\r
-    nm = neldermead_new ();\r
-    nm = neldermead_configure(nm,"-numberofvariables",2);\r
-    nm = neldermead_configure(nm,"-function",rosenbrock);\r
-    nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');\r
-    nm = neldermead_configure(nm,"-maxiter",200);\r
-    nm = neldermead_configure(nm,"-maxfunevals",300);\r
-    nm = neldermead_configure(nm,"-tolfunrelative",10*%eps);\r
-    nm = neldermead_configure(nm,"-tolxrelative",10*%eps);\r
-    nm = neldermead_configure(nm,"-outputcommand",myoutputcmd);\r
-    nm = neldermead_search(nm);\r
-    nm = neldermead_destroy(nm);\r
-    mprintf(_("End of demo.\n"));\r
-\r
-    //\r
-    // Load this script into the editor\r
-    //\r
-    m = messagebox(_("View Code?"), "Question", "question", [_("Yes") _("No")], "modal")\r
-    if(m == 1)\r
-        filename = "neldermead_outputcmd.sce";\r
-        dname = get_absolute_file_path(filename);\r
-        editor ( dname + filename, "readonly" );\r
-    end\r
-endfunction\r
-\r
-demo_outputcmd()\r
-clear demo_outputcmd;\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2009 - INRIA - Michael Baudin
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+
+function demo_outputcmd()
+
+    function [ y , index ] = rosenbrock ( x , index )
+        y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
+    endfunction
+
+
+    //
+    // myoutputcmd --
+    //  This command is called back by the Nelder-Mead
+    //  algorithm.
+    // Arguments
+    //  state : the current state of the algorithm
+    //    "init", "iter", "done"
+    //  data : the data at the current state
+    //    This is a tlist with the following entries:
+    //    * x : the optimal vector of parameters
+    //    * fval : the minimum function value
+    //    * simplex : the simplex, as a simplex object
+    //    * iteration : the number of iterations performed
+    //    * funccount : the number of function evaluations
+    // stop : set to %t to interrupt the algorithm
+    //
+
+    function stop = myoutputcmd ( state , data )
+        iter = data.iteration
+        if ( state == "init" ) then
+            mprintf ( "=================================\n");
+            mprintf ( _("Initialization\n"));
+        elseif ( state == "done" ) then
+            mprintf ( "=================================\n");
+            mprintf ( _("End of Optimization\n"));
+        end
+        fc = data.funccount
+        fval = data.fval
+        x = data.x
+        simplex = data.simplex
+        // Simplex is a data structure, which can be managed
+        // by the optimsimplex class.
+        ssize = optimsimplex_size ( simplex )
+        mprintf ( "Iteration #%d, Feval #%d, Fval = %e, x = %s, Size = %e\n", iter, fc, fval, strcat(string(x)," "), ssize);
+        stop = %f
+    endfunction
+
+
+    nm = neldermead_new ();
+    nm = neldermead_configure(nm,"-numberofvariables",2);
+    nm = neldermead_configure(nm,"-function",rosenbrock);
+    nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
+    nm = neldermead_configure(nm,"-maxiter",200);
+    nm = neldermead_configure(nm,"-maxfunevals",350);
+    nm = neldermead_configure(nm,"-tolfunrelative",10*%eps);
+    nm = neldermead_configure(nm,"-tolxrelative",10*%eps);
+    nm = neldermead_configure(nm,"-outputcommand",myoutputcmd);
+    nm = neldermead_search(nm);
+    nm = neldermead_destroy(nm);
+    mprintf(_("End of demo.\n"));
+
+    //
+    // Load this script into the editor
+    //
+    m = messagebox(_("View Code?"), "Question", "question", [_("Yes") _("No")], "modal")
+    if(m == 1)
+        filename = "neldermead_outputcmd.sce";
+        dname = get_absolute_file_path(filename);
+        editor ( dname + filename, "readonly" );
+    end
+endfunction
+
+demo_outputcmd()
+clear demo_outputcmd;
+
+
+
+
+
+
+
index 2079547..05056d6 100644 (file)
@@ -1,57 +1,59 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) 2008-2009 - INRIA - Michael Baudin\r
-// Copyright (C) 2010 - DIGITEO - Allan CORNET\r
-// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS\r
-//\r
-// This file must be used under the terms of the CeCILL.\r
-// This source file is licensed as described in the file COPYING, which\r
-// you should have received as part of this distribution.  The terms\r
-// are also available at\r
-// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt\r
-\r
-function demo_nelder_rosen()\r
-\r
-    mprintf(_("Defining Rosenbrock function ...\n"));\r
-\r
-    function [ y , index ] = rosenbrock ( x , index )\r
-        y = 100*(x(2)-x(1)^2)^2+(1-x(1))^2;\r
-    endfunction\r
-\r
-    x0 = [-1.2 1.0]';\r
-\r
-    nm = neldermead_new();\r
-    nm = neldermead_configure(nm, "-numberofvariables", 2);\r
-    nm = neldermead_configure(nm, "-function", rosenbrock);\r
-    nm = neldermead_configure(nm, "-x0", x0);\r
-\r
-    mprintf(_("Searching (please wait) ...\n"));\r
-    nm = neldermead_search(nm);\r
-\r
-    fx0 = neldermead_get(nm, "-fx0");\r
-    mprintf("f(x0) = %f, x0=[%s]\n" , fx0 , strcat(string(x0), " "));\r
-    xopt = neldermead_get(nm, "-xopt");\r
-    fopt = neldermead_get(nm, "-fopt");\r
-    mprintf("f(xopt) = %f, xopt=[%s]\n" , fopt , strcat(string(xopt), " "));\r
-    nm = neldermead_destroy(nm);\r
-    mprintf(_("End of demo.\n"));\r
-\r
-    //\r
-    // Load this script into the editor\r
-    //\r
-    m = messagebox(_("View Code?"), "Question", "question", [_("Yes") _("No")], "modal")\r
-    if(m == 1)\r
-        filename = "neldermead_rosenbrock.sce";\r
-        dname = get_absolute_file_path(filename);\r
-        editor ( dname + filename, "readonly" );\r
-    end\r
-endfunction\r
-\r
-demo_nelder_rosen();\r
-clear demo_nelder_rosen;\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2009 - INRIA - Michael Baudin
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function demo_nelder_rosen()
+
+    mprintf(_("Defining Rosenbrock function ...\n"));
+
+    function [ y , index ] = rosenbrock ( x , index )
+        y = 100*(x(2)-x(1)^2)^2+(1-x(1))^2;
+    endfunction
+
+    x0 = [-1.2 1.0]';
+
+    nm = neldermead_new();
+    nm = neldermead_configure(nm, "-numberofvariables", 2);
+    nm = neldermead_configure(nm, "-function", rosenbrock);
+    nm = neldermead_configure(nm, "-x0", x0);
+    nm = neldermead_configure(nm, "-maxiter", 300);
+    nm = neldermead_configure(nm, "-maxfunevals", 300);
+
+    mprintf(_("Searching (please wait) ...\n"));
+    nm = neldermead_search(nm);
+
+    fx0 = neldermead_get(nm, "-fx0");
+    mprintf("f(x0) = %f, x0=[%s]\n" , fx0 , strcat(string(x0), " "));
+    xopt = neldermead_get(nm, "-xopt");
+    fopt = neldermead_get(nm, "-fopt");
+    mprintf("f(xopt) = %f, xopt=[%s]\n" , fopt , strcat(string(xopt), " "));
+    nm = neldermead_destroy(nm);
+    mprintf(_("End of demo.\n"));
+
+    //
+    // Load this script into the editor
+    //
+    m = messagebox(_("View Code?"), "Question", "question", [_("Yes") _("No")], "modal")
+    if(m == 1)
+        filename = "neldermead_rosenbrock.sce";
+        dname = get_absolute_file_path(filename);
+        editor ( dname + filename, "readonly" );
+    end
+endfunction
+
+demo_nelder_rosen();
+clear demo_nelder_rosen;
+
+
+
+
+
+
+
index 72a91c4..c51b540 100644 (file)
@@ -217,7 +217,7 @@ function [A,r,t] = findlargestpolygon (nv)
     [ nm , result ] = neldermead_function ( nm , x0 );
     //
     // Perform optimization
-    nm = neldermead_search(nm);
+    nm = neldermead_search(nm, "off");
     fopt = neldermead_get(nm,"-fopt")
     A = -fopt
     xopt = neldermead_get(nm,"-xopt")
index 2278cac..a9e4926 100644 (file)
@@ -3,11 +3,11 @@
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2008 - 2009 - INRIA - Michael Baudin
  * Copyright (C) 2009 - 2011 - DIGITEO - Michael Baudin
- * 
+ *
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
  * you should have received as part of this distribution.  The terms
- * are also available at    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
  *
  -->
@@ -64,7 +64,7 @@
             <listitem>
                 <para>
                     <literal>optimplotfunccount</literal>, <literal>optimplotx</literal>
-                    and <literal>optimplotfval</literal> provide plotting features for the 
+                    and <literal>optimplotfval</literal> provide plotting features for the
                     <literal>fminsearch</literal> function.
                 </para>
             </listitem>
@@ -76,7 +76,7 @@
             </listitem>
         </itemizedlist>
         <para>The current component is based on the
-            following components 
+            following components
         </para>
         <itemizedlist>
             <listitem>
             the algorithm. After the optimization is performed, the optimum is
             retrieved with quiery features.
         </para>
-        <programlisting role="example"><![CDATA[ 
+        <programlisting role="example"><![CDATA[
 function [f, index]=rosenbrock(x, index)
   y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
 endfunction
@@ -240,7 +240,7 @@ nm = neldermead_configure(nm,"-simplex0length",0.1);
 nm = neldermead_configure(nm,"-method","variable");
 nm = neldermead_configure(nm,"-verbose",1);
 nm = neldermead_configure(nm,"-function",rosenbrock);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 xopt = neldermead_get(nm,"-xopt");
 fopt = neldermead_get(nm,"-fopt");
 historyfopt = neldermead_get(nm,"-historyfopt");
index 2093a10..2b74e88 100644 (file)
@@ -113,7 +113,7 @@ function [x,fval,exitflag,output] = fminsearch ( varargin )
     nm = neldermead_configure(nm,"-outputcommand",list(fminsearch_outputfun,fmsdata));
     //nm = neldermead_configure(nm,"-verbose",1);
     //nm = neldermead_configure(nm,"-verbosetermination",1);
-    nm = neldermead_search(nm);
+    nm = neldermead_search(nm, "off");
     x = neldermead_get(nm,"-xopt").';
     fval = neldermead_get(nm,"-fopt");
     status = neldermead_get(nm,"-status");
index 989d409..09fddc6 100644 (file)
 // neldermead_search --
 //   Search the minimum with Nelder-Mead algorithm.
 //
-function this = neldermead_search ( this )
+function this = neldermead_search ( this , warn)
+
+    rhs = argn(2);
+
+    warn_mode = warning("query"); // Saving current warning mode to revert to it at the end
+    if rhs == 2 then
+        if warn == 0 | warn == "off" then
+            warning("off"); // Turn off warnings
+        elseif warn == 1 | warn == "on" then
+            warning("on"); // Turn on warnings
+        else
+            msg = _("%s: Wrong value for input argument #%d: ""%s"", ""%s"", %d or %d expected.\n");
+            error(msprintf(msg, "neldermead_search", 2, "off", "on", 0, 1))
+        end
+    end
+
     withderivatives = optimbase_cget ( this.optbase , "-withderivatives" );
     if ( withderivatives ) then
         errmsg = msprintf(gettext("%s: The -withderivatives option is true but all algorithms in neldermead are derivative-free."), "neldermead_search")
@@ -70,6 +85,9 @@ function this = neldermead_search ( this )
             this = neldermead_log (this,sprintf("Terminate by user''s request"));
         end
     end
+
+    warning(warn_mode); // Revert to the warning mode that was active before the call
+
 endfunction
 //
 // neldermead_algo --
index 5d0bd99..b9575e8 100644 (file)
@@ -45,6 +45,11 @@ function [ this , terminate , status ] = optimbase_terminate (this , ...
         if ( this.iterations >= this.maxiter ) then
             terminate = %t;
             status = "maxiter";
+            if warning("query") =="on" then
+                msg = "%s: Exiting: Maximum number of iterations has been exceeded\n" + ...
+                "         - increase MaxIter option.\n";
+                mprintf(gettext(msg) , "optimbase_terminate" )
+            end
         end
     end
     //
@@ -57,6 +62,11 @@ function [ this , terminate , status ] = optimbase_terminate (this , ...
         if ( this.funevals >= this.maxfunevals ) then
             terminate = %t;
             status = "maxfuneval";
+            if warning("query") =="on" then
+                msg = "%s: Exiting: Maximum number of function evaluations has been exceeded\n" + ...
+                "          - increase MaxFunEvals option.\n"
+                mprintf(gettext(msg) , "optimbase_terminate" )
+            end
         end
     end
     //
@@ -117,4 +127,3 @@ function [ this , terminate , status ] = optimbase_terminate (this , ...
         string(terminate) , status ));
     end
 endfunction
-
index 1602094..e486381 100644 (file)
@@ -42,6 +42,8 @@ nm = nmplot_configure(nm,"-boundsmin",[0 0]);
 nm = nmplot_configure(nm,"-boundsmax",[3 3]);
 nm = nmplot_configure(nm,"-nbineqconst",4);
 nm = nmplot_configure(nm,"-simplex0method","randbounds");
+nm = nmplot_configure(nm,"-maxiter",200);
+nm = nmplot_configure(nm,"-maxfunevals",300);
 nm = nmplot_search(nm);
 xopt = nmplot_get(nm,"-xopt");
 assert_checkalmostequal(xopt,[1;1],1.d-2);
index b6bd715..b7f53da 100644 (file)
@@ -44,6 +44,8 @@ nm = nmplot_configure(nm,"-boundsmin",[0 0]);
 nm = nmplot_configure(nm,"-boundsmax",[3 3]);
 nm = nmplot_configure(nm,"-nbineqconst",4);
 nm = nmplot_configure(nm,"-simplex0method","randbounds");
+nm = nmplot_configure(nm,"-maxiter",200);
+nm = nmplot_configure(nm,"-maxfunevals",300);
 nm = nmplot_search(nm);
 xopt = nmplot_get(nm,"-xopt");
 assert_checkalmostequal(xopt,[1;1],1.d-2);
index 6afd302..08c2355 100644 (file)
@@ -29,6 +29,8 @@ nm = neldermead_configure(nm,"-boundsmin",[1 1 1]);
 nm = neldermead_configure(nm,"-boundsmax",[2 2 2]);
 nm = neldermead_configure(nm,"-simplex0method","randbounds");
 nm = neldermead_search(nm);
+optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded
+          - increase MaxFunEvals option.
 nm = neldermead_configure(nm,"-maxiter",200);
 nm = neldermead_configure(nm,"-maxfunevals",200);
 instr = "nm = neldermead_restart(nm)";
@@ -50,6 +52,8 @@ nm = neldermead_configure(nm,"-boundsmin",[1 1 1]);
 nm = neldermead_configure(nm,"-boundsmax",[2 2 2]);
 nm = neldermead_configure(nm,"-simplex0method","randbounds");
 nm = neldermead_search(nm);
+optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded
+          - increase MaxFunEvals option.
 nm = neldermead_configure(nm,"-maxiter",200);
 nm = neldermead_configure(nm,"-maxfunevals",200);
 nm = neldermead_configure(nm,"-restartsimplexmethod","randbounds");
index 54a89b1..81de197 100644 (file)
@@ -60,8 +60,8 @@ nm = neldermead_configure(nm,"-x0",x0');
 nm = neldermead_configure(nm,"-method","box");
 nm = neldermead_configure(nm,"-boundsmin",lower_bounds);
 nm = neldermead_configure(nm,"-boundsmax",upper_bounds);
-nm = neldermead_configure(nm,"-maxfunevals",200);
-nm = neldermead_configure(nm,"-maxiter",200);
+nm = neldermead_configure(nm,"-maxfunevals",400);
+nm = neldermead_configure(nm,"-maxiter",250);
 nm = neldermead_configure(nm,"-outputcommand",myoutputcmd);
 nm = neldermead_search(nm);
 =================================
@@ -80,6 +80,17 @@ Iteration #100, Feval #151, Fval = 0.2460534, x = 0.5394682 0.2725966, Size = 0.
 Iteration #110, Feval #164, Fval = 0.0712614, x = 0.7533294 0.5572998, Size = 0.1683063
 Iteration #120, Feval #178, Fval = 0.0241643, x = 0.8601955 0.7331400, Size = 0.1201279
 Iteration #130, Feval #194, Fval = 0.0006215, x = 0.9932147 0.9888743, Size = 0.0910561
+Iteration #140, Feval #213, Fval = 0.0000914, x = 0.9907809 0.9818993, Size = 0.0191679
+Iteration #150, Feval #231, Fval = 0.0000080, x = 0.9973005 0.9945266, Size = 0.0036059
+Iteration #160, Feval #247, Fval = 0.0000018, x = 1.0006153 1.0013496, Size = 0.0024367
+Iteration #170, Feval #262, Fval = 0.0000001, x = 0.9997092 0.9993959, Size = 0.0014992
+Iteration #180, Feval #285, Fval = 7.121D-08, x = 1.0000349 1.0000433, Size = 0.0001173
+Iteration #190, Feval #296, Fval = 3.730D-08, x = 1.0001101 1.0002043, Size = 0.0002640
+Iteration #200, Feval #310, Fval = 8.015D-09, x = 1.0000652 1.0001242, Size = 0.0001581
+Iteration #210, Feval #325, Fval = 1.036D-09, x = 0.9999743 0.9999467, Size = 0.0001415
+Iteration #220, Feval #342, Fval = 6.061D-11, x = 1.0000017 1.0000041, Size = 0.0000291
+Iteration #230, Feval #360, Fval = 1.459D-11, x = 0.9999963 0.9999928, Size = 0.0000039
+Iteration #240, Feval #380, Fval = 1.048D-12, x = 0.9999990 0.9999980, Size = 0.0000005
 =================================
 End of Optimization
 xopt = neldermead_get(nm,"-xopt");
index a3f8aa1..cfa1522 100644 (file)
@@ -58,8 +58,8 @@ nm = neldermead_configure(nm,"-x0",x0');
 nm = neldermead_configure(nm,"-method","box");
 nm = neldermead_configure(nm,"-boundsmin",lower_bounds);
 nm = neldermead_configure(nm,"-boundsmax",upper_bounds);
-nm = neldermead_configure(nm,"-maxfunevals",200);
-nm = neldermead_configure(nm,"-maxiter",200);
+nm = neldermead_configure(nm,"-maxfunevals",400);
+nm = neldermead_configure(nm,"-maxiter",250);
 nm = neldermead_configure(nm,"-outputcommand",myoutputcmd);
 nm = neldermead_search(nm);
 xopt = neldermead_get(nm,"-xopt");
index 900a549..bc07c4f 100644 (file)
@@ -138,7 +138,7 @@ function [A,r,t] = findlargestpolygon (nv)
     [ nm , result ] = neldermead_function ( nm , x0 );
     //
     // Perform optimization
-    nm = neldermead_search(nm);
+    nm = neldermead_search(nm, "off");
     fopt = neldermead_get(nm,"-fopt")
     A = -fopt
     xopt = neldermead_get(nm,"-xopt")
index 3665af8..552ae41 100644 (file)
@@ -60,7 +60,7 @@ function [A,r,t] = findlargestpolygon (nv)
     [ nm , result ] = neldermead_function ( nm , x0 );
     //
     // Perform optimization
-    nm = neldermead_search(nm);
+    nm = neldermead_search(nm, "off");
     fopt = neldermead_get(nm,"-fopt")
     A = -fopt
     xopt = neldermead_get(nm,"-xopt")
diff --git a/scilab/modules/optimization/tests/nonreg_tests/bug_9788.dia.ref b/scilab/modules/optimization/tests/nonreg_tests/bug_9788.dia.ref
new file mode 100644 (file)
index 0000000..92a431a
--- /dev/null
@@ -0,0 +1,51 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- ENGLISH IMPOSED -->
+//
+// <-- Non-regression test for bug 9788 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9788
+//
+// <-- Short Description -->
+// neldermead did not print warning messages when maxfuneval or maxiter was attained.
+// The status could only be retrieved in the -status field.
+//
+function [f, index] = quadratic(x, index)
+    f = x(1)^2 + x(2)^2;
+endfunction
+x0 = [1; 1];
+nm = neldermead_new ();
+nm = neldermead_configure(nm, "-numberofvariables", 2);
+nm = neldermead_configure(nm, "-function", quadratic);
+nm = neldermead_configure(nm, "-x0", x0);
+nm = neldermead_search(nm);
+optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded
+          - increase MaxFunEvals option.
+nm = neldermead_configure(nm, "-maxfunevals", 10);
+nm = neldermead_search(nm, 0);
+nm = neldermead_search(nm, "off");
+nm = neldermead_search(nm, 1);
+optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded
+          - increase MaxFunEvals option.
+nm = neldermead_search(nm, "on");
+optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded
+          - increase MaxFunEvals option.
+nm = neldermead_configure(nm, "-maxiter", 2);
+nm = neldermead_search(nm, 0);
+nm = neldermead_search(nm, "off");
+nm = neldermead_search(nm, 1);
+optimbase_terminate: Exiting: Maximum number of iterations has been exceeded
+         - increase MaxIter option.
+nm = neldermead_search(nm, "on");
+optimbase_terminate: Exiting: Maximum number of iterations has been exceeded
+         - increase MaxIter option.
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: ""%s"", ""%s"", %d or %d expected.\n"),..
+"neldermead_search", 2, "off", "on", 0, 1);
+assert_checkerror("neldermead_search(nm, ""k"");", refMsg);
+assert_checkerror("neldermead_search(nm, 2);", refMsg);
diff --git a/scilab/modules/optimization/tests/nonreg_tests/bug_9788.tst b/scilab/modules/optimization/tests/nonreg_tests/bug_9788.tst
new file mode 100644 (file)
index 0000000..299eba0
--- /dev/null
@@ -0,0 +1,45 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- ENGLISH IMPOSED -->
+//
+// <-- Non-regression test for bug 9788 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9788
+//
+// <-- Short Description -->
+// neldermead did not print warning messages when maxfuneval or maxiter was attained.
+// The status could only be retrieved in the -status field.
+//
+
+function [f, index] = quadratic(x, index)
+    f = x(1)^2 + x(2)^2;
+endfunction
+
+x0 = [1; 1];
+
+nm = neldermead_new ();
+nm = neldermead_configure(nm, "-numberofvariables", 2);
+nm = neldermead_configure(nm, "-function", quadratic);
+nm = neldermead_configure(nm, "-x0", x0);
+nm = neldermead_search(nm);
+nm = neldermead_configure(nm, "-maxfunevals", 10);
+nm = neldermead_search(nm, 0);
+nm = neldermead_search(nm, "off");
+nm = neldermead_search(nm, 1);
+nm = neldermead_search(nm, "on");
+nm = neldermead_configure(nm, "-maxiter", 2);
+nm = neldermead_search(nm, 0);
+nm = neldermead_search(nm, "off");
+nm = neldermead_search(nm, 1);
+nm = neldermead_search(nm, "on");
+
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: ""%s"", ""%s"", %d or %d expected.\n"),..
+"neldermead_search", 2, "off", "on", 0, 1);
+assert_checkerror("neldermead_search(nm, ""k"");", refMsg);
+assert_checkerror("neldermead_search(nm, 2);", refMsg);
index 630307d..6b70b43 100644 (file)
@@ -59,7 +59,7 @@ nm = neldermead_configure(nm,"-maxfunevals",10);
 maxfunevals = neldermead_cget(nm,"-maxfunevals");
 assert_checkequal ( maxfunevals , 10 );
 //
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 funevals = neldermead_get(nm,"-funevals");
 // Let's be not strict
 assert_checkequal ( funevals < 15 , %T );
@@ -76,7 +76,7 @@ nm = neldermead_configure(nm,"-simplex0length",0.1);
 nm = neldermead_configure(nm,"-method","variable");
 nm = neldermead_configure(nm,"-function",rosenbrock);
 nm = neldermead_configure(nm,"-maxiter",10);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iterations = neldermead_get(nm,"-iterations");
 assert_checkequal ( iterations , 10 );
 // Cleanup
@@ -115,7 +115,7 @@ nm = neldermead_configure(nm,"-simplex0length",0.1);
 nm = neldermead_configure(nm,"-method","variable");
 nm = neldermead_configure(nm,"-function",rosenbrock);
 nm = neldermead_configure(nm,"-maxfunevals",2);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 cmd = "funevals = neldermead_get(nm,''-foo'')";
 assert_checkerror(cmd,"%s: Unknown key %s",[],"optimbase_get","-foo");
 nm = neldermead_destroy(nm);
index 9aaf052..753a350 100644 (file)
@@ -64,7 +64,7 @@ nm = neldermead_configure(nm,"-maxfunevals",10);
 maxfunevals = neldermead_cget(nm,"-maxfunevals");
 assert_checkequal ( maxfunevals , 10 );
 //
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 funevals = neldermead_get(nm,"-funevals");
 // Let's be not strict
 assert_checkequal ( funevals < 15 , %T );
@@ -82,7 +82,7 @@ nm = neldermead_configure(nm,"-simplex0length",0.1);
 nm = neldermead_configure(nm,"-method","variable");
 nm = neldermead_configure(nm,"-function",rosenbrock);
 nm = neldermead_configure(nm,"-maxiter",10);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iterations = neldermead_get(nm,"-iterations");
 assert_checkequal ( iterations , 10 );
 // Cleanup
@@ -126,7 +126,7 @@ nm = neldermead_configure(nm,"-simplex0length",0.1);
 nm = neldermead_configure(nm,"-method","variable");
 nm = neldermead_configure(nm,"-function",rosenbrock);
 nm = neldermead_configure(nm,"-maxfunevals",2);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 cmd = "funevals = neldermead_get(nm,''-foo'')";
 assert_checkerror(cmd,"%s: Unknown key %s",[],"optimbase_get","-foo");
 nm = neldermead_destroy(nm);
index a7af110..21e9ce1 100644 (file)
@@ -20,7 +20,7 @@ nm = neldermead_configure(nm,"-numberofvariables",2);
 nm = neldermead_configure(nm,"-function",quadratic);
 nm = neldermead_configure(nm,"-x0",x0);
 nm = neldermead_configure(nm,"-outputcommand",neldermead_defaultoutput);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 Initialization
 Iter. #0, Feval #5, Fval = 2 -- init
 Iter. #1, Feval #5, Fval = 2 -- init
index cc093f0..508126e 100644 (file)
@@ -23,7 +23,7 @@ nm = neldermead_configure(nm,"-numberofvariables",2);
 nm = neldermead_configure(nm,"-function",quadratic);
 nm = neldermead_configure(nm,"-x0",x0);
 nm = neldermead_configure(nm,"-outputcommand",neldermead_defaultoutput);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 // Check optimum point
 xopt = neldermead_get(nm,"-xopt");
 assert_checkalmostequal ( xopt , [0;0], [], 1e-6 );
index 3147a70..f628444 100644 (file)
@@ -57,7 +57,7 @@ nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","variable");
 nm = neldermead_configure(nm,"-outputcommand",myoutputcmd);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 // We are here, that means that the output command has been correctly
@@ -76,7 +76,7 @@ nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","fixed");
 nm = neldermead_configure(nm,"-outputcommand",myoutputcmd);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 // We are here, that means that the output command has been correctly
@@ -97,7 +97,7 @@ nm = neldermead_configure(nm,"-method","box");
 nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0]);
 nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0]);
 nm = neldermead_configure(nm,"-outputcommand",myoutputcmd);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 // We are here, that means that the output command has been correctly
@@ -150,7 +150,7 @@ nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","variable");
 nm = neldermead_configure(nm,"-outputcommand",list(myoutputcmd2,myobj));
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 assert_checkequal ( _OUTPUCMDFLAG_ , 12 );
index 9b40389..9d5a98a 100644 (file)
@@ -65,7 +65,7 @@ nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","variable");
 nm = neldermead_configure(nm,"-outputcommand",myoutputcmd);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 // We are here, that means that the output command has been correctly
@@ -87,7 +87,7 @@ nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","fixed");
 nm = neldermead_configure(nm,"-outputcommand",myoutputcmd);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 // We are here, that means that the output command has been correctly
@@ -111,7 +111,7 @@ nm = neldermead_configure(nm,"-method","box");
 nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0]);
 nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0]);
 nm = neldermead_configure(nm,"-outputcommand",myoutputcmd);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 // We are here, that means that the output command has been correctly
@@ -170,7 +170,7 @@ nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","variable");
 nm = neldermead_configure(nm,"-outputcommand",list(myoutputcmd2,myobj));
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 assert_checkequal ( _OUTPUCMDFLAG_ , 12 );
index d13bb0e..d224176 100644 (file)
@@ -20,7 +20,11 @@ nm = neldermead_configure(nm,"-numberofvariables",2);
 nm = neldermead_configure(nm,"-function",rosenbrock);
 nm = neldermead_configure(nm,"-x0",[-1.2 1.0].');
 nm = neldermead_search(nm);
+optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded
+          - increase MaxFunEvals option.
 nm = neldermead_restart(nm);
+optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded
+          - increase MaxFunEvals option.
 nm = neldermead_destroy(nm);
 //
 // Test with and maximum number of iterations reached
@@ -31,8 +35,12 @@ nm = neldermead_configure(nm,"-function",rosenbrock);
 nm = neldermead_configure(nm,"-x0",[-1.2 1.0].');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_search(nm);
+optimbase_terminate: Exiting: Maximum number of iterations has been exceeded
+         - increase MaxIter option.
 nm = neldermead_configure(nm,"-maxiter",100);
 nm = neldermead_restart(nm);
+optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded
+          - increase MaxFunEvals option.
 assert_checktrue(neldermead_get(nm,"-iterations")>10);
 nm = neldermead_destroy(nm);
 function [ f , index ] = objfun ( x , index ) 
@@ -48,6 +56,8 @@ nm = neldermead_configure(nm,"-numberofvariables",2);
 nm = neldermead_configure(nm,"-function",objfun);
 nm = neldermead_configure(nm,"-x0",[-1 1].');
 nm = neldermead_search(nm);
+optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded
+          - increase MaxFunEvals option.
 nm = neldermead_configure(nm,"-maxfunevals",200);
 nm = neldermead_restart(nm);
 xc = neldermead_get(nm,"-xopt");
index a141c06..e92bff1 100644 (file)
@@ -117,6 +117,8 @@ nm = neldermead_configure(nm,"-method","box");
 nm = neldermead_configure(nm,"-nbineqconst",3);
 nm = neldermead_search(nm);
 nm = neldermead_restart(nm);
+optimbase_terminate: Exiting: Maximum number of function evaluations has been exceeded
+          - increase MaxFunEvals option.
 // Check optimum point
 xopt = neldermead_get(nm,"-xopt");
 assert_checkalmostequal ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1, 1e-1 );
@@ -338,7 +340,7 @@ nm = neldermead_configure(nm,"-verbosetermination",1);
 nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]);
 nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]);
 nm = neldermead_configure(nm,"-simplex0method","randbounds");
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 Function Evaluation #1, index=1, x= [0 0 0 0]
 Function Evaluation #2, index=2, x= [0 0 0 0]
 Function Evaluation #3, index=5, x= [0 0 0 0]
index 17bb58a..6f956ec 100644 (file)
@@ -353,6 +353,6 @@ nm = neldermead_configure(nm,"-verbosetermination",1);
 nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0 -10.0 -10.0]);
 nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0 10.0 10.0]);
 nm = neldermead_configure(nm,"-simplex0method","randbounds");
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 nm = neldermead_destroy(nm);
 
index f14acf4..9250499 100644 (file)
@@ -96,7 +96,7 @@ nm = neldermead_configure(nm,"-logfile" , fullfile(TMPDIR,"search.txt" ));
 nm = neldermead_configure(nm,"-verbosetermination",1);
 nm = neldermead_configure(nm,"-nbineqconst",3);
 nm = neldermead_configure(nm,"-method","box");
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 nm = neldermead_destroy(nm);
 computed = deletefile(fullfile(TMPDIR,"search.txt"));
 assert_checkequal ( computed , %t );
index d7211e6..9767924 100644 (file)
@@ -102,7 +102,7 @@ nm = neldermead_configure(nm,"-logfile" , fullfile(TMPDIR,"search.txt" ));
 nm = neldermead_configure(nm,"-verbosetermination",1);
 nm = neldermead_configure(nm,"-nbineqconst",3);
 nm = neldermead_configure(nm,"-method","box");
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 nm = neldermead_destroy(nm);
 computed = deletefile(fullfile(TMPDIR,"search.txt"));
 assert_checkequal ( computed , %t );
index b7557aa..0c651bb 100644 (file)
@@ -31,7 +31,7 @@ nm = neldermead_configure(nm,"-function",rosenbrock);
 nm = neldermead_configure(nm,"-x0",x0);
 nm = neldermead_configure(nm,"-maxfunevals",%inf);
 nm = neldermead_configure(nm,"-maxiter",10);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 // Check _MYDATA_.nb
@@ -61,7 +61,7 @@ nm = neldermead_configure(nm,"-function",list(rosenbrock2,mystuff));
 nm = neldermead_configure(nm,"-x0",x0);
 nm = neldermead_configure(nm,"-maxfunevals",%inf);
 nm = neldermead_configure(nm,"-maxiter",10);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 nm = neldermead_destroy(nm);
@@ -87,7 +87,7 @@ nm = neldermead_configure(nm,"-function",rosenbrock3);
 nm = neldermead_configure(nm,"-x0",x0);
 nm = neldermead_configure(nm,"-maxfunevals",%inf);
 nm = neldermead_configure(nm,"-maxiter",10);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 // Check _MYDATA_.nb
index 43e3af9..a2b9420 100644 (file)
@@ -38,7 +38,7 @@ nm = neldermead_configure(nm,"-function",rosenbrock);
 nm = neldermead_configure(nm,"-x0",x0);
 nm = neldermead_configure(nm,"-maxfunevals",%inf);
 nm = neldermead_configure(nm,"-maxiter",10);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 // Check _MYDATA_.nb
@@ -71,7 +71,7 @@ nm = neldermead_configure(nm,"-function",list(rosenbrock2,mystuff));
 nm = neldermead_configure(nm,"-x0",x0);
 nm = neldermead_configure(nm,"-maxfunevals",%inf);
 nm = neldermead_configure(nm,"-maxiter",10);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 nm = neldermead_destroy(nm);
@@ -100,7 +100,7 @@ nm = neldermead_configure(nm,"-function",rosenbrock3);
 nm = neldermead_configure(nm,"-x0",x0);
 nm = neldermead_configure(nm,"-maxfunevals",%inf);
 nm = neldermead_configure(nm,"-maxiter",10);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 iter = neldermead_get(nm,"-iterations");
 assert_checkequal ( iter , 10 );
 // Check _MYDATA_.nb
index b195b2c..5002d54 100644 (file)
@@ -18,7 +18,7 @@ nm = neldermead_new ();
 nm = neldermead_configure(nm,"-numberofvariables",2);
 nm = neldermead_configure(nm,"-x0",[1.1 1.1]');
 nm = neldermead_configure(nm,"-function",rosenbrock);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 // Check optimum point
 xopt = neldermead_get(nm,"-xopt");
 assert_checkalmostequal ( xopt , [1.0;1.0], 1e-4 );
index e4d35ca..61674a5 100644 (file)
@@ -22,7 +22,7 @@ nm = neldermead_new ();
 nm = neldermead_configure(nm,"-numberofvariables",2);
 nm = neldermead_configure(nm,"-x0",[1.1 1.1]');
 nm = neldermead_configure(nm,"-function",rosenbrock);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 // Check optimum point
 xopt = neldermead_get(nm,"-xopt");
 assert_checkalmostequal ( xopt , [1.0;1.0], 1e-4 );
index 289ea52..3f06fd1 100644 (file)
@@ -18,7 +18,7 @@ nm = neldermead_configure(nm,"-simplex0method","axes");
 nm = neldermead_configure(nm,"-simplex0length",0.5);
 nm = neldermead_configure(nm,"-method","fixed");
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 xopt = neldermead_get(nm,"-xopt");
 assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 );
 fopt = neldermead_get(nm,"-fopt");
@@ -33,7 +33,7 @@ nm = neldermead_configure(nm,"-method","fixed");
 nm = neldermead_configure(nm,"-function",squarefun);
 // Set the relative size to zero: it should never stop...
 nm = neldermead_configure(nm,"-tolsimplexizerelative",0.0);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 xopt = neldermead_get(nm,"-xopt");
 assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 );
 fopt = neldermead_get(nm,"-fopt");
@@ -50,7 +50,7 @@ nm = neldermead_configure(nm,"-maxiter",5);
 nm = neldermead_configure(nm,"-verbose",1);
 // Set the relative size to zero: it should never stop...
 nm = neldermead_configure(nm,"-tolsimplexizerelative",0.0);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 Function Evaluation #1, index=1, x= [1 1]
 Function Evaluation #2, index=2, x= [1 1]
 Function Evaluation #3, index=2, x= [1 1]
@@ -167,7 +167,7 @@ nm = neldermead_configure(nm,"-tolxrelative",10*%eps);
 nm = neldermead_configure(nm,"-simplex0method","axes");
 nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-method","fixed");
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 // With fixed-size simplices, one cannot lead the 
 // simplex to the optimum.
 // Check optimum point
@@ -197,7 +197,7 @@ nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-method","fixed");
 nm = neldermead_configure(nm,"-verbose",1);
 nm = neldermead_configure(nm,"-verbosetermination",0);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 Function Evaluation #1, index=1, x= [-1.2 1]
 Function Evaluation #2, index=2, x= [-1.2 1]
 Function Evaluation #3, index=2, x= [-1.2 1]
index 7845042..0cc45a3 100644 (file)
@@ -21,7 +21,7 @@ nm = neldermead_configure(nm,"-simplex0method","axes");
 nm = neldermead_configure(nm,"-simplex0length",0.5);
 nm = neldermead_configure(nm,"-method","fixed");
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 xopt = neldermead_get(nm,"-xopt");
 assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 );
 fopt = neldermead_get(nm,"-fopt");
@@ -38,7 +38,7 @@ nm = neldermead_configure(nm,"-method","fixed");
 nm = neldermead_configure(nm,"-function",squarefun);
 // Set the relative size to zero: it should never stop...
 nm = neldermead_configure(nm,"-tolsimplexizerelative",0.0);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 xopt = neldermead_get(nm,"-xopt");
 assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 );
 fopt = neldermead_get(nm,"-fopt");
@@ -56,7 +56,7 @@ nm = neldermead_configure(nm,"-maxiter",5);
 nm = neldermead_configure(nm,"-verbose",1);
 // Set the relative size to zero: it should never stop...
 nm = neldermead_configure(nm,"-tolsimplexizerelative",0.0);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 xopt = neldermead_get(nm,"-xopt");
 assert_checkalmostequal ( xopt , [0.0;0.0], 1e-6 );
 fopt = neldermead_get(nm,"-fopt");
@@ -78,7 +78,7 @@ nm = neldermead_configure(nm,"-tolxrelative",10*%eps);
 nm = neldermead_configure(nm,"-simplex0method","axes");
 nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-method","fixed");
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 // With fixed-size simplices, one cannot lead the 
 // simplex to the optimum.
 // Check optimum point
@@ -109,7 +109,7 @@ nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-method","fixed");
 nm = neldermead_configure(nm,"-verbose",1);
 nm = neldermead_configure(nm,"-verbosetermination",0);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 status = neldermead_get(nm,"-status");
 assert_checkequal ( status , "maxiter" );
 nm = neldermead_destroy(nm);
index a06ded6..73b77fd 100644 (file)
@@ -80,7 +80,7 @@ nm = neldermead_configure(nm,"-method","variable");
 nm = neldermead_configure(nm,"-verbose",1);
 nm = neldermead_configure(nm,"-verbosetermination",1);
 nm = neldermead_configure(nm,"-storehistory",%t);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 Function Evaluation #1, index=1, x= [-1.2 1]
 Function Evaluation #2, index=2, x= [-1.2 1]
 Function Evaluation #3, index=2, x= [-1.2 1]
index ad41853..c01d5ed 100644 (file)
@@ -84,7 +84,7 @@ nm = neldermead_configure(nm,"-method","variable");
 nm = neldermead_configure(nm,"-verbose",1);
 nm = neldermead_configure(nm,"-verbosetermination",1);
 nm = neldermead_configure(nm,"-storehistory",%t);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 status = neldermead_get(nm,"-status");
 assert_checkequal ( status , "maxiter" );
 nm = neldermead_destroy(nm);
index 79fd19f..40379bc 100644 (file)
@@ -26,7 +26,7 @@ nm = neldermead_configure(nm,"-function",optimtestcase);
 nm = neldermead_configure(nm,"-x0",[1 2 3 4]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","variable");
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 nm = neldermead_destroy(nm);
 //
 // Test search with fixed algorithm
@@ -37,7 +37,7 @@ nm = neldermead_configure(nm,"-function",optimtestcase);
 nm = neldermead_configure(nm,"-x0",[1 2 3 4]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","fixed");
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 nm = neldermead_destroy(nm);
 //
 // Test with non linear constraints 
@@ -69,7 +69,7 @@ nm = neldermead_configure(nm,"-x0",[0 0 0 0]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","box");
 nm = neldermead_configure(nm,"-nbineqconst",3);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
  
     0.  
     0.  
index 350e3ee..e783e25 100644 (file)
@@ -32,7 +32,7 @@ nm = neldermead_configure(nm,"-function",optimtestcase);
 nm = neldermead_configure(nm,"-x0",[1 2 3 4]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","variable");
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 nm = neldermead_destroy(nm);
 
 //
@@ -44,7 +44,7 @@ nm = neldermead_configure(nm,"-function",optimtestcase);
 nm = neldermead_configure(nm,"-x0",[1 2 3 4]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","fixed");
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 nm = neldermead_destroy(nm);
 
 //
@@ -77,6 +77,6 @@ nm = neldermead_configure(nm,"-x0",[0 0 0 0]');
 nm = neldermead_configure(nm,"-maxiter",10);
 nm = neldermead_configure(nm,"-method","box");
 nm = neldermead_configure(nm,"-nbineqconst",3);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 nm = neldermead_destroy(nm);
 
index 8e27778..2434db8 100644 (file)
@@ -21,7 +21,7 @@ nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
 nm = neldermead_configure(nm,"-simplex0method","spendley");
 nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
@@ -40,7 +40,7 @@ nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
 nm = neldermead_configure(nm,"-simplex0method","axes");
 nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
@@ -60,7 +60,7 @@ nm = neldermead_configure(nm,"-simplex0method","pfeffer");
 nm = neldermead_configure(nm,"-simplex0deltausual",0.05);
 nm = neldermead_configure(nm,"-simplex0deltazero",0.0075);
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
@@ -87,7 +87,7 @@ nm = neldermead_configure(nm,"-simplex0method","given");
 nm = neldermead_configure(nm,"-coords0",coords0);
 nm = neldermead_configure(nm,"-simplex0deltazero",0.0075);
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
@@ -106,7 +106,7 @@ nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
 nm = neldermead_configure(nm,"-simplex0method","axes");
 nm = neldermead_configure(nm,"-simplex0length",[1.0 2.0]);
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
@@ -129,7 +129,7 @@ nm = neldermead_configure(nm,"-method","box");
 nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0]);
 nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0]);
 nm = neldermead_configure(nm,"-simplex0length",20.0);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
index e4ee79d..f68ee4f 100644 (file)
@@ -24,7 +24,7 @@ nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
 nm = neldermead_configure(nm,"-simplex0method","spendley");
 nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
@@ -43,7 +43,7 @@ nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
 nm = neldermead_configure(nm,"-simplex0method","axes");
 nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
@@ -63,7 +63,7 @@ nm = neldermead_configure(nm,"-simplex0method","pfeffer");
 nm = neldermead_configure(nm,"-simplex0deltausual",0.05);
 nm = neldermead_configure(nm,"-simplex0deltazero",0.0075);
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
@@ -90,7 +90,7 @@ nm = neldermead_configure(nm,"-simplex0method","given");
 nm = neldermead_configure(nm,"-coords0",coords0);
 nm = neldermead_configure(nm,"-simplex0deltazero",0.0075);
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
@@ -109,7 +109,7 @@ nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
 nm = neldermead_configure(nm,"-simplex0method","axes");
 nm = neldermead_configure(nm,"-simplex0length",[1.0 2.0]);
 nm = neldermead_configure(nm,"-function",squarefun);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
@@ -133,7 +133,7 @@ nm = neldermead_configure(nm,"-method","box");
 nm = neldermead_configure(nm,"-boundsmin",[-10.0 -10.0]);
 nm = neldermead_configure(nm,"-boundsmax",[10.0 10.0]);
 nm = neldermead_configure(nm,"-simplex0length",20.0);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex0 = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx ( simplex0 );
 expected = [
index f10a571..b337ded 100644 (file)
@@ -18,7 +18,7 @@ nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
 nm = neldermead_configure(nm,"-simplex0method","axes");
 nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-function",rosenbrock);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx( simplex );
 expected = [
index 4c3a2e7..e3a2cb4 100644 (file)
@@ -23,7 +23,7 @@ nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
 nm = neldermead_configure(nm,"-simplex0method","axes");
 nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-function",rosenbrock);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx( simplex );
 expected = [
index 140d3f8..366c2d1 100644 (file)
@@ -18,7 +18,7 @@ nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
 nm = neldermead_configure(nm,"-simplex0method","spendley");
 nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-function",rosenbrock);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx( simplex );
 expected = [
index c8f9238..73f66e7 100644 (file)
@@ -24,7 +24,7 @@ nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
 nm = neldermead_configure(nm,"-simplex0method","spendley");
 nm = neldermead_configure(nm,"-simplex0length",1.0);
 nm = neldermead_configure(nm,"-function",rosenbrock);
-nm = neldermead_search(nm);
+nm = neldermead_search(nm, "off");
 simplex = neldermead_get(nm,"-simplex0");
 computed = optimsimplex_getallx( simplex );
 expected = [
index e7decec..60aff88 100644 (file)
@@ -41,6 +41,8 @@ nm = nmplot_configure(nm,"-sigmafn",sigmafn);
 // Perform optimization
 //
 nm = nmplot_search(nm);
+optimbase_terminate: Exiting: Maximum number of iterations has been exceeded
+         - increase MaxIter option.
 // Plot the contours of the cost function and the simplex history
 xmin = -2.0; 
 xmax = 2.0 ;