Deleted vectorized computation feature. Deleted neldermead_contour. Fixed the demos.
[scilab.git] / scilab / modules / optimization / help / en_US / optimsimplex / optimsimplex.xml
index f27c7a2..e7df8c2 100644 (file)
@@ -41,7 +41,7 @@ fv = optimsimplex_getallfv ( this )
 x = optimsimplex_getallx ( this )
 fv = optimsimplex_getfv ( this , ive )
 n = optimsimplex_getn ( this )
-n = optimsimplex_getnbve ( this )
+nbve = optimsimplex_getnbve ( this )
 vertex = optimsimplex_getve ( this , ive )
 x = optimsimplex_getx ( this , ive )
 sicenter = optimsimplex_center ( this )
@@ -68,30 +68,31 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
   <refsection>
     <title>Purpose</title>
 
-    <para>
-      The goal of this component is to provide a building block for
-      optimization algorithms based on a simplex. The optimsimplex package may
-      be used in the following optimization methods :<itemizedlist>
-        <listitem>
-          <para>the Spendley et al. simplex method,</para>
-        </listitem>
+    <para>The goal of this component is to provide a building block for
+    optimization algorithms based on a simplex. The optimsimplex package may
+    be used in the following optimization methods :</para>
 
-        <listitem>
-          <para>the Nelder-Mead method,</para>
-        </listitem>
+    <itemizedlist>
+      <listitem>
+        <para>the Spendley et al. simplex method,</para>
+      </listitem>
 
-        <listitem>
-          <para>the Box algorithm for constrained optimization,</para>
-        </listitem>
+      <listitem>
+        <para>the Nelder-Mead method,</para>
+      </listitem>
 
-        <listitem>
-          <para>the multi-dimensional search by Virginia Torczon,</para>
-        </listitem>
+      <listitem>
+        <para>the Box algorithm for constrained optimization,</para>
+      </listitem>
 
-        <listitem>
-          <para>etc ...</para>
-        </listitem>
-      </itemizedlist></para>
+      <listitem>
+        <para>the multi-dimensional search by Virginia Torczon,</para>
+      </listitem>
+
+      <listitem>
+        <para>etc ...</para>
+      </listitem>
+    </itemizedlist>
   </refsection>
 
   <refsection>
@@ -176,14 +177,37 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
     simplex gradient can be computed with a order 1 forward formula and with a
     order 2 centered formula.</para>
 
-    <para>The optimsimplex_new function allows to create a simplex. If vertices
-    coordinates are given, there are registered in the simplex. If a function
-    is provided, it is evaluated at each vertex. The optimsimplex_destroy function
-    destroys the object and frees internal memory. Several functions allow to
-    create a simplex with special shapes, including axes-by-axes
-    (optimsimplex_axes), regular (optimsimplex_spendley), randomized bounds simplex with
-    arbitrary k vertices (optimsimplex_randbounds) and an heuristical small
-    variation around a given point (optimsimplex_pfeffer).</para>
+    <para>The optimsimplex_new function allows to create a simplex. If
+    vertices coordinates are given, there are registered in the simplex. If a
+    function is provided, it is evaluated at each vertex. The
+    optimsimplex_destroy function destroys the object and frees internal
+    memory. Several functions allow to create a simplex with special shapes,
+    including axes-by-axes (optimsimplex_axes), regular
+    (optimsimplex_spendley), randomized bounds simplex with arbitrary nbve
+    vertices (optimsimplex_randbounds) and an heuristical small variation
+    around a given point (optimsimplex_pfeffer).</para>
+
+    <para>In the following functions, simplices and vertices are, depending on
+    the functions either input or output arguments. The following general
+    principle have been used to manage the storing of the coordinates of the
+    points.</para>
+
+    <itemizedlist>
+      <listitem>
+        <para>The vertices are stored row by row, while the coordinates are
+        stored column by column. This implies the following rules.</para>
+      </listitem>
+
+      <listitem>
+        <para>The coordinates of a vertex are stored in a row vector, i.e. a 1
+        x n matrix where n is the dimension of the space.</para>
+      </listitem>
+
+      <listitem>
+        <para>The function values are stored in a column vector, i.e. a nbve x
+        1 matrix where nbve is the number of vertices.</para>
+      </listitem>
+    </itemizedlist>
   </refsection>
 
   <refsection>
@@ -193,7 +217,8 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
 
     <variablelist>
       <varlistentry>
-        <term>[ newobj , data ] = optimsimplex_new ( coords , fun , data )</term>
+        <term>[ newobj , data ] = optimsimplex_new ( coords , fun , data
+        )</term>
 
         <listitem>
           <para>Creates a new simplex object. All input arguments are
@@ -216,9 +241,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 <para>optional, matrix of point coordinates in the
                 simplex.</para>
 
-                <para>The coords matrix is expected to be a n x k matrix,
-                where n is the dimension of the space and k is the number of
-                vertices in the simplex, with k&gt;= n+1.</para>
+                <para>The coords matrix is expected to be a nbve x n matrix,
+                where n is the dimension of the space and nbve is the number
+                of vertices in the simplex, with nbve&gt;= n+1.</para>
               </listitem>
             </varlistentry>
 
@@ -231,7 +256,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 <para>The function is expected to have the following input and
                 output arguments :</para>
 
-                <programlisting role="example">function y = myfunction (x)</programlisting>
+                <programlisting role="example"> 
+function y = myfunction (x)
+ </programlisting>
               </listitem>
             </varlistentry>
 
@@ -246,7 +273,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 function both as an input and output argument. In that case,
                 the function must have the following header :</para>
 
-                <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
+                <programlisting role="example"> 
+function [ y , data ] = myfunction ( x , data )
+ </programlisting>
 
                 <para>The data input parameter may be used if the function
                 uses some additionnal parameters. It is returned as an output
@@ -279,8 +308,8 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>[ this , data ] = optimsimplex_axes ( this , x0 , fun , len , data
-        )</term>
+        <term>[ this , data ] = optimsimplex_axes ( this , x0 , fun , len ,
+        data )</term>
 
         <listitem>
           <para>Configure the current simplex so that it is computed axis by
@@ -312,7 +341,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 <para>The function is expected to have the following input and
                 output arguments :</para>
 
-                <programlisting role="example">function y = myfunction (x)</programlisting>
+                <programlisting role="example"> 
+function y = myfunction (x)
+ </programlisting>
               </listitem>
             </varlistentry>
 
@@ -338,7 +369,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 function both as an input and output argument. In that case,
                 the function must have the following header :</para>
 
-                <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
+                <programlisting role="example"> 
+function [ y , data ] = myfunction ( x , data )
+ </programlisting>
 
                 <para>The data input parameter may be used if the function
                 uses some additionnal parameters. It is returned as an output
@@ -353,8 +386,8 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>[ this , data ] = optimsimplex_pfeffer ( this , x0 , fun , deltausual
-        , deltazero , data )</term>
+        <term>[ this , data ] = optimsimplex_pfeffer ( this , x0 , fun ,
+        deltausual , deltazero , data )</term>
 
         <listitem>
           <para>Configure the current simplex so that it is computed from
@@ -387,7 +420,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 <para>The function is expected to have the following input and
                 output arguments :</para>
 
-                <programlisting role="example">function y = myfunction (x)</programlisting>
+                <programlisting role="example"> 
+function y = myfunction (x)
+ </programlisting>
               </listitem>
             </varlistentry>
 
@@ -420,7 +455,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 function both as an input and output argument. In that case,
                 the function must have the following header :</para>
 
-                <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
+                <programlisting role="example"> 
+function [ y , data ] = myfunction ( x , data )
+ </programlisting>
 
                 <para>The data input parameter may be used if the function
                 uses some additionnal parameters. It is returned as an output
@@ -470,7 +507,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 <para>The function is expected to have the following input and
                 output arguments :</para>
 
-                <programlisting role="example">function y = myfunction (x)</programlisting>
+                <programlisting role="example"> 
+function y = myfunction (x)
+ </programlisting>
               </listitem>
             </varlistentry>
 
@@ -488,10 +527,12 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
               <listitem>
                 <para>array of maximum bounds</para>
 
-                <para>Each component ix =1 , n of the vertex #jve = 2,k is
+                <para>Each component ix =1,n of the vertex #k = 2,nbve is
                 computed from the formula :</para>
 
-                <programlisting role="example">x ( ix , jve ) = boundsmin( ix ) + rand() * (boundsmax( ix ) - boundsmin( ix ))</programlisting>
+                <programlisting role="example"> 
+x ( k , ix ) = boundsmin( ix ) + rand() * (boundsmax( ix ) - boundsmin( ix ))
+ </programlisting>
               </listitem>
             </varlistentry>
 
@@ -514,7 +555,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 function both as an input and output argument. In that case,
                 the function must have the following header :</para>
 
-                <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
+                <programlisting role="example"> 
+function [ y , data ] = myfunction ( x , data )
+ </programlisting>
 
                 <para>The data input parameter may be used if the function
                 uses some additionnal parameters. It is returned as an output
@@ -529,12 +572,12 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>[ this , data ] = optimsimplex_spendley ( this , x0 , fun , len ,
-        data )</term>
+        <term>[ this , data ] = optimsimplex_spendley ( this , x0 , fun , len
+        , data )</term>
 
         <listitem>
           <para>Configure the current simplex so that it is computed from
-          Spendley's et al. method, i.e. a regular simplex made of k = n+1
+          Spendley's et al. method, i.e. a regular simplex made of nbve = n+1
           vertices.</para>
 
           <variablelist>
@@ -563,7 +606,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 <para>The function is expected to have the following input and
                 output arguments :</para>
 
-                <programlisting role="example">function y = myfunction (x)</programlisting>
+                <programlisting role="example"> 
+function y = myfunction (x)
+ </programlisting>
               </listitem>
             </varlistentry>
 
@@ -587,7 +632,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 function both as an input and output argument. In that case,
                 the function must have the following header :</para>
 
-                <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
+                <programlisting role="example"> 
+function [ y , data ] = myfunction ( x , data )
+ </programlisting>
 
                 <para>The data input parameter may be used if the function
                 uses some additionnal parameters. It is returned as an output
@@ -651,7 +698,8 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
 
         <listitem>
           <para>Set all the function values of all the vertices. The vertex #k
-          is expected to be stored in fv(k) with k = 1 , nbve</para>
+          is expected to be stored in fv(k) with k = 1 , nbve. The fv input
+          argument is expected to be a row vector.</para>
 
           <variablelist>
             <varlistentry>
@@ -678,7 +726,7 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
 
         <listitem>
           <para>Set all the coordinates of all the vertices. The vertex #k is
-          expected to be stored in x(1:n,k) with k = 1 , nbve</para>
+          expected to be stored in x(k,1:n) with k = 1 , nbve</para>
 
           <variablelist>
             <varlistentry>
@@ -823,7 +871,7 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
               <term>x</term>
 
               <listitem>
-                <para>the coordinates of the point, as a column vector</para>
+                <para>the coordinates of the point, as a row vector</para>
               </listitem>
             </varlistentry>
           </variablelist>
@@ -834,7 +882,7 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
         <term>this = optimsimplex_setx ( this , ive , x )</term>
 
         <listitem>
-          <para>Set the coordinates of the vertex at given index, as a column
+          <para>Set the coordinates of the vertex at given index, as a row
           vector, into the current simplex.</para>
 
           <variablelist>
@@ -858,7 +906,7 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
               <term>x</term>
 
               <listitem>
-                <para>the coordinates of the point, as a column vector</para>
+                <para>the coordinates of the point, as a row vector</para>
               </listitem>
             </varlistentry>
           </variablelist>
@@ -911,8 +959,8 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
         <term>fv = optimsimplex_getallfv ( this )</term>
 
         <listitem>
-          <para>Returns all the function values of all the vertices, as a
-          column vector.</para>
+          <para>Returns all the function values of all the vertices, as a row
+          vector.</para>
 
           <variablelist>
             <varlistentry>
@@ -956,7 +1004,7 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
               <listitem>
                 <para>the coordinates.</para>
 
-                <para>The vertex #k is stored in x(1:n,k) with k = 1 ,
+                <para>The vertex #k is stored in x(k,1:n) with k = 1 ,
                 nbve.</para>
               </listitem>
             </varlistentry>
@@ -1009,7 +1057,7 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>n = optimsimplex_getnbve ( this )</term>
+        <term>nbve = optimsimplex_getnbve ( this )</term>
 
         <listitem>
           <para>Returns the number of vertices in the simplex.</para>
@@ -1057,8 +1105,8 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
         <term>x = optimsimplex_getx ( this , ive )</term>
 
         <listitem>
-          <para>Returns the coordinates of the vertex at given index, as a
-          column vector.</para>
+          <para>Returns the coordinates of the vertex at given index, as a row
+          vector.</para>
 
           <variablelist>
             <varlistentry>
@@ -1118,7 +1166,8 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>[ this , data ] = optimsimplex_computefv ( this , fun , data )</term>
+        <term>[ this , data ] = optimsimplex_computefv ( this , fun , data
+        )</term>
 
         <listitem>
           <para>Set the values of the function at vertices points.</para>
@@ -1141,7 +1190,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 <para>The function is expected to have the following input and
                 output arguments :</para>
 
-                <programlisting role="example">function y = myfunction (x)</programlisting>
+                <programlisting role="example"> 
+function y = myfunction (x)
+ </programlisting>
               </listitem>
             </varlistentry>
 
@@ -1156,7 +1207,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 function both as an input and output argument. In that case,
                 the function must have the following header :</para>
 
-                <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
+                <programlisting role="example"> 
+function [ y , data ] = myfunction ( x , data )
+ </programlisting>
 
                 <para>The data input parameter may be used if the function
                 uses some additionnal parameters. It is returned as an output
@@ -1269,8 +1322,8 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>[ g , data ] = optimsimplex_gradientfv ( this , fun , method , data
-        )</term>
+        <term>[ g , data ] = optimsimplex_gradientfv ( this , fun , method ,
+        data )</term>
 
         <listitem>
           <para>Returns the simplex gradient of the function.</para>
@@ -1293,7 +1346,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 <para>The function is expected to have the following input and
                 output arguments :</para>
 
-                <programlisting role="example">function y = myfunction (x)</programlisting>
+                <programlisting role="example"> 
+function y = myfunction (x)
+ </programlisting>
               </listitem>
             </varlistentry>
 
@@ -1322,7 +1377,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 function both as an input and output argument. In that case,
                 the function must have the following header :</para>
 
-                <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
+                <programlisting role="example"> 
+function [ y , data ] = myfunction ( x , data )
+ </programlisting>
 
                 <para>The data input parameter may be used if the function
                 uses some additionnal parameters. It is returned as an output
@@ -1337,7 +1394,8 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>[ ns , data ] = optimsimplex_oriented ( this , fun , data )</term>
+        <term>[ ns , data ] = optimsimplex_oriented ( this , fun , data
+        )</term>
 
         <listitem>
           <para>Returns a new oriented simplex, in sorted order. The new
@@ -1364,7 +1422,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 <para>The function is expected to have the following input and
                 output arguments :</para>
 
-                <programlisting role="example">function y = myfunction (x)</programlisting>
+                <programlisting role="example"> 
+function y = myfunction (x)
+ </programlisting>
               </listitem>
             </varlistentry>
 
@@ -1379,7 +1439,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 function both as an input and output argument. In that case,
                 the function must have the following header :</para>
 
-                <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
+                <programlisting role="example"> 
+function [ y , data ] = myfunction ( x , data )
+ </programlisting>
 
                 <para>The data input parameter may be used if the function
                 uses some additionnal parameters. It is returned as an output
@@ -1438,7 +1500,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 <para>The function is expected to have the following input and
                 output arguments :</para>
 
-                <programlisting role="example">function y = myfunction (x)</programlisting>
+                <programlisting role="example"> 
+function y = myfunction (x)
+ </programlisting>
               </listitem>
             </varlistentry>
 
@@ -1453,7 +1517,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 function both as an input and output argument. In that case,
                 the function must have the following header :</para>
 
-                <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
+                <programlisting role="example"> 
+function [ y , data ] = myfunction ( x , data )
+ </programlisting>
 
                 <para>The data input parameter may be used if the function
                 uses some additionnal parameters. It is returned as an output
@@ -1468,8 +1534,8 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>[ this , data ] = optimsimplex_shrink ( this , fun , sigma , data
-        )</term>
+        <term>[ this , data ] = optimsimplex_shrink ( this , fun , sigma ,
+        data )</term>
 
         <listitem>
           <para>Shrink the simplex with given coefficient sigma and returns an
@@ -1494,7 +1560,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 <para>The function is expected to have the following input and
                 output arguments :</para>
 
-                <programlisting role="example">function y = myfunction (x)</programlisting>
+                <programlisting role="example"> 
+function y = myfunction (x)
+ </programlisting>
               </listitem>
             </varlistentry>
 
@@ -1518,7 +1586,9 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
                 function both as an input and output argument. In that case,
                 the function must have the following header :</para>
 
-                <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
+                <programlisting role="example"> 
+function [ y , data ] = myfunction ( x , data )
+ </programlisting>
 
                 <para>The data input parameter may be used if the function
                 uses some additionnal parameters. It is returned as an output
@@ -1542,12 +1612,12 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
           requires 2 nested loops over the vertices.</para>
 
           <para>The sigmaminus (resp. sigmamplus) size is the minimum (resp.
-          maximum) length of the vector from each vertex to the first
-          vertex. It requires one loop over the vertices.</para>
+          maximum) length of the vector from each vertex to the first vertex.
+          It requires one loop over the vertices.</para>
 
           <para>The "Nash" size is the sum of the norm of the length of the
-          vector from the given vertex to the first vertex. It requires one
-          loop over the vertices.</para>
+          vector from the given vertex to the first vertex. The 1-norm is
+          used. It requires one loop over the vertices.</para>
 
           <variablelist>
             <varlistentry>
@@ -1648,17 +1718,18 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
     <para>In the following example, one creates a simplex with known vertices
     coordinates. The function values at the vertices are unset.</para>
 
-    <programlisting role="example">
+    <programlisting role="example"> 
 coords = [
-0.0 1.0 0.0
-0.0 0.0 1.0
+    0.    0.  
+    1.    0.  
+    0.    1.  
 ];
 s1 = optimsimplex_new ( coords );
 computed = optimsimplex_getallx ( s1 );
 computed = optimsimplex_getn(s1);
 computed = optimsimplex_getnbve (s1);
 s1 = optimsimplex_destroy(s1);
-    </programlisting>
+ </programlisting>
   </refsection>
 
   <refsection>
@@ -1667,150 +1738,127 @@ s1 = optimsimplex_destroy(s1);
     <para>In the following example, one creates a simplex with in the 2D
     domain [-5 5]^2, with [-1.2 1.0] as the first vertex. One uses the
     randomized bounds method to generate a simplex with 5 vertices. The
-    function takes an additionnal argument myobj, which is counts the number
+    function takes an additionnal argument mystuff, which is counts the number
     of times the function is called. After the creation of the simplex, the
-    value of mydude.nb is 5, which is the expected result because there is one
-    function call by vertex.</para>
+    value of mystuff.nb is 5, which is the expected result because there is
+    one function call by vertex.</para>
 
-    <programlisting role="example">
-function [ y , myobj ] = mycostf ( x , myobj )
+    <programlisting role="example"> 
+function y = rosenbrock (x)
+  y = 100*(x(2)-x(1)^2)^2+(1-x(1))^2;
+endfunction
+function [ y , mystuff ] = mycostf ( x , mystuff )
   y = rosenbrock(x);
-  myobj.nb = myobj.nb + 1
+  mystuff.nb = mystuff.nb + 1
 endfunction
 
-mydude = tlist(["T_MYSTUFF","nb"]);
-mydude.nb = 0;
+mystuff = tlist(["T_MYSTUFF","nb"]);
+mystuff.nb = 0;
 s1 = optimsimplex_new ();
-[ s1 , mydude ] = optimsimplex_randbounds ( s1 , x0 = [-1.2 1.0], fun = mycostf, ...
-  boundsmin = [-5.0 -5.0] , boundsmax = [5.0 5.0], nbve=5 , data = mydude );
+[ 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 );
+mprintf("Function evaluations: %d\n",mystuff.nb)
 s1 = optimsimplex_destroy ( s1 );
-
-    </programlisting>
+ </programlisting>
   </refsection>
 
   <refsection>
     <title>TODO</title>
 
-    <para><itemizedlist>
-        <listitem>
-          <para>implement reflection and expansion as in multidimensional
-          search by Torczon</para>
-        </listitem>
-      </itemizedlist></para>
+    <itemizedlist>
+      <listitem>
+        <para>implement reflection and expansion as in multidimensional search
+        by Torczon</para>
+      </listitem>
+
+      <listitem>
+        <para>move optimsimplex_reflect into a proper method, not a weird
+        constructor</para>
+      </listitem>
+    </itemizedlist>
   </refsection>
 
   <refsection>
     <title>Initial simplex strategies</title>
-    <para>
-      In this section, we analyse the various initial simplex which are provided in this 
-      component.
-    </para>
-    <para>
-      It is known that direct search methods based on simplex designs are very 
-      sensitive to the initial simplex. This is why the current component 
-      provides various ways to create such an initial simplex.
-    </para>
-
-    <para>
-      The first historical simplex-based algorithm is the one presented in 
-      "Sequential Application of Simplex Designs in Optimisation and
-      Evolutionary Operation" by W. Spendley, G. R. Hext and F. R. Himsworth.
-      The optimsimplex_spendley function creates the regular simplex which is presented in
-      this paper.
-    </para>
-
-    
-    <para>
-      The method used in the optimsimplex_randbounds function is due to M.J. Box
-      in "A New Method of Constrained Optimization and a Comparison With
-      Other Methods". 
-    </para>
-
-    <para>
-      Pfeffer's method is an heuristic which is presented in "Global Optimization Of Lennard-Jones Atomic Clusters" by
-      Ellen Fan. It is due to L. Pfeffer at Stanford and it is used in fminsearch.
-    </para>
-    
+
+    <para>In this section, we analyse the various initial simplex which are
+    provided in this component.</para>
+
+    <para>It is known that direct search methods based on simplex designs are
+    very sensitive to the initial simplex. This is why the current component
+    provides various ways to create such an initial simplex.</para>
+
+    <para>The first historical simplex-based algorithm is the one presented in
+    "Sequential Application of Simplex Designs in Optimisation and
+    Evolutionary Operation" by W. Spendley, G. R. Hext and F. R. Himsworth.
+    The optimsimplex_spendley function creates the regular simplex which is
+    presented in this paper.</para>
+
+    <para>The method used in the optimsimplex_randbounds function is due to
+    M.J. Box in "A New Method of Constrained Optimization and a Comparison
+    With Other Methods".</para>
+
+    <para>Pfeffer's method is an heuristic which is presented in "Global
+    Optimization Of Lennard-Jones Atomic Clusters" by Ellen Fan. It is due to
+    L. Pfeffer at Stanford and it is used in fminsearch.</para>
   </refsection>
 
   <refsection>
     <title>Authors</title>
 
-    <para>Michael Baudin, 2008-2009</para>
+    <para>Michael Baudin - INRIA - 2008-2009</para>
+
+    <para>Michael Baudin - Digiteo - 2009</para>
   </refsection>
 
   <refsection>
     <title>Bibliography</title>
 
-    <para>
-      &#8220;Sequential Application of Simplex Designs in Optimisation and
-      Evolutionary Operation&#8221;, Spendley, W. and Hext, G. R. and Himsworth,
-      F. R., American Statistical Association and American Society for Quality,
-      1962
-    </para>
-
-    <para>
-      "A Simplex Method for Function Minimization", Nelder, J. A. and
-      Mead, R. The Computer Journal, January, 1965, 308--313
-    </para>
-
-    <para>
-      "A New Method of Constrained Optimization and a Comparison With
-      Other Methods", M. J. Box, The Computer Journal 1965 8(1):42-52, 1965 by
-      British Computer Society
-    </para>
-
-    <para>
-      "Iterative Methods for Optimization", C.T. Kelley, 1999, Chapter 6.,
-      section 6.2
-    </para>
-
-    <para>
-      "Compact Numerical Methods For Computers - Linear Algebra and
-      Function Minimization", J.C. Nash, 1990, Chapter 14. Direct Search
-      Methods
-    </para>
-
-    <para>
-      "Sequential Application of Simplex Designs in Optimisation and
-      Evolutionary Operation", W. Spendley, G. R. Hext, F. R. Himsworth,
-      Technometrics, Vol. 4, No. 4 (Nov., 1962), pp. 441-461, Section 3.1
-    </para>
-
-    <para>
-      "A New Method of Constrained Optimization and a Comparison With
-      Other Methods", M. J. Box, The Computer Journal 1965 8(1):42-52, 1965 by
-      British Computer Society
-    </para>
-
-    <para>
-      &#8220;Detection and Remediation of Stagnation in the Nelder--Mead
-      Algorithm Using a Sufficient Decrease Condition&#8221;, SIAM J. on
-      Optimization, Kelley,, C. T., 1999
-    </para>
-
-    <para>
-      " Multi-Directional Search: A Direct Search Algorithm for Parallel
-      Machines", by E. Boyd, Kenneth W. Kennedy, Richard A. Tapia, Virginia
-      Joanne Torczon,, Virginia Joanne Torczon, 1989, Phd Thesis, Rice
-      University
-    </para>
-
-    <para>
-      "Grid Restrained Nelder-Mead Algorithm", Árpád B&#361;rmen, Janez
-      Puhan, Tadej Tuma, Computational Optimization and Applications, Volume 34
-      , Issue 3 (July 2006), Pages: 359 - 375
-    </para>
-
-    <para>
-      "A convergent variant of the Nelder-Mead algorithm", C. J. Price, I.
-      D. Coope, D. Byatt, Journal of Optimization Theory and Applications,
-      Volume 113 , Issue 1 (April 2002), Pages: 5 - 19,
-    </para>
-
-    <para>
-      "Global Optimization Of Lennard-Jones Atomic Clusters",
-      Ellen Fan, Thesis, February 26, 2002, McMaster University
-    </para>
+    <para>&#8220;Sequential Application of Simplex Designs in Optimisation and
+    Evolutionary Operation&#8221;, Spendley, W. and Hext, G. R. and Himsworth,
+    F. R., American Statistical Association and American Society for Quality,
+    1962</para>
+
+    <para>"A Simplex Method for Function Minimization", Nelder, J. A. and
+    Mead, R. The Computer Journal, January, 1965, 308--313</para>
+
+    <para>"A New Method of Constrained Optimization and a Comparison With
+    Other Methods", M. J. Box, The Computer Journal 1965 8(1):42-52, 1965 by
+    British Computer Society</para>
+
+    <para>"Iterative Methods for Optimization", C.T. Kelley, 1999, Chapter 6.,
+    section 6.2</para>
+
+    <para>"Compact Numerical Methods For Computers - Linear Algebra and
+    Function Minimization", J.C. Nash, 1990, Chapter 14. Direct Search
+    Methods</para>
+
+    <para>"Sequential Application of Simplex Designs in Optimisation and
+    Evolutionary Operation", W. Spendley, G. R. Hext, F. R. Himsworth,
+    Technometrics, Vol. 4, No. 4 (Nov., 1962), pp. 441-461, Section 3.1</para>
+
+    <para>"A New Method of Constrained Optimization and a Comparison With
+    Other Methods", M. J. Box, The Computer Journal 1965 8(1):42-52, 1965 by
+    British Computer Society</para>
+
+    <para>&#8220;Detection and Remediation of Stagnation in the Nelder--Mead
+    Algorithm Using a Sufficient Decrease Condition&#8221;, SIAM J. on
+    Optimization, Kelley,, C. T., 1999</para>
+
+    <para>" Multi-Directional Search: A Direct Search Algorithm for Parallel
+    Machines", by E. Boyd, Kenneth W. Kennedy, Richard A. Tapia, Virginia
+    Joanne Torczon,, Virginia Joanne Torczon, 1989, Phd Thesis, Rice
+    University</para>
+
+    <para>"Grid Restrained Nelder-Mead Algorithm", Árpád B&#361;rmen, Janez
+    Puhan, Tadej Tuma, Computational Optimization and Applications, Volume 34
+    , Issue 3 (July 2006), Pages: 359 - 375</para>
+
+    <para>"A convergent variant of the Nelder-Mead algorithm", C. J. Price, I.
+    D. Coope, D. Byatt, Journal of Optimization Theory and Applications,
+    Volume 113 , Issue 1 (April 2002), Pages: 5 - 19,</para>
+
+    <para>"Global Optimization Of Lennard-Jones Atomic Clusters", Ellen Fan,
+    Thesis, February 26, 2002, McMaster University</para>
   </refsection>
 </refentry>