1 <?xml version="1.0" encoding="ISO-8859-1"?>
3 * Ajouter ici d'éventuels commentaires sur le fichier XML
5 <refentry version="5.0-subset Scilab" xml:id="optimsimplex" xml:lang="fr"
6 xmlns="http://docbook.org/ns/docbook"
7 xmlns:xlink="http://www.w3.org/1999/xlink"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns:ns4="http://www.w3.org/1999/xhtml"
10 xmlns:mml="http://www.w3.org/1998/Math/MathML"
11 xmlns:db="http://docbook.org/ns/docbook">
13 <pubdate>$LastChangedDate: 16-12-2008 $</pubdate>
17 <refname>simplex</refname>
19 <refpurpose>Manage a simplex with arbitrary number of points.</refpurpose>
23 <title>SYNOPSIS</title>
25 <synopsis>[ newobj , data ] = simplex_new ( coords , fun , data )
26 this = simplex_destroy (this)
27 [ this , data ] = simplex_axes ( this , x0 , fun , len , data )
28 [ this , data ] = simplex_pfeffer ( this , x0 , fun , deltausual , deltazero , data )
29 [ this , data ] = simplex_randbounds ( this , x0 , fun , boundsmin , boundsmax , nbpoints , data )
30 [ this , data ] = simplex_spendley ( this , x0 , fun , len , data )
31 this = simplex_setall ( this , simplex )
32 this = simplex_setallfv ( this , fv )
33 this = simplex_setallx ( this , x )
34 this = simplex_setfv ( this , ive , fv )
35 this = simplex_setn ( this , n )
36 this = simplex_setnbve ( this , nbve )
37 this = simplex_setve ( this , ive , fv , x )
38 this = simplex_setx ( this , ive , x )
39 simplex = simplex_getall ( this )
40 fv = simplex_getallfv ( this )
41 x = simplex_getallx ( this )
42 fv = simplex_getfv ( this , ive )
43 n = simplex_getn ( this )
44 n = simplex_getnbve ( this )
45 vertex = simplex_getve ( this , ive )
46 x = simplex_getx ( this , ive )
47 sicenter = simplex_center ( this )
48 simplex_check ( this )
49 [ this , data ] = simplex_computefv ( this , fun , data )
50 df = simplex_deltafv ( this )
51 dfm = simplex_deltafvmax ( this )
52 m = simplex_dirmat ( this )
53 sd = simplex_fvmean ( this )
54 sd = simplex_fvstdev ( this )
55 [ g , data ] = simplex_gradientfv ( this , fun , method , data )
56 g = simplex_gradforward ( this )
57 [ g , data ] = simplex_gradcentered ( this , fun , data )
58 [ ns , data ] = simplex_oriented ( this , fun , data )
59 simplex_print ( this )
60 [ r , data ] = simplex_reflect ( this , fun , data )
61 [ this , data ] = simplex_shrink ( this , fun , sigma , data )
62 ssize = simplex_size ( this , method )
63 this = simplex_sort ( this )
64 str = simplex_tostring ( this )
65 cen = simplex_xbar ( this , iexcl )</synopsis>
69 <title>Purpose</title>
72 The goal of this component is to provide a building block for
73 optimization algorithms based on a simplex. The optimsimplex package may
74 be used in the following optimization methods :<itemizedlist>
76 <para>the Spendley et al. simplex method,</para>
80 <para>the Nelder-Mead method,</para>
84 <para>the Box algorithm for constrained optimization,</para>
88 <para>the multi-dimensional search by Virginia Torczon,</para>
94 </itemizedlist></para>
100 <para>This toolbox is designed with Oriented Object ideas in mind.</para>
104 <title>Features</title>
106 <para>The following is a list of features the Nelder-Mead prototype
107 algorithm currently provides :</para>
111 <para>Manage various simplex initializations</para>
115 <para>initial simplex given by user,</para>
119 <para>initial simplex computed with a length and along the
120 coordinate axes,</para>
124 <para>initial regular simplex computed with Spendley et al.
129 <para>initial simplex computed by a small perturbation around the
130 initial guess point,</para>
134 <para>initial simplex computed from randomized bounds.</para>
140 <para>sort the vertices by increasing function values,</para>
144 <para>compute the standard deviation of the function values in the
149 <para>compute the simplex gradient with forward or centered
154 <para>shrink the simplex toward the best vertex,</para>
164 <title>Description</title>
166 <para>This set of commands allows to manage a simplex made of k>=n+1
167 points in a n-dimensional space. This component is the building block for
168 a class of direct search optimization methods such as the Nelder-Mead
169 algorithm or Torczon's Multi-Dimensionnal Search.</para>
171 <para>A simplex is designed as a collection of k>=n+1 vertices. Each
172 vertex is made of a point and a function value at that point.</para>
174 <para>The simplex can be created with various shapes. It can be configured
175 and quieried at will. The simplex can also be reflected or shrinked. The
176 simplex gradient can be computed with a order 1 forward formula and with a
177 order 2 centered formula.</para>
179 <para>The simplex_new function allows to create a simplex. If vertices
180 coordinates are given, there are registered in the simplex. If a function
181 is provided, it is evaluated at each vertex. The simplex_destroy function
182 destroys the object and frees internal memory. Several functions allow to
183 create a simplex with special shapes, including axes-by-axes
184 (simplex_axes), regular (simplex_spendley), randomized bounds simplex with
185 arbitrary k vertices (simplex_randbounds) and an heuristical small
186 variation around a given point (simplex_pfeffer).</para>
190 <title>Functions</title>
192 <para>The following functions are available.</para>
196 <term>[ newobj , data ] = simplex_new ( coords , fun , data )</term>
199 <para>Creates a new simplex object. All input arguments are
200 optional. If no input argument is provided, returns an empty simplex
208 <para>The new object.</para>
216 <para>optional, matrix of point coordinates in the
219 <para>The coords matrix is expected to be a n x k matrix,
220 where n is the dimension of the space and k is the number of
221 vertices in the simplex, with k>= n+1.</para>
229 <para>optional, the function to compute at vertices.</para>
231 <para>The function is expected to have the following input and
232 output arguments :</para>
234 <programlisting role="example">function y = myfunction (x)</programlisting>
242 <para>optional, user-defined data passed to the
245 <para>If data is provided, it is passed to the callback
246 function both as an input and output argument. In that case,
247 the function must have the following header :</para>
249 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
251 <para>The data input parameter may be used if the function
252 uses some additionnal parameters. It is returned as an output
253 parameter because the function may modify the data while
254 computing the function value. This feature may be used, for
255 example, to count the number of times that the function has
264 <term>this = simplex_destroy (this)</term>
267 <para>Destroy the given object.</para>
274 <para>The current simplex object.</para>
282 <term>[ this , data ] = simplex_axes ( this , x0 , fun , len , data
286 <para>Configure the current simplex so that it is computed axis by
287 axis, with the given length.</para>
294 <para>The current simplex object.</para>
302 <para>the initial point, as a row vector.</para>
310 <para>optional, the function to compute at vertices.</para>
312 <para>The function is expected to have the following input and
313 output arguments :</para>
315 <programlisting role="example">function y = myfunction (x)</programlisting>
323 <para>optional, the length of the simplex. The default length
324 is 1.0. If length is a value, that unique length is used in
325 all directions. If length is a vector with n values, each
326 length is used with the corresponding direction.</para>
334 <para>optional, user-defined data passed to the
337 <para>If data is provided, it is passed to the callback
338 function both as an input and output argument. In that case,
339 the function must have the following header :</para>
341 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
343 <para>The data input parameter may be used if the function
344 uses some additionnal parameters. It is returned as an output
345 parameter because the function may modify the data while
346 computing the function value. This feature may be used, for
347 example, to count the number of times that the function has
356 <term>[ this , data ] = simplex_pfeffer ( this , x0 , fun , deltausual
357 , deltazero , data )</term>
360 <para>Configure the current simplex so that it is computed from
361 Pfeffer's method, i.e. a relative delta for non-zero values and an
362 absolute delta for zero values.</para>
369 <para>The current simplex object.</para>
377 <para>the initial point, as a row vector.</para>
385 <para>optional, the function to compute at vertices.</para>
387 <para>The function is expected to have the following input and
388 output arguments :</para>
390 <programlisting role="example">function y = myfunction (x)</programlisting>
395 <term>deltausual</term>
398 <para>optional, the absolute delta for non-zero values. The
399 default value is 0.05.</para>
404 <term>deltazero</term>
407 <para>optional, the absolute delta for zero values. The
408 default value is 0.0075.</para>
416 <para>optional, user-defined data passed to the
419 <para>If data is provided, it is passed to the callback
420 function both as an input and output argument. In that case,
421 the function must have the following header :</para>
423 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
425 <para>The data input parameter may be used if the function
426 uses some additionnal parameters. It is returned as an output
427 parameter because the function may modify the data while
428 computing the function value. This feature may be used, for
429 example, to count the number of times that the function has
438 <term>[ this , data ] = simplex_randbounds ( this , x0 , fun ,
439 boundsmin , boundsmax , nbpoints , data )</term>
442 <para>Configure the current simplex so that it is computed by taking
443 the bounds into account with random scaling. The number of vertices
444 in the simplex is arbitrary.</para>
451 <para>The current simplex object.</para>
459 <para>the initial point, as a row vector. It is the first
460 vertex in the simplex.</para>
468 <para>optional, the function to compute at vertices.</para>
470 <para>The function is expected to have the following input and
471 output arguments :</para>
473 <programlisting role="example">function y = myfunction (x)</programlisting>
478 <term>boundsmin</term>
481 <para>array of minimum bounds</para>
486 <term>boundsmax</term>
489 <para>array of maximum bounds</para>
491 <para>Each component ix =1 , n of the vertex #jve = 2,k is
492 computed from the formula :</para>
494 <programlisting role="example">x ( ix , jve ) = boundsmin( ix ) + rand() * (boundsmax( ix ) - boundsmin( ix ))</programlisting>
499 <term>nbpoints</term>
502 <para>total number of points in the simplex</para>
510 <para>optional, user-defined data passed to the
513 <para>If data is provided, it is passed to the callback
514 function both as an input and output argument. In that case,
515 the function must have the following header :</para>
517 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
519 <para>The data input parameter may be used if the function
520 uses some additionnal parameters. It is returned as an output
521 parameter because the function may modify the data while
522 computing the function value. This feature may be used, for
523 example, to count the number of times that the function has
532 <term>[ this , data ] = simplex_spendley ( this , x0 , fun , len ,
536 <para>Configure the current simplex so that it is computed from
537 Spendley's et al. method, i.e. a regular simplex made of k = n+1
545 <para>The current simplex object.</para>
553 <para>the initial point, as a row vector.</para>
561 <para>optional, the function to compute at vertices.</para>
563 <para>The function is expected to have the following input and
564 output arguments :</para>
566 <programlisting role="example">function y = myfunction (x)</programlisting>
574 <para>optional, the length of the simplex. The default length
583 <para>optional, user-defined data passed to the
586 <para>If data is provided, it is passed to the callback
587 function both as an input and output argument. In that case,
588 the function must have the following header :</para>
590 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
592 <para>The data input parameter may be used if the function
593 uses some additionnal parameters. It is returned as an output
594 parameter because the function may modify the data while
595 computing the function value. This feature may be used, for
596 example, to count the number of times that the function has
605 <term>this = simplex_setall ( this , simplex )</term>
608 <para>Set all the coordinates and and the function values of all the
616 <para>The current simplex object.</para>
624 <para>the simplex to set.</para>
626 <para>The given matrix is expected to be a nbve x n+1 matrix
627 where n is the dimension of the space, nbve is the number of
628 vertices and with the following content (where the data is
629 organized by row with function value first, and x
634 <para>simplex(k,1) is the function value of the vertex #k,
635 with k = 1 , nbve</para>
639 <para>simplex(k,2:n+1) is the coordinates of the vertex
640 #k, with k = 1 , nbve</para>
650 <term>this = simplex_setallfv ( this , fv )</term>
653 <para>Set all the function values of all the vertices. The vertex #k
654 is expected to be stored in fv(k) with k = 1 , nbve</para>
661 <para>The current simplex object.</para>
669 <para>the array of function values</para>
677 <term>this = simplex_setallx ( this , x )</term>
680 <para>Set all the coordinates of all the vertices. The vertex #k is
681 expected to be stored in x(1:n,k) with k = 1 , nbve</para>
688 <para>The current simplex object.</para>
696 <para>the coordinates of the vertices.</para>
704 <term>this = simplex_setfv ( this , ive , fv )</term>
707 <para>Set the function value at given index and // returns an
708 updated simplex.</para>
715 <para>The current simplex object.</para>
723 <para>vertex index</para>
731 <para>the function value</para>
739 <term>this = simplex_setn ( this , n )</term>
742 <para>Set the dimension of the space of the simplex.</para>
749 <para>The current simplex object.</para>
757 <para>the dimension</para>
765 <term>this = simplex_setnbve ( this , nbve )</term>
768 <para>Set the number of vertices of the simplex.</para>
775 <para>The current simplex object.</para>
783 <para>the number of vertices</para>
791 <term>this = simplex_setve ( this , ive , fv , x )</term>
794 <para>Sets the coordinates of the vertex and the function value at
795 given index in the current simplex.</para>
802 <para>The current simplex object.</para>
810 <para>the vertex index</para>
818 <para>the function value</para>
826 <para>the coordinates of the point, as a column vector</para>
834 <term>this = simplex_setx ( this , ive , x )</term>
837 <para>Set the coordinates of the vertex at given index, as a column
838 vector, into the current simplex.</para>
845 <para>The current simplex object.</para>
853 <para>the vertex index</para>
861 <para>the coordinates of the point, as a column vector</para>
869 <term>simplex = simplex_getall ( this )</term>
872 <para>Returns all the coordinates of all the vertices and the
873 function values in the same matrix.</para>
880 <para>The current simplex object.</para>
888 <para>the simplex data.</para>
890 <para>The simplex matrix has size nbve x n+1, and is organized
891 by row by row as follows :</para>
895 <para>simplex(k,1) is the function value of the vertex #k,
896 with k = 1 , nbve</para>
900 <para>simplex(k,2:n+1) is the coordinates of the vertex
901 #k, with k = 1 , nbve</para>
911 <term>fv = simplex_getallfv ( this )</term>
914 <para>Returns all the function values of all the vertices, as a
915 column vector.</para>
922 <para>The current simplex object.</para>
930 <para>The array of function values. The function value of
931 vertex #k is stored in fv(k) with k = 1 , nbve.</para>
939 <term>x = simplex_getallx ( this )</term>
942 <para>Returns all the coordinates of all the vertices.</para>
949 <para>The current simplex object.</para>
957 <para>the coordinates.</para>
959 <para>The vertex #k is stored in x(1:n,k) with k = 1 ,
968 <term>fv = simplex_getfv ( this , ive )</term>
971 <para>Returns the function value at given index</para>
978 <para>The current simplex object.</para>
986 <para>the vertex index</para>
994 <term>n = simplex_getn ( this )</term>
997 <para>Returns the dimension of the space of the simplex</para>
1004 <para>The current simplex object.</para>
1012 <term>n = simplex_getnbve ( this )</term>
1015 <para>Returns the number of vertices in the simplex.</para>
1022 <para>The current simplex object.</para>
1030 <term>vertex = simplex_getve ( this , ive )</term>
1033 <para>Returns the vertex at given index as a tlist, with fields n, x
1041 <para>The current simplex object.</para>
1049 <para>the vertex index</para>
1057 <term>x = simplex_getx ( this , ive )</term>
1060 <para>Returns the coordinates of the vertex at given index, as a
1061 column vector.</para>
1068 <para>The current simplex object.</para>
1076 <para>the vertex index</para>
1084 <term>sicenter = simplex_center ( this )</term>
1087 <para>Returns the center of the given simplex</para>
1094 <para>The current simplex object.</para>
1102 <term>simplex_check ( this )</term>
1105 <para>Check the consistency of the internal data. Generates an error
1106 if necessary.</para>
1113 <para>The current simplex object.</para>
1121 <term>[ this , data ] = simplex_computefv ( this , fun , data )</term>
1124 <para>Set the values of the function at vertices points.</para>
1131 <para>The current simplex object.</para>
1139 <para>optional, the function to compute at vertices.</para>
1141 <para>The function is expected to have the following input and
1142 output arguments :</para>
1144 <programlisting role="example">function y = myfunction (x)</programlisting>
1152 <para>optional, user-defined data passed to the
1155 <para>If data is provided, it is passed to the callback
1156 function both as an input and output argument. In that case,
1157 the function must have the following header :</para>
1159 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
1161 <para>The data input parameter may be used if the function
1162 uses some additionnal parameters. It is returned as an output
1163 parameter because the function may modify the data while
1164 computing the function value. This feature may be used, for
1165 example, to count the number of times that the function has
1174 <term>df = simplex_deltafv ( this )</term>
1177 <para>Returns the vector of difference of function values with
1178 respect to the function value at vertex #1.</para>
1185 <para>The current simplex object.</para>
1193 <term>dfm = simplex_deltafvmax ( this )</term>
1196 <para>Returns the difference of function value between the high and
1197 the low vertices. It is expected that the vertex #1 is associated
1198 with the smallest function value and that the vertex #nbve is
1199 associated with the highest function value. Since vertices are
1200 ordered, the high is greater than the low.</para>
1207 <para>The current simplex object.</para>
1215 <term>m = simplex_dirmat ( this )</term>
1218 <para>Returns the n x n matrix of simplex directions i.e. the matrix
1219 of differences of vertices coordinates with respect to the vertex
1227 <para>The current simplex object.</para>
1235 <term>sd = simplex_fvmean ( this )</term>
1238 <para>Returns the mean of the function value on the simplex.</para>
1245 <para>The current simplex object.</para>
1253 <term>sd = simplex_fvstdev ( this )</term>
1256 <para>Returns the standard deviation of the function value on the
1264 <para>The current simplex object.</para>
1272 <term>[ g , data ] = simplex_gradientfv ( this , fun , method , data
1276 <para>Returns the simplex gradient of the function.</para>
1283 <para>The current simplex object.</para>
1291 <para>optional, the function to compute at vertices.</para>
1293 <para>The function is expected to have the following input and
1294 output arguments :</para>
1296 <programlisting role="example">function y = myfunction (x)</programlisting>
1304 <para>optional, the method to use to compute the simplex
1305 gradient. Two methods are available : "forward" or "centered".
1306 The forward method uses the current simplex to compute the
1307 simplex gradient. The centered method creates an intermediate
1308 reflected simplex and computes the average.</para>
1310 <para>If not provided, the default method is "forward".</para>
1318 <para>optional, user-defined data passed to the
1321 <para>If data is provided, it is passed to the callback
1322 function both as an input and output argument. In that case,
1323 the function must have the following header :</para>
1325 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
1327 <para>The data input parameter may be used if the function
1328 uses some additionnal parameters. It is returned as an output
1329 parameter because the function may modify the data while
1330 computing the function value. This feature may be used, for
1331 example, to count the number of times that the function has
1340 <term>[ ns , data ] = simplex_oriented ( this , fun , data )</term>
1343 <para>Returns a new oriented simplex, in sorted order. The new
1344 simplex has the same sigma- length of the base simplex, but is
1345 "oriented" depending on the function value. This simplex may be
1346 used, as Kelley suggests, for a restart of Nelder-Mead
1354 <para>The current simplex object.</para>
1362 <para>optional, the function to compute at vertices.</para>
1364 <para>The function is expected to have the following input and
1365 output arguments :</para>
1367 <programlisting role="example">function y = myfunction (x)</programlisting>
1375 <para>optional, user-defined data passed to the
1378 <para>If data is provided, it is passed to the callback
1379 function both as an input and output argument. In that case,
1380 the function must have the following header :</para>
1382 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
1384 <para>The data input parameter may be used if the function
1385 uses some additionnal parameters. It is returned as an output
1386 parameter because the function may modify the data while
1387 computing the function value. This feature may be used, for
1388 example, to count the number of times that the function has
1397 <term>simplex_print ( this )</term>
1400 <para>Display the current simplex, with coordinates and function
1408 <para>The current simplex object.</para>
1416 <term>[ r , data ] = simplex_reflect ( this , fun , data )</term>
1419 <para>Returns a new simplex by reflexion of current simplex, by
1420 reflection with respect to the first vertex in the simplex. This
1421 move is used in the centered simplex gradient.</para>
1428 <para>The current simplex object.</para>
1436 <para>optional, the function to compute at vertices.</para>
1438 <para>The function is expected to have the following input and
1439 output arguments :</para>
1441 <programlisting role="example">function y = myfunction (x)</programlisting>
1449 <para>optional, user-defined data passed to the
1452 <para>If data is provided, it is passed to the callback
1453 function both as an input and output argument. In that case,
1454 the function must have the following header :</para>
1456 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
1458 <para>The data input parameter may be used if the function
1459 uses some additionnal parameters. It is returned as an output
1460 parameter because the function may modify the data while
1461 computing the function value. This feature may be used, for
1462 example, to count the number of times that the function has
1471 <term>[ this , data ] = simplex_shrink ( this , fun , sigma , data
1475 <para>Shrink the simplex with given coefficient sigma and returns an
1476 updated simplex. The shrink is performed with respect to the first
1477 point in the simplex.</para>
1484 <para>The current simplex object.</para>
1492 <para>optional, the function to compute at vertices.</para>
1494 <para>The function is expected to have the following input and
1495 output arguments :</para>
1497 <programlisting role="example">function y = myfunction (x)</programlisting>
1505 <para>optional, the shrinkage coefficient. The default value
1514 <para>optional, user-defined data passed to the
1517 <para>If data is provided, it is passed to the callback
1518 function both as an input and output argument. In that case,
1519 the function must have the following header :</para>
1521 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
1523 <para>The data input parameter may be used if the function
1524 uses some additionnal parameters. It is returned as an output
1525 parameter because the function may modify the data while
1526 computing the function value. This feature may be used, for
1527 example, to count the number of times that the function has
1536 <term>ssize = simplex_size ( this , method )</term>
1539 <para>Returns the size of the simplex.</para>
1541 <para>The diameter is the maximum length of all the vertices. It
1542 requires 2 nested loops over the vertices.</para>
1544 <para>The sigmaminus (resp. sigmamplus) size is the minimum (resp.
1545 maximum) length of the vector from the given vertex to the first
1546 vertex. It requires one loop over the vertices.</para>
1548 <para>The "Nash" size is the sum of the norm of the length of the
1549 vector from the given vertex to the first vertex. It requires one
1550 loop over the vertices.</para>
1557 <para>The current simplex object.</para>
1565 <para>optional, the method to use to compute the size. The
1566 available methods are "Nash", "diameter", "sigmaplus" or
1567 "sigmaminus" (default is "sigmaplus").</para>
1575 <term>this = simplex_sort ( this )</term>
1578 <para>Sorts the simplex with increasing function value order so that
1579 the smallest function value is at vertex #1</para>
1586 <para>The current simplex object.</para>
1594 <term>str = simplex_tostring ( this )</term>
1597 <para>Returns the current simplex as a string.</para>
1604 <para>The current simplex object.</para>
1612 <term>cen = simplex_xbar ( this , iexcl )</term>
1615 <para>Returns the center of n vertices, by excluding the vertex with
1623 <para>The current simplex object.</para>
1631 <para>the index of the vertex to exclude in center
1632 computation. The default value of iexcl is the number of
1633 vertices : in that case, if the simplex is sorted in
1634 increasing function value order, the worst vertex is
1645 <title>Example : Creating a simplex with given vertices
1648 <para>In the following example, one creates a simplex with known vertices
1649 coordinates. The function values at the vertices are unset.</para>
1651 <programlisting role="example">
1656 s1 = simplex_new ( coords );
1657 computed = simplex_getallx ( s1 );
1658 computed = simplex_getn(s1);
1659 computed = simplex_getnbve (s1);
1660 s1 = simplex_destroy(s1);
1665 <title>Example : Creating a simplex with randomized bounds</title>
1667 <para>In the following example, one creates a simplex with in the 2D
1668 domain [-5 5]^2, with [-1.2 1.0] as the first vertex. One uses the
1669 randomized bounds method to generate a simplex with 5 vertices. The
1670 function takes an additionnal argument myobj, which is counts the number
1671 of times the function is called. After the creation of the simplex, the
1672 value of mydude.nb is 5, which is the expected result because there is one
1673 function call by vertex.</para>
1675 <programlisting role="example">
1676 function [ y , myobj ] = mycostf ( x , myobj )
1678 myobj.nb = myobj.nb + 1
1681 mydude = tlist(["T_MYSTUFF","nb"]);
1683 s1 = simplex_new ();
1684 [ s1 , mydude ] = simplex_randbounds ( s1 , x0 = [-1.2 1.0], fun = mycostf, ...
1685 boundsmin = [-5.0 -5.0] , boundsmax = [5.0 5.0], nbve=5 , data = mydude );
1686 s1 = simplex_destroy ( s1 );
1694 <para><itemizedlist>
1696 <para>implement reflection and expansion as in multidimensional
1697 search by Torczon</para>
1699 </itemizedlist></para>
1703 <title>Authors</title>
1705 <para>Michael Baudin, 2008-2009</para>
1709 <title>Bibliography</title>
1711 <para>“Sequential Application of Simplex Designs in Optimisation and
1712 Evolutionary Operation”, Spendley, W. and Hext, G. R. and Himsworth,
1713 F. R., American Statistical Association and American Society for Quality,
1716 <para>"A Simplex Method for Function Minimization", Nelder, J. A. and
1717 Mead, R. The Computer Journal, January, 1965, 308--313</para>
1719 <para>"A New Method of Constrained Optimization and a Comparison With
1720 Other Methods", M. J. Box, The Computer Journal 1965 8(1):42-52, 1965 by
1721 British Computer Society</para>
1723 <para>"Iterative Methods for Optimization", C.T. Kelley, 1999, Chapter 6.,
1726 <para>"Compact Numerical Methods For Computers - Linear Algebra and
1727 Function Minimization", J.C. Nash, 1990, Chapter 14. Direct Search
1730 <para>"Sequential Application of Simplex Designs in Optimisation and
1731 Evolutionary Operation", W. Spendley, G. R. Hext, F. R. Himsworth,
1732 Technometrics, Vol. 4, No. 4 (Nov., 1962), pp. 441-461, Section 3.1</para>
1734 <para>"A New Method of Constrained Optimization and a Comparison With
1735 Other Methods", M. J. Box, The Computer Journal 1965 8(1):42-52, 1965 by
1736 British Computer Society</para>
1738 <para>“Detection and Remediation of Stagnation in the Nelder--Mead
1739 Algorithm Using a Sufficient Decrease Condition”, SIAM J. on
1740 Optimization, Kelley,, C. T., 1999</para>
1742 <para>" Multi-Directional Search: A Direct Search Algorithm for Parallel
1743 Machines", by E. Boyd, Kenneth W. Kennedy, Richard A. Tapia, Virginia
1744 Joanne Torczon,, Virginia Joanne Torczon, 1989, Phd Thesis, Rice
1747 <para>"Grid Restrained Nelder-Mead Algorithm", Árpád Bũrmen, Janez
1748 Puhan, Tadej Tuma, Computational Optimization and Applications, Volume 34
1749 , Issue 3 (July 2006), Pages: 359 - 375</para>
1751 <para>"A convergent variant of the Nelder-Mead algorithm", C. J. Price, I.
1752 D. Coope, D. Byatt, Journal of Optimization Theory and Applications,
1753 Volume 113 , Issue 1 (April 2002), Pages: 5 - 19,</para>