Deleted vectorized computation feature. Deleted neldermead_contour. Fixed the demos.
[scilab.git] / scilab / modules / optimization / help / en_US / optimsimplex / optimsimplex.xml
index c90798a..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 ] = optimoptimsimplex_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
@@ -261,7 +290,7 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>this = optimoptimsimplex_destroy (this)</term>
+        <term>this = optimsimplex_destroy (this)</term>
 
         <listitem>
           <para>Destroy the given object.</para>
@@ -279,8 +308,8 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>[ this , data ] = optimoptimsimplex_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 ] = optimoptimsimplex_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
@@ -435,7 +472,7 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>[ this , data ] = optimoptimsimplex_randbounds ( this , x0 , fun ,
+        <term>[ this , data ] = optimsimplex_randbounds ( this , x0 , fun ,
         boundsmin , boundsmax , nbpoints , data )</term>
 
         <listitem>
@@ -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 ] = optimoptimsimplex_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
@@ -602,7 +649,7 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>this = optimoptimsimplex_setall ( this , simplex )</term>
+        <term>this = optimsimplex_setall ( this , simplex )</term>
 
         <listitem>
           <para>Set all the coordinates and and the function values of all the
@@ -647,11 +694,12 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>this = optimoptimsimplex_setallfv ( this , fv )</term>
+        <term>this = optimsimplex_setallfv ( this , fv )</term>
 
         <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>
@@ -674,11 +722,11 @@ cen = optimsimplex_xbar ( this , iexcl )</synopsis>
       </varlistentry>
 
       <varlistentry>
-        <term>this = optimoptimsimplex_setallx ( this , x )</term>
+        <term>this = optimsimplex_setallx ( this , x )</term>
 
         <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,42 +1738,77 @@ 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>
   </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>
@@ -1751,5 +1857,8 @@ s1 = optimsimplex_destroy ( s1 );
     <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>