# Documentation/Modules/OptAlgSimplex

## Summary

This optimization module is an implementation of the popular Nelder-Mead Simplex Algorithm (1965) (1). The SIMPLEX method is a standard direct, deterministic optimization algorithm, which is implemented in many numerical tools (e.g. as method `fminsearch.m` in the MATLAB(R) optimization toolbox or in GNU Octave). A good introduction is given by Wright (2).

The algorithm works best for a small number of design variables (1-10, sometimes 1-20). It fails, for example, on the Rosenbrock function, if more than 10 design variables are given.

## Properties

### General

 Algorithm deterministic Written for continuous variables. Discrete or mixed variables are NOT possible. single-objective for minimization. no no -

### Connections

 Starting at this module Module requires exactly one connection of type `optimization`.

### Actions

Name Description
Run starts the optimization.

### Options

The options are currently described as "pop-up help".

## Module Description

The SIMPLEX algorithm is implemented using the paper of Wright (2). However, some extensions are made as e.g. the initialization is not given in the references.

### Initialization

First, an initial simplex is generated. Here, a simplex is a body in the N-dimensional design space that has N+1 vertices. The vertices are connected by straight lines. For two (N=2) and three (N=3) design variables, a simplex is a triangle or tetrahedron, respectively.

If the optimization problem provides an initial solution, this point is taken as first vertex of the simplex. If not, the initial simplex gets a random position obeying certain rules.

We distinguish several cases, depending on the problem properties (`initial solution, initial search region, bounds`).

Problem Properties Given? Action
`initial solution` `initial search region` `bounds`
Yes No No option `Initial Size of the Simplex` defines the absolute length of the simplex in each design variable direction. I.e. a simplex is constructed, such that the distance between each vertex and the plane generated by the remaining points has this length.
Yes or No Yes Yes or No option `Initial Size of the Simplex` defines the relative length of the simplex in each design variable direction compared to the size of the initial search region (i.e. difference upper to lower limit). Bounds are ignored.
Yes or No No Yes option `Initial Size of the Simplex` defines the relative length of the simplex in each design variable direction compared to the size of the bounds (i.e. difference upper to lower limit).

### Optimization

The SIMPLEX method follows a deterministic procedure. Except the initialization, always one new point is generated and evaluated. Thus, parallelization is not implemented.

... todo