This class implements the simplex concept.
It is intended to be used in conjunction with SimplexOptimizer.
The initial configuration of the simplex is set by the constructors
AbstractSimplex(double[]) or AbstractSimplex(double[][]).
The other constructor will set all steps
to 1, thus building a default configuration from a unit hypercube.
Users must call the build method in order
to create the data structure that will be acted on by the other methods of
this class.

AbstractSimplex

The start configuration for simplex is built from a box parallel to
the canonical axes of the space. The simplex is the subset of vertices
of a box parallel to the canonical axes. It is built as the path followed
while traveling from one vertex of the box to the diagonally opposite
vertex moving only along the box edges. The first vertex of the box will
be located at the start point of the optimization.
As an example, in dimension 3 a simplex has 4 vertices. Setting the
steps to (1, 10, 2) and the start point to (1, 1, 1) would imply the
start simplex would be: { (1, 1, 1), (2, 1, 1), (2, 11, 1), (2, 11, 3) }.
The first vertex would be set to the start point at (1, 1, 1) and the
last vertex would be set to the diagonally opposite vertex at (2, 11, 3).

Parameters:

steps - Steps along the canonical axes representing box edges. They
may be negative but not zero.