7.1.3. Simplex




SIMPLEX is the well known "Nelder & Mead Simplex" updated to take into account discrete variables and constraints. Since it does not require derivatives of the function, it is more robust than algorithm based on local gradients.

SIMPLEX is an algorithm for non-linear optimization problems and should not be confused with the simplex method for linear programming.

A simplex is a polyhedron containing N+1 point in a N dimensional space (thus in two dimensions is a triangle, in three dimension is a tetrahedron, and so forth).

The scheduler for minimization is initialize by N+1 initial corners that are given by the first number_of_variables+1 design configurations available in the DOE table. If the DOE table is empty or has less than N+1 rows, the missing initial designs are randomly generated by the SIMPLEX.

The scheduler follows an algorithm for moving the initial points along with their function values, closer to the minimum (or maximum) of the objective. The points are moved toward the minimum until the scheduler either exceeds its maximum number of iterations or reaches the minimum (maximum). The movement of the simplex is given by three operations: "Reflection", "Expansion" and "Contraction".

The new candidate designs produced by the simplex algorithm are rounded to the nearest discrete values defined by the "base" value given to each variable.

Note:

SIMPLEX is a serial algorithm.

A better description of this algorithm is available in the paper The SIMPLEX Method.

SIMPLEX Scheduler Panel

Figure 7.4. SIMPLEX Scheduler Panel

The user must specify:

The user can also specify:

Note:

The number of concurrent designs evaluation can be set in the Run Project Dialog. This number is consider "only for the first n+1 designs".

Note:

due to the discrete nature of the algorithm, convergence cannot be always ensured and the algorithm, in case of few variables with few intervals, will start looping. This will not cause big CPU losses but if this is annoying the algorithm can be stopped manually during the run.


Return to modeFRONTIER Index