fminsearch: updated printing system 48/348/6
Michael Baudin [Mon, 3 May 2010 12:05:12 +0000 (14:05 +0200)]
Change-Id: I4983aa7fabb7fa6ec21d7c342fc2105dc43fe525

72 files changed:
scilab/CHANGES_5.3.X
scilab/modules/optimization/demos/neldermead/neldermead.dem.gateway.sce
scilab/modules/optimization/demos/neldermead/neldermead_boxpost.sce
scilab/modules/optimization/demos/neldermead/neldermead_boxproblemA.sce
scilab/modules/optimization/demos/neldermead/neldermead_boxproblemB.sce
scilab/modules/optimization/demos/neldermead/neldermead_dimension.sce
scilab/modules/optimization/help/en_US/neldermead/fminsearch.xml
scilab/modules/optimization/help/en_US/neldermead/neldermead.xml
scilab/modules/optimization/help/en_US/optimbase/optimbase.xml
scilab/modules/optimization/help/en_US/optimsimplex/optimsimplex.xml
scilab/modules/optimization/macros/neldermead/%TNELDER_p.sci [new file with mode: 0644]
scilab/modules/optimization/macros/neldermead/%TNELDER_string.sci [new file with mode: 0644]
scilab/modules/optimization/macros/neldermead/fminsearch.sci
scilab/modules/optimization/macros/neldermead/neldermead_display.sci
scilab/modules/optimization/macros/neldermead/neldermead_new.sci
scilab/modules/optimization/macros/neldermead/neldermead_search.sci
scilab/modules/optimization/macros/neldermead/neldermead_updatesimp.sci
scilab/modules/optimization/macros/optimbase/%TOPTIM_p.sci [new file with mode: 0644]
scilab/modules/optimization/macros/optimbase/%TOPTIM_string.sci [new file with mode: 0644]
scilab/modules/optimization/macros/optimbase/optimbase_display.sci
scilab/modules/optimization/macros/optimbase/optimbase_new.sci
scilab/modules/optimization/macros/optimsimplex/%TSIMPLEX_p.sci [new file with mode: 0644]
scilab/modules/optimization/macros/optimsimplex/%TSIMPLEX_string.sci [new file with mode: 0644]
scilab/modules/optimization/macros/optimsimplex/optimsimplex_new.sci
scilab/modules/optimization/macros/optimsimplex/optimsimplex_print.sci
scilab/modules/optimization/macros/optimsimplex/optimsimplex_tostring.sci
scilab/modules/optimization/tests/unit_tests/neldermead/fminsearch_output.tst
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_display.dia.ref [deleted file]
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_display.linux.dia.ref [deleted file]
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_display.tst [deleted file]
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_mymethod.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_myterminate.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.dia.ref [new file with mode: 0644]
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.tst [new file with mode: 0644]
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_outputcmd2.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_restart.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_restart.tst
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_searchaddarg.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_searchaddarg2.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_searchaddarg3.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_searchfixed2.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_searchfixed2.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_simplex0.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexaxes.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_simplexregular.tst
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_tolerance.tst
scilab/modules/optimization/tests/unit_tests/neldermead/newFile.txt [deleted file]
scilab/modules/optimization/tests/unit_tests/neldermead/nmplot_contour.tst
scilab/modules/optimization/tests/unit_tests/neldermead/nmplot_newdestroy.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/nmplot_newdestroy.tst
scilab/modules/optimization/tests/unit_tests/neldermead/nmplot_rosenbrock.tst
scilab/modules/optimization/tests/unit_tests/optimbase/optimbase_newdestroy.dia.ref
scilab/modules/optimization/tests/unit_tests/optimbase/optimbase_newdestroy.tst
scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_getset.dia.ref
scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_new.dia.ref
scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_new.tst
scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_print.dia.ref [deleted file]
scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_print.linux.dia.ref [deleted file]
scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_print.tst [deleted file]
scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_tostring.tst
scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_tostring.win.dia.ref

index 49c4dac..8f5aad5 100644 (file)
@@ -111,6 +111,10 @@ Optimization:
 * Simulated annealing: Added documentation for accept_func_default and
   accept_func_vfsa.
 
+* fminsearch: updated printing of neldermead, optimbase and optimsimplex objects.
+
+* fminsearch: added demo for dimensionnality effect of the Nelder-Mead algorithm.
+
 Xcos:
 =====
 
index b46da3b..709ba8a 100644 (file)
@@ -15,6 +15,7 @@ subdemolist = ["fminsearch - Rosenbrock",          "fminsearch_rosenbrock.sce";
               "fminsearch - Plot X",              "fminsearch_optimplotx.sce"; ...
               "neldermead - Rosenbrock Variable", "neldermead_rosenbrock.sce"; ...
               "neldermead - Output Command",      "neldermead_outputcmd.sce"; ...
+               "neldermead - Dimensionnality",     "neldermead_dimension.sce"; ...
               "nmplot - Han #1",                  "nmplot_han1.sce"; ...
               "nmplot - Han #2",                  "nmplot_han2.sce"; ...
               "nmplot - McKinnon #1",             "nmplot_mckinnon.sce"; ...
index ee1a9b9..e6a7106 100644 (file)
@@ -117,11 +117,10 @@ nm = neldermead_configure(nm,"-boxboundsalpha" , 0.0001 );
 //
 mprintf("Searching (please wait)...\n");
 nm = neldermead_search(nm);
-neldermead_display(nm);
 mprintf("==========================\n");
 xcomp = neldermead_get(nm,"-xopt");
-mprintf("x computed=%s\n",strcat(string(xcomp)," "));
-mprintf("x expected=%s\n",strcat(string(xopt)," "));
+mprintf("x computed=[%s]\n",strcat(string(xcomp)," "));
+mprintf("x expected=[%s]\n",strcat(string(xopt)," "));
 shift = norm(xcomp-xopt)/norm(xopt);
 mprintf("Shift =%f\n",shift);
 fcomp = neldermead_get(nm,"-fopt");
index a600aa4..dc57345 100644 (file)
@@ -1,5 +1,6 @@
 // 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
 //
 // This file must be used under the terms of the CeCILL.
 // This source file is licensed as described in the file COPYING, which
 //
 
 mprintf("Illustrates Box'' algorithm on Box problem A.\n");
-mprintf("Defining Box Problem A function...\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, 
+//   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
@@ -162,18 +169,17 @@ nm = neldermead_configure(nm,"-nbineqconst",6);
 mprintf("Searching (please wait)...\n");
 nm = neldermead_search(nm);
 mprintf("...Done\n");
-neldermead_display(nm);
 mprintf("==========================\n");
 xcomp = neldermead_get(nm,"-xopt");
-mprintf("x computed=%s\n",strcat(string(xcomp)," "));
-mprintf("x expected=%s\n",strcat(string(xopt)," "));
+mprintf("x computed=[%s]\n",strcat(string(xcomp)," "));
+mprintf("x expected=[%s]\n",strcat(string(xopt)," "));
 shift = norm(xcomp-xopt)/norm(xopt);
-mprintf("Shift =%f\n",shift);
+mprintf("Relative error =%e\n",shift);
 fcomp = neldermead_get(nm,"-fopt");
 mprintf("f computed=%f\n",fcomp);
 mprintf("f expected=%f\n",fopt);
 shift = abs(fcomp-fopt)/abs(fopt);
-mprintf("Shift =%f\n",shift);
+mprintf("Relative error =%e\n",shift);
 nm = neldermead_destroy(nm);
 mprintf("End of demo.\n");
 
index cf57c1e..17c5d97 100644 (file)
@@ -1,5 +1,6 @@
 // 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
 //
 // This file must be used under the terms of the CeCILL.
 // This source file is licensed as described in the file COPYING, which
 //
 
 mprintf("Illustrates Box'' algorithm on Box problem B.\n");
-mprintf("Defining Box Problem B function...\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 B\n");
 
 //
 //  Reference:
@@ -118,18 +124,17 @@ nm = neldermead_configure(nm,"-boxboundsalpha" , 0.0001 );
 //
 mprintf("Searching (please wait)...\n");
 nm = neldermead_search(nm);
-neldermead_display(nm);
 mprintf("==========================\n");
 xcomp = neldermead_get(nm,"-xopt");
-mprintf("x computed=%s\n",strcat(string(xcomp)," "));
-mprintf("x expected=%s\n",strcat(string(xopt)," "));
+mprintf("x computed=[%s]\n",strcat(string(xcomp)," "));
+mprintf("x expected=[%s]\n",strcat(string(xopt)," "));
 shift = norm(xcomp-xopt)/norm(xopt);
-mprintf("Shift =%f\n",shift);
+mprintf("Relative error =%e\n",shift);
 fcomp = neldermead_get(nm,"-fopt");
 mprintf("f computed=%f\n",fcomp);
 mprintf("f expected=%f\n",fopt);
 shift = abs(fcomp-fopt)/abs(fopt);
-mprintf("Shift =%f\n",shift);
+mprintf("Relative error =%e\n",shift);
 nm = neldermead_destroy(nm);
 mprintf("End of demo.\n");
 
index 5043c6c..d0b9d42 100644 (file)
@@ -1,5 +1,6 @@
 // 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
 //
 // This file must be used under the terms of the CeCILL.
 // This source file is licensed as described in the file COPYING, which
@@ -8,6 +9,7 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 mprintf("Illustrates the sensitivity to dimension of the Nelder-Mead algorithm\n");
+mprintf("Han and Neumann. ""Effect of dimensionality on the nelder-mead simplex method."" Optimization Methods and Software, 2006.\n");
 
 function [ f , index ] = quadracticn ( x , index )
   f = sum(x.^2);
@@ -37,7 +39,6 @@ function [nbfevals , niter , rho] = solvepb ( n )
   // Perform optimization
   //
   nm = neldermead_search(nm);
-  //neldermead_display(nm);
   si0 = neldermead_get ( nm , "-simplex0" );
   sigma0 = optimsimplex_size ( si0 , "sigmaplus" );
   siopt = neldermead_get ( nm , "-simplexopt" );
@@ -49,8 +50,14 @@ function [nbfevals , niter , rho] = solvepb ( n )
   nm = neldermead_destroy(nm);
 endfunction
 
+nmax = 20;
+mprintf("Maximum dimension:%d\n",nmax);
+mprintf("Column #1: number of dimensions\n");
+mprintf("Column #2: number of function evaluations\n");
+mprintf("Column #3: number of iterations\n");
+mprintf("Column #4: convergence rate (lower is better)\n");
 
-for n = 1:20
+for n = 1:nmax
   [nbfevals niter rho] = solvepb ( n );
   array_rho(n) = rho;
   array_nbfevals(n) = nbfevals;
@@ -58,7 +65,7 @@ for n = 1:20
 end
 // Plot rate of convergence
 hh = scf();
-plot(1:20,array_rho)
+plot(1:nmax,array_rho)
 hh.children.x_label.text = "Number of parameters"
 hh.children.y_label.text = "Rate of convergence"
 hh.children.children.children.mark_mode = "on";
@@ -67,7 +74,7 @@ hh.children.children.children.mark_size = 10;
 
 // Plot number of function evaluations
 hh = scf();
-plot(1:20,array_nbfevals)
+plot(1:nmax,array_nbfevals)
 hh.children.x_label.text = "Number of parameters"
 hh.children.y_label.text = "Number of function evaluations"
 hh.children.children.children.mark_mode = "on";
index 02c994a..115ff4e 100644 (file)
@@ -12,9 +12,6 @@
           xmlns:ns4="http://www.w3.org/1999/xhtml"
           xmlns:mml="http://www.w3.org/1998/Math/MathML"
           xmlns:db="http://docbook.org/ns/docbook">
-  <info>
-    <pubdate>$LastChangedDate: 16-12-2008 $</pubdate>
-  </info>
 
   <refnamediv>
     <refname>fminsearch</refname>
     based on the update of a simplex, which is a set of k&gt;=n+1 vertices,
     where each vertex is associated with one point and one function value.
     This algorithm is the Nelder-Mead algorithm.</para>
+    
+    <para>See the demonstrations, in the Optimization section, for an overview
+    of this component.</para>
+    
+    <para>See the "Nelder-Mead User's Manual" on Scilab's wiki and on the
+    Scilab forge for further informations.</para>
   </refsection>
 
   <refsection>
@@ -797,6 +800,9 @@ opt = optimset ( "OutputFcn" , outfun );
 
     <para>"Global Optimization Of Lennard-Jones Atomic Clusters" Ellen Fan,
     Thesis, February 26, 2002, McMaster University</para>
+    
+    <para>"Nelder Mead's User Manual", Consortium Scilab - Digiteo, Michael 
+    Baudin, 2010</para>
   </refsection>
 
   <refsection>
index 892dfab..6671f2e 100644 (file)
@@ -12,9 +12,6 @@
           xmlns:ns4="http://www.w3.org/1999/xhtml"
           xmlns:mml="http://www.w3.org/1998/Math/MathML"
           xmlns:db="http://docbook.org/ns/docbook">
-  <info>
-    <pubdate>$LastChangedDate: 22-10-2009 $</pubdate>
-  </info>
 
   <refnamediv>
     <refname>neldermead</refname>
@@ -31,7 +28,6 @@ newobj = neldermead_new ()
 this = neldermead_destroy (this)
 this = neldermead_configure (this,key,value)
 value = neldermead_cget (this,key)
-neldermead_display ( this )
 value = neldermead_get ( this , key )
 this = neldermead_search ( this )
 this = neldermead_restart ( this )
@@ -84,20 +80,20 @@ g_i(x) &lt;= 0, i = 1,nbineq
 
     <variablelist>
       <varlistentry>
-        <term>Spendley, Hext and Himsworth fixed size simplex method</term>
+        <term>Spendley, Hext and Himsworth fixed shape simplex method</term>
 
         <listitem>
           <para>This algorithm solves an unconstrained optimization problem
-          with a fixed sized simplex made of k=n+1 vertices.</para>
+          with a fixed shape simplex made of k=n+1 vertices.</para>
         </listitem>
       </varlistentry>
 
       <varlistentry>
-        <term>Nelder and Mead variable size simplex method</term>
+        <term>Nelder and Mead variable shape simplex method</term>
 
         <listitem>
           <para>This algorithm solves an unconstrained optimization problem
-          with a variable sized simplex made of k=n+1 vertices.</para>
+          with a variable shape simplex made of k=n+1 vertices.</para>
         </listitem>
       </varlistentry>
 
@@ -106,11 +102,17 @@ g_i(x) &lt;= 0, i = 1,nbineq
 
         <listitem>
           <para>This algorithm solves an constrained optimization problem with
-          a variable sized simplex made of an arbitrary k number of vertices
+          a variable shape simplex made of an arbitrary k number of vertices
           (k=2n is recommended by Box).</para>
         </listitem>
       </varlistentry>
     </variablelist>
+    
+    <para>See the demonstrations, in the Optimization section, for an overview
+    of this component.</para>
+    
+    <para>See the "Nelder-Mead User's Manual" on Scilab's wiki and on the
+    Scilab forge for further informations.</para>
   </refsection>
 
   <refsection>
@@ -1246,24 +1248,6 @@ g_i(x) &lt;= 0, i = 1,nbineq
       </varlistentry>
 
       <varlistentry>
-        <term>neldermead_display ( this )</term>
-
-        <listitem>
-          <para>Display the current settings in the console.</para>
-
-          <variablelist>
-            <varlistentry>
-              <term>this</term>
-
-              <listitem>
-                <para>The current object.</para>
-              </listitem>
-            </varlistentry>
-          </variablelist>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
         <term>this = neldermead_search ( this )</term>
 
         <listitem>
@@ -1583,11 +1567,6 @@ function outputcmd(state, data, myobj)
     (ASCII, LaTeX, Excel, Hdf5, etc...). The user-defined parameter may be
     used in that case to store file names or logging options.</para>
 
-    <para>The data tlist argument may contain more fields than the current
-    presented ones. These additionnal fields may contain values which are
-    specific to the specialized algorithm, such as the simplex in a
-    Nelder-Mead method, the gradient of the cost function in a BFGS method,
-    etc...</para>
   </refsection>
 
   <refsection>
@@ -2274,7 +2253,7 @@ nm = neldermead_configure(nm,"-numberofvariables",2);
 nm = neldermead_configure(nm,"-function",quadratic);
 nm = neldermead_configure(nm,"-x0",x0);
 nm = neldermead_search(nm);
-neldermead_display(nm);
+nm
 xopt = neldermead_get(nm,"-xopt");
 nm = neldermead_destroy(nm);
  ]]>
@@ -2525,6 +2504,10 @@ Iteration #157, Feval #300, Fval = 6.023002e-027, x = 1 1, Size = 2.814328e-013
 
     <para>"Algorithm AS47 - Function minimization using a simplex procedure",
     O'Neill, R., Applied Statistics, 1971</para>
+    
+    <para>"Nelder Mead's User Manual", Consortium Scilab - Digiteo, Michael 
+    Baudin, 2010</para>
+
   </refsection>
 
   <refsection>
index 2a38e50..e597e74 100644 (file)
@@ -9,9 +9,6 @@
           xmlns:ns4="http://www.w3.org/1999/xhtml"
           xmlns:mml="http://www.w3.org/1998/Math/MathML"
           xmlns:db="http://docbook.org/ns/docbook">
-  <info>
-    <pubdate>$LastChangedDate: 16-12-2008 $</pubdate>
-  </info>
 
   <refnamediv>
     <refname>optimbase</refname>
@@ -32,7 +29,6 @@ value = optimbase_get (this,key)
 this = optimbase_set ( this , key , value )
 [ this , isok ] = optimbase_checkbounds ( this )
 [ opt , isok ] = optimbase_checkx0 ( this )
-this = optimbase_display ( this )
 [ this , f , index [ , data ] ] = optimbase_function ( this , x , index [ , data ] )
 [ this , f , c , index [ , data ] ] = optimbase_function ( this , x , index [ , data ] )
 [ this , f , g , index [ , data ] ] = optimbase_function ( this , x , index [ , data ] )
@@ -599,24 +595,6 @@ g_i(x) &lt;= 0, i = 1,nbineq
       </varlistentry>
 
       <varlistentry>
-        <term>this = optimbase_display ( this )</term>
-
-        <listitem>
-          <para>Display the current settings in the console.</para>
-
-          <variablelist>
-            <varlistentry>
-              <term>this</term>
-
-              <listitem>
-                <para>The current object.</para>
-              </listitem>
-            </varlistentry>
-          </variablelist>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
         <term>[ this , f , index [ , data ] ] = optimbase_function ( this , x , index [ , data ] )</term>
 
         <term>[ this , f , c , index [ , data ] ] = optimbase_function ( this , x , index [ , data ] )</term>
@@ -1755,7 +1733,8 @@ opt = optimbase_new();
 opt = optimbase_configure(opt,"-numberofvariables",2);
 nbvar = optimbase_cget(opt,"-numberofvariables");
 opt = optimbase_configure(opt,"-function",rosenbrock);
-[ this , f , index ] = optimbase_function ( opt , [0.0 0.0] , index );
+[ opt , f , index ] = optimbase_function ( opt , [0.0 0.0] , 1 );
+opt
 opt = optimbase_destroy(opt);
  </programlisting>
   </refsection>
@@ -1763,7 +1742,7 @@ opt = optimbase_destroy(opt);
   <refsection>
     <title>Authors</title>
 
-    <para>Michael Baudin, 2008-2009</para>
+    <para>Michael Baudin, 2008-2010</para>
   </refsection>
 
   <refsection>
index e33302d..4042828 100644 (file)
@@ -55,7 +55,6 @@ m = optimsimplex_fvmean ( this )
 sd = optimsimplex_fvstdev ( this )
 v = optimsimplex_fvvariance ( this )
 [ g , data ] = optimsimplex_gradientfv ( this , fun , method , data )
-optimsimplex_print ( this )
 [ r , data ] = optimsimplex_reflect ( this , fun , data )
 [ this , data ] = optimsimplex_shrink ( this , fun , sigma , data )
 ssize = optimsimplex_size ( this , method )
@@ -1541,25 +1540,6 @@ function [ y , data ] = myfunction ( x , data )
       </varlistentry>
 
       <varlistentry>
-        <term>optimsimplex_print ( this )</term>
-
-        <listitem>
-          <para>Display the current simplex, with coordinates and function
-          values.</para>
-
-          <variablelist>
-            <varlistentry>
-              <term>this</term>
-
-              <listitem>
-                <para>The current simplex object.</para>
-              </listitem>
-            </varlistentry>
-          </variablelist>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
         <term>[ r , data ] = optimsimplex_reflect ( this , fun , data )</term>
 
         <listitem>
@@ -1834,9 +1814,9 @@ coords = [
     0.    1.  
 ];
 s1 = optimsimplex_new ( coords );
-computed = optimsimplex_getallx ( s1 );
-computed = optimsimplex_getn(s1);
-computed = optimsimplex_getnbve (s1);
+optimsimplex_getallx ( s1 )
+optimsimplex_getn(s1)
+optimsimplex_getnbve (s1)
 s1 = optimsimplex_destroy(s1);
  ]]>
 </programlisting>
@@ -1865,9 +1845,9 @@ endfunction
 
 mystuff = tlist(["T_MYSTUFF","nb"]);
 mystuff.nb = 0;
-s1 = optimsimplex_new ();
-[ s1 , mystuff ] = optimsimplex_randbounds ( s1 , x0 = [-1.2 1.0], fun = mycostf, ...
-  boundsmin = [-5.0 -5.0] , boundsmax = [5.0 5.0], nbve=5 , data = mystuff );
+[ s1 , mystuff ] = optimsimplex_new ( "randbounds" , [-1.2 1.0], mycostf, ...
+  [-5.0 -5.0] , [5.0 5.0], 5 , mystuff );
+s1
 mprintf("Function evaluations: %d\n",mystuff.nb)
 s1 = optimsimplex_destroy ( s1 );
 ]]>
@@ -1925,7 +1905,7 @@ s1 = optimsimplex_destroy ( s1 );
 
     <para>Michael Baudin - INRIA - 2008-2009</para>
 
-    <para>Michael Baudin - Digiteo - 2009</para>
+    <para>Michael Baudin - Digiteo - 2009-2010</para>
   </refsection>
 
   <refsection>
diff --git a/scilab/modules/optimization/macros/neldermead/%TNELDER_p.sci b/scilab/modules/optimization/macros/neldermead/%TNELDER_p.sci
new file mode 100644 (file)
index 0000000..dc297ff
--- /dev/null
@@ -0,0 +1,22 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - 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
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+
+//
+// %TNELDER_p --
+//   Prints the string containing the nelder mead component.
+//
+function %TNELDER_p ( this )
+  str = string ( this )
+  srows = size(str,"r")
+  for i = 1 : srows
+    mprintf("%s\n",str(i))
+  end
+endfunction
+
+
diff --git a/scilab/modules/optimization/macros/neldermead/%TNELDER_string.sci b/scilab/modules/optimization/macros/neldermead/%TNELDER_string.sci
new file mode 100644 (file)
index 0000000..905a4f1
--- /dev/null
@@ -0,0 +1,176 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - 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
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+
+//
+// %TNELDER_string --
+//   Returns the string containing the Nelder-Mead component.
+//
+function str = %TNELDER_string ( this )
+  str = []
+  k = 1
+  str(k) = sprintf("Nelder-Mead Object:\n")
+  k = k + 1
+  str(k) = sprintf("======================")
+  k = k + 1
+  stroptb = string ( this.optbase );
+  for i =1:size(stroptb,"r")
+    k = k + 1
+    str(k) = stroptb(i)
+  end
+  k = k + 1
+  str(k) = ""
+  k = k + 1
+  str(k) = sprintf("Simplex0 : \n");
+  strsi0 = string ( this.simplex0 );
+  for i =1:size(strsi0,"r")
+    k = k + 1
+    str(k) = strsi0(i)
+  end
+  k = k + 1
+  str(k) = sprintf("Simplex Optimum : \n");
+  strsopt = string ( this.simplexopt );
+  for i =1:size(strsopt,1)
+    k = k + 1
+    str(k) = sprintf("%s\n",strsopt(i));
+  end
+  k = k + 1
+  str(k) = sprintf("Simplex0 Method : %s\n", string(this.simplex0method));
+  k = k + 1
+  str(k) = sprintf("Simplex0 Length : %s\n", string(this.simplex0length));
+  k = k + 1
+  str(k) = sprintf("Simplex0, Pfeffer, Delta Usual : %s\n", string(this.simplex0deltausual));
+  k = k + 1
+  str(k) = sprintf("Simplex0, Pfeffer, Delta Zero : %s\n", string(this.simplex0deltazero));
+  k = k + 1
+  str(k) = sprintf("Simplex0, Given, Coords :\n");
+  if ( this.coords0 == [] ) then
+    k = k + 1
+    str(k) = sprintf("[]\n");
+  else
+    nbve = size(this.coords0,"r")
+    for i = 1 : nbve
+      k = k + 1
+      str(k) = sprintf("%s\n" , _tostring(this.coords0(i,:)));
+    end
+  end
+  /////////////////////////////////////////////////////
+  // Termination
+  k = k + 1
+  str(k) = sprintf("\n");
+  k = k + 1
+  str(k) = sprintf("Termination parameters\n");
+  k = k + 1
+  str(k) = sprintf("Termination on simplex size : %s\n", string(this.tolsimplexizemethod));
+  k = k + 1
+  str(k) = sprintf("Termination on simplex size, Absolute Tolerance : %s\n", string(this.tolsimplexizeabsolute));
+  k = k + 1
+  str(k) = sprintf("Termination on simplex size, Relative Tolerance : %s\n", string(this.tolsimplexizerelative));
+  k = k + 1
+  str(k) = sprintf("Termination on simplex size, Initial Simplex Size : %s\n", string(this.simplexsize0));
+  k = k + 1
+  str(k) = sprintf("Termination on simplex size + Delta of function value : %s\n", string(this.tolssizedeltafvmethod));
+  k = k + 1
+  str(k) = sprintf("Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : %s\n", string(this.toldeltafv));
+  k = k + 1
+  str(k) = sprintf("Termination on Kelley''s Stagnation : %s\n", string(this.kelleystagnationflag));
+  k = k + 1
+  str(k) = sprintf("Termination on Kelley''s Stagnation, Normalization : %s\n", string(this.kelleynormalizationflag));
+  k = k + 1
+  str(k) = sprintf("Termination on Kelley''s Stagnation, Alpha0 : %s\n", string(this.kelleystagnationalpha0));
+  k = k + 1
+  str(k) = sprintf("Termination on Kelley''s Stagnation, Alpha : %s\n", string(this.kelleyalpha));
+  k = k + 1
+  str(k) = sprintf("Termination by Box : %s\n", string(this.boxtermination));
+  k = k + 1
+  str(k) = sprintf("Termination by Box, Absolute Tolerance on Function: %s\n", string(this.boxtolf));
+  k = k + 1
+  str(k) = sprintf("Termination by Box, Maximum Number of Consecutive Match : %s\n", string(this.boxnbmatch));
+  k = k + 1
+  str(k) = sprintf("Termination by Box, Current Number of Consecutive Match : %s\n", string(this.boxkount));
+  k = k + 1
+  str(k) = sprintf("Termination on Variance : %s\n", string(this.tolvarianceflag));
+  k = k + 1
+  str(k) = sprintf("Termination on Variance, Absolute Tolerance : %s\n", string(this.tolabsolutevariance));
+  k = k + 1
+  str(k) = sprintf("Termination on Variance, Relative Tolerance : %s\n", string(this.tolrelativevariance));
+  k = k + 1
+  str(k) = sprintf("Termination on Variance, Variance of Initial Simplex : %s\n", string(this.variancesimplex0));
+  /////////////////////////////////////////////////////
+  k = k + 1
+  str(k) = sprintf("\n");
+  k = k + 1
+  str(k) = sprintf("Algorithms parameters\n");
+  k = k + 1
+  str(k) = sprintf("Method : %s\n", string(this.method));
+  k = k + 1
+  str(k) = sprintf("Reflection Factor (rho) : %s\n", string(this.rho));
+  k = k + 1
+  str(k) = sprintf("Expansion Factor (chi) : %s\n", string(this.chi));
+  k = k + 1
+  str(k) = sprintf("Contraction Factor (gamma) : %s\n", string(this.gamma));
+  k = k + 1
+  str(k) = sprintf("Shrinkage Factor (sigma) : %s\n", string(this.sigma));
+  k = k + 1
+  str(k) = sprintf("Kelley Stagnation : %s\n", string(this.kelleystagnationflag));
+  k = k + 1
+  str(k) = sprintf("Restart Epsilon : %e\n", this.restarteps);
+  k = k + 1
+  str(k) = sprintf("Restart Step : %s\n", _strvec(this.restartstep));
+  k = k + 1
+  str(k) = sprintf("Restart Maximum : %d\n", this.restartmax);
+  k = k + 1
+  str(k) = sprintf("Restart Simplex Method : %s\n", string(this.restartsimplexmethod));
+  k = k + 1
+  str(k) = sprintf("Restart Flag : %s\n", string(this.restartflag));
+  k = k + 1
+  str(k) = sprintf("Restart Number : %s\n", string(this.restartnb));
+  k = k + 1
+  str(k) = sprintf("Restart Detection Method : %s\n", string(this.restartdetection));
+  k = k + 1
+  str(k) = sprintf("Startup Flag : %s\n", string(this.startupflag));
+  k = k + 1
+  str(k) = sprintf("Automatic Checking of Cost Function : %s\n", string(this.checkcostfunction));
+  k = k + 1
+  str(k) = sprintf("Box, Number of Points  : %s\n", string(this.boxnbpoints));
+  k = k + 1
+  str(k) = sprintf("Box, Current Number of Points  : %s\n", string(this.boxnbpointseff));
+  k = k + 1
+  str(k) = sprintf("Box, Scaling, Factor  : %s\n", string(this.boxineqscaling));
+  k = k + 1
+  str(k) = sprintf("Box, Scaling, Method  : %s\n", string(this.scalingsimplex0));
+  k = k + 1
+  str(k) = sprintf("Box, Scaling, Minimum : %s\n", string(this.guinalphamin));
+  k = k + 1
+  str(k) = sprintf("Box, Bounds Parameter: %s\n", string(this.boxboundsalpha));
+  k = k + 1
+  str(k) = sprintf("Box, Reflection Coefficient : %s\n", string(this.boxreflect));
+endfunction
+
+//
+// _strvec --
+//  Returns a string for the given vector.
+//
+function str = _strvec ( x )
+    str = strcat(string(x)," ")
+endfunction
+function s = _tostring ( x )
+  if ( x==[] ) then
+    s = "[]"
+  else
+    n = size ( x , "*" )
+    if ( n == 1 ) then
+      s = string(x)
+    else
+      s = "["+strcat(string(x)," ")+"]"
+    end
+  end
+endfunction
+
+
+
index fd1cc50..baca5d3 100644 (file)
@@ -20,7 +20,6 @@
 //        Initial guess for optimization algorithm.
 //  options : an optional struct, as provided by optimset
 //
-// TODO : implement Implement the following fminsearch features : Display, OutputFcn, PlotFcns
 function [x,fval,exitflag,output] = fminsearch ( varargin )
   [lhs,rhs]=argn();
   if rhs<>2 & rhs<>3 then
index ce82c7f..12fea9b 100644 (file)
 //   Display a Nelder-Mead engine
 //
 function neldermead_display ( this )
-  mprintf("Nelder-Mead Object\n");
-  this.optbase = optimbase_display ( this.optbase )
-  mprintf("Simplex0 : \n");
-  str = optimsimplex_tostring ( this.simplex0 );
-  for k =1:size(str,1)
-    mprintf("%s\n",str(k));
-  end
-  mprintf("Simplex Optimum : \n");
-  str = optimsimplex_tostring ( this.simplexopt );
-  for k =1:size(str,1)
-    mprintf("%s\n",str(k));
-  end
-  mprintf("Simplex0 Method : %s\n", string(this.simplex0method));
-  mprintf("Simplex0 Length : %s\n", string(this.simplex0length));
-  mprintf("Simplex0, Pfeffer, Delta Usual : %s\n", string(this.simplex0deltausual));
-  mprintf("Simplex0, Pfeffer, Delta Zero : %s\n", string(this.simplex0deltazero));
-  mprintf("Simplex0, Given, Coords :\n");
-  disp(this.coords0)
-  // Termination
-  mprintf("Termination on simplex size : %s\n", string(this.tolsimplexizemethod));
-  mprintf("Termination on simplex size, Absolute Tolerance : %s\n", string(this.tolsimplexizeabsolute));
-  mprintf("Termination on simplex size, Relative Tolerance : %s\n", string(this.tolsimplexizerelative));
-  mprintf("Termination on simplex size, Initial Simplex Size : %s\n", string(this.simplexsize0));
-  mprintf("Termination on simplex size + Delta of function value : %s\n", string(this.tolssizedeltafvmethod));
-  mprintf("Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : %s\n", string(this.toldeltafv));
-  mprintf("Termination on Kelley''s Stagnation : %s\n", string(this.kelleystagnationflag));
-  mprintf("Termination on Kelley''s Stagnation, Normalization : %s\n", string(this.kelleynormalizationflag));
-  mprintf("Termination on Kelley''s Stagnation, Alpha0 : %s\n", string(this.kelleystagnationalpha0));
-  mprintf("Termination on Kelley''s Stagnation, Alpha : %s\n", string(this.kelleyalpha));
-  mprintf("Termination by Box : %s\n", string(this.boxtermination));
-  mprintf("Termination by Box, Absolute Tolerance on Function: %s\n", string(this.boxtolf));
-  mprintf("Termination by Box, Maximum Number of Consecutive Match : %s\n", string(this.boxnbmatch));
-  mprintf("Termination by Box, Current Number of Consecutive Match : %s\n", string(this.boxkount));
-  mprintf("Termination on Variance : %s\n", string(this.tolvarianceflag));
-  mprintf("Termination on Variance, Absolute Tolerance : %s\n", string(this.tolabsolutevariance));
-  mprintf("Termination on Variance, Relative Tolerance : %s\n", string(this.tolrelativevariance));
-  mprintf("Termination on Variance, Variance of Initial Simplex : %s\n", string(this.variancesimplex0));
-  // Algorithms parameters
-  mprintf("Method : %s\n", string(this.method));
-  mprintf("Reflection Factor (rho) : %s\n", string(this.rho));
-  mprintf("Expansion Factor (chi) : %s\n", string(this.chi));
-  mprintf("Contraction Factor (gamma) : %s\n", string(this.gamma));
-  mprintf("Shrinkage Factor (sigma) : %s\n", string(this.sigma));
-  mprintf("Kelley Stagnation : %s\n", string(this.kelleystagnationflag));
-  mprintf("Restart Epsilon : %e\n", this.restarteps);
-  mprintf("Restart Step : %s\n", _strvec(this.restartstep));
-  mprintf("Restart Maximum : %d\n", this.restartmax);
-  mprintf("Restart Simplex Method : %s\n", string(this.restartsimplexmethod));
-  mprintf("Restart Flag : %s\n", string(this.restartflag));
-  mprintf("Restart Number : %s\n", string(this.restartnb));
-  mprintf("Restart Detection Method : %s\n", string(this.restartdetection));
-  mprintf("Startup Flag : %s\n", string(this.startupflag));
-  mprintf("Automatic Checking of Cost Function : %s\n", string(this.checkcostfunction));
-  mprintf("Box, Number of Points  : %s\n", string(this.boxnbpoints));
-  mprintf("Box, Current Number of Points  : %s\n", string(this.boxnbpointseff));
-  mprintf("Box, Scaling, Factor  : %s\n", string(this.boxineqscaling));
-  mprintf("Box, Scaling, Method  : %s\n", string(this.scalingsimplex0));
-  mprintf("Box, Scaling, Minimum : %s\n", string(this.guinalphamin));
-  mprintf("Box, Bounds Parameter: %s\n", string(this.boxboundsalpha));
-  mprintf("Box, Reflection Coefficient : %s\n", string(this.boxreflect));
-
-
+  warnobsolete("disp", "neldermead_display")
+  disp(this)
 endfunction
 
-  //
-  // _strvec --
-  //  Returns a string for the given vector.
-  //
-  function str = _strvec ( x )
-      str = strcat(string(x)," ")
-  endfunction
-
index 72334c5..386be3f 100644 (file)
@@ -13,7 +13,7 @@
 //   Creates a new Nelder-Mead object.
 //
 function newobj = neldermead_new ()
-  newobj = tlist(["T_NELDERMEAD" 
+  newobj = tlist(["TNELDER" 
     "optbase" 
     "method"
     "simplex0"
index f1a49f6..bc7cbb0 100644 (file)
@@ -237,7 +237,7 @@ function this = neldermead_variable ( this )
       this = neldermead_log (this,sprintf("DeltaFv : %e",deltafv));
       this = neldermead_log (this,sprintf("Center : %s",_strvec(currentcenter)));
       this = neldermead_log (this,sprintf("Size : %e",ssize));
-      str = optimsimplex_tostring ( simplex )
+      str = string ( simplex )
       for i = 1:n+1
         this = neldermead_log (this,str(i));
       end
@@ -483,7 +483,7 @@ function this = neldermead_fixed (this)
       this = neldermead_log (this,sprintf("DeltaFv : %e",deltafv));
       this = neldermead_log (this,sprintf("Center : %s",_strvec(currentcenter)));
       this = neldermead_log (this,sprintf("Size : %e",ssize));
-      str = optimsimplex_tostring ( simplex )
+      str = string ( simplex )
       for i = 1:n+1
         this = neldermead_log (this,str(i));
       end
@@ -1245,7 +1245,7 @@ function this = neldermead_box ( this )
       this = neldermead_log (this,sprintf("DeltaFv : %e",deltafv));
       this = neldermead_log (this,sprintf("Center : [%s]",_strvec(currentcenter)));
       this = neldermead_log (this,sprintf("Size : %e",ssize));
-      str = optimsimplex_tostring ( simplex )
+      str = string ( simplex )
       for i = 1:nbve
         this = neldermead_log (this,str(i));
       end
index 879ec91..9cb127a 100644 (file)
@@ -62,7 +62,7 @@ function this = neldermead_updatesimp ( this )
   //
   nbve = optimsimplex_getnbve ( simplex0 );
   this = neldermead_log (this,"Before scaling:");
-  str = optimsimplex_tostring ( simplex0 )
+  str = string ( simplex0 )
   for i = 1:nbve
     this = neldermead_log (this,str(i));
   end
@@ -95,7 +95,7 @@ function this = neldermead_updatesimp ( this )
     end
   end
   this = neldermead_log (this,"After scaling:");
-  str = optimsimplex_tostring ( simplex0 )
+  str = string ( simplex0 )
   for i = 1:nbve
     this = neldermead_log (this,str(i));
   end
diff --git a/scilab/modules/optimization/macros/optimbase/%TOPTIM_p.sci b/scilab/modules/optimization/macros/optimbase/%TOPTIM_p.sci
new file mode 100644 (file)
index 0000000..a449c2e
--- /dev/null
@@ -0,0 +1,21 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - 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
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+
+//
+// %TOPTIM_p --
+//   Prints the string containing the Optim Base component.
+//
+function %TOPTIM_p ( this )
+  str = string ( this )
+  srows = size(str,"r")
+  for i = 1 : srows
+    mprintf("%s\n",str(i))
+  end
+endfunction
+       
diff --git a/scilab/modules/optimization/macros/optimbase/%TOPTIM_string.sci b/scilab/modules/optimization/macros/optimbase/%TOPTIM_string.sci
new file mode 100644 (file)
index 0000000..c8b5b65
--- /dev/null
@@ -0,0 +1,79 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - 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
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+
+//
+// %TOPTIM_string --
+//   Returns the string containing the Optim Base component.
+//
+function str = %TOPTIM_string ( this )
+  str = []
+  k = 1
+  str(k) = sprintf("Optim Base Object:\n")
+  k = k + 1
+  str(k) = sprintf("==================")
+  k = k + 1
+  str(k) = sprintf("Number of variables : %s\n", string(this.numberofvariables));
+  k = k + 1
+  x0 = optimbase_cget (this,"-x0")
+  str(k) = sprintf("Initial Guess : [%s]\n" , _strvec(x0) );
+  k = k + 1
+  str(k) = sprintf("Initial Function Value :%s\n",_strvec(this.fx0));
+  k = k + 1
+  str(k) = sprintf("Number of Inequality Constraints :%d\n",this.nbineqconst);
+  k = k + 1
+  str(k) = sprintf("Bounds Mininimum : [%s]\n", _strvec(this.boundsmin));
+  k = k + 1
+  str(k) = sprintf("Bounds Maxinimum :[%s]\n", _strvec(this.boundsmax));
+  k = k + 1
+  str(k) = sprintf("Optimum Parameters : [%s]\n" , _strvec(this.xopt));
+  k = k + 1
+  str(k) = sprintf("Optimum Function Value :%e\n",this.fopt);
+  k = k + 1
+  str(k) = sprintf("Number of iterations : %d\n", this.iterations);
+  k = k + 1
+  str(k) = sprintf("Maximum number of iterations : %s\n", string(this.maxiter));
+  k = k + 1
+  str(k) = sprintf("Number function evaluations : %d\n", this.funevals);
+  k = k + 1
+  str(k) = sprintf("Maximum number of function evaluations : %s\n", string(this.maxfunevals));
+  k = k + 1
+  str(k) = sprintf("Termination Method on function value : %s\n", string(this.tolfunmethod));
+  k = k + 1
+  str(k) = sprintf("Termination Absolute Tolerance on function value : %s\n", string(this.tolfunabsolute));
+  k = k + 1
+  str(k) = sprintf("Termination Relative Tolerance on function value : %s\n", string(this.tolfunrelative));
+  k = k + 1
+  str(k) = sprintf("Termination Method on x : %s\n", string(this.tolxmethod));
+  k = k + 1
+  str(k) = sprintf("Termination Absolute Tolerance on x : %s\n", string(this.tolxabsolute));
+  k = k + 1
+  str(k) = sprintf("Termination Relative Tolerance on x : %s\n", string(this.tolxrelative));
+  k = k + 1
+  str(k) = sprintf("Optimization Status : %s\n", this.status);
+  k = k + 1
+  str(k) = sprintf("Verbose logging : %s\n", string(this.verbose));
+  k = k + 1
+  str(k) = sprintf("Verbose Termination : %s\n", string(this.verbosetermination));
+  k = k + 1
+  str(k) = sprintf("Verbose Log File : %s\n", this.logfile );
+  k = k + 1
+  str(k) = sprintf("Verbose Log File Startup Up: %s\n", string(this.logstartup) );
+  k = k + 1
+  str(k) = sprintf("Store History : %s\n", string(this.storehistory));
+endfunction
+
+//
+// _strvec --
+//  Returns a string for the given vector.
+//
+function str = _strvec ( x )
+  str = strcat(string(x)," ")
+endfunction
+
+
index e0cc447..d0377dc 100644 (file)
 //   Display the current settings in the console.
 //
 function this = optimbase_display ( this )
-  mprintf("Optimization Object\n");
-  mprintf("Number of variables : %s\n", string(this.numberofvariables));
-  x0 = optimbase_cget (this,"-x0")
-  mprintf("Initial Guess : [%s]\n" , _strvec(x0) );
-  mprintf("Initial Function Value :%s\n",_strvec(this.fx0));
-  mprintf("Number of Inequality Constraints :%d\n",this.nbineqconst);
-  mprintf("Bounds Mininimum : [%s]\n", _strvec(this.boundsmin));
-  mprintf("Bounds Maxinimum :[%s]\n", _strvec(this.boundsmax));
-  mprintf("Optimum Parameters : [%s]\n" , _strvec(this.xopt));
-  mprintf("Optimum Function Value :%e\n",this.fopt);
-  mprintf("Number of iterations : %d\n", this.iterations);
-  mprintf("Maximum number of iterations : %s\n", string(this.maxiter));
-  mprintf("Number function evaluations : %d\n", this.funevals);
-  mprintf("Maximum number of function evaluations : %s\n", string(this.maxfunevals));
-  mprintf("Termination Method on function value : %s\n", string(this.tolfunmethod));
-  mprintf("Termination Absolute Tolerance on function value : %s\n", string(this.tolfunabsolute));
-  mprintf("Termination Relative Tolerance on function value : %s\n", string(this.tolfunrelative));
-  mprintf("Termination Method on x : %s\n", string(this.tolxmethod));
-  mprintf("Termination Absolute Tolerance on x : %s\n", string(this.tolxabsolute));
-  mprintf("Termination Relative Tolerance on x : %s\n", string(this.tolxrelative));
-  mprintf("Optimization Status : %s\n", this.status);
-  mprintf("Verbose logging : %s\n", string(this.verbose));
-  mprintf("Verbose Termination : %s\n", string(this.verbosetermination));
-  mprintf("Verbose Log File : %s\n", this.logfile );
-  mprintf("Verbose Log File Startup Up: %s\n", string(this.logstartup) );
-  mprintf("Store History : %s\n", string(this.storehistory));
+  warnobsolete("disp", "optimbase_display")
+  disp(this)
 endfunction
 
-  //
-  // _strvec --
-  //  Returns a string for the given vector.
-  //
-  function str = _strvec ( x )
-    str = strcat(string(x)," ")
-  endfunction
-
index cbd9064..4e9b0ec 100644 (file)
@@ -13,7 +13,7 @@
 //   Creates a new Optimization object.
 //
 function newobj = optimbase_new ()
-  newobj = tlist(["T_OPTIMIZATION"
+  newobj = tlist(["TOPTIM"
     "verbose"
     "x0"
     "fx0"
diff --git a/scilab/modules/optimization/macros/optimsimplex/%TSIMPLEX_p.sci b/scilab/modules/optimization/macros/optimsimplex/%TSIMPLEX_p.sci
new file mode 100644 (file)
index 0000000..6254ca2
--- /dev/null
@@ -0,0 +1,21 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - 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
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+
+//
+// %TSIMPLEX_p --
+//   Prints the string containing the Optim Simplex component.
+//
+function %TSIMPLEX_p ( this )
+  str = string ( this )
+  srows = size(str,"r")
+  for i = 1 : srows
+    mprintf("%s\n",str(i))
+  end
+endfunction
+
diff --git a/scilab/modules/optimization/macros/optimsimplex/%TSIMPLEX_string.sci b/scilab/modules/optimization/macros/optimsimplex/%TSIMPLEX_string.sci
new file mode 100644 (file)
index 0000000..816715c
--- /dev/null
@@ -0,0 +1,44 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - 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
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+
+//
+// %TSIMPLEX_string --
+//   Returns the string containing the Optim Simplex component.
+//
+function str = %TSIMPLEX_string ( this )
+  str = []
+  k = 1
+  str(k) = sprintf("Optim Simplex Object:\n")
+  k = k + 1
+  str(k) = sprintf("=====================")
+  if this.n == 0 then
+    k = k + 1
+    str(k) = sprintf("Empty simplex (zero dimension)\n");
+  elseif this.nbve == 0 then
+    k = k + 1
+    str(k) = sprintf("Empty simplex (zero vertices)\n");
+  elseif this.x == [] then
+    k = k + 1
+    str(k) = sprintf("Empty simplex (zero coordinates)\n");
+  elseif this.fv == [] then
+    k = k + 1
+    str(k) = sprintf("Empty simplex (zero function values)\n");
+  else
+    for ive = 1:this.nbve
+      // Compute a string for x
+      ss = sprintf("%e", this.x(ive,1));
+      for i = 2:this.n
+        ss = ss + " " + sprintf("%e", this.x(ive,i));
+      end
+      k = k + 1
+      str(k) = sprintf("Vertex #%d/%d : fv=%e, x=%s\n" , ive , this.nbve , this.fv(ive), ss );
+    end
+  end
+endfunction
+
index 1f579ad..2303311 100644 (file)
@@ -229,7 +229,7 @@ function [ newobj , data ] = optimsimplex_coords ( coords , fun , data )
   else
     assert_typefunction ( fun , "fun" , 2 );
   end
-  newobj = tlist(["T_SIMPLEX",...
+  newobj = tlist(["TSIMPLEX",...
     "verbose","x","n","fv","nbve"]);
   newobj.verbose = 0;
   // The dimension of the space
index 250e76c..ac3416c 100644 (file)
 //   <no arg>
 //
 function optimsimplex_print ( this )
-  if this.n == 0 then
-    mprintf("Empty simplex (zero dimension)\n");
-  elseif this.nbve == 0 then
-    mprintf("Empty simplex (zero vertices)\n");
-  elseif this.x == [] then
-    mprintf("Empty simplex (zero coordinates)\n");
-  elseif this.fv == [] then
-    mprintf("Empty simplex (zero function values)\n");
-  else
-    mprintf("Dimension : %d\n" , this.n );
-    mprintf("Number of vertices : %d\n" , this.nbve );
-    str = optimsimplex_tostring ( this );
-    for k = 1:this.nbve
-      mprintf("%s\n" , str(k) );
-    end
-  end
+  warnobsolete("disp", "optimsimplex_print")
+  disp(this)
 endfunction
 
index ab4c4bf..2c1529e 100644 (file)
 //   <no arg>
 //
 function str = optimsimplex_tostring ( this )
-  if this.n == 0 then
-    str = sprintf("Empty simplex (zero dimension)\n");
-  elseif this.nbve == 0 then
-    str = sprintf("Empty simplex (zero vertices)\n");
-  elseif this.x == [] then
-    str = sprintf("Empty simplex (zero coordinates)\n");
-  elseif this.fv == [] then
-    str = sprintf("Empty simplex (zero function values)\n");
-  else
-  str = []
-  for k = 1:this.nbve
-    // Compute a string for x
-    ss = sprintf("%e", this.x(k,1));
-    for i = 2:this.n
-      ss = ss + " " + sprintf("%e", this.x(k,i));
-    end
-    str(k) = sprintf("Vertex #%d/%d : fv=%e, x=%s\n" , k , this.nbve , this.fv(k), ss );
-  end
-  end
+  warnobsolete("string", "optimsimplex_tostring")
+  str = string(this)
 endfunction
index 3992c96..8b0d96f 100644 (file)
@@ -7,6 +7,8 @@
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
+// <-- ENGLISH IMPOSED -->
+
 //
 // assert_close --
 //   Returns 1 if the two real matrices computed and expected are close,
index cf6ec0f..2a351a9 100644 (file)
@@ -180,3 +180,96 @@ computed = lasterror();
 expected = "neldermead_configure: The restarteps option is expected to be positive";
 assert_equal ( computed , expected );
 nm = neldermead_destroy(nm);
+//
+// Check the display system
+//
+nm = neldermead_new ();
+nm
+ nm  =
+Nelder-Mead Object:
+======================
+Optim Base Object:
+==================
+Number of variables : 0
+Initial Guess : []
+Initial Function Value :
+Number of Inequality Constraints :0
+Bounds Mininimum : []
+Bounds Maxinimum :[]
+Optimum Parameters : [0]
+Optimum Function Value :0.000000e+000
+Number of iterations : 0
+Maximum number of iterations : 100
+Number function evaluations : 0
+Maximum number of function evaluations : 100
+Termination Method on function value : F
+Termination Absolute Tolerance on function value : 0
+Termination Relative Tolerance on function value : 2.220D-16
+Termination Method on x : T
+Termination Absolute Tolerance on x : 0
+Termination Relative Tolerance on x : 2.220D-16
+Optimization Status : 
+Verbose logging : 0
+Verbose Termination : 0
+Verbose Log File : 
+Verbose Log File Startup Up: F
+Store History : F
+
+Simplex0 : 
+Optim Simplex Object:
+=====================
+Empty simplex (zero dimension)
+Simplex Optimum : 
+Simplex0 Method : axes
+Simplex0 Length : 1
+Simplex0, Pfeffer, Delta Usual : 0.05
+Simplex0, Pfeffer, Delta Zero : 0.0075
+Simplex0, Given, Coords :
+[]
+
+Termination parameters
+Termination on simplex size : T
+Termination on simplex size, Absolute Tolerance : 0
+Termination on simplex size, Relative Tolerance : 2.220D-16
+Termination on simplex size, Initial Simplex Size : 0
+Termination on simplex size + Delta of function value : F
+Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : 2.220D-16
+Termination on Kelley's Stagnation : F
+Termination on Kelley's Stagnation, Normalization : T
+Termination on Kelley's Stagnation, Alpha0 : 0.0001
+Termination on Kelley's Stagnation, Alpha : 0.0001
+Termination by Box : F
+Termination by Box, Absolute Tolerance on Function: 0.00001
+Termination by Box, Maximum Number of Consecutive Match : 5
+Termination by Box, Current Number of Consecutive Match : 0
+Termination on Variance : F
+Termination on Variance, Absolute Tolerance : 0
+Termination on Variance, Relative Tolerance : 2.220D-16
+Termination on Variance, Variance of Initial Simplex : 0
+
+Algorithms parameters
+Method : variable
+Reflection Factor (rho) : 1
+Expansion Factor (chi) : 2
+Contraction Factor (gamma) : 0.5
+Shrinkage Factor (sigma) : 0.5
+Kelley Stagnation : F
+Restart Epsilon : 2.220446e-016
+Restart Step : 1
+Restart Maximum : 3
+Restart Simplex Method : oriented
+Restart Flag : F
+Restart Number : 0
+Restart Detection Method : oneill
+Startup Flag : F
+Automatic Checking of Cost Function : T
+Box, Number of Points  : 2n
+Box, Current Number of Points  : 0
+Box, Scaling, Factor  : 0.5
+Box, Scaling, Method  : tox0
+Box, Scaling, Minimum : 0.00001
+Box, Bounds Parameter: 0.000001
+Box, Reflection Coefficient : 1.3
+nm = neldermead_destroy(nm);
index b5d8323..753afdb 100644 (file)
@@ -196,4 +196,10 @@ expected = "neldermead_configure: The restarteps option is expected to be positi
 assert_equal ( computed , expected );
 nm = neldermead_destroy(nm);
 
+//
+// Check the display system
+//
+nm = neldermead_new ();
+nm
+nm = neldermead_destroy(nm);
 
diff --git a/scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_display.dia.ref b/scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_display.dia.ref
deleted file mode 100644 (file)
index 003cc64..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2008-2009 - INRIA - 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
-// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
-//
-// assert_close --
-//   Returns 1 if the two real matrices computed and expected are close,
-//   i.e. if the relative distance between computed and expected is lesser than epsilon.
-// Arguments
-//   computed, expected : the two matrices to compare
-//   epsilon : a small number
-//
-function flag = assert_close ( computed, expected, epsilon )
-  if expected==0.0 then
-    shift = norm(computed-expected);
-  else
-    shift = norm(computed-expected)/norm(expected);
-  end
-  if shift < epsilon then
-    flag = 1;
-  else
-    flag = 0;
-  end
-  if flag <> 1 then bugmes();quit;end
-endfunction
-//
-// Test before optimization
-//
-nm = neldermead_new ();
-nm = neldermead_configure(nm,"-numberofvariables",2);
-nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
-nm = neldermead_configure(nm,"-simplex0method","axes");
-nm = neldermead_configure(nm,"-simplex0length",1.0);
-neldermead_display(nm);
-Nelder-Mead Object
-
-Optimization Object
-
-Number of variables : 2
-
-Initial Guess : [1 2]
-
-Initial Function Value :
-
-Number of Inequality Constraints :0
-
-Bounds Mininimum : []
-
-Bounds Maxinimum :[]
-
-Optimum Parameters : [0]
-
-Optimum Function Value :0.000000e+000
-
-Number of iterations : 0
-
-Maximum number of iterations : 100
-
-Number function evaluations : 0
-
-Maximum number of function evaluations : 100
-
-Termination Method on function value : F
-
-Termination Absolute Tolerance on function value : 0
-
-Termination Relative Tolerance on function value : 2.220D-16
-
-Termination Method on x : T
-
-Termination Absolute Tolerance on x : 0
-
-Termination Relative Tolerance on x : 2.220D-16
-
-Optimization Status : 
-
-Verbose logging : 0
-
-Verbose Termination : 0
-
-Verbose Log File : 
-
-Verbose Log File Startup Up: F
-
-Store History : F
-
-Simplex0 : 
-
-Empty simplex (zero dimension)
-
-Simplex Optimum : 
-
-Empty simplex (zero coordinates)
-
-Simplex0 Method : axes
-
-Simplex0 Length : 1
-
-Simplex0, Pfeffer, Delta Usual : 0.05
-
-Simplex0, Pfeffer, Delta Zero : 0.0075
-
-Simplex0, Given, Coords :
-
-     []
-Termination on simplex size : T
-
-Termination on simplex size, Absolute Tolerance : 0
-
-Termination on simplex size, Relative Tolerance : 2.220D-16
-
-Termination on simplex size, Initial Simplex Size : 0
-
-Termination on simplex size + Delta of function value : F
-
-Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : 2.220D-16
-
-Termination on Kelley's Stagnation : F
-
-Termination on Kelley's Stagnation, Normalization : T
-
-Termination on Kelley's Stagnation, Alpha0 : 0.0001
-
-Termination on Kelley's Stagnation, Alpha : 0.0001
-
-Termination by Box : F
-
-Termination by Box, Absolute Tolerance on Function: 0.00001
-
-Termination by Box, Maximum Number of Consecutive Match : 5
-
-Termination by Box, Current Number of Consecutive Match : 0
-
-Termination on Variance : F
-
-Termination on Variance, Absolute Tolerance : 0
-
-Termination on Variance, Relative Tolerance : 2.220D-16
-
-Termination on Variance, Variance of Initial Simplex : 0
-
-Method : variable
-
-Reflection Factor (rho) : 1
-
-Expansion Factor (chi) : 2
-
-Contraction Factor (gamma) : 0.5
-
-Shrinkage Factor (sigma) : 0.5
-
-Kelley Stagnation : F
-
-Restart Epsilon : 2.220446e-016
-
-Restart Step : 1
-
-Restart Maximum : 3
-
-Restart Simplex Method : oriented
-
-Restart Flag : F
-
-Restart Number : 0
-
-Restart Detection Method : oneill
-
-Startup Flag : F
-
-Automatic Checking of Cost Function : T
-
-Box, Number of Points  : 2n
-
-Box, Current Number of Points  : 0
-
-Box, Scaling, Factor  : 0.5
-
-Box, Scaling, Method  : tox0
-
-Box, Scaling, Minimum : 0.00001
-
-Box, Bounds Parameter: 0.000001
-
-Box, Reflection Coefficient : 1.3
-
-nm = neldermead_destroy(nm);
diff --git a/scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_display.linux.dia.ref b/scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_display.linux.dia.ref
deleted file mode 100644 (file)
index a0babec..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2008-2009 - INRIA - 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
-// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
-//
-// assert_close --
-//   Returns 1 if the two real matrices computed and expected are close,
-//   i.e. if the relative distance between computed and expected is lesser than epsilon.
-// Arguments
-//   computed, expected : the two matrices to compare
-//   epsilon : a small number
-//
-function flag = assert_close ( computed, expected, epsilon )
-  if expected==0.0 then
-    shift = norm(computed-expected);
-  else
-    shift = norm(computed-expected)/norm(expected);
-  end
-  if shift < epsilon then
-    flag = 1;
-  else
-    flag = 0;
-  end
-  if flag <> 1 then bugmes();quit;end
-endfunction
-//
-// Test before optimization
-//
-nm = neldermead_new ();
-nm = neldermead_configure(nm,"-numberofvariables",2);
-nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
-nm = neldermead_configure(nm,"-simplex0method","axes");
-nm = neldermead_configure(nm,"-simplex0length",1.0);
-neldermead_display(nm);
-Nelder-Mead Object
-Optimization Object
-Number of variables : 2
-Initial Guess : [1 2]
-Initial Function Value :
-Number of Inequality Constraints :0
-Bounds Mininimum : []
-Bounds Maxinimum :[]
-Optimum Parameters : [0]
-Optimum Function Value :0.000000e+00
-Number of iterations : 0
-Maximum number of iterations : 100
-Number function evaluations : 0
-Maximum number of function evaluations : 100
-Termination Method on function value : F
-Termination Absolute Tolerance on function value : 0
-Termination Relative Tolerance on function value : 2.220D-16
-Termination Method on x : T
-Termination Absolute Tolerance on x : 0
-Termination Relative Tolerance on x : 2.220D-16
-Optimization Status : 
-Verbose logging : 0
-Verbose Termination : 0
-Verbose Log File : 
-Verbose Log File Startup Up: F
-Store History : F
-Simplex0 : 
-Empty simplex (zero dimension)
-Simplex Optimum : 
-Empty simplex (zero coordinates)
-Simplex0 Method : axes
-Simplex0 Length : 1
-Simplex0, Pfeffer, Delta Usual : 0.05
-Simplex0, Pfeffer, Delta Zero : 0.0075
-Simplex0, Given, Coords :
-     []
-Termination on simplex size : T
-Termination on simplex size, Absolute Tolerance : 0
-Termination on simplex size, Relative Tolerance : 2.220D-16
-Termination on simplex size, Initial Simplex Size : 0
-Termination on simplex size + Delta of function value : F
-Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : 2.220D-16
-Termination on Kelley's Stagnation : F
-Termination on Kelley's Stagnation, Normalization : T
-Termination on Kelley's Stagnation, Alpha0 : 0.0001
-Termination on Kelley's Stagnation, Alpha : 0.0001
-Termination by Box : F
-Termination by Box, Absolute Tolerance on Function: 0.00001
-Termination by Box, Maximum Number of Consecutive Match : 5
-Termination by Box, Current Number of Consecutive Match : 0
-Termination on Variance : F
-Termination on Variance, Absolute Tolerance : 0
-Termination on Variance, Relative Tolerance : 2.220D-16
-Termination on Variance, Variance of Initial Simplex : 0
-Method : variable
-Reflection Factor (rho) : 1
-Expansion Factor (chi) : 2
-Contraction Factor (gamma) : 0.5
-Shrinkage Factor (sigma) : 0.5
-Kelley Stagnation : F
-Restart Epsilon : 2.220446e-16
-Restart Step : 1
-Restart Maximum : 3
-Restart Simplex Method : oriented
-Restart Flag : F
-Restart Number : 0
-Restart Detection Method : oneill
-Startup Flag : F
-Automatic Checking of Cost Function : T
-Box, Number of Points  : 2n
-Box, Current Number of Points  : 0
-Box, Scaling, Factor  : 0.5
-Box, Scaling, Method  : tox0
-Box, Scaling, Minimum : 0.00001
-Box, Bounds Parameter: 0.000001
-Box, Reflection Coefficient : 1.3
-nm = neldermead_destroy(nm);
diff --git a/scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_display.tst b/scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_display.tst
deleted file mode 100644 (file)
index 281924a..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2008-2009 - INRIA - 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
-// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
-
-// <-- JVM NOT MANDATORY -->
-
-//
-// assert_close --
-//   Returns 1 if the two real matrices computed and expected are close,
-//   i.e. if the relative distance between computed and expected is lesser than epsilon.
-// Arguments
-//   computed, expected : the two matrices to compare
-//   epsilon : a small number
-//
-function flag = assert_close ( computed, expected, epsilon )
-  if expected==0.0 then
-    shift = norm(computed-expected);
-  else
-    shift = norm(computed-expected)/norm(expected);
-  end
-  if shift < epsilon then
-    flag = 1;
-  else
-    flag = 0;
-  end
-  if flag <> 1 then pause,end
-endfunction
-
-//
-// Test before optimization
-//
-nm = neldermead_new ();
-nm = neldermead_configure(nm,"-numberofvariables",2);
-nm = neldermead_configure(nm,"-x0",[1.0 2.0]');
-nm = neldermead_configure(nm,"-simplex0method","axes");
-nm = neldermead_configure(nm,"-simplex0length",1.0);
-neldermead_display(nm);
-nm = neldermead_destroy(nm);
-
diff --git a/scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.dia.ref b/scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.dia.ref
new file mode 100644 (file)
index 0000000..2fbdfa1
--- /dev/null
@@ -0,0 +1,627 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2009 - INRIA - Michael Baudin
+// Copyright (C) 2010 - 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
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
+//
+// assert_close --
+//   Returns 1 if the two real matrices computed and expected are close,
+//   i.e. if the relative distance between computed and expected is lesser than epsilon.
+// Arguments
+//   computed, expected : the two matrices to compare
+//   epsilon : a small number
+//
+function flag = assert_close ( computed, expected, epsilon )
+  if expected==0.0 then
+    shift = norm(computed-expected);
+  else
+    shift = norm(computed-expected)/norm(expected);
+  end
+  if shift < epsilon then
+    flag = 1;
+  else
+    flag = 0;
+  end
+  if flag <> 1 then bugmes();quit;end
+endfunction
+//
+// assert_equal --
+//   Returns 1 if the two real matrices computed and expected are equal.
+// Arguments
+//   computed, expected : the two matrices to compare
+//   epsilon : a small number
+//
+function flag = assert_equal ( computed , expected )
+  if computed==expected then
+    flag = 1;
+  else
+    flag = 0;
+  end
+  if flag <> 1 then bugmes();quit;end
+endfunction
+//
+// Test basic new/destroy sequence
+//
+nm = neldermead_new ();
+nm = neldermead_destroy(nm);
+//
+// Test printing system
+//
+nm = neldermead_new ();
+str = string(nm)
+ str  =
+!Nelder-Mead Object:                                                   !
+!                                                                      !
+!======================                                                !
+!                                                                      !
+!                                                                      !
+!                                                                      !
+!Optim Base Object:                                                    !
+!                                                                      !
+!==================                                                    !
+!                                                                      !
+!Number of variables : 0                                               !
+!                                                                      !
+!Initial Guess : []                                                    !
+!                                                                      !
+!Initial Function Value :                                              !
+!                                                                      !
+!Number of Inequality Constraints :0                                   !
+!                                                                      !
+!Bounds Mininimum : []                                                 !
+!                                                                      !
+!Bounds Maxinimum :[]                                                  !
+!                                                                      !
+!Optimum Parameters : [0]                                              !
+!                                                                      !
+!Optimum Function Value :0.000000e+000                                 !
+!                                                                      !
+!Number of iterations : 0                                              !
+!                                                                      !
+!Maximum number of iterations : 100                                    !
+!                                                                      !
+!Number function evaluations : 0                                       !
+!                                                                      !
+!Maximum number of function evaluations : 100                          !
+!                                                                      !
+!Termination Method on function value : F                              !
+!                                                                      !
+!Termination Absolute Tolerance on function value : 0                  !
+!                                                                      !
+!Termination Relative Tolerance on function value : 2.220D-16          !
+!                                                                      !
+!Termination Method on x : T                                           !
+!                                                                      !
+!Termination Absolute Tolerance on x : 0                               !
+!                                                                      !
+!Termination Relative Tolerance on x : 2.220D-16                       !
+!                                                                      !
+!Optimization Status :                                                 !
+!                                                                      !
+!Verbose logging : 0                                                   !
+!                                                                      !
+!Verbose Termination : 0                                               !
+!                                                                      !
+!Verbose Log File :                                                    !
+!                                                                      !
+!Verbose Log File Startup Up: F                                        !
+!                                                                      !
+!Store History : F                                                     !
+!                                                                      !
+!                                                                      !
+!                                                                      !
+!Simplex0 :                                                            !
+!                                                                      !
+!Optim Simplex Object:                                                 !
+!                                                                      !
+!=====================                                                 !
+!                                                                      !
+!Empty simplex (zero dimension)                                        !
+!                                                                      !
+!Simplex Optimum :                                                     !
+!                                                                      !
+!Simplex0 Method : axes                                                !
+!                                                                      !
+!Simplex0 Length : 1                                                   !
+!                                                                      !
+!Simplex0, Pfeffer, Delta Usual : 0.05                                 !
+!                                                                      !
+!Simplex0, Pfeffer, Delta Zero : 0.0075                                !
+!                                                                      !
+!Simplex0, Given, Coords :                                             !
+!                                                                      !
+![]                                                                    !
+!                                                                      !
+!                                                                      !
+!                                                                      !
+!Termination parameters                                                !
+!                                                                      !
+!Termination on simplex size : T                                       !
+!                                                                      !
+!Termination on simplex size, Absolute Tolerance : 0                   !
+!                                                                      !
+!Termination on simplex size, Relative Tolerance : 2.220D-16           !
+!                                                                      !
+!Termination on simplex size, Initial Simplex Size : 0                 !
+!                                                                      !
+!Termination on simplex size + Delta of function value : F             !
+!                                                                      !
+!Termination on simplex size + Delta of function value, Absolute Tolera!
+!     nce on Delta F : 2.220D-16                                       !
+!                                                                      !
+!Termination on Kelley's Stagnation : F                                !
+!                                                                      !
+!Termination on Kelley's Stagnation, Normalization : T                 !
+!                                                                      !
+!Termination on Kelley's Stagnation, Alpha0 : 0.0001                   !
+!                                                                      !
+!Termination on Kelley's Stagnation, Alpha : 0.0001                    !
+!                                                                      !
+!Termination by Box : F                                                !
+!                                                                      !
+!Termination by Box, Absolute Tolerance on Function: 0.00001           !
+!                                                                      !
+!Termination by Box, Maximum Number of Consecutive Match : 5           !
+!                                                                      !
+!Termination by Box, Current Number of Consecutive Match : 0           !
+!                                                                      !
+!Termination on Variance : F                                           !
+!                                                                      !
+!Termination on Variance, Absolute Tolerance : 0                       !
+!                                                                      !
+!Termination on Variance, Relative Tolerance : 2.220D-16               !
+!                                                                      !
+!Termination on Variance, Variance of Initial Simplex : 0              !
+!                                                                      !
+!                                                                      !
+!                                                                      !
+!Algorithms parameters                                                 !
+!                                                                      !
+!Method : variable                                                     !
+!                                                                      !
+!Reflection Factor (rho) : 1                                           !
+!                                                                      !
+!Expansion Factor (chi) : 2                                            !
+!                                                                      !
+!Contraction Factor (gamma) : 0.5                                      !
+!                                                                      !
+!Shrinkage Factor (sigma) : 0.5                                        !
+!                                                                      !
+!Kelley Stagnation : F                                                 !
+!                                                                      !
+!Restart Epsilon : 2.220446e-016                                       !
+!                                                                      !
+!Restart Step : 1                                                      !
+!                                                                      !
+!Restart Maximum : 3                                                   !
+!                                                                      !
+!Restart Simplex Method : oriented                                     !
+!                                                                      !
+!Restart Flag : F                                                      !
+!                                                                      !
+!Restart Number : 0                                                    !
+!                                                                      !
+!Restart Detection Method : oneill                                     !
+!                                                                      !
+!Startup Flag : F                                                      !
+!                                                                      !
+!Automatic Checking of Cost Function : T                               !
+!                                                                      !
+!Box, Number of Points  : 2n                                           !
+!                                                                      !
+!Box, Current Number of Points  : 0                                    !
+!                                                                      !
+!Box, Scaling, Factor  : 0.5                                           !
+!                                                                      !
+!Box, Scaling, Method  : tox0                                          !
+!                                                                      !
+!Box, Scaling, Minimum : 0.00001                                       !
+!                                                                      !
+!Box, Bounds Parameter: 0.000001                                       !
+!                                                                      !
+!Box, Reflection Coefficient : 1.3                                     !
+assert_equal ( typeof(str) , "string" )
+ ans  =
+    1.  
+nm
+ nm  =
+Nelder-Mead Object:
+======================
+Optim Base Object:
+==================
+Number of variables : 0
+Initial Guess : []
+Initial Function Value :
+Number of Inequality Constraints :0
+Bounds Mininimum : []
+Bounds Maxinimum :[]
+Optimum Parameters : [0]
+Optimum Function Value :0.000000e+000
+Number of iterations : 0
+Maximum number of iterations : 100
+Number function evaluations : 0
+Maximum number of function evaluations : 100
+Termination Method on function value : F
+Termination Absolute Tolerance on function value : 0
+Termination Relative Tolerance on function value : 2.220D-16
+Termination Method on x : T
+Termination Absolute Tolerance on x : 0
+Termination Relative Tolerance on x : 2.220D-16
+Optimization Status : 
+Verbose logging : 0
+Verbose Termination : 0
+Verbose Log File : 
+Verbose Log File Startup Up: F
+Store History : F
+
+Simplex0 : 
+Optim Simplex Object:
+=====================
+Empty simplex (zero dimension)
+Simplex Optimum : 
+Simplex0 Method : axes
+Simplex0 Length : 1
+Simplex0, Pfeffer, Delta Usual : 0.05
+Simplex0, Pfeffer, Delta Zero : 0.0075
+Simplex0, Given, Coords :
+[]
+
+Termination parameters
+Termination on simplex size : T
+Termination on simplex size, Absolute Tolerance : 0
+Termination on simplex size, Relative Tolerance : 2.220D-16
+Termination on simplex size, Initial Simplex Size : 0
+Termination on simplex size + Delta of function value : F
+Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : 2.220D-16
+Termination on Kelley's Stagnation : F
+Termination on Kelley's Stagnation, Normalization : T
+Termination on Kelley's Stagnation, Alpha0 : 0.0001
+Termination on Kelley's Stagnation, Alpha : 0.0001
+Termination by Box : F
+Termination by Box, Absolute Tolerance on Function: 0.00001
+Termination by Box, Maximum Number of Consecutive Match : 5
+Termination by Box, Current Number of Consecutive Match : 0
+Termination on Variance : F
+Termination on Variance, Absolute Tolerance : 0
+Termination on Variance, Relative Tolerance : 2.220D-16
+Termination on Variance, Variance of Initial Simplex : 0
+
+Algorithms parameters
+Method : variable
+Reflection Factor (rho) : 1
+Expansion Factor (chi) : 2
+Contraction Factor (gamma) : 0.5
+Shrinkage Factor (sigma) : 0.5
+Kelley Stagnation : F
+Restart Epsilon : 2.220446e-016
+Restart Step : 1
+Restart Maximum : 3
+Restart Simplex Method : oriented
+Restart Flag : F
+Restart Number : 0
+Restart Detection Method : oneill
+Startup Flag : F
+Automatic Checking of Cost Function : T
+Box, Number of Points  : 2n
+Box, Current Number of Points  : 0
+Box, Scaling, Factor  : 0.5
+Box, Scaling, Method  : tox0
+Box, Scaling, Minimum : 0.00001
+Box, Bounds Parameter: 0.000001
+Box, Reflection Coefficient : 1.3
+nm = neldermead_destroy(nm);
+//
+// optimtestcase --
+//   Non linear inequality constraints are positive.
+//    
+// Arguments
+//   x: the point where to compute the function
+//   index : the stuff to compute
+//
+function [ f , c , index ] = optimtestcase ( x , index )
+  f = []
+  c = []
+  if ( index == 2 | index == 6 ) then
+    f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ...
+      - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4)
+  end
+  if ( index == 5 | index == 6 ) then
+    c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ...
+              - x(1) + x(2) - x(3) + x(4) + 8
+    c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ...
+              + x(1) + x(4) + 10.0
+    c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ...
+              + x(2) + x(4) + 5.0
+    c = [c1 c2 c3]
+  end
+endfunction
+//
+// Test printing system with various options configured
+//
+nm = neldermead_new ();
+nm = neldermead_configure(nm,"-numberofvariables",4);
+nm = neldermead_configure(nm,"-function",optimtestcase);
+nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]');
+nm = neldermead_configure(nm,"-maxiter",200);
+nm = neldermead_configure(nm,"-maxfunevals",1000);
+nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-4);
+nm = neldermead_configure(nm,"-simplex0method","axes");
+nm = neldermead_configure(nm,"-method","box");
+nm = neldermead_configure(nm,"-nbineqconst",3);
+nm = neldermead_configure(nm,"-simplex0length",20.0);
+str = string(nm)
+ str  =
+!Nelder-Mead Object:                                                   !
+!                                                                      !
+!======================                                                !
+!                                                                      !
+!                                                                      !
+!                                                                      !
+!Optim Base Object:                                                    !
+!                                                                      !
+!==================                                                    !
+!                                                                      !
+!Number of variables : 4                                               !
+!                                                                      !
+!Initial Guess : [0 0 0 0]                                             !
+!                                                                      !
+!Initial Function Value :                                              !
+!                                                                      !
+!Number of Inequality Constraints :3                                   !
+!                                                                      !
+!Bounds Mininimum : []                                                 !
+!                                                                      !
+!Bounds Maxinimum :[]                                                  !
+!                                                                      !
+!Optimum Parameters : [0]                                              !
+!                                                                      !
+!Optimum Function Value :0.000000e+000                                 !
+!                                                                      !
+!Number of iterations : 0                                              !
+!                                                                      !
+!Maximum number of iterations : 200                                    !
+!                                                                      !
+!Number function evaluations : 0                                       !
+!                                                                      !
+!Maximum number of function evaluations : 1000                         !
+!                                                                      !
+!Termination Method on function value : F                              !
+!                                                                      !
+!Termination Absolute Tolerance on function value : 0                  !
+!                                                                      !
+!Termination Relative Tolerance on function value : 2.220D-16          !
+!                                                                      !
+!Termination Method on x : T                                           !
+!                                                                      !
+!Termination Absolute Tolerance on x : 0                               !
+!                                                                      !
+!Termination Relative Tolerance on x : 2.220D-16                       !
+!                                                                      !
+!Optimization Status :                                                 !
+!                                                                      !
+!Verbose logging : 0                                                   !
+!                                                                      !
+!Verbose Termination : 0                                               !
+!                                                                      !
+!Verbose Log File :                                                    !
+!                                                                      !
+!Verbose Log File Startup Up: F                                        !
+!                                                                      !
+!Store History : F                                                     !
+!                                                                      !
+!                                                                      !
+!                                                                      !
+!Simplex0 :                                                            !
+!                                                                      !
+!Optim Simplex Object:                                                 !
+!                                                                      !
+!=====================                                                 !
+!                                                                      !
+!Empty simplex (zero dimension)                                        !
+!                                                                      !
+!Simplex Optimum :                                                     !
+!                                                                      !
+!Simplex0 Method : axes                                                !
+!                                                                      !
+!Simplex0 Length : 20                                                  !
+!                                                                      !
+!Simplex0, Pfeffer, Delta Usual : 0.05                                 !
+!                                                                      !
+!Simplex0, Pfeffer, Delta Zero : 0.0075                                !
+!                                                                      !
+!Simplex0, Given, Coords :                                             !
+!                                                                      !
+![]                                                                    !
+!                                                                      !
+!                                                                      !
+!                                                                      !
+!Termination parameters                                                !
+!                                                                      !
+!Termination on simplex size : T                                       !
+!                                                                      !
+!Termination on simplex size, Absolute Tolerance : 0                   !
+!                                                                      !
+!Termination on simplex size, Relative Tolerance : 0.0001              !
+!                                                                      !
+!Termination on simplex size, Initial Simplex Size : 0                 !
+!                                                                      !
+!Termination on simplex size + Delta of function value : F             !
+!                                                                      !
+!Termination on simplex size + Delta of function value, Absolute Tolera!
+!     nce on Delta F : 2.220D-16                                       !
+!                                                                      !
+!Termination on Kelley's Stagnation : F                                !
+!                                                                      !
+!Termination on Kelley's Stagnation, Normalization : T                 !
+!                                                                      !
+!Termination on Kelley's Stagnation, Alpha0 : 0.0001                   !
+!                                                                      !
+!Termination on Kelley's Stagnation, Alpha : 0.0001                    !
+!                                                                      !
+!Termination by Box : F                                                !
+!                                                                      !
+!Termination by Box, Absolute Tolerance on Function: 0.00001           !
+!                                                                      !
+!Termination by Box, Maximum Number of Consecutive Match : 5           !
+!                                                                      !
+!Termination by Box, Current Number of Consecutive Match : 0           !
+!                                                                      !
+!Termination on Variance : F                                           !
+!                                                                      !
+!Termination on Variance, Absolute Tolerance : 0                       !
+!                                                                      !
+!Termination on Variance, Relative Tolerance : 2.220D-16               !
+!                                                                      !
+!Termination on Variance, Variance of Initial Simplex : 0              !
+!                                                                      !
+!                                                                      !
+!                                                                      !
+!Algorithms parameters                                                 !
+!                                                                      !
+!Method : box                                                          !
+!                                                                      !
+!Reflection Factor (rho) : 1                                           !
+!                                                                      !
+!Expansion Factor (chi) : 2                                            !
+!                                                                      !
+!Contraction Factor (gamma) : 0.5                                      !
+!                                                                      !
+!Shrinkage Factor (sigma) : 0.5                                        !
+!                                                                      !
+!Kelley Stagnation : F                                                 !
+!                                                                      !
+!Restart Epsilon : 2.220446e-016                                       !
+!                                                                      !
+!Restart Step : 1                                                      !
+!                                                                      !
+!Restart Maximum : 3                                                   !
+!                                                                      !
+!Restart Simplex Method : oriented                                     !
+!                                                                      !
+!Restart Flag : F                                                      !
+!                                                                      !
+!Restart Number : 0                                                    !
+!                                                                      !
+!Restart Detection Method : oneill                                     !
+!                                                                      !
+!Startup Flag : F                                                      !
+!                                                                      !
+!Automatic Checking of Cost Function : T                               !
+!                                                                      !
+!Box, Number of Points  : 2n                                           !
+!                                                                      !
+!Box, Current Number of Points  : 0                                    !
+!                                                                      !
+!Box, Scaling, Factor  : 0.5                                           !
+!                                                                      !
+!Box, Scaling, Method  : tox0                                          !
+!                                                                      !
+!Box, Scaling, Minimum : 0.00001                                       !
+!                                                                      !
+!Box, Bounds Parameter: 0.000001                                       !
+!                                                                      !
+!Box, Reflection Coefficient : 1.3                                     !
+assert_equal ( typeof(str) , "string" )
+ ans  =
+    1.  
+nm
+ nm  =
+Nelder-Mead Object:
+======================
+Optim Base Object:
+==================
+Number of variables : 4
+Initial Guess : [0 0 0 0]
+Initial Function Value :
+Number of Inequality Constraints :3
+Bounds Mininimum : []
+Bounds Maxinimum :[]
+Optimum Parameters : [0]
+Optimum Function Value :0.000000e+000
+Number of iterations : 0
+Maximum number of iterations : 200
+Number function evaluations : 0
+Maximum number of function evaluations : 1000
+Termination Method on function value : F
+Termination Absolute Tolerance on function value : 0
+Termination Relative Tolerance on function value : 2.220D-16
+Termination Method on x : T
+Termination Absolute Tolerance on x : 0
+Termination Relative Tolerance on x : 2.220D-16
+Optimization Status : 
+Verbose logging : 0
+Verbose Termination : 0
+Verbose Log File : 
+Verbose Log File Startup Up: F
+Store History : F
+
+Simplex0 : 
+Optim Simplex Object:
+=====================
+Empty simplex (zero dimension)
+Simplex Optimum : 
+Simplex0 Method : axes
+Simplex0 Length : 20
+Simplex0, Pfeffer, Delta Usual : 0.05
+Simplex0, Pfeffer, Delta Zero : 0.0075
+Simplex0, Given, Coords :
+[]
+
+Termination parameters
+Termination on simplex size : T
+Termination on simplex size, Absolute Tolerance : 0
+Termination on simplex size, Relative Tolerance : 0.0001
+Termination on simplex size, Initial Simplex Size : 0
+Termination on simplex size + Delta of function value : F
+Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : 2.220D-16
+Termination on Kelley's Stagnation : F
+Termination on Kelley's Stagnation, Normalization : T
+Termination on Kelley's Stagnation, Alpha0 : 0.0001
+Termination on Kelley's Stagnation, Alpha : 0.0001
+Termination by Box : F
+Termination by Box, Absolute Tolerance on Function: 0.00001
+Termination by Box, Maximum Number of Consecutive Match : 5
+Termination by Box, Current Number of Consecutive Match : 0
+Termination on Variance : F
+Termination on Variance, Absolute Tolerance : 0
+Termination on Variance, Relative Tolerance : 2.220D-16
+Termination on Variance, Variance of Initial Simplex : 0
+
+Algorithms parameters
+Method : box
+Reflection Factor (rho) : 1
+Expansion Factor (chi) : 2
+Contraction Factor (gamma) : 0.5
+Shrinkage Factor (sigma) : 0.5
+Kelley Stagnation : F
+Restart Epsilon : 2.220446e-016
+Restart Step : 1
+Restart Maximum : 3
+Restart Simplex Method : oriented
+Restart Flag : F
+Restart Number : 0
+Restart Detection Method : oneill
+Startup Flag : F
+Automatic Checking of Cost Function : T
+Box, Number of Points  : 2n
+Box, Current Number of Points  : 0
+Box, Scaling, Factor  : 0.5
+Box, Scaling, Method  : tox0
+Box, Scaling, Minimum : 0.00001
+Box, Bounds Parameter: 0.000001
+Box, Reflection Coefficient : 1.3
+nm = neldermead_destroy(nm);
diff --git a/scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.tst b/scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_newdestroy.tst
new file mode 100644 (file)
index 0000000..5090e7f
--- /dev/null
@@ -0,0 +1,112 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008-2009 - INRIA - Michael Baudin
+// Copyright (C) 2010 - 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
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+
+// <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
+
+
+//
+// assert_close --
+//   Returns 1 if the two real matrices computed and expected are close,
+//   i.e. if the relative distance between computed and expected is lesser than epsilon.
+// Arguments
+//   computed, expected : the two matrices to compare
+//   epsilon : a small number
+//
+function flag = assert_close ( computed, expected, epsilon )
+  if expected==0.0 then
+    shift = norm(computed-expected);
+  else
+    shift = norm(computed-expected)/norm(expected);
+  end
+  if shift < epsilon then
+    flag = 1;
+  else
+    flag = 0;
+  end
+  if flag <> 1 then pause,end
+endfunction
+//
+// assert_equal --
+//   Returns 1 if the two real matrices computed and expected are equal.
+// Arguments
+//   computed, expected : the two matrices to compare
+//   epsilon : a small number
+//
+function flag = assert_equal ( computed , expected )
+  if computed==expected then
+    flag = 1;
+  else
+    flag = 0;
+  end
+  if flag <> 1 then pause,end
+endfunction
+
+//
+// Test basic new/destroy sequence
+//
+nm = neldermead_new ();
+nm = neldermead_destroy(nm);
+
+//
+// Test printing system
+//
+nm = neldermead_new ();
+str = string(nm)
+assert_equal ( typeof(str) , "string" )
+nm
+nm = neldermead_destroy(nm);
+
+//
+// optimtestcase --
+//   Non linear inequality constraints are positive.
+//    
+// Arguments
+//   x: the point where to compute the function
+//   index : the stuff to compute
+//
+function [ f , c , index ] = optimtestcase ( x , index )
+  f = []
+  c = []
+  if ( index == 2 | index == 6 ) then
+    f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ...
+      - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4)
+  end
+  if ( index == 5 | index == 6 ) then
+    c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ...
+              - x(1) + x(2) - x(3) + x(4) + 8
+    c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ...
+              + x(1) + x(4) + 10.0
+    c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ...
+              + x(2) + x(4) + 5.0
+    c = [c1 c2 c3]
+  end
+endfunction
+
+
+//
+// Test printing system with various options configured
+//
+nm = neldermead_new ();
+nm = neldermead_configure(nm,"-numberofvariables",4);
+nm = neldermead_configure(nm,"-function",optimtestcase);
+nm = neldermead_configure(nm,"-x0",[0.0 0.0 0.0 0.0]');
+nm = neldermead_configure(nm,"-maxiter",200);
+nm = neldermead_configure(nm,"-maxfunevals",1000);
+nm = neldermead_configure(nm,"-tolsimplexizerelative",1.e-4);
+nm = neldermead_configure(nm,"-simplex0method","axes");
+nm = neldermead_configure(nm,"-method","box");
+nm = neldermead_configure(nm,"-nbineqconst",3);
+nm = neldermead_configure(nm,"-simplex0length",20.0);
+str = string(nm)
+assert_equal ( typeof(str) , "string" )
+nm
+nm = neldermead_destroy(nm);
+
index 0f180a2..10c6f24 100644 (file)
@@ -6,6 +6,7 @@
 // you should have received as part of this distribution.  The terms
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// <-- JVM NOT MANDATORY -->
 //
 // assert_close --
 //   Returns 1 if the two real matrices computed and expected are close,
@@ -42,8 +43,8 @@ function flag = assert_equal ( computed , expected )
   end
   if flag <> 1 then bugmes();quit;end
 endfunction
-function [ y , index ] = rosenbrock ( x , index )
-  y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
+function [ y , index ] = myquad ( x , index )
+  y = x(1)^2 + x(2)^2
 endfunction
 //
 // myoutputcmd --
@@ -76,11 +77,12 @@ function myoutputcmd ( state , data )
   condv = cond ( v )
   _OUTPUCMDFLAG_ = 1
 endfunction
+// Test the variable algorithm
 global _OUTPUCMDFLAG_;
 _OUTPUCMDFLAG_ = 0;
 nm = neldermead_new ();
 nm = neldermead_configure(nm,"-numberofvariables",2);
-nm = neldermead_configure(nm,"-function",rosenbrock);
+nm = neldermead_configure(nm,"-function",myquad);
 nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
 nm = neldermead_configure(nm,"-maxiter",200);
 nm = neldermead_configure(nm,"-maxfunevals",300);
@@ -95,3 +97,45 @@ nm = neldermead_search(nm);
 // called
 assert_equal ( _OUTPUCMDFLAG_ , 1 );
 nm = neldermead_destroy(nm);
+// Test the fixed algorithm
+global _OUTPUCMDFLAG_;
+_OUTPUCMDFLAG_ = 0;
+nm = neldermead_new ();
+nm = neldermead_configure(nm,"-numberofvariables",2);
+nm = neldermead_configure(nm,"-function",myquad);
+nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
+nm = neldermead_configure(nm,"-maxiter",200);
+nm = neldermead_configure(nm,"-maxfunevals",300);
+nm = neldermead_configure(nm,"-tolfunrelative",10*%eps);
+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_configure(nm,"-outputcommand",myoutputcmd);
+nm = neldermead_search(nm);
+// We are here, that means that the output command has been correctly
+// called
+assert_equal ( _OUTPUCMDFLAG_ , 1 );
+nm = neldermead_destroy(nm);
+// Test the Box algorithm
+global _OUTPUCMDFLAG_;
+_OUTPUCMDFLAG_ = 0;
+nm = neldermead_new ();
+nm = neldermead_configure(nm,"-numberofvariables",2);
+nm = neldermead_configure(nm,"-function",myquad);
+nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
+nm = neldermead_configure(nm,"-maxiter",200);
+nm = neldermead_configure(nm,"-maxfunevals",300);
+nm = neldermead_configure(nm,"-tolfunrelative",10*%eps);
+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","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);
+// We are here, that means that the output command has been correctly
+// called
+assert_equal ( _OUTPUCMDFLAG_ , 1 );
+nm = neldermead_destroy(nm);
index cc25ba5..419ce6e 100644 (file)
@@ -8,6 +8,7 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 // <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
 
 //
 // assert_close --
@@ -45,8 +46,8 @@ function flag = assert_equal ( computed , expected )
   end
   if flag <> 1 then pause,end
 endfunction
-function [ y , index ] = rosenbrock ( x , index )
-  y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
+function [ y , index ] = myquad ( x , index )
+  y = x(1)^2 + x(2)^2
 endfunction
 
 
@@ -82,12 +83,14 @@ function myoutputcmd ( state , data )
   _OUTPUCMDFLAG_ = 1
 endfunction
 
+
+// Test the variable algorithm
 global _OUTPUCMDFLAG_;
 _OUTPUCMDFLAG_ = 0;
 
 nm = neldermead_new ();
 nm = neldermead_configure(nm,"-numberofvariables",2);
-nm = neldermead_configure(nm,"-function",rosenbrock);
+nm = neldermead_configure(nm,"-function",myquad);
 nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
 nm = neldermead_configure(nm,"-maxiter",200);
 nm = neldermead_configure(nm,"-maxfunevals",300);
@@ -103,4 +106,50 @@ nm = neldermead_search(nm);
 assert_equal ( _OUTPUCMDFLAG_ , 1 );
 nm = neldermead_destroy(nm);
 
+// Test the fixed algorithm
+global _OUTPUCMDFLAG_;
+_OUTPUCMDFLAG_ = 0;
+
+nm = neldermead_new ();
+nm = neldermead_configure(nm,"-numberofvariables",2);
+nm = neldermead_configure(nm,"-function",myquad);
+nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
+nm = neldermead_configure(nm,"-maxiter",200);
+nm = neldermead_configure(nm,"-maxfunevals",300);
+nm = neldermead_configure(nm,"-tolfunrelative",10*%eps);
+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_configure(nm,"-outputcommand",myoutputcmd);
+nm = neldermead_search(nm);
+// We are here, that means that the output command has been correctly
+// called
+assert_equal ( _OUTPUCMDFLAG_ , 1 );
+nm = neldermead_destroy(nm);
+
+// Test the Box algorithm
+global _OUTPUCMDFLAG_;
+_OUTPUCMDFLAG_ = 0;
+
+nm = neldermead_new ();
+nm = neldermead_configure(nm,"-numberofvariables",2);
+nm = neldermead_configure(nm,"-function",myquad);
+nm = neldermead_configure(nm,"-x0",[-1.2 1.0]');
+nm = neldermead_configure(nm,"-maxiter",200);
+nm = neldermead_configure(nm,"-maxfunevals",300);
+nm = neldermead_configure(nm,"-tolfunrelative",10*%eps);
+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","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);
+// We are here, that means that the output command has been correctly
+// called
+assert_equal ( _OUTPUCMDFLAG_ , 1 );
+nm = neldermead_destroy(nm);
+
 
index b9a051d..d8cfd4c 100644 (file)
@@ -6,6 +6,8 @@
 // you should have received as part of this distribution.  The terms
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
 //
 // assert_close --
 //   Returns 1 if the two real matrices computed and expected are close,
index b8d2f2e..98675ef 100644 (file)
@@ -8,7 +8,7 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 // <-- JVM NOT MANDATORY -->
-
+// <-- ENGLISH IMPOSED -->
 
 //
 // assert_close --
index 2be53d5..118f61f 100644 (file)
@@ -125,6 +125,8 @@ nm = neldermead_configure(nm,"-method","box");
 nm = neldermead_configure(nm,"-nbineqconst",3);
 nm = neldermead_search(nm);
 nm = neldermead_restart(nm);
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
 // Check optimum point
 xopt = neldermead_get(nm,"-xopt");
 assert_close ( xopt , [0.0 1.0 2.0 -1.0]', 1e-1 );
@@ -315,577 +317,295 @@ nm = neldermead_configure(nm,"-simplex0method","randbounds");
 nm = neldermead_configure(nm,"-coords0",coords);
 nm = neldermead_search(nm);
 Function Evaluation #1 at [0 0 0 0]
-
 Function Evaluation #2 at [0 0 0 0]
-
 Function Evaluation #3 at [0 0 0 0]
-
 Function Evaluation #4 at [0 0 0 0]
-
 Function Evaluation #5 at [0 0 0 0]
-
 Function Evaluation #6 at [-5.7735027 5.1208771 -9.9955773 -3.3934582]
-
 Function Evaluation #7 at [3.3076221 2.5678358 6.9949047 3.7146204]
-
 Function Evaluation #8 at [7.5643296 -8.6325193 1.2169721 3.2471387]
-
 Function Evaluation #9 at [4.5270135 -6.0297123 0.8851463 -5.3585042]
-
 Function Evaluation #10 at [-5.3755256 -5.6707347 7.6677756 3.0502699]
-
 Function Evaluation #11 at [-3.8478185 8.6592324 -5.7079843 -3.7471601]
-
 Function Evaluation #12 at [-2.767278 -4.1554667 1.3284976 -0.3470561]
-
 Function Evaluation #13 at [0 0 0 0]
-
 Scaling initial simplex into nonlinear inequality constraints...
-
 Scaling vertex #2/8 at [-5.7735027 5.1208771 -9.9955773 -3.3934582]... 
-
  > After projection into bounds p = [-5.7735027 5.1208771 -9.9955773 -3.3934582]
-
 Function Evaluation #14 at [-5.7735027 5.1208771 -9.9955773 -3.3934582]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 5.000000e-001
-
 Function Evaluation #15 at [-2.8867513 2.5604385 -4.9977887 -1.6967291]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 2.500000e-001
-
 Function Evaluation #16 at [-1.4433757 1.2802193 -2.4988943 -0.8483645]
-
 Inequality constraint #2/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 1.250000e-001
-
 Function Evaluation #17 at [-0.7216878 0.6401096 -1.2494472 -0.4241823]
-
  > After scaling into inequality constraints p = [-0.7216878 0.6401096 -1.2494472 -0.4241823]
-
 Function Evaluation #18 at [-0.7216878 0.6401096 -1.2494472 -0.4241823]
-
 Scaling vertex #3/8 at [3.3076221 2.5678358 6.9949047 3.7146204]... 
-
  > After projection into bounds p = [3.3076221 2.5678358 6.9949047 3.7146204]
-
 Function Evaluation #19 at [3.3076221 2.5678358 6.9949047 3.7146204]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 5.000000e-001
-
 Function Evaluation #20 at [1.653811 1.2839179 3.4974524 1.8573102]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 2.500000e-001
-
 Function Evaluation #21 at [0.8269055 0.6419589 1.7487262 0.9286551]
-
  > After scaling into inequality constraints p = [0.8269055 0.6419589 1.7487262 0.9286551]
-
 Function Evaluation #22 at [0.8269055 0.6419589 1.7487262 0.9286551]
-
 Scaling vertex #4/8 at [7.5643296 -8.6325193 1.2169721 3.2471387]... 
-
  > After projection into bounds p = [7.5643296 -8.6325193 1.2169721 3.2471387]
-
 Function Evaluation #23 at [7.5643296 -8.6325193 1.2169721 3.2471387]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 5.000000e-001
-
 Function Evaluation #24 at [3.7821648 -4.3162596 0.6084861 1.6235694]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 2.500000e-001
-
 Function Evaluation #25 at [1.8910824 -2.1581298 0.3042430 0.8117847]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 1.250000e-001
-
 Function Evaluation #26 at [0.9455412 -1.0790649 0.1521215 0.4058923]
-
 Inequality constraint #3/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 6.250000e-002
-
 Function Evaluation #27 at [0.4727706 -0.5395325 0.0760608 0.2029462]
-
  > After scaling into inequality constraints p = [0.4727706 -0.5395325 0.0760608 0.2029462]
-
 Function Evaluation #28 at [0.4727706 -0.5395325 0.0760608 0.2029462]
-
 Scaling vertex #5/8 at [4.5270135 -6.0297123 0.8851463 -5.3585042]... 
-
  > After projection into bounds p = [4.5270135 -6.0297123 0.8851463 -5.3585042]
-
 Function Evaluation #29 at [4.5270135 -6.0297123 0.8851463 -5.3585042]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 5.000000e-001
-
 Function Evaluation #30 at [2.2635068 -3.0148562 0.4425732 -2.6792521]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 2.500000e-001
-
 Function Evaluation #31 at [1.1317534 -1.5074281 0.2212866 -1.3396261]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 1.250000e-001
-
 Function Evaluation #32 at [0.5658767 -0.7537140 0.1106433 -0.6698130]
-
  > After scaling into inequality constraints p = [0.5658767 -0.7537140 0.1106433 -0.6698130]
-
 Function Evaluation #33 at [0.5658767 -0.7537140 0.1106433 -0.6698130]
-
 Scaling vertex #6/8 at [-5.3755256 -5.6707347 7.6677756 3.0502699]... 
-
  > After projection into bounds p = [-5.3755256 -5.6707347 7.6677756 3.0502699]
-
 Function Evaluation #34 at [-5.3755256 -5.6707347 7.6677756 3.0502699]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 5.000000e-001
-
 Function Evaluation #35 at [-2.6877628 -2.8353674 3.8338878 1.5251349]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 2.500000e-001
-
 Function Evaluation #36 at [-1.3438814 -1.4176837 1.9169439 0.7625675]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 1.250000e-001
-
 Function Evaluation #37 at [-0.6719407 -0.7088418 0.9584720 0.3812837]
-
  > After scaling into inequality constraints p = [-0.6719407 -0.7088418 0.9584720 0.3812837]
-
 Function Evaluation #38 at [-0.6719407 -0.7088418 0.9584720 0.3812837]
-
 Scaling vertex #7/8 at [-3.8478185 8.6592324 -5.7079843 -3.7471601]... 
-
  > After projection into bounds p = [-3.8478185 8.6592324 -5.7079843 -3.7471601]
-
 Function Evaluation #39 at [-3.8478185 8.6592324 -5.7079843 -3.7471601]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 5.000000e-001
-
 Function Evaluation #40 at [-1.9239093 4.3296162 -2.8539921 -1.87358]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 2.500000e-001
-
 Function Evaluation #41 at [-0.9619546 2.1648081 -1.4269961 -0.9367900]
-
 Inequality constraint #2/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 1.250000e-001
-
 Function Evaluation #42 at [-0.4809773 1.0824041 -0.7134980 -0.4683950]
-
  > After scaling into inequality constraints p = [-0.4809773 1.0824041 -0.7134980 -0.4683950]
-
 Function Evaluation #43 at [-0.4809773 1.0824041 -0.7134980 -0.4683950]
-
 Scaling vertex #8/8 at [-2.767278 -4.1554667 1.3284976 -0.3470561]... 
-
  > After projection into bounds p = [-2.767278 -4.1554667 1.3284976 -0.3470561]
-
 Function Evaluation #44 at [-2.767278 -4.1554667 1.3284976 -0.3470561]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 5.000000e-001
-
 Function Evaluation #45 at [-1.383639 -2.0777334 0.6642488 -0.1735280]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling inequality constraint with alpha = 2.500000e-001
-
 Function Evaluation #46 at [-0.6918195 -1.0388667 0.3321244 -0.0867640]
-
  > After scaling into inequality constraints p = [-0.6918195 -1.0388667 0.3321244 -0.0867640]
-
 Function Evaluation #47 at [-0.6918195 -1.0388667 0.3321244 -0.0867640]
-
 Step #1 : order
-
 =================================================================
-
 Iteration #1 (total = 1)
-
 Function Eval #47
-
 Xopt : [0.8269055 0.6419589 1.7487262 0.9286551]
-
 Fopt : -2.949262e+001
-
 DeltaFv : 5.740236e+001
-
 Center : [-0.0876091 -0.0845603 0.1578852 -0.0170337]
-
 Size : 3.635568e+000
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/8 : fv=-2.949262e+001, x=8.269055e-001 6.419589e-001 1.748726e+000 9.286551e-001
-
 Vertex #2/8 : fv=-7.618337e+000, x=-6.719407e-001 -7.088418e-001 9.584720e-001 3.812837e-001
-
 Vertex #3/8 : fv=-4.711579e+000, x=5.658767e-001 -7.537140e-001 1.106433e-001 -6.698130e-001
-
 Vertex #4/8 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000
-
 Vertex #5/8 : fv=7.245215e-001, x=4.727706e-001 -5.395325e-001 7.606076e-002 2.029462e-001
-
 Vertex #6/8 : fv=2.857470e+000, x=-6.918195e-001 -1.038867e+000 3.321244e-001 -8.676401e-002
-
-Vertex #7/8 : fv=1.133805e+001, x=-4.809773e-001 1.082404e+000 -7.134980e-001 -4.683950e-001
-
-Vertex #8/8 : fv=2.790975e+001, x=-7.216878e-001 6.401096e-001 -1.249447e+000 -4.241823e-001
-
 Reflect
-
 xbar=[0.0029736 -0.1880846 0.3589327 0.0411304]
-
 _boxlinesearch
-
 > xhigh=[-0.7216878 0.6401096 -1.2494472 -0.4241823], fhigh=2.790975e+001
-
 > xbar=[0.0029736 -0.1880846 0.3589327 0.0411304]
-
 > xr = [0.9450335 -1.264737 2.4498264 0.6460369]
-
 Function Evaluation #48 at [0.9450335 -1.264737 2.4498264 0.6460369]
-
 fr = -3.041227e+001 improves 2.790975e+001 : no need for scaling for f
-
  > After projection into bounds xr = [0.9450335 -1.264737 2.4498264 0.6460369]
-
 Function Evaluation #49 at [0.9450335 -1.264737 2.4498264 0.6460369]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling for nonlinear/linear inequality constraints with alpha=5.000000e-001 from xbar=[0.0029736 -0.1880846 0.3589327 0.0411304] toward [0.9450335 -1.264737 2.4498264 0.6460369]
-
 > xr = [0.4740036 -0.7264108 1.4043795 0.3435837]
-
 Function Evaluation #50 at [0.4740036 -0.7264108 1.4043795 0.3435837]
-
 Function Evaluation #51 at [0.4740036 -0.7264108 1.4043795 0.3435837]
-
 xr=[0.4740036 -0.7264108 1.4043795 0.3435837], f(xr)=-21.009883
-
   > Perform Reflection
-
 Sort
-
 =================================================================
-
 Iteration #2 (total = 2)
-
 Function Eval #51
-
 Xopt : [0.8269055 0.6419589 1.7487262 0.9286551]
-
 Fopt : -2.949262e+001
-
 DeltaFv : 4.083067e+001
-
 Center : [0.0618524 -0.2553754 0.4896135 0.0789371]
-
 Size : 3.149420e+000
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/8 : fv=-2.949262e+001, x=8.269055e-001 6.419589e-001 1.748726e+000 9.286551e-001
-
 Vertex #2/8 : fv=-2.100988e+001, x=4.740036e-001 -7.264108e-001 1.404380e+000 3.435837e-001
-
 Vertex #3/8 : fv=-7.618337e+000, x=-6.719407e-001 -7.088418e-001 9.584720e-001 3.812837e-001
-
 Vertex #4/8 : fv=-4.711579e+000, x=5.658767e-001 -7.537140e-001 1.106433e-001 -6.698130e-001
-
 Vertex #5/8 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000
-
 Vertex #6/8 : fv=7.245215e-001, x=4.727706e-001 -5.395325e-001 7.606076e-002 2.029462e-001
-
-Vertex #7/8 : fv=2.857470e+000, x=-6.918195e-001 -1.038867e+000 3.321244e-001 -8.676401e-002
-
-Vertex #8/8 : fv=1.133805e+001, x=-4.809773e-001 1.082404e+000 -7.134980e-001 -4.683950e-001
-
   > Termination ?
-
   > iterations=2 >= maxiter=5
-
   > funevals=51 >= maxfunevals=1000
-
   > e(x)=4.132440e-001 < 2.220446e-016 * 5.612439e-001 + 0.000000e+000
-
   > Terminate = F, status = continue
-
   > simplex size=3.149420e+000 < 0.000000e+000 + 1.000000e-003 * 2.239716e+000
-
   > Terminate = F, status = continue
-
 Reflect
-
 xbar=[0.1393995 -0.4464867 0.6614866 0.1571274]
-
 _boxlinesearch
-
 > xhigh=[-0.4809773 1.0824041 -0.7134980 -0.4683950], fhigh=1.133805e+001
-
 > xbar=[0.1393995 -0.4464867 0.6614866 0.1571274]
-
 > xr = [0.9458893 -2.4340447 2.4489666 0.9703065]
-
 Function Evaluation #52 at [0.9458893 -2.4340447 2.4489666 0.9703065]
-
 fr = -1.743973e+001 improves 1.133805e+001 : no need for scaling for f
-
  > After projection into bounds xr = [0.9458893 -2.4340447 2.4489666 0.9703065]
-
 Function Evaluation #53 at [0.9458893 -2.4340447 2.4489666 0.9703065]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling for nonlinear/linear inequality constraints with alpha=5.000000e-001 from xbar=[0.1393995 -0.4464867 0.6614866 0.1571274] toward [0.9458893 -2.4340447 2.4489666 0.9703065]
-
 > xr = [0.5426444 -1.4402657 1.5552266 0.5637169]
-
 Function Evaluation #54 at [0.5426444 -1.4402657 1.5552266 0.5637169]
-
 Inequality constraint #1/3 is not satisfied for x
-
 Scaling for nonlinear/linear inequality constraints with alpha=2.500000e-001 from xbar=[0.1393995 -0.4464867 0.6614866 0.1571274] toward [0.9458893 -2.4340447 2.4489666 0.9703065]
-
 > xr = [0.3410219 -0.9433762 1.1083566 0.3604222]
-
 Function Evaluation #55 at [0.3410219 -0.9433762 1.1083566 0.3604222]
-
 Function Evaluation #56 at [0.3410219 -0.9433762 1.1083566 0.3604222]
-
 xr=[0.3410219 -0.9433762 1.1083566 0.3604222], f(xr)=-14.147695
-
   > Perform Reflection
-
 Sort
-
 =================================================================
-
 Iteration #3 (total = 3)
-
 Function Eval #56
-
 Xopt : [0.8269055 0.6419589 1.7487262 0.9286551]
-
 Fopt : -2.949262e+001
-
 DeltaFv : 3.235009e+001
-
 Center : [0.1646023 -0.5085979 0.7173453 0.1825392]
-
 Size : 2.858240e+000
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/8 : fv=-2.949262e+001, x=8.269055e-001 6.419589e-001 1.748726e+000 9.286551e-001
-
 Vertex #2/8 : fv=-2.100988e+001, x=4.740036e-001 -7.264108e-001 1.404380e+000 3.435837e-001
-
 Vertex #3/8 : fv=-1.414769e+001, x=3.410219e-001 -9.433762e-001 1.108357e+000 3.604222e-001
-
 Vertex #4/8 : fv=-7.618337e+000, x=-6.719407e-001 -7.088418e-001 9.584720e-001 3.812837e-001
-
 Vertex #5/8 : fv=-4.711579e+000, x=5.658767e-001 -7.537140e-001 1.106433e-001 -6.698130e-001
-
 Vertex #6/8 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000
-
-Vertex #7/8 : fv=7.245215e-001, x=4.727706e-001 -5.395325e-001 7.606076e-002 2.029462e-001
-
-Vertex #8/8 : fv=2.857470e+000, x=-6.918195e-001 -1.038867e+000 3.321244e-001 -8.676401e-002
-
   > Termination ?
-
   > iterations=3 >= maxiter=5
-
   > funevals=56 >= maxfunevals=1000
-
   > e(x)=3.705056e-001 < 2.220446e-016 * 9.130556e-001 + 0.000000e+000
-
   > Terminate = F, status = continue
-
   > simplex size=2.858240e+000 < 0.000000e+000 + 1.000000e-003 * 2.239716e+000
-
   > Terminate = F, status = continue
-
 Reflect
-
 xbar=[0.2869482 -0.4328452 0.7723769 0.2210111]
-
 _boxlinesearch
-
 > xhigh=[-0.6918195 -1.0388667 0.3321244 -0.0867640], fhigh=2.857470e+000
-
 > xbar=[0.2869482 -0.4328452 0.7723769 0.2210111]
-
 > xr = [1.5593463 0.3549827 1.3447051 0.6211188]
-
 Function Evaluation #57 at [1.5593463 0.3549827 1.3447051 0.6211188]
-
 fr = -2.690280e+001 improves 2.857470e+000 : no need for scaling for f
-
  > After projection into bounds xr = [1.5593463 0.3549827 1.3447051 0.6211188]
-
 Function Evaluation #58 at [1.5593463 0.3549827 1.3447051 0.6211188]
-
 Inequality constraint #3/3 is not satisfied for x
-
 Scaling for nonlinear/linear inequality constraints with alpha=5.000000e-001 from xbar=[0.2869482 -0.4328452 0.7723769 0.2210111] toward [1.5593463 0.3549827 1.3447051 0.6211188]
-
 > xr = [0.9231472 -0.0389312 1.058541 0.4210649]
-
 Function Evaluation #59 at [0.9231472 -0.0389312 1.058541 0.4210649]
-
 Function Evaluation #60 at [0.9231472 -0.0389312 1.058541 0.4210649]
-
 xr=[0.9231472 -0.0389312 1.058541 0.4210649], f(xr)=-20.430956
-
   > Perform Reflection
-
 Sort
-
 =================================================================
-
 Iteration #4 (total = 4)
-
 Function Eval #60
-
 Xopt : [0.8269055 0.6419589 1.7487262 0.9286551]
-
 Fopt : -2.949262e+001
-
 DeltaFv : 3.021714e+001
-
 Center : [0.3664731 -0.3836060 0.8081474 0.2460178]
-
 Size : 2.693410e+000
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/8 : fv=-2.949262e+001, x=8.269055e-001 6.419589e-001 1.748726e+000 9.286551e-001
-
 Vertex #2/8 : fv=-2.100988e+001, x=4.740036e-001 -7.264108e-001 1.404380e+000 3.435837e-001
-
 Vertex #3/8 : fv=-2.043096e+001, x=9.231472e-001 -3.893124e-002 1.058541e+000 4.210649e-001
-
 Vertex #4/8 : fv=-1.414769e+001, x=3.410219e-001 -9.433762e-001 1.108357e+000 3.604222e-001
-
 Vertex #5/8 : fv=-7.618337e+000, x=-6.719407e-001 -7.088418e-001 9.584720e-001 3.812837e-001
-
 Vertex #6/8 : fv=-4.711579e+000, x=5.658767e-001 -7.537140e-001 1.106433e-001 -6.698130e-001
-
-Vertex #7/8 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000
-
-Vertex #8/8 : fv=7.245215e-001, x=4.727706e-001 -5.395325e-001 7.606076e-002 2.029462e-001
-
   > Termination ?
-
   > iterations=4 >= maxiter=5
-
   > funevals=60 >= maxfunevals=1000
-
   > e(x)=2.620103e-001 < 2.220446e-016 * 9.975385e-001 + 0.000000e+000
-
   > Terminate = F, status = continue
-
   > simplex size=2.693410e+000 < 0.000000e+000 + 1.000000e-003 * 2.239716e+000
-
   > Terminate = F, status = continue
-
 Reflect
-
 xbar=[0.3512877 -0.3613307 0.9127312 0.2521709]
-
 _boxlinesearch
-
 > xhigh=[0.4727706 -0.5395325 0.0760608 0.2029462], fhigh=7.245215e-001
-
 > xbar=[0.3512877 -0.3613307 0.9127312 0.2521709]
-
 > xr = [0.1933600 -0.1296685 2.0004028 0.3161631]
-
 Function Evaluation #61 at [0.1933600 -0.1296685 2.0004028 0.3161631]
-
 fr = -3.195639e+001 improves 7.245215e-001 : no need for scaling for f
-
  > After projection into bounds xr = [0.1933600 -0.1296685 2.0004028 0.3161631]
-
 Function Evaluation #62 at [0.1933600 -0.1296685 2.0004028 0.3161631]
-
 xr=[0.1933600 -0.1296685 2.0004028 0.3161631], f(xr)=-31.956391
-
   > Perform Reflection
-
 Sort
-
 =================================================================
-
 Iteration #5 (total = 5)
-
 Function Eval #62
-
 Xopt : [0.1933600 -0.1296685 2.0004028 0.3161631]
-
 Fopt : -3.195639e+001
-
 DeltaFv : 3.195639e+001
-
 Center : [0.3315468 -0.3323730 1.0486902 0.2601700]
-
 Size : 2.252008e+000
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/8 : fv=-3.195639e+001, x=1.933600e-001 -1.296685e-001 2.000403e+000 3.161631e-001
-
 Vertex #2/8 : fv=-2.949262e+001, x=8.269055e-001 6.419589e-001 1.748726e+000 9.286551e-001
-
 Vertex #3/8 : fv=-2.100988e+001, x=4.740036e-001 -7.264108e-001 1.404380e+000 3.435837e-001
-
 Vertex #4/8 : fv=-2.043096e+001, x=9.231472e-001 -3.893124e-002 1.058541e+000 4.210649e-001
-
 Vertex #5/8 : fv=-1.414769e+001, x=3.410219e-001 -9.433762e-001 1.108357e+000 3.604222e-001
-
 Vertex #6/8 : fv=-7.618337e+000, x=-6.719407e-001 -7.088418e-001 9.584720e-001 3.812837e-001
-
-Vertex #7/8 : fv=-4.711579e+000, x=5.658767e-001 -7.537140e-001 1.106433e-001 -6.698130e-001
-
-Vertex #8/8 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000
-
   > Termination ?
-
   > iterations=5 >= maxiter=5
-
   > Terminate = T, status = maxiter
-
   > Terminate = T, status = maxiter
-
 Terminate with status : maxiter
-
 nm = neldermead_destroy(nm);
index 2246d2a..13e3dda 100644 (file)
@@ -6,6 +6,8 @@
 // you should have received as part of this distribution.  The terms
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
 //
 // assert_close --
 //   Returns 1 if the two real matrices computed and expected are close,
index c696cbc..f7f13a8 100644 (file)
@@ -6,6 +6,7 @@
 // you should have received as part of this distribution.  The terms
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// <-- JVM NOT MANDATORY -->
 //
 // assert_close --
 //   Returns 1 if the two real matrices computed and expected are close,
@@ -43,3 +44,612 @@ assert_close ( xopt , [0.0;0.0], 1e-6 );
 fopt = neldermead_get(nm,"-fopt");
 assert_close ( fopt , 0.0, 1e-6 );
 nm = neldermead_destroy(nm);
+//
+// Interrupt the algorithm when done.
+nm = neldermead_new ();
+nm = neldermead_configure(nm,"-numberofvariables",2);
+nm = neldermead_configure(nm,"-x0",[1.0 1.0]');
+nm = neldermead_configure(nm,"-method","fixed");
+nm = neldermead_configure(nm,"-function",squarefun);
+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);
+Function Evaluation #1 at [1 1]
+Function Evaluation #2 at [1 1]
+Function Evaluation #3 at [1 1]
+Function Evaluation #4 at [2 1]
+Function Evaluation #5 at [1 2]
+Sort
+=================================================================
+Iteration #1 (total = 1)
+Function Eval #5
+Xopt : 1 1
+Fopt : 2.000000e+000
+DeltaFv : 3.000000e+000
+Center : 1.3333333 1.3333333
+Size : 1.000000e+000
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=2.000000e+000, x=1.000000e+000 1.000000e+000
+Reflect
+xbar=1.5 1
+Function Evaluation #6 at [2 0]
+xr=2 0, f(xr)=4.000000
+  > Perform reflect
+=================================================================
+Iteration #2 (total = 2)
+Function Eval #6
+Xopt : 1 1
+Fopt : 2.000000e+000
+DeltaFv : 3.000000e+000
+Center : 1.6666667 0.6666667
+Size : 1.414214e+000
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=2.000000e+000, x=1.000000e+000 1.000000e+000
+Reflect
+xbar=1.5 0.5
+Function Evaluation #7 at [1 0]
+xr=1 0, f(xr)=1.000000
+  > Perform reflect
+=================================================================
+Iteration #3 (total = 3)
+Function Eval #7
+Xopt : 1 0
+Fopt : 1.000000e+000
+DeltaFv : 3.000000e+000
+Center : 1.3333333 0.3333333
+Size : 1.000000e+000
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=1.000000e+000, x=1.000000e+000 0.000000e+000
+Reflect
+xbar=1 0.5
+Function Evaluation #8 at [0 1]
+xr=0 1, f(xr)=1.000000
+  > Perform reflect
+=================================================================
+Iteration #4 (total = 4)
+Function Eval #8
+Xopt : 1 0
+Fopt : 1.000000e+000
+DeltaFv : 1.000000e+000
+Center : 0.6666667 0.6666667
+Size : 1.414214e+000
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=1.000000e+000, x=1.000000e+000 0.000000e+000
+Reflect
+xbar=0.5 0.5
+Function Evaluation #9 at [0 0]
+xr=0 0, f(xr)=0.000000
+  > Perform reflect
+=================================================================
+Iteration #5 (total = 5)
+Function Eval #9
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 1.000000e+000
+Center : 0.3333333 0.3333333
+Size : 1.000000e+000
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.5 0
+Function Evaluation #10 at [1 -1]
+xr=1 -1, f(xr)=2.000000
+xbar2=0 0.5
+Function Evaluation #11 at [-1 1]
+xr2=-1 1, f(xr2)=2.000000
+  > Perform Shrink
+Function Evaluation #12 at [0.5 0]
+Function Evaluation #13 at [0 0.5]
+=================================================================
+Iteration #6 (total = 6)
+Function Eval #13
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 2.500000e-001
+Center : 0.1666667 0.1666667
+Size : 5.000000e-001
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.25 0
+Function Evaluation #14 at [0.5 -0.5]
+xr=0.5 -0.5, f(xr)=0.500000
+xbar2=0 0.25
+Function Evaluation #15 at [-0.5 0.5]
+xr2=-0.5 0.5, f(xr2)=0.500000
+  > Perform Shrink
+Function Evaluation #16 at [0.25 0]
+Function Evaluation #17 at [0 0.25]
+=================================================================
+Iteration #7 (total = 7)
+Function Eval #17
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 6.250000e-002
+Center : 0.0833333 0.0833333
+Size : 2.500000e-001
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.125 0
+Function Evaluation #18 at [0.25 -0.25]
+xr=0.25 -0.25, f(xr)=0.125000
+xbar2=0 0.125
+Function Evaluation #19 at [-0.25 0.25]
+xr2=-0.25 0.25, f(xr2)=0.125000
+  > Perform Shrink
+Function Evaluation #20 at [0.125 0]
+Function Evaluation #21 at [0 0.125]
+=================================================================
+Iteration #8 (total = 8)
+Function Eval #21
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 1.562500e-002
+Center : 0.0416667 0.0416667
+Size : 1.250000e-001
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0625 0
+Function Evaluation #22 at [0.125 -0.125]
+xr=0.125 -0.125, f(xr)=0.031250
+xbar2=0 0.0625
+Function Evaluation #23 at [-0.125 0.125]
+xr2=-0.125 0.125, f(xr2)=0.031250
+  > Perform Shrink
+Function Evaluation #24 at [0.0625 0]
+Function Evaluation #25 at [0 0.0625]
+=================================================================
+Iteration #9 (total = 9)
+Function Eval #25
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 3.906250e-003
+Center : 0.0208333 0.0208333
+Size : 6.250000e-002
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.03125 0
+Function Evaluation #26 at [0.0625 -0.0625]
+xr=0.0625 -0.0625, f(xr)=0.007813
+xbar2=0 0.03125
+Function Evaluation #27 at [-0.0625 0.0625]
+xr2=-0.0625 0.0625, f(xr2)=0.007813
+  > Perform Shrink
+Function Evaluation #28 at [0.03125 0]
+Function Evaluation #29 at [0 0.03125]
+=================================================================
+Iteration #10 (total = 10)
+Function Eval #29
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 9.765625e-004
+Center : 0.0104167 0.0104167
+Size : 3.125000e-002
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.015625 0
+Function Evaluation #30 at [0.03125 -0.03125]
+xr=0.03125 -0.03125, f(xr)=0.001953
+xbar2=0 0.015625
+Function Evaluation #31 at [-0.03125 0.03125]
+xr2=-0.03125 0.03125, f(xr2)=0.001953
+  > Perform Shrink
+Function Evaluation #32 at [0.015625 0]
+Function Evaluation #33 at [0 0.015625]
+=================================================================
+Iteration #11 (total = 11)
+Function Eval #33
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 2.441406e-004
+Center : 0.0052083 0.0052083
+Size : 1.562500e-002
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0078125 0
+Function Evaluation #34 at [0.015625 -0.015625]
+xr=0.015625 -0.015625, f(xr)=0.000488
+xbar2=0 0.0078125
+Function Evaluation #35 at [-0.015625 0.015625]
+xr2=-0.015625 0.015625, f(xr2)=0.000488
+  > Perform Shrink
+Function Evaluation #36 at [0.0078125 0]
+Function Evaluation #37 at [0 0.0078125]
+=================================================================
+Iteration #12 (total = 12)
+Function Eval #37
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 6.103516e-005
+Center : 0.0026042 0.0026042
+Size : 7.812500e-003
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0039063 0
+Function Evaluation #38 at [0.0078125 -0.0078125]
+xr=0.0078125 -0.0078125, f(xr)=0.000122
+xbar2=0 0.0039063
+Function Evaluation #39 at [-0.0078125 0.0078125]
+xr2=-0.0078125 0.0078125, f(xr2)=0.000122
+  > Perform Shrink
+Function Evaluation #40 at [0.0039063 0]
+Function Evaluation #41 at [0 0.0039063]
+=================================================================
+Iteration #13 (total = 13)
+Function Eval #41
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 1.525879e-005
+Center : 0.0013021 0.0013021
+Size : 3.906250e-003
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0019531 0
+Function Evaluation #42 at [0.0039063 -0.0039063]
+xr=0.0039063 -0.0039063, f(xr)=0.000031
+xbar2=0 0.0019531
+Function Evaluation #43 at [-0.0039063 0.0039063]
+xr2=-0.0039063 0.0039063, f(xr2)=0.000031
+  > Perform Shrink
+Function Evaluation #44 at [0.0019531 0]
+Function Evaluation #45 at [0 0.0019531]
+=================================================================
+Iteration #14 (total = 14)
+Function Eval #45
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 3.814697e-006
+Center : 0.0006510 0.0006510
+Size : 1.953125e-003
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0009766 0
+Function Evaluation #46 at [0.0019531 -0.0019531]
+xr=0.0019531 -0.0019531, f(xr)=0.000008
+xbar2=0 0.0009766
+Function Evaluation #47 at [-0.0019531 0.0019531]
+xr2=-0.0019531 0.0019531, f(xr2)=0.000008
+  > Perform Shrink
+Function Evaluation #48 at [0.0009766 0]
+Function Evaluation #49 at [0 0.0009766]
+=================================================================
+Iteration #15 (total = 15)
+Function Eval #49
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 9.536743e-007
+Center : 0.0003255 0.0003255
+Size : 9.765625e-004
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0004883 0
+Function Evaluation #50 at [0.0009766 -0.0009766]
+xr=0.0009766 -0.0009766, f(xr)=0.000002
+xbar2=0 0.0004883
+Function Evaluation #51 at [-0.0009766 0.0009766]
+xr2=-0.0009766 0.0009766, f(xr2)=0.000002
+  > Perform Shrink
+Function Evaluation #52 at [0.0004883 0]
+Function Evaluation #53 at [0 0.0004883]
+=================================================================
+Iteration #16 (total = 16)
+Function Eval #53
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 2.384186e-007
+Center : 0.0001628 0.0001628
+Size : 4.882813e-004
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0002441 0
+Function Evaluation #54 at [0.0004883 -0.0004883]
+xr=0.0004883 -0.0004883, f(xr)=0.000000
+xbar2=0 0.0002441
+Function Evaluation #55 at [-0.0004883 0.0004883]
+xr2=-0.0004883 0.0004883, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #56 at [0.0002441 0]
+Function Evaluation #57 at [0 0.0002441]
+=================================================================
+Iteration #17 (total = 17)
+Function Eval #57
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 5.960464e-008
+Center : 0.0000814 0.0000814
+Size : 2.441406e-004
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0001221 0
+Function Evaluation #58 at [0.0002441 -0.0002441]
+xr=0.0002441 -0.0002441, f(xr)=0.000000
+xbar2=0 0.0001221
+Function Evaluation #59 at [-0.0002441 0.0002441]
+xr2=-0.0002441 0.0002441, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #60 at [0.0001221 0]
+Function Evaluation #61 at [0 0.0001221]
+=================================================================
+Iteration #18 (total = 18)
+Function Eval #61
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 1.490116e-008
+Center : 0.0000407 0.0000407
+Size : 1.220703e-004
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0000610 0
+Function Evaluation #62 at [0.0001221 -0.0001221]
+xr=0.0001221 -0.0001221, f(xr)=0.000000
+xbar2=0 0.0000610
+Function Evaluation #63 at [-0.0001221 0.0001221]
+xr2=-0.0001221 0.0001221, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #64 at [0.0000610 0]
+Function Evaluation #65 at [0 0.0000610]
+=================================================================
+Iteration #19 (total = 19)
+Function Eval #65
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 3.725290e-009
+Center : 0.0000203 0.0000203
+Size : 6.103516e-005
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0000305 0
+Function Evaluation #66 at [0.0000610 -0.0000610]
+xr=0.0000610 -0.0000610, f(xr)=0.000000
+xbar2=0 0.0000305
+Function Evaluation #67 at [-0.0000610 0.0000610]
+xr2=-0.0000610 0.0000610, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #68 at [0.0000305 0]
+Function Evaluation #69 at [0 0.0000305]
+=================================================================
+Iteration #20 (total = 20)
+Function Eval #69
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 9.313226e-010
+Center : 0.0000102 0.0000102
+Size : 3.051758e-005
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0000153 0
+Function Evaluation #70 at [0.0000305 -0.0000305]
+xr=0.0000305 -0.0000305, f(xr)=0.000000
+xbar2=0 0.0000153
+Function Evaluation #71 at [-0.0000305 0.0000305]
+xr2=-0.0000305 0.0000305, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #72 at [0.0000153 0]
+Function Evaluation #73 at [0 0.0000153]
+=================================================================
+Iteration #21 (total = 21)
+Function Eval #73
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 2.328306e-010
+Center : 0.0000051 0.0000051
+Size : 1.525879e-005
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0000076 0
+Function Evaluation #74 at [0.0000153 -0.0000153]
+xr=0.0000153 -0.0000153, f(xr)=0.000000
+xbar2=0 0.0000076
+Function Evaluation #75 at [-0.0000153 0.0000153]
+xr2=-0.0000153 0.0000153, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #76 at [0.0000076 0]
+Function Evaluation #77 at [0 0.0000076]
+=================================================================
+Iteration #22 (total = 22)
+Function Eval #77
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 5.820766e-011
+Center : 0.0000025 0.0000025
+Size : 7.629395e-006
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0000038 0
+Function Evaluation #78 at [0.0000076 -0.0000076]
+xr=0.0000076 -0.0000076, f(xr)=0.000000
+xbar2=0 0.0000038
+Function Evaluation #79 at [-0.0000076 0.0000076]
+xr2=-0.0000076 0.0000076, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #80 at [0.0000038 0]
+Function Evaluation #81 at [0 0.0000038]
+=================================================================
+Iteration #23 (total = 23)
+Function Eval #81
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 1.455192e-011
+Center : 0.0000013 0.0000013
+Size : 3.814697e-006
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0000019 0
+Function Evaluation #82 at [0.0000038 -0.0000038]
+xr=0.0000038 -0.0000038, f(xr)=0.000000
+xbar2=0 0.0000019
+Function Evaluation #83 at [-0.0000038 0.0000038]
+xr2=-0.0000038 0.0000038, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #84 at [0.0000019 0]
+Function Evaluation #85 at [0 0.0000019]
+=================================================================
+Iteration #24 (total = 24)
+Function Eval #85
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 3.637979e-012
+Center : 0.0000006 0.0000006
+Size : 1.907349e-006
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0000010 0
+Function Evaluation #86 at [0.0000019 -0.0000019]
+xr=0.0000019 -0.0000019, f(xr)=0.000000
+xbar2=0 0.0000010
+Function Evaluation #87 at [-0.0000019 0.0000019]
+xr2=-0.0000019 0.0000019, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #88 at [0.0000010 0]
+Function Evaluation #89 at [0 0.0000010]
+=================================================================
+Iteration #25 (total = 25)
+Function Eval #89
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 9.094947e-013
+Center : 0.0000003 0.0000003
+Size : 9.536743e-007
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0000005 0
+Function Evaluation #90 at [0.0000010 -0.0000010]
+xr=0.0000010 -0.0000010, f(xr)=0.000000
+xbar2=0 0.0000005
+Function Evaluation #91 at [-0.0000010 0.0000010]
+xr2=-0.0000010 0.0000010, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #92 at [0.0000005 0]
+Function Evaluation #93 at [0 0.0000005]
+=================================================================
+Iteration #26 (total = 26)
+Function Eval #93
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 2.273737e-013
+Center : 0.0000002 0.0000002
+Size : 4.768372e-007
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0000002 0
+Function Evaluation #94 at [0.0000005 -0.0000005]
+xr=0.0000005 -0.0000005, f(xr)=0.000000
+xbar2=0 0.0000002
+Function Evaluation #95 at [-0.0000005 0.0000005]
+xr2=-0.0000005 0.0000005, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #96 at [0.0000002 0]
+Function Evaluation #97 at [0 0.0000002]
+=================================================================
+Iteration #27 (total = 27)
+Function Eval #97
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 5.684342e-014
+Center : 7.947D-08 7.947D-08
+Size : 2.384186e-007
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Reflect
+xbar=0.0000001 0
+Function Evaluation #98 at [0.0000002 -0.0000002]
+xr=0.0000002 -0.0000002, f(xr)=0.000000
+xbar2=0 0.0000001
+Function Evaluation #99 at [-0.0000002 0.0000002]
+xr2=-0.0000002 0.0000002, f(xr2)=0.000000
+  > Perform Shrink
+Function Evaluation #100 at [0.0000001 0]
+Function Evaluation #101 at [0 0.0000001]
+=================================================================
+Iteration #28 (total = 28)
+Function Eval #101
+Xopt : 0 0
+Fopt : 0.000000e+000
+DeltaFv : 1.421085e-014
+Center : 3.974D-08 3.974D-08
+Size : 1.192093e-007
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
+Vertex #1/3 : fv=0.000000e+000, x=0.000000e+000 0.000000e+000
+Terminate with status : maxfuneval
+xopt = neldermead_get(nm,"-xopt");
+assert_close ( xopt , [0.0;0.0], 1e-6 );
+fopt = neldermead_get(nm,"-fopt");
+assert_close ( fopt , 0.0, 1e-6 );
+nm = neldermead_destroy(nm);
index bc8714e..6d86cc0 100644 (file)
@@ -8,6 +8,7 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 // <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
 
 //
 // assert_close --
@@ -49,4 +50,21 @@ fopt = neldermead_get(nm,"-fopt");
 assert_close ( fopt , 0.0, 1e-6 );
 nm = neldermead_destroy(nm);
 
+//
+// Interrupt the algorithm when done.
+
+nm = neldermead_new ();
+nm = neldermead_configure(nm,"-numberofvariables",2);
+nm = neldermead_configure(nm,"-x0",[1.0 1.0]');
+nm = neldermead_configure(nm,"-method","fixed");
+nm = neldermead_configure(nm,"-function",squarefun);
+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);
+xopt = neldermead_get(nm,"-xopt");
+assert_close ( xopt , [0.0;0.0], 1e-6 );
+fopt = neldermead_get(nm,"-fopt");
+assert_close ( fopt , 0.0, 1e-6 );
+nm = neldermead_destroy(nm);
 
index 28f1928..dd30904 100644 (file)
@@ -6,6 +6,7 @@
 // you should have received as part of this distribution.  The terms
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// <-- JVM NOT MANDATORY -->
 //
 // assert_close --
 //   Returns 1 if the two real matrices computed and expected are close,
@@ -88,201 +89,108 @@ nm = neldermead_configure(nm,"-verbose",1);
 nm = neldermead_configure(nm,"-verbosetermination",0);
 nm = neldermead_search(nm);
 Function Evaluation #1 at [-1.2 1]
-
 Function Evaluation #2 at [-1.2 1]
-
 Function Evaluation #3 at [-1.2 1]
-
 Function Evaluation #4 at [-0.2 1]
-
 Function Evaluation #5 at [-1.2 2]
-
 Sort
-
 =================================================================
-
 Iteration #1 (total = 1)
-
 Function Eval #5
-
 Xopt : -1.2 1
-
 Fopt : 2.420000e+001
-
 DeltaFv : 6.940000e+001
-
 Center : -0.8666667 1.3333333
-
 Size : 1.000000e+000
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/3 : fv=2.420000e+001, x=-1.200000e+000 1.000000e+000
-
-Vertex #2/3 : fv=3.620000e+001, x=-1.200000e+000 2.000000e+000
-
-Vertex #3/3 : fv=9.360000e+001, x=-2.000000e-001 1.000000e+000
-
 Reflect
-
 xbar=-1.2 1.5
-
 Function Evaluation #6 at [-2.2 2]
-
 xr=-2.2 2, f(xr)=816.800000
-
 xbar2=-0.7 1
-
 Function Evaluation #7 at [-0.2 0]
-
 xr2=-0.2 0, f(xr2)=1.600000
-
   > Perform reflect / next
-
 =================================================================
-
 Iteration #2 (total = 2)
-
 Function Eval #7
-
 Xopt : -0.2 0
-
 Fopt : 1.600000e+000
-
 DeltaFv : 9.200000e+001
-
 Center : -0.5333333 0.6666667
-
 Size : 1.414214e+000
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/3 : fv=1.600000e+000, x=-2.000000e-001 0.000000e+000
-
-Vertex #2/3 : fv=2.420000e+001, x=-1.200000e+000 1.000000e+000
-
-Vertex #3/3 : fv=9.360000e+001, x=-2.000000e-001 1.000000e+000
-
 Reflect
-
 xbar=-0.7 0.5
-
 Function Evaluation #8 at [-1.2 0]
-
 xr=-1.2 0, f(xr)=212.200000
-
 xbar2=-0.2 0.5
-
 Function Evaluation #9 at [0.8 0]
-
 xr2=0.8 0, f(xr2)=41.000000
-
   > Perform Shrink
-
 Function Evaluation #10 at [-0.7 0.5]
-
 Function Evaluation #11 at [-0.2 0.5]
-
 =================================================================
-
 Iteration #3 (total = 3)
-
 Function Eval #11
-
 Xopt : -0.2 0
-
 Fopt : 1.600000e+000
-
 DeltaFv : 2.100000e+001
-
 Center : -0.3666667 0.3333333
-
 Size : 7.071068e-001
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/3 : fv=1.600000e+000, x=-2.000000e-001 0.000000e+000
-
-Vertex #2/3 : fv=2.900000e+000, x=-7.000000e-001 5.000000e-001
-
-Vertex #3/3 : fv=2.260000e+001, x=-2.000000e-001 5.000000e-001
-
 Reflect
-
 xbar=-0.45 0.25
-
 Function Evaluation #12 at [-0.7 0]
-
 xr=-0.7 0, f(xr)=26.900000
-
 xbar2=-0.2 0.25
-
 Function Evaluation #13 at [0.3 0]
-
 xr2=0.3 0, f(xr2)=1.300000
-
   > Perform reflect / next
-
 =================================================================
-
 Iteration #4 (total = 4)
-
 Function Eval #13
-
 Xopt : 0.3 0
-
 Fopt : 1.300000e+000
-
 DeltaFv : 2.130000e+001
-
 Center : -0.0333333 0.1666667
-
 Size : 7.071068e-001
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/3 : fv=1.300000e+000, x=3.000000e-001 0.000000e+000
-
-Vertex #2/3 : fv=1.600000e+000, x=-2.000000e-001 0.000000e+000
-
-Vertex #3/3 : fv=2.260000e+001, x=-2.000000e-001 5.000000e-001
-
 Reflect
-
 xbar=0.05 0
-
 Function Evaluation #14 at [0.3 -0.5]
-
 xr=0.3 -0.5, f(xr)=35.300000
-
 xbar2=0.05 0.25
-
 Function Evaluation #15 at [0.3 0.5]
-
 xr2=0.3 0.5, f(xr2)=17.300000
-
   > Perform Shrink
-
 Function Evaluation #16 at [0.05 0]
-
 Function Evaluation #17 at [0.05 0.25]
-
 =================================================================
-
 Iteration #5 (total = 5)
-
 Function Eval #17
-
 Xopt : 0.05 0
-
 Fopt : 9.031250e-001
-
 DeltaFv : 6.125000e+000
-
 Center : 0.1333333 0.0833333
-
 Size : 2.500000e-001
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/3 : fv=9.031250e-001, x=5.000000e-002 0.000000e+000
-
-Vertex #2/3 : fv=1.300000e+000, x=3.000000e-001 0.000000e+000
-
-Vertex #3/3 : fv=7.028125e+000, x=5.000000e-002 2.500000e-001
-
 Terminate with status : maxiter
-
 status = neldermead_get(nm,"-status");
 assert_equal ( status , "maxiter" );
 nm = neldermead_destroy(nm);
index b9d7f6c..ca9f86b 100644 (file)
@@ -6,6 +6,7 @@
 // you should have received as part of this distribution.  The terms
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// <-- JVM NOT MANDATORY -->
 //
 // assert_close --
 //   Returns 1 if the two real matrices computed and expected are close,
@@ -115,251 +116,133 @@ nm = neldermead_configure(nm,"-verbosetermination",1);
 nm = neldermead_configure(nm,"-storehistory",%t);
 nm = neldermead_search(nm);
 Function Evaluation #1 at [-1.2 1]
-
 Function Evaluation #2 at [-1.2 1]
-
 Function Evaluation #3 at [-1.2 1]
-
 Function Evaluation #4 at [-0.2 1]
-
 Function Evaluation #5 at [-1.2 2]
-
 Step #1 : order
-
 =================================================================
-
 Iteration #1 (total = 1)
-
 Function Eval #5
-
 Xopt : -1.2 1
-
 Fopt : 2.420000e+001
-
 DeltaFv : 6.940000e+001
-
 Center : -0.8666667 1.3333333
-
 Size : 1.000000e+000
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/3 : fv=2.420000e+001, x=-1.200000e+000 1.000000e+000
-
-Vertex #2/3 : fv=3.620000e+001, x=-1.200000e+000 2.000000e+000
-
-Vertex #3/3 : fv=9.360000e+001, x=-2.000000e-001 1.000000e+000
-
 Reflect
-
 xbar=-1.2 1.5
-
 Function Evaluation #6 at [-2.2 2]
-
 xr=[-2.2 2], f(xr)=816.800000
-
 Contract - inside
-
 Function Evaluation #7 at [-0.7 1.25]
-
 xc=-0.7 1.25, f(xc)=60.650000
-
   > Perform Inside Contraction
-
 Sort
-
 =================================================================
-
 Iteration #2 (total = 2)
-
 Function Eval #7
-
 Xopt : -1.2 1
-
 Fopt : 2.420000e+001
-
 DeltaFv : 3.645000e+001
-
 Center : -1.0333333 1.4166667
-
 Size : 1.000000e+000
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/3 : fv=2.420000e+001, x=-1.200000e+000 1.000000e+000
-
-Vertex #2/3 : fv=3.620000e+001, x=-1.200000e+000 2.000000e+000
-
-Vertex #3/3 : fv=6.065000e+001, x=-7.000000e-001 1.250000e+000
-
   > Termination ?
-
   > iterations=2 >= maxiter=5
-
   > funevals=7 >= maxfunevals=300
-
   > e(x)=1.863390e-001 < 2.220446e-015 * 1.753489e+000 + 0.000000e+000
-
   > Terminate = F, status = continue
-
   > simplex size=1.000000e+000 < 0.000000e+000 + 1.000000e-006 * 1.000000e+000
-
   > Terminate = F, status = continue
-
 Reflect
-
 xbar=-1.2 1.5
-
 Function Evaluation #8 at [-1.7 1.75]
-
 xr=[-1.7 1.75], f(xr)=137.250000
-
 Contract - inside
-
 Function Evaluation #9 at [-0.95 1.375]
-
 xc=-0.95 1.375, f(xc)=26.128125
-
   > Perform Inside Contraction
-
 Sort
-
 =================================================================
-
 Iteration #3 (total = 3)
-
 Function Eval #9
-
 Xopt : -1.2 1
-
 Fopt : 2.420000e+001
-
 DeltaFv : 1.200000e+001
-
 Center : -1.1166667 1.4583333
-
 Size : 1.000000e+000
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/3 : fv=2.420000e+001, x=-1.200000e+000 1.000000e+000
-
-Vertex #2/3 : fv=2.612813e+001, x=-9.500000e-001 1.375000e+000
-
-Vertex #3/3 : fv=3.620000e+001, x=-1.200000e+000 2.000000e+000
-
   > Termination ?
-
   > iterations=3 >= maxiter=5
-
   > funevals=9 >= maxfunevals=300
-
   > e(x)=9.316950e-002 < 2.220446e-015 * 1.836758e+000 + 0.000000e+000
-
   > Terminate = F, status = continue
-
   > simplex size=1.000000e+000 < 0.000000e+000 + 1.000000e-006 * 1.000000e+000
-
   > Terminate = F, status = continue
-
 Reflect
-
 xbar=-1.075 1.1875
-
 Function Evaluation #10 at [-0.95 0.375]
-
 xr=[-0.95 0.375], f(xr)=31.628125
-
 Contract - outside
-
 Function Evaluation #11 at [-1.0125 0.78125]
-
 xc=-1.0125 0.78125, f(xc)=9.999182
-
   > Perform Outside Contraction
-
 Sort
-
 =================================================================
-
 Iteration #4 (total = 4)
-
 Function Eval #11
-
 Xopt : -1.0125 0.78125
-
 Fopt : 9.999182e+000
-
 DeltaFv : 1.612894e+001
-
 Center : -1.0541667 1.0520833
-
 Size : 5.970304e-001
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/3 : fv=9.999182e+000, x=-1.012500e+000 7.812500e-001
-
-Vertex #2/3 : fv=2.420000e+001, x=-1.200000e+000 1.000000e+000
-
-Vertex #3/3 : fv=2.612813e+001, x=-9.500000e-001 1.375000e+000
-
   > Termination ?
-
   > iterations=4 >= maxiter=5
-
   > funevals=11 >= maxfunevals=300
-
   > e(x)=4.110296e-001 < 2.220446e-015 * 1.489344e+000 + 0.000000e+000
-
   > Terminate = F, status = continue
-
   > simplex size=5.970304e-001 < 0.000000e+000 + 1.000000e-006 * 1.000000e+000
-
   > Terminate = F, status = continue
-
 Reflect
-
 xbar=-1.10625 0.890625
-
 Function Evaluation #12 at [-1.2625 0.40625]
-
 xr=[-1.2625 0.40625], f(xr)=146.171643
-
 Contract - inside
-
 Function Evaluation #13 at [-1.028125 1.1328125]
-
 xc=-1.028125 1.1328125, f(xc)=4.687423
-
   > Perform Inside Contraction
-
 Sort
-
 =================================================================
-
 Iteration #5 (total = 5)
-
 Function Eval #13
-
 Xopt : -1.028125 1.1328125
-
 Fopt : 4.687423e+000
-
 DeltaFv : 1.951258e+001
-
 Center : -1.0802083 0.9713542
-
 Size : 3.519096e-001
-
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Optim Simplex Object:
+=====================
 Vertex #1/3 : fv=4.687423e+000, x=-1.028125e+000 1.132813e+000
-
-Vertex #2/3 : fv=9.999182e+000, x=-1.012500e+000 7.812500e-001
-
-Vertex #3/3 : fv=2.420000e+001, x=-1.200000e+000 1.000000e+000
-
   > Termination ?
-
   > iterations=5 >= maxiter=5
-
   > Terminate = T, status = maxiter
-
   > Terminate = T, status = maxiter
-
 Terminate with status : maxiter
-
 status = neldermead_get(nm,"-status");
 assert_equal ( status , "maxiter" );
 nm = neldermead_destroy(nm);
index 7e87b0a..c3863f8 100644 (file)
@@ -8,6 +8,7 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 // <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
 
 //
 // Check behaviour with default settings.
diff --git a/scilab/modules/optimization/tests/unit_tests/neldermead/newFile.txt b/scilab/modules/optimization/tests/unit_tests/neldermead/newFile.txt
deleted file mode 100644 (file)
index 81a909e..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
- Iteration Func-count   min f(x)            Procedure
-         0          3 2.420000e+001                 init
-         1          3 2.005000e+001                 init
-         2          5 5.161796e+000               expand
-         3          7 4.497796e+000              reflect
-         4          9 4.497796e+000     contract outside
-         5         11 4.381360e+000      contract inside
-         6         13 4.245273e+000      contract inside
-         7         15 4.217625e+000              reflect
-         8         17 4.211291e+000      contract inside
-         9         19 4.135560e+000               expand
-        10         21 4.135560e+000      contract inside
-        11         23 4.012727e+000               expand
-
-Matlab :
- Iteration   Func-count     min f(x)         Procedure
-     0            1             24.2         
-     1            3            20.05         initial simplex
-     2            5           5.1618         expand
-     3            7           4.4978         reflect
-     4            9           4.4978         contract outside
-     5           11          4.38136         contract inside
-     6           13          4.24527         contract inside
-     7           15          4.21762         reflect
-     8           17          4.21129         contract inside
-     9           19          4.13556         expand
-    10           21          4.13556         contract inside
-    11           23          4.01273         expand
-    12           25          3.93738         expand
-    13           27          3.60261         expand
-    14           28          3.60261         reflect
-    15           30          3.46622         reflect
-    16           32          3.21605         expand
-    17           34          3.16491         reflect
-    18           36          2.70687         expand
-    19           37          2.70687         reflect
-    20           39          2.00218         expand
-    21           41          2.00218         contract inside
-    22           43          2.00218         contract inside
-    23           45          1.81543         expand
-    24           47          1.73481         contract outside
-    25           49          1.31697         expand
-    26           50          1.31697         reflect
-    27           51          1.31697         reflect
-    28           53           1.1595         reflect
-    29           55          1.07674         contract inside
-    30           57         0.883492         reflect
-    31           59         0.883492         contract inside
-    32           61         0.669165         expand
-    33           63         0.669165         contract inside
-    34           64         0.669165         reflect
-    35           66         0.536729         reflect
-    36           68         0.536729         contract inside
-    37           70         0.423294         expand
-    38           72         0.423294         contract outside
-    39           74         0.398527         reflect
-    40           76          0.31447         expand
-    41           77          0.31447         reflect
-    42           79         0.190317         expand
-    43           81         0.190317         contract inside
-    44           82         0.190317         reflect
-    45           84          0.13696         reflect
-    46           86          0.13696         contract outside
-    47           88         0.113128         contract outside
-    48           90          0.11053         contract inside
-    49           92          0.10234         reflect
-    50           94         0.101184         contract inside
-    51           96        0.0794969         expand
-    52           97        0.0794969         reflect
-    53           98        0.0794969         reflect
-    54          100        0.0569294         expand
-    55          102        0.0569294         contract inside
-    56          104        0.0344855         expand
-    57          106        0.0179534         expand
-    58          108        0.0169469         contract outside
-    59          110       0.00401463         reflect
-    60          112       0.00401463         contract inside
-    61          113       0.00401463         reflect
-    62          115      0.000369954         reflect
-    63          117      0.000369954         contract inside
-    64          118      0.000369954         reflect
-    65          120      0.000369954         contract inside
-    66          122     5.90111e-005         contract outside
-    67          124     3.36682e-005         contract inside
-    68          126     3.36682e-005         contract outside
-    69          128     1.89159e-005         contract outside
-    70          130     8.46083e-006         contract inside
-    71          132     2.88255e-006         contract inside
-    72          133     2.88255e-006         reflect
-    73          135     7.48997e-007         contract inside
-    74          137     7.48997e-007         contract inside
-    75          139     6.20365e-007         contract inside
-    76          141     2.16919e-007         contract outside
-    77          143     1.00244e-007         contract inside
-    78          145     5.23487e-008         contract inside
-    79          147     5.03503e-008         contract inside
-    80          149      2.0043e-008         contract inside
-    81          151     1.12293e-009         contract inside
-    82          153     1.12293e-009         contract outside
-    83          155     1.12293e-009         contract inside
-    84          157     1.10755e-009         contract outside
-    85          159     8.17766e-010         contract inside
-
-Matlab :
- Iteration   Func-count     min f(x)         Procedure
-     0            1             24.2         
-     1            3            20.05         initial simplex
-     2            5           5.1618         expand
-     3            7           4.4978         reflect
-     4            9           4.4978         contract outside
-     5           11          4.38136         contract inside
-     6           13          4.24527         contract inside
-     7           15          4.21762         reflect
-     8           17          4.21129         contract inside
-     9           19          4.13556         expand
-
- Iteration   Func-count     min f(x)         Procedure
-     0            3             24.2         initial simplex     
-     1            3            20.05         initial simplex     
-     2            5         5.161796         expand              
-     3            7         4.497796         reflect             
-     4            9         4.497796         contract outside    
-     5           11        4.3813601         contract inside     
-     6           13        4.2452728         contract inside     
-     7           15        4.2176247         reflect             
-     8           17        4.2112906         contract inside     
-     9           19        4.1355598         expand              
-    10           21        4.1355598         contract inside     
-    11           23        4.0127268         expand              
-    12           25        3.9373812         expand              
-    13           27         3.602606         expand              
-    14           28         3.602606         reflect             
-    15           30        3.4662211         reflect             
-
index 738c29a..6aca5e2 100644 (file)
@@ -7,6 +7,7 @@
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
+// <-- ENGLISH IMPOSED -->
 
 //
 // assert_close --
index c6733a0..be65790 100644 (file)
@@ -6,6 +6,7 @@
 // you should have received as part of this distribution.  The terms
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// <-- JVM NOT MANDATORY -->
 //
 // assert_close --
 //   Returns 1 if the two real matrices computed and expected are close,
@@ -74,165 +75,96 @@ assert_equal ( sfn , "rosenbrock.history.sigma.txt" );
 // Check the display
 nmplot_display(nm);
 Nelder-Mead Plot Object
-
-Nelder-Mead Object
-
-Optimization Object
-
+ATTENTION : neldermead_display: obsolete use of neldermead_display, use directly the variable instead.
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
+Nelder-Mead Object:
+======================
+Optim Base Object:
+==================
 Number of variables : 2
-
 Initial Guess : [-1.2 1]
-
 Initial Function Value :
-
 Number of Inequality Constraints :0
-
 Bounds Mininimum : []
-
 Bounds Maxinimum :[]
-
 Optimum Parameters : [0]
-
 Optimum Function Value :0.000000e+000
-
 Number of iterations : 0
-
 Maximum number of iterations : 10
-
 Number function evaluations : 0
-
 Maximum number of function evaluations : 300
-
 Termination Method on function value : F
-
 Termination Absolute Tolerance on function value : 0
-
 Termination Relative Tolerance on function value : 2.220D-15
-
 Termination Method on x : T
-
 Termination Absolute Tolerance on x : 0
-
 Termination Relative Tolerance on x : 2.220D-15
-
 Optimization Status : 
-
 Verbose logging : 0
-
 Verbose Termination : 0
-
 Verbose Log File : 
-
 Verbose Log File Startup Up: F
-
 Store History : F
 
 Simplex0 : 
-
+Optim Simplex Object:
+=====================
 Empty simplex (zero dimension)
-
 Simplex Optimum : 
-
-Empty simplex (zero coordinates)
-
 Simplex0 Method : axes
-
 Simplex0 Length : 1
-
 Simplex0, Pfeffer, Delta Usual : 0.05
-
 Simplex0, Pfeffer, Delta Zero : 0.0075
-
 Simplex0, Given, Coords :
+[]
 
-     []
+Termination parameters
 Termination on simplex size : T
-
 Termination on simplex size, Absolute Tolerance : 0
-
 Termination on simplex size, Relative Tolerance : 2.220D-16
-
 Termination on simplex size, Initial Simplex Size : 0
-
 Termination on simplex size + Delta of function value : F
-
 Termination on simplex size + Delta of function value, Absolute Tolerance on Delta F : 2.220D-16
-
 Termination on Kelley's Stagnation : F
-
 Termination on Kelley's Stagnation, Normalization : T
-
 Termination on Kelley's Stagnation, Alpha0 : 0.0001
-
 Termination on Kelley's Stagnation, Alpha : 0.0001
-
 Termination by Box : F
-
 Termination by Box, Absolute Tolerance on Function: 0.00001
-
 Termination by Box, Maximum Number of Consecutive Match : 5
-
 Termination by Box, Current Number of Consecutive Match : 0
-
 Termination on Variance : F
-
 Termination on Variance, Absolute Tolerance : 0
-
 Termination on Variance, Relative Tolerance : 2.220D-16
-
 Termination on Variance, Variance of Initial Simplex : 0
 
+Algorithms parameters
 Method : variable
-
 Reflection Factor (rho) : 1
-
 Expansion Factor (chi) : 2
-
 Contraction Factor (gamma) : 0.5
-
 Shrinkage Factor (sigma) : 0.5
-
 Kelley Stagnation : F
-
 Restart Epsilon : 2.220446e-016
-
 Restart Step : 1
-
 Restart Maximum : 3
-
 Restart Simplex Method : oriented
-
 Restart Flag : F
-
 Restart Number : 0
-
 Restart Detection Method : oneill
-
 Startup Flag : F
-
 Automatic Checking of Cost Function : T
-
 Box, Number of Points  : 2n
-
 Box, Current Number of Points  : 0
-
 Box, Scaling, Factor  : 0.5
-
 Box, Scaling, Method  : tox0
-
 Box, Scaling, Minimum : 0.00001
-
 Box, Bounds Parameter: 0.000001
-
 Box, Reflection Coefficient : 1.3
-
 Simplex data file : rosenbrock.history.simplex.txt
-
 Fbar data file : rosenbrock.history.fbar.txt
-
 Fopt data file : rosenbrock.history.fopt.txt
-
 Sigma data file : rosenbrock.history.sigma.txt
-
 nm = nmplot_destroy(nm);
index 2619dbe..4daeefb 100644 (file)
@@ -8,6 +8,7 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 // <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
 
 //
 // assert_close --
index 8ee7ef1..7367c43 100644 (file)
@@ -184,7 +184,6 @@ assert_equal ( status , "maxiter" );
 opt = optimbase_configure(opt,"-verbose",1);
 opt = optimbase_log ( opt , "My interesting message" );
 My interesting message
-
 opt = optimbase_configure(opt,"-verbose",0);
 // Log a message relative to the stopping rule
 opt = optimbase_configure(opt,"-verbosetermination",1);
@@ -231,58 +230,6 @@ opt = optimbase_configure ( opt , "-storehistory" , %t );
 opt = optimbase_histset ( opt , 1 , "-fopt" , 1.0 );
 f0 = optimbase_histget ( opt , 1 , "-fopt" );
 assert_close ( f0 , 1.0, %eps );
-// Check display
-optimbase_display ( opt );
-Optimization Object
-
-Number of variables : 2
-
-Initial Guess : [-1.2 1]
-
-Initial Function Value :
-
-Number of Inequality Constraints :0
-
-Bounds Mininimum : []
-
-Bounds Maxinimum :[]
-
-Optimum Parameters : [1 1]
-
-Optimum Function Value :1.000000e+000
-
-Number of iterations : 1
-
-Maximum number of iterations : 200
-
-Number function evaluations : 0
-
-Maximum number of function evaluations : 200
-
-Termination Method on function value : F
-
-Termination Absolute Tolerance on function value : 0
-
-Termination Relative Tolerance on function value : 2.220D-15
-
-Termination Method on x : T
-
-Termination Absolute Tolerance on x : 0
-
-Termination Relative Tolerance on x : 2.220D-15
-
-Optimization Status : maxiter
-
-Verbose logging : 0
-
-Verbose Termination : 0
-
-Verbose Log File : 
-
-Verbose Log File Startup Up: F
-
-Store History : T
-
 // Check the boundsmin, boundsmax and nbineqconst
 opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] );
 boundsmin = optimbase_cget ( opt , "-boundsmin" );
@@ -395,3 +342,91 @@ expected = "optimbase_histget: Negative iteration index -1 is not allowed.";
 assert_equal ( computed , expected );
 // Cleanup
 opt = optimbase_destroy(opt);
+//
+// Test the printing system
+//
+opt = optimbase_new ();
+string(opt)
+ ans  =
+!Optim Base Object:                                            !
+!                                                              !
+!==================                                            !
+!                                                              !
+!Number of variables : 0                                       !
+!                                                              !
+!Initial Guess : []                                            !
+!                                                              !
+!Initial Function Value :                                      !
+!                                                              !
+!Number of Inequality Constraints :0                           !
+!                                                              !
+!Bounds Mininimum : []                                         !
+!                                                              !
+!Bounds Maxinimum :[]                                          !
+!                                                              !
+!Optimum Parameters : [0]                                      !
+!                                                              !
+!Optimum Function Value :0.000000e+000                         !
+!                                                              !
+!Number of iterations : 0                                      !
+!                                                              !
+!Maximum number of iterations : 100                            !
+!                                                              !
+!Number function evaluations : 0                               !
+!                                                              !
+!Maximum number of function evaluations : 100                  !
+!                                                              !
+!Termination Method on function value : F                      !
+!                                                              !
+!Termination Absolute Tolerance on function value : 0          !
+!                                                              !
+!Termination Relative Tolerance on function value : 2.220D-16  !
+!                                                              !
+!Termination Method on x : T                                   !
+!                                                              !
+!Termination Absolute Tolerance on x : 0                       !
+!                                                              !
+!Termination Relative Tolerance on x : 2.220D-16               !
+!                                                              !
+!Optimization Status :                                         !
+!                                                              !
+!Verbose logging : 0                                           !
+!                                                              !
+!Verbose Termination : 0                                       !
+!                                                              !
+!Verbose Log File :                                            !
+!                                                              !
+!Verbose Log File Startup Up: F                                !
+!                                                              !
+!Store History : F                                             !
+opt
+ opt  =
+Optim Base Object:
+==================
+Number of variables : 0
+Initial Guess : []
+Initial Function Value :
+Number of Inequality Constraints :0
+Bounds Mininimum : []
+Bounds Maxinimum :[]
+Optimum Parameters : [0]
+Optimum Function Value :0.000000e+000
+Number of iterations : 0
+Maximum number of iterations : 100
+Number function evaluations : 0
+Maximum number of function evaluations : 100
+Termination Method on function value : F
+Termination Absolute Tolerance on function value : 0
+Termination Relative Tolerance on function value : 2.220D-16
+Termination Method on x : T
+Termination Absolute Tolerance on x : 0
+Termination Relative Tolerance on x : 2.220D-16
+Optimization Status : 
+Verbose logging : 0
+Verbose Termination : 0
+Verbose Log File : 
+Verbose Log File Startup Up: F
+Store History : F
+opt = optimbase_destroy(opt);
index ea6757b..4b1c5e4 100644 (file)
@@ -237,8 +237,6 @@ opt = optimbase_configure ( opt , "-storehistory" , %t );
 opt = optimbase_histset ( opt , 1 , "-fopt" , 1.0 );
 f0 = optimbase_histget ( opt , 1 , "-fopt" );
 assert_close ( f0 , 1.0, %eps );
-// Check display
-optimbase_display ( opt );
 // Check the boundsmin, boundsmax and nbineqconst
 opt = optimbase_configure ( opt , "-boundsmin" , [-5.0 -5.0] );
 boundsmin = optimbase_cget ( opt , "-boundsmin" );
@@ -358,4 +356,11 @@ assert_equal ( computed , expected );
 // Cleanup
 opt = optimbase_destroy(opt);
 
+//
+// Test the printing system
+//
+opt = optimbase_new ();
+string(opt)
+opt
+opt = optimbase_destroy(opt);
 
index 6c9e3b0..0170aac 100644 (file)
@@ -6,6 +6,8 @@
 // you should have received as part of this distribution.  The terms
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
 //
 // assert_close --
 //   Returns 1 if the two real matrices computed and expected are close,
@@ -75,16 +77,12 @@ computed = optimsimplex_getfv( s1 , 3);
 assert_equal ( computed , 14.0 );
 // Print the simplex
 optimsimplex_print ( s1 );
-Dimension : 2
-
-Number of vertices : 3
-
+WARNING: optimsimplex_print: obsolete use of optimsimplex_print, use directly the variable instead.
+Optim Simplex Object:
+=====================
 Vertex #1/3 : fv=1.200000e+001, x=0.000000e+000 0.000000e+000
-
 Vertex #2/3 : fv=1.300000e+001, x=1.000000e+000 0.000000e+000
-
 Vertex #3/3 : fv=1.400000e+001, x=0.000000e+000 2.000000e+000
-
 // We are done !
 s1 = optimsimplex_destroy(s1);
 //
index 4248330..49285b8 100644 (file)
@@ -6,6 +6,7 @@
 // you should have received as part of this distribution.  The terms
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// <-- JVM NOT MANDATORY -->
 //
 // assert_close --
 //   Returns 1 if the two real matrices computed and expected are close,
@@ -141,3 +142,55 @@ assert_equal ( computed , 2 );
 computed = optimsimplex_getnbve (s1);
 assert_equal ( computed , 5 );
 s1 = optimsimplex_destroy(s1);
+// Check printing system
+coords = [
+    0.    0.  
+    1.    0.  
+    0.    1.  
+    1.    1.  
+    2.    2.  
+];
+s1 = optimsimplex_new ( coords , rosenbrock );
+string(s1)
+ ans  =
+!Optim Simplex Object:                                          !
+!                                                               !
+!=====================                                          !
+!                                                               !
+!Vertex #1/5 : fv=1.000000e+000, x=0.000000e+000 0.000000e+000  !
+!                                                               !
+!Vertex #2/5 : fv=1.000000e+002, x=1.000000e+000 0.000000e+000  !
+!                                                               !
+!Vertex #3/5 : fv=1.010000e+002, x=0.000000e+000 1.000000e+000  !
+!                                                               !
+!Vertex #4/5 : fv=0.000000e+000, x=1.000000e+000 1.000000e+000  !
+!                                                               !
+!Vertex #5/5 : fv=4.010000e+002, x=2.000000e+000 2.000000e+000  !
+s1
+ s1  =
+Optim Simplex Object:
+=====================
+Vertex #1/5 : fv=1.000000e+000, x=0.000000e+000 0.000000e+000
+Vertex #2/5 : fv=1.000000e+002, x=1.000000e+000 0.000000e+000
+Vertex #3/5 : fv=1.010000e+002, x=0.000000e+000 1.000000e+000
+Vertex #4/5 : fv=0.000000e+000, x=1.000000e+000 1.000000e+000
+Vertex #5/5 : fv=4.010000e+002, x=2.000000e+000 2.000000e+000
+s1 = optimsimplex_destroy(s1);
+//
+coords = [
+    0.    0.  
+    1.    0.  
+    0.    1.  
+    1.    1.  
+    2.    2.  
+];
+s1 = optimsimplex_new ( coords );
+s1
+ s1  =
+Optim Simplex Object:
+=====================
+Empty simplex (zero function values)
+s1 = optimsimplex_destroy(s1);
index 4c9c2aa..5260995 100644 (file)
@@ -150,3 +150,27 @@ computed = optimsimplex_getnbve (s1);
 assert_equal ( computed , 5 );
 s1 = optimsimplex_destroy(s1);
 
+// Check printing system
+coords = [
+    0.    0.  
+    1.    0.  
+    0.    1.  
+    1.    1.  
+    2.    2.  
+];
+s1 = optimsimplex_new ( coords , rosenbrock );
+string(s1)
+s1
+s1 = optimsimplex_destroy(s1);
+//
+coords = [
+    0.    0.  
+    1.    0.  
+    0.    1.  
+    1.    1.  
+    2.    2.  
+];
+s1 = optimsimplex_new ( coords );
+s1
+s1 = optimsimplex_destroy(s1);
+
diff --git a/scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_print.dia.ref b/scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_print.dia.ref
deleted file mode 100644 (file)
index fac6d51..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2008-2009 - INRIA - 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
-// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
-//
-// assert_close --
-//   Returns 1 if the two real matrices computed and expected are close,
-//   i.e. if the relative distance between computed and expected is lesser than epsilon.
-// Arguments
-//   computed, expected : the two matrices to compare
-//   epsilon : a small number
-//
-function flag = assert_close ( computed, expected, epsilon )
-  if expected==0.0 then
-    shift = norm(computed-expected);
-  else
-    shift = norm(computed-expected)/norm(expected);
-  end
-  if shift < epsilon then
-    flag = 1;
-  else
-    flag = 0;
-  end
-  if flag <> 1 then bugmes();quit;end
-endfunction
-//
-// assert_equal --
-//   Returns 1 if the two real matrices computed and expected are equal.
-// Arguments
-//   computed, expected : the two matrices to compare
-//   epsilon : a small number
-//
-function flag = assert_equal ( computed , expected )
-  if computed==expected then
-    flag = 1;
-  else
-    flag = 0;
-  end
-  if flag <> 1 then bugmes();quit;end
-endfunction
-function y = rosenbrock (x)
-  y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
-endfunction
-//
-// Test print with all data here.
-//
-simplex = [...
-    0.    0.  
-    1.    0.  
-    0.    2.  
-];
-s1 = optimsimplex_new ();
-s1 = optimsimplex_setn ( s1 , 2 );
-s1 = optimsimplex_setnbve ( s1 , 3 );
-s1 = optimsimplex_setallx ( s1 , simplex );
-s1 = optimsimplex_setallfv ( s1 , [12.0 13.0 14.0]' );
-optimsimplex_print ( s1 );
-Dimension : 2
-
-Number of vertices : 3
-
-Vertex #1/3 : fv=1.200000e+001, x=0.000000e+000 0.000000e+000
-
-Vertex #2/3 : fv=1.300000e+001, x=1.000000e+000 0.000000e+000
-
-Vertex #3/3 : fv=1.400000e+001, x=0.000000e+000 2.000000e+000
-
-s1 = optimsimplex_destroy ( s1 );
-//
-// Test print with no data
-//
-s1 = optimsimplex_new ();
-optimsimplex_print ( s1 );
-Empty simplex (zero dimension)
-
-s1 = optimsimplex_destroy ( s1 );
-//
-// Test print with n set, but no data
-//
-s1 = optimsimplex_new ();
-s1 = optimsimplex_setn ( s1 , 2 );
-optimsimplex_print ( s1 );
-Empty simplex (zero vertices)
-
-s1 = optimsimplex_destroy ( s1 );
-//
-// Test print with n set, x set, but no function values
-//
-s1 = optimsimplex_new ();
-s1 = optimsimplex_setn ( s1 , 2 );
-s1 = optimsimplex_setnbve ( s1 , 3 );
-s1 = optimsimplex_setallx ( s1 , simplex );
-optimsimplex_print ( s1 );
-Empty simplex (zero function values)
-
-s1 = optimsimplex_destroy ( s1 );
diff --git a/scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_print.linux.dia.ref b/scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_print.linux.dia.ref
deleted file mode 100644 (file)
index 043c778..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2008-2009 - INRIA - 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
-// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
-//
-// assert_close --
-//   Returns 1 if the two real matrices computed and expected are close,
-//   i.e. if the relative distance between computed and expected is lesser than epsilon.
-// Arguments
-//   computed, expected : the two matrices to compare
-//   epsilon : a small number
-//
-function flag = assert_close ( computed, expected, epsilon )
-  if expected==0.0 then
-    shift = norm(computed-expected);
-  else
-    shift = norm(computed-expected)/norm(expected);
-  end
-  if shift < epsilon then
-    flag = 1;
-  else
-    flag = 0;
-  end
-  if flag <> 1 then bugmes();quit;end
-endfunction
-//
-// assert_equal --
-//   Returns 1 if the two real matrices computed and expected are equal.
-// Arguments
-//   computed, expected : the two matrices to compare
-//   epsilon : a small number
-//
-function flag = assert_equal ( computed , expected )
-  if computed==expected then
-    flag = 1;
-  else
-    flag = 0;
-  end
-  if flag <> 1 then bugmes();quit;end
-endfunction
-function y = rosenbrock (x)
-  y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
-endfunction
-//
-// Test print with all data here.
-//
-simplex = [...
-    0.    0.  
-    1.    0.  
-    0.    2.  
-];
-s1 = optimsimplex_new ();
-s1 = optimsimplex_setn ( s1 , 2 );
-s1 = optimsimplex_setnbve ( s1 , 3 );
-s1 = optimsimplex_setallx ( s1 , simplex );
-s1 = optimsimplex_setallfv ( s1 , [12.0 13.0 14.0]' );
-optimsimplex_print ( s1 );
-Dimension : 2
-Number of vertices : 3
-Vertex #1/3 : fv=1.200000e+01, x=0.000000e+00 0.000000e+00
-Vertex #2/3 : fv=1.300000e+01, x=1.000000e+00 0.000000e+00
-Vertex #3/3 : fv=1.400000e+01, x=0.000000e+00 2.000000e+00
-s1 = optimsimplex_destroy ( s1 );
-//
-// Test print with no data
-//
-s1 = optimsimplex_new ();
-optimsimplex_print ( s1 );
-Empty simplex (zero dimension)
-s1 = optimsimplex_destroy ( s1 );
-//
-// Test print with n set, but no data
-//
-s1 = optimsimplex_new ();
-s1 = optimsimplex_setn ( s1 , 2 );
-optimsimplex_print ( s1 );
-Empty simplex (zero vertices)
-s1 = optimsimplex_destroy ( s1 );
-//
-// Test print with n set, x set, but no function values
-//
-s1 = optimsimplex_new ();
-s1 = optimsimplex_setn ( s1 , 2 );
-s1 = optimsimplex_setnbve ( s1 , 3 );
-s1 = optimsimplex_setallx ( s1 , simplex );
-optimsimplex_print ( s1 );
-Empty simplex (zero function values)
-s1 = optimsimplex_destroy ( s1 );
diff --git a/scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_print.tst b/scilab/modules/optimization/tests/unit_tests/optimsimplex/optimsimplex_print.tst
deleted file mode 100644 (file)
index 52a421d..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2008-2009 - INRIA - 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
-// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
-
-// <-- JVM NOT MANDATORY -->
-
-
-
-//
-// assert_close --
-//   Returns 1 if the two real matrices computed and expected are close,
-//   i.e. if the relative distance between computed and expected is lesser than epsilon.
-// Arguments
-//   computed, expected : the two matrices to compare
-//   epsilon : a small number
-//
-function flag = assert_close ( computed, expected, epsilon )
-  if expected==0.0 then
-    shift = norm(computed-expected);
-  else
-    shift = norm(computed-expected)/norm(expected);
-  end
-  if shift < epsilon then
-    flag = 1;
-  else
-    flag = 0;
-  end
-  if flag <> 1 then pause,end
-endfunction
-//
-// assert_equal --
-//   Returns 1 if the two real matrices computed and expected are equal.
-// Arguments
-//   computed, expected : the two matrices to compare
-//   epsilon : a small number
-//
-function flag = assert_equal ( computed , expected )
-  if computed==expected then
-    flag = 1;
-  else
-    flag = 0;
-  end
-  if flag <> 1 then pause,end
-endfunction
-function y = rosenbrock (x)
-  y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
-endfunction
-
-//
-// Test print with all data here.
-//
-simplex = [...
-    0.    0.  
-    1.    0.  
-    0.    2.  
-];
-s1 = optimsimplex_new ();
-s1 = optimsimplex_setn ( s1 , 2 );
-s1 = optimsimplex_setnbve ( s1 , 3 );
-s1 = optimsimplex_setallx ( s1 , simplex );
-s1 = optimsimplex_setallfv ( s1 , [12.0 13.0 14.0]' );
-optimsimplex_print ( s1 );
-s1 = optimsimplex_destroy ( s1 );
-
-//
-// Test print with no data
-//
-s1 = optimsimplex_new ();
-optimsimplex_print ( s1 );
-s1 = optimsimplex_destroy ( s1 );
-//
-// Test print with n set, but no data
-//
-s1 = optimsimplex_new ();
-s1 = optimsimplex_setn ( s1 , 2 );
-optimsimplex_print ( s1 );
-s1 = optimsimplex_destroy ( s1 );
-//
-// Test print with n set, x set, but no function values
-//
-s1 = optimsimplex_new ();
-s1 = optimsimplex_setn ( s1 , 2 );
-s1 = optimsimplex_setnbve ( s1 , 3 );
-s1 = optimsimplex_setallx ( s1 , simplex );
-optimsimplex_print ( s1 );
-s1 = optimsimplex_destroy ( s1 );
-
index 8d01c26..dc29a35 100644 (file)
@@ -57,12 +57,16 @@ s1 = optimsimplex_setall ( s1 , simplex );
 str = optimsimplex_tostring ( s1 );
 if getos() == 'Windows' then
 expected = [
+"Optim Simplex Object:"
+"====================="
 "Vertex #1/3 : fv=2.400000e+001, x=-2.000000e+000 1.000000e+000"
 "Vertex #2/3 : fv=9.300000e+001, x=-1.000000e+000 3.000000e+000"
 "Vertex #3/3 : fv=3.600000e+001, x=-3.000000e+000 2.000000e+000"
 ];
 else
 expected = [
+"Optim Simplex Object:"
+"====================="
 "Vertex #1/3 : fv=2.400000e+01, x=-2.000000e+00 1.000000e+00"
 "Vertex #2/3 : fv=9.300000e+01, x=-1.000000e+00 3.000000e+00"
 "Vertex #3/3 : fv=3.600000e+01, x=-3.000000e+00 2.000000e+00"
@@ -83,6 +87,8 @@ s1 = optimsimplex_setall ( s1 , simplex );
 str = optimsimplex_tostring ( s1 );
 if getos() == 'Windows' then
 expected = [
+"Optim Simplex Object:"
+"====================="
 "Vertex #1/4 : fv=2.400000e+001, x=-2.000000e+000 1.000000e+000" 
 "Vertex #2/4 : fv=9.300000e+001, x=-1.000000e+000 3.000000e+000" 
 "Vertex #3/4 : fv=3.600000e+001, x=-3.000000e+000 2.000000e+000" 
@@ -90,6 +96,8 @@ expected = [
 ];
 else
 expected = [
+"Optim Simplex Object:"
+"====================="
 "Vertex #1/4 : fv=2.400000e+01, x=-2.000000e+00 1.000000e+00" 
 "Vertex #2/4 : fv=9.300000e+01, x=-1.000000e+00 3.000000e+00" 
 "Vertex #3/4 : fv=3.600000e+01, x=-3.000000e+00 2.000000e+00" 
index 66ef090..639c3b2 100644 (file)
@@ -6,6 +6,7 @@
 // you should have received as part of this distribution.  The terms
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// <-- JVM NOT MANDATORY -->
 //
 // assert_close --
 //   Returns 1 if the two real matrices computed and expected are close,
@@ -51,14 +52,19 @@ simplex = [
 ];
 s1 = optimsimplex_setall ( s1 , simplex );
 str = optimsimplex_tostring ( s1 );
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
 if getos() == 'Windows' then
 expected = [
+"Optim Simplex Object:"
+"====================="
 "Vertex #1/3 : fv=2.400000e+001, x=-2.000000e+000 1.000000e+000"
 "Vertex #2/3 : fv=9.300000e+001, x=-1.000000e+000 3.000000e+000"
 "Vertex #3/3 : fv=3.600000e+001, x=-3.000000e+000 2.000000e+000"
 ];
 else
 expected = [
+"Optim Simplex Object:"
+"====================="
 "Vertex #1/3 : fv=2.400000e+01, x=-2.000000e+00 1.000000e+00"
 "Vertex #2/3 : fv=9.300000e+01, x=-1.000000e+00 3.000000e+00"
 "Vertex #3/3 : fv=3.600000e+01, x=-3.000000e+00 2.000000e+00"
@@ -76,8 +82,11 @@ simplex = [
 ];
 s1 = optimsimplex_setall ( s1 , simplex );
 str = optimsimplex_tostring ( s1 );
+ATTENTION : optimsimplex_tostring: obsolete use of optimsimplex_tostring, use string instead.
 if getos() == 'Windows' then
 expected = [
+"Optim Simplex Object:"
+"====================="
 "Vertex #1/4 : fv=2.400000e+001, x=-2.000000e+000 1.000000e+000" 
 "Vertex #2/4 : fv=9.300000e+001, x=-1.000000e+000 3.000000e+000" 
 "Vertex #3/4 : fv=3.600000e+001, x=-3.000000e+000 2.000000e+000" 
@@ -85,6 +94,8 @@ expected = [
 ];
 else
 expected = [
+"Optim Simplex Object:"
+"====================="
 "Vertex #1/4 : fv=2.400000e+01, x=-2.000000e+00 1.000000e+00" 
 "Vertex #2/4 : fv=9.300000e+01, x=-1.000000e+00 3.000000e+00" 
 "Vertex #3/4 : fv=3.600000e+01, x=-3.000000e+00 2.000000e+00"