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>
71 <para>The goal of this toolbox is to provide a building block for
72 optimization algorithms based on a simplex. That Optimsimplex package may
73 be used in the following optimization methods :<itemizedlist>
75 <para>the Spendley et al. simplex method,</para>
79 <para>the Nelder-Mead method,</para>
83 <para>the Box algorithm for constrained optimization,</para>
87 <para>the multi-dimensional search by Virginia Torczon,</para>
91 </itemizedlist></para>
97 <para>This toolbox is designed with Oriented Object ideas in mind.</para>
101 <title>Features</title>
103 <para>The following is a list of features the Nelder-Mead prototype
104 algorithm currently provides :</para>
108 <para>Manage various simplex initializations</para>
112 <para>initial simplex given by user,</para>
116 <para>initial simplex computed with a length and along the
117 coordinate axes,</para>
121 <para>initial regular simplex computed with Spendley et al.
126 <para>initial simplex computed by a small perturbation around the
127 initial guess point,</para>
131 <para>initial simplex computed from randomized bounds.</para>
137 <para>sort the vertices by increasing function values,</para>
141 <para>compute the standard deviation of the function values in the
146 <para>compute the simplex gradient with forward or centered
151 <para>shrink the simplex toward the best vertex,</para>
161 <title>Description</title>
163 <para>This set of commands allows to manage a simplex made of k>=n+1
164 points in a n-dimensional space. This component is the building block for
165 a class of direct search optimization methods such as the Nelder-Mead
166 algorithm or Torczon's Multi-Dimensionnal Search.</para>
168 <para>A simplex is designed as a collection of k>=n+1 vertices. Each
169 vertex is made of a point and a function value at that point.</para>
171 <para>The simplex can be created with various shapes. It can be configured
172 and quieried at will. The simplex can also be reflected or shrinked. The
173 simplex gradient can be computed with a order 1 forward formula and with a
174 order 2 centered formula.</para>
176 <para>The simplex_new function allows to create a simplex. If vertices
177 coordinates are given, there are registered in the simplex. If a function
178 is provided, it is evaluated at each vertex. The simplex_destroy function
179 destroys the object and frees internal memory. Several functions allow to
180 create a simplex with special shapes, including axes-by-axes
181 (simplex_axes), regular (simplex_spendley), randomized bounds simplex with
182 arbitrary k vertices (simplex_randbounds) and an heuristical small
183 variation around a given point (simplex_pfeffer).</para>
187 <title>Functions</title>
189 <para>The following functions are available.</para>
193 <term>[ newobj , data ] = simplex_new ( coords , fun , data )</term>
196 <para>Creates a new simplex object. All input arguments are
197 optional. If no input argument is provided, returns an empty simplex
205 <para>The new object.</para>
213 <para>optional, matrix of point coordinates in the
216 <para>The coords matrix is expected to be a n x k matrix,
217 where n is the dimension of the space and k is the number of
218 vertices in the simplex, with k>= n+1.</para>
226 <para>optional, the function to compute at vertices.</para>
228 <para>The function is expected to have the following input and
229 output arguments :</para>
231 <programlisting role="example">function y = myfunction (x)</programlisting>
239 <para>optional, user-defined data passed to the
242 <para>If data is provided, it is passed to the callback
243 function both as an input and output argument. In that case,
244 the function must have the following header :</para>
246 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
248 <para>The data input parameter may be used if the function
249 uses some additionnal parameters. It is returned as an output
250 parameter because the function may modify the data while
251 computing the function value. This feature may be used, for
252 example, to count the number of times that the function has
261 <term>this = simplex_destroy (this)</term>
264 <para>Destroy the given object.</para>
271 <para>The current simplex object.</para>
279 <term>[ this , data ] = simplex_axes ( this , x0 , fun , len , data
283 <para>Configure the current simplex so that it is computed axis by
284 axis, with the given length.</para>
291 <para>The current simplex object.</para>
299 <para>the initial point, as a row vector.</para>
307 <para>optional, the function to compute at vertices.</para>
309 <para>The function is expected to have the following input and
310 output arguments :</para>
312 <programlisting role="example">function y = myfunction (x)</programlisting>
320 <para>optional, the length of the simplex. The default length
321 is 1.0. If length is a value, that unique length is used in
322 all directions. If length is a vector with n values, each
323 length is used with the corresponding direction.</para>
331 <para>optional, user-defined data passed to the
334 <para>If data is provided, it is passed to the callback
335 function both as an input and output argument. In that case,
336 the function must have the following header :</para>
338 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
340 <para>The data input parameter may be used if the function
341 uses some additionnal parameters. It is returned as an output
342 parameter because the function may modify the data while
343 computing the function value. This feature may be used, for
344 example, to count the number of times that the function has
353 <term>[ this , data ] = simplex_pfeffer ( this , x0 , fun , deltausual
354 , deltazero , data )</term>
357 <para>Configure the current simplex so that it is computed from
358 Pfeffer's method, i.e. a relative delta for non-zero values and an
359 absolute delta for zero values.</para>
366 <para>The current simplex object.</para>
374 <para>the initial point, as a row vector.</para>
382 <para>optional, the function to compute at vertices.</para>
384 <para>The function is expected to have the following input and
385 output arguments :</para>
387 <programlisting role="example">function y = myfunction (x)</programlisting>
392 <term>deltausual</term>
395 <para>optional, the absolute delta for non-zero values. The
396 default value is 0.05.</para>
401 <term>deltazero</term>
404 <para>optional, the absolute delta for zero values. The
405 default value is 0.0075.</para>
413 <para>optional, user-defined data passed to the
416 <para>If data is provided, it is passed to the callback
417 function both as an input and output argument. In that case,
418 the function must have the following header :</para>
420 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
422 <para>The data input parameter may be used if the function
423 uses some additionnal parameters. It is returned as an output
424 parameter because the function may modify the data while
425 computing the function value. This feature may be used, for
426 example, to count the number of times that the function has
435 <term>[ this , data ] = simplex_randbounds ( this , x0 , fun ,
436 boundsmin , boundsmax , nbpoints , data )</term>
439 <para>Configure the current simplex so that it is computed by taking
440 the bounds into account with random scaling. The number of vertices
441 in the simplex is arbitrary.</para>
448 <para>The current simplex object.</para>
456 <para>the initial point, as a row vector. It is the first
457 vertex in the simplex.</para>
465 <para>optional, the function to compute at vertices.</para>
467 <para>The function is expected to have the following input and
468 output arguments :</para>
470 <programlisting role="example">function y = myfunction (x)</programlisting>
475 <term>boundsmin</term>
478 <para>array of minimum bounds</para>
483 <term>boundsmax</term>
486 <para>array of maximum bounds</para>
488 <para>Each component ix =1 , n of the vertex #jve = 2,k is
489 computed from the formula :</para>
491 <programlisting role="example">x ( ix , jve ) = boundsmin( ix ) + rand() * (boundsmax( ix ) - boundsmin( ix ))</programlisting>
496 <term>nbpoints</term>
499 <para>total number of points in the simplex</para>
507 <para>optional, user-defined data passed to the
510 <para>If data is provided, it is passed to the callback
511 function both as an input and output argument. In that case,
512 the function must have the following header :</para>
514 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
516 <para>The data input parameter may be used if the function
517 uses some additionnal parameters. It is returned as an output
518 parameter because the function may modify the data while
519 computing the function value. This feature may be used, for
520 example, to count the number of times that the function has
529 <term>[ this , data ] = simplex_spendley ( this , x0 , fun , len ,
533 <para>Configure the current simplex so that it is computed from
534 Spendley's et al. method, i.e. a regular simplex made of k = n+1
542 <para>The current simplex object.</para>
550 <para>the initial point, as a row vector.</para>
558 <para>optional, the function to compute at vertices.</para>
560 <para>The function is expected to have the following input and
561 output arguments :</para>
563 <programlisting role="example">function y = myfunction (x)</programlisting>
571 <para>optional, the length of the simplex. The default length
580 <para>optional, user-defined data passed to the
583 <para>If data is provided, it is passed to the callback
584 function both as an input and output argument. In that case,
585 the function must have the following header :</para>
587 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
589 <para>The data input parameter may be used if the function
590 uses some additionnal parameters. It is returned as an output
591 parameter because the function may modify the data while
592 computing the function value. This feature may be used, for
593 example, to count the number of times that the function has
602 <term>this = simplex_setall ( this , simplex )</term>
605 <para>Set all the coordinates and and the function values of all the
613 <para>The current simplex object.</para>
621 <para>the simplex to set.</para>
623 <para>The given matrix is expected to be a nbve x n+1 matrix
624 where n is the dimension of the space, nbve is the number of
625 vertices and with the following content (where the data is
626 organized by row with function value first, and x
631 <para>simplex(k,1) is the function value of the vertex #k,
632 with k = 1 , nbve</para>
636 <para>simplex(k,2:n+1) is the coordinates of the vertex
637 #k, with k = 1 , nbve</para>
647 <term>this = simplex_setallfv ( this , fv )</term>
650 <para>Set all the function values of all the vertices. The vertex #k
651 is expected to be stored in fv(k) with k = 1 , nbve</para>
658 <para>The current simplex object.</para>
666 <para>the array of function values</para>
674 <term>this = simplex_setallx ( this , x )</term>
677 <para>Set all the coordinates of all the vertices. The vertex #k is
678 expected to be stored in x(1:n,k) with k = 1 , nbve</para>
685 <para>The current simplex object.</para>
693 <para>the coordinates of the vertices.</para>
701 <term>this = simplex_setfv ( this , ive , fv )</term>
704 <para>Set the function value at given index and // returns an
705 updated simplex.</para>
712 <para>The current simplex object.</para>
720 <para>vertex index</para>
728 <para>the function value</para>
736 <term>this = simplex_setn ( this , n )</term>
739 <para>Set the dimension of the space of the simplex.</para>
746 <para>The current simplex object.</para>
754 <para>the dimension</para>
762 <term>this = simplex_setnbve ( this , nbve )</term>
765 <para>Set the number of vertices of the simplex.</para>
772 <para>The current simplex object.</para>
780 <para>the number of vertices</para>
788 <term>this = simplex_setve ( this , ive , fv , x )</term>
791 <para>Sets the coordinates of the vertex and the function value at
792 given index in the current simplex.</para>
799 <para>The current simplex object.</para>
807 <para>the vertex index</para>
815 <para>the function value</para>
823 <para>the coordinates of the point, as a column vector</para>
831 <term>this = simplex_setx ( this , ive , x )</term>
834 <para>Set the coordinates of the vertex at given index, as a column
835 vector, into the current simplex.</para>
842 <para>The current simplex object.</para>
850 <para>the vertex index</para>
858 <para>the coordinates of the point, as a column vector</para>
866 <term>simplex = simplex_getall ( this )</term>
869 <para>Returns all the coordinates of all the vertices and the
870 function values in the same matrix.</para>
877 <para>The current simplex object.</para>
885 <para>the simplex data.</para>
887 <para>The simplex matrix has size nbve x n+1, and is organized
888 by row by row as follows :</para>
892 <para>simplex(k,1) is the function value of the vertex #k,
893 with k = 1 , nbve</para>
897 <para>simplex(k,2:n+1) is the coordinates of the vertex
898 #k, with k = 1 , nbve</para>
908 <term>fv = simplex_getallfv ( this )</term>
911 <para>Returns all the function values of all the vertices, as a
912 column vector.</para>
919 <para>The current simplex object.</para>
927 <para>The array of function values. The function value of
928 vertex #k is stored in fv(k) with k = 1 , nbve.</para>
936 <term>x = simplex_getallx ( this )</term>
939 <para>Returns all the coordinates of all the vertices.</para>
946 <para>The current simplex object.</para>
954 <para>the coordinates.</para>
956 <para>The vertex #k is stored in x(1:n,k) with k = 1 ,
965 <term>fv = simplex_getfv ( this , ive )</term>
968 <para>Returns the function value at given index</para>
975 <para>The current simplex object.</para>
983 <para>the vertex index</para>
991 <term>n = simplex_getn ( this )</term>
994 <para>Returns the dimension of the space of the simplex</para>
1001 <para>The current simplex object.</para>
1009 <term>n = simplex_getnbve ( this )</term>
1012 <para>Returns the number of vertices in the simplex.</para>
1019 <para>The current simplex object.</para>
1027 <term>vertex = simplex_getve ( this , ive )</term>
1030 <para>Returns the vertex at given index as a tlist, with fields n, x
1038 <para>The current simplex object.</para>
1046 <para>the vertex index</para>
1054 <term>x = simplex_getx ( this , ive )</term>
1057 <para>Returns the coordinates of the vertex at given index, as a
1058 column vector.</para>
1065 <para>The current simplex object.</para>
1073 <para>the vertex index</para>
1081 <term>sicenter = simplex_center ( this )</term>
1084 <para>Returns the center of the given simplex</para>
1091 <para>The current simplex object.</para>
1099 <term>simplex_check ( this )</term>
1102 <para>Check the consistency of the internal data. Generates an error
1103 if necessary.</para>
1110 <para>The current simplex object.</para>
1118 <term>[ this , data ] = simplex_computefv ( this , fun , data )</term>
1121 <para>Set the values of the function at vertices points.</para>
1128 <para>The current simplex object.</para>
1136 <para>optional, the function to compute at vertices.</para>
1138 <para>The function is expected to have the following input and
1139 output arguments :</para>
1141 <programlisting role="example">function y = myfunction (x)</programlisting>
1149 <para>optional, user-defined data passed to the
1152 <para>If data is provided, it is passed to the callback
1153 function both as an input and output argument. In that case,
1154 the function must have the following header :</para>
1156 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
1158 <para>The data input parameter may be used if the function
1159 uses some additionnal parameters. It is returned as an output
1160 parameter because the function may modify the data while
1161 computing the function value. This feature may be used, for
1162 example, to count the number of times that the function has
1171 <term>df = simplex_deltafv ( this )</term>
1174 <para>Returns the vector of difference of function values with
1175 respect to the function value at vertex #1.</para>
1182 <para>The current simplex object.</para>
1190 <term>dfm = simplex_deltafvmax ( this )</term>
1193 <para>Returns the difference of function value between the high and
1194 the low vertices. It is expected that the vertex #1 is associated
1195 with the smallest function value and that the vertex #nbve is
1196 associated with the highest function value. Since vertices are
1197 ordered, the high is greater than the low.</para>
1204 <para>The current simplex object.</para>
1212 <term>m = simplex_dirmat ( this )</term>
1215 <para>Returns the n x n matrix of simplex directions i.e. the matrix
1216 of differences of vertices coordinates with respect to the vertex
1224 <para>The current simplex object.</para>
1232 <term>sd = simplex_fvmean ( this )</term>
1235 <para>Returns the mean of the function value on the simplex.</para>
1242 <para>The current simplex object.</para>
1250 <term>sd = simplex_fvstdev ( this )</term>
1253 <para>Returns the standard deviation of the function value on the
1261 <para>The current simplex object.</para>
1269 <term>[ g , data ] = simplex_gradientfv ( this , fun , method , data
1273 <para>Returns the simplex gradient of the function.</para>
1280 <para>The current simplex object.</para>
1288 <para>optional, the function to compute at vertices.</para>
1290 <para>The function is expected to have the following input and
1291 output arguments :</para>
1293 <programlisting role="example">function y = myfunction (x)</programlisting>
1301 <para>optional, the method to use to compute the simplex
1302 gradient. Two methods are available : "forward" or "centered".
1303 The forward method uses the current simplex to compute the
1304 simplex gradient. The centered method creates an intermediate
1305 reflected simplex and computes the average.</para>
1307 <para>If not provided, the default method is "forward".</para>
1315 <para>optional, user-defined data passed to the
1318 <para>If data is provided, it is passed to the callback
1319 function both as an input and output argument. In that case,
1320 the function must have the following header :</para>
1322 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
1324 <para>The data input parameter may be used if the function
1325 uses some additionnal parameters. It is returned as an output
1326 parameter because the function may modify the data while
1327 computing the function value. This feature may be used, for
1328 example, to count the number of times that the function has
1337 <term>[ ns , data ] = simplex_oriented ( this , fun , data )</term>
1340 <para>Returns a new oriented simplex, in sorted order. The new
1341 simplex has the same sigma- length of the base simplex, but is
1342 "oriented" depending on the function value. This simplex may be
1343 used, as Kelley suggests, for a restart of Nelder-Mead
1351 <para>The current simplex object.</para>
1359 <para>optional, the function to compute at vertices.</para>
1361 <para>The function is expected to have the following input and
1362 output arguments :</para>
1364 <programlisting role="example">function y = myfunction (x)</programlisting>
1372 <para>optional, user-defined data passed to the
1375 <para>If data is provided, it is passed to the callback
1376 function both as an input and output argument. In that case,
1377 the function must have the following header :</para>
1379 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
1381 <para>The data input parameter may be used if the function
1382 uses some additionnal parameters. It is returned as an output
1383 parameter because the function may modify the data while
1384 computing the function value. This feature may be used, for
1385 example, to count the number of times that the function has
1394 <term>simplex_print ( this )</term>
1397 <para>Display the current simplex, with coordinates and function
1405 <para>The current simplex object.</para>
1413 <term>[ r , data ] = simplex_reflect ( this , fun , data )</term>
1416 <para>Returns a new simplex by reflexion of current simplex, by
1417 reflection with respect to the first vertex in the simplex. This
1418 move is used in the centered simplex gradient.</para>
1425 <para>The current simplex object.</para>
1433 <para>optional, the function to compute at vertices.</para>
1435 <para>The function is expected to have the following input and
1436 output arguments :</para>
1438 <programlisting role="example">function y = myfunction (x)</programlisting>
1446 <para>optional, user-defined data passed to the
1449 <para>If data is provided, it is passed to the callback
1450 function both as an input and output argument. In that case,
1451 the function must have the following header :</para>
1453 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
1455 <para>The data input parameter may be used if the function
1456 uses some additionnal parameters. It is returned as an output
1457 parameter because the function may modify the data while
1458 computing the function value. This feature may be used, for
1459 example, to count the number of times that the function has
1468 <term>[ this , data ] = simplex_shrink ( this , fun , sigma , data
1472 <para>Shrink the simplex with given coefficient sigma and returns an
1473 updated simplex. The shrink is performed with respect to the first
1474 point in the simplex.</para>
1481 <para>The current simplex object.</para>
1489 <para>optional, the function to compute at vertices.</para>
1491 <para>The function is expected to have the following input and
1492 output arguments :</para>
1494 <programlisting role="example">function y = myfunction (x)</programlisting>
1502 <para>optional, the shrinkage coefficient. The default value
1511 <para>optional, user-defined data passed to the
1514 <para>If data is provided, it is passed to the callback
1515 function both as an input and output argument. In that case,
1516 the function must have the following header :</para>
1518 <programlisting role="example">function [ y , data ] = myfunction ( x , data )</programlisting>
1520 <para>The data input parameter may be used if the function
1521 uses some additionnal parameters. It is returned as an output
1522 parameter because the function may modify the data while
1523 computing the function value. This feature may be used, for
1524 example, to count the number of times that the function has
1533 <term>ssize = simplex_size ( this , method )</term>
1536 <para>Returns the size of the simplex.</para>
1538 <para>The diameter is the maximum length of all the vertices. It
1539 requires 2 nested loops over the vertices.</para>
1541 <para>The sigmaminus (resp. sigmamplus) size is the minimum (resp.
1542 maximum) length of the vector from the given vertex to the first
1543 vertex. It requires one loop over the vertices.</para>
1545 <para>The "Nash" size is the sum of the norm of the length of the
1546 vector from the given vertex to the first vertex. It requires one
1547 loop over the vertices.</para>
1554 <para>The current simplex object.</para>
1562 <para>optional, the method to use to compute the size. The
1563 available methods are "Nash", "diameter", "sigmaplus" or
1564 "sigmaminus" (default is "sigmaplus").</para>
1572 <term>this = simplex_sort ( this )</term>
1575 <para>Sorts the simplex with increasing function value order so that
1576 the smallest function value is at vertex #1</para>
1583 <para>The current simplex object.</para>
1591 <term>str = simplex_tostring ( this )</term>
1594 <para>Returns the current simplex as a string.</para>
1601 <para>The current simplex object.</para>
1609 <term>cen = simplex_xbar ( this , iexcl )</term>
1612 <para>Returns the center of n vertices, by excluding the vertex with
1620 <para>The current simplex object.</para>
1628 <para>the index of the vertex to exclude in center
1629 computation. The default value of iexcl is the number of
1630 vertices : in that case, if the simplex is sorted in
1631 increasing function value order, the worst vertex is
1642 <title>Example : Creating a simplex with given vertices
1645 <para>In the following example, one creates a simplex with known vertices
1646 coordinates. The function values at the vertices are unset.</para>
1648 <programlisting role="example">
1653 s1 = simplex_new ( coords );
1654 computed = simplex_getallx ( s1 );
1655 computed = simplex_getn(s1);
1656 computed = simplex_getnbve (s1);
1657 s1 = simplex_destroy(s1);
1662 <title>Example : Creating a simplex with randomized bounds</title>
1664 <para>In the following example, one creates a simplex with in the 2D
1665 domain [-5 5]^2, with [-1.2 1.0] as the first vertex. One uses the
1666 randomized bounds method to generate a simplex with 5 vertices. The
1667 function takes an additionnal argument myobj, which is counts the number
1668 of times the function is called. After the creation of the simplex, the
1669 value of mydude.nb is 5, which is the expected result because there is one
1670 function call by vertex.</para>
1672 <programlisting role="example">
1673 function [ y , myobj ] = mycostf ( x , myobj )
1675 myobj.nb = myobj.nb + 1
1678 mydude = tlist(["T_MYSTUFF","nb"]);
1680 s1 = simplex_new ();
1681 [ s1 , mydude ] = simplex_randbounds ( s1 , x0 = [-1.2 1.0], fun = mycostf, ...
1682 boundsmin = [-5.0 -5.0] , boundsmax = [5.0 5.0], nbve=5 , data = mydude );
1683 s1 = simplex_destroy ( s1 );
1691 <para><itemizedlist>
1693 <para>implement reflection and expansion as in multidimensional
1694 search by Torczon</para>
1696 </itemizedlist></para>
1700 <title>Authors</title>
1702 <para>Michael Baudin, 2008-2009</para>
1706 <title>Bibliography</title>
1708 <para>“Sequential Application of Simplex Designs in Optimisation and
1709 Evolutionary Operation”, Spendley, W. and Hext, G. R. and Himsworth,
1710 F. R., American Statistical Association and American Society for Quality,
1713 <para>"A Simplex Method for Function Minimization", Nelder, J. A. and
1714 Mead, R. The Computer Journal, January, 1965, 308--313</para>
1716 <para>"A New Method of Constrained Optimization and a Comparison With
1717 Other Methods", M. J. Box, The Computer Journal 1965 8(1):42-52, 1965 by
1718 British Computer Society</para>
1720 <para>"Iterative Methods for Optimization", C.T. Kelley, 1999, Chapter 6.,
1723 <para>"Compact Numerical Methods For Computers - Linear Algebra and
1724 Function Minimization", J.C. Nash, 1990, Chapter 14. Direct Search
1727 <para>"Sequential Application of Simplex Designs in Optimisation and
1728 Evolutionary Operation", W. Spendley, G. R. Hext, F. R. Himsworth,
1729 Technometrics, Vol. 4, No. 4 (Nov., 1962), pp. 441-461, Section 3.1</para>
1731 <para>"A New Method of Constrained Optimization and a Comparison With
1732 Other Methods", M. J. Box, The Computer Journal 1965 8(1):42-52, 1965 by
1733 British Computer Society</para>
1735 <para>“Detection and Remediation of Stagnation in the Nelder--Mead
1736 Algorithm Using a Sufficient Decrease Condition”, SIAM J. on
1737 Optimization, Kelley,, C. T., 1999</para>
1739 <para>" Multi-Directional Search: A Direct Search Algorithm for Parallel
1740 Machines", by E. Boyd, Kenneth W. Kennedy, Richard A. Tapia, Virginia
1741 Joanne Torczon,, Virginia Joanne Torczon, 1989, Phd Thesis, Rice
1744 <para>"Grid Restrained Nelder-Mead Algorithm", Árpád Bũrmen, Janez
1745 Puhan, Tadej Tuma, Computational Optimization and Applications, Volume 34
1746 , Issue 3 (July 2006), Pages: 359 - 375</para>
1748 <para>"A convergent variant of the Nelder-Mead algorithm", C. J. Price, I.
1749 D. Coope, D. Byatt, Journal of Optimization Theory and Applications,
1750 Volume 113 , Issue 1 (April 2002), Pages: 5 - 19,</para>