optimbase provides an abstract class for a general
optimization component, including the number of variables, the minimum
and maximum bounds, the number of non linear inequality constraints,
the loggin system, various termination criteria, the cost function,
etc...

optimsimplex provides a class to manage a simplex
made of an arbitrary number of vertices, including the computation of
a simplex by various methods (axes, regular, Pfeffer's, randomized
bounds), the computation of the size by various methods (diameter,
sigma +, sigma-, etc...),

Features

The following is a list of features the Nelder-Mead prototype
algorithm currently provides :

Provides 3 algorithms, including

Spendley et al. fixed shaped algorithm,

Nelder-Mead variable shape algorithm,

Box "complex" algorithm managing bounds and nonlinear inequality
constraints based on arbitrary number of vertices in the
simplex.

Manage various simplex initializations

initial simplex given by user,

initial simplex computed with a length and along the
coordinate axes,

initial regular simplex computed with Spendley et al.
formula

initial simplex computed by a small perturbation around the
initial guess point

Manage cost function

optionnal additionnal argument

direct communication of the task to perform : cost function
or inequality constraints

Manage various termination criteria, including maximum number of
iterations, tolerance on function value (relative or absolute),

Provide a plot command which allows to graphically see the
history of the simplices toward the optimum,

Provide query features for the status of the optimization
process number of iterations, number of function evaluations, status
of execution, function value at initial point, function value at
optimal point, etc...

Kelley restart based on simplex gradient,

O'Neill restart based on factorial search around optimum,

Example : Optimizing the Rosenbrock function

In the following example, one searches the minimum of the 2D
Rosenbrock function. One begins by defining the function "rosenbrock"
which computes the Rosenbrock function. The traditionnal initial guess
[-1.2 1.0] is used. The initial simplex is computed along the axes with a
length equal to 0.1. The Nelder-Mead algorithm with variable simplex size
is used. The verbose mode is enabled so that messages are generated during
the algorithm. After the optimization is performed, the optimum is
retrieved with quiery features.