Seeks a local extremum of a general multi-dimensional function using Powell's direction set method.
extremumType == ExtremumTypes.MINIMUM; and in the case of a maximum, extremumType == ExtremumTypes.MAXIMUM.n-th term of the array corresponds to the value of the n coordinate value.minDistance parameter should be approximately the same magnitude as tolerance parameter.tolerance is 0.1.300.fractionalTolerance, the point in the last step is considered a local extreme and returned. In most cases a reasonable value to take for this parameter is 0.0001, however if the object function in very oscillatory in a neighborhood of its extremum then a correspondingly larger value should be used.the point (i.e. an N-dimensional vector) where the function has a local extremum.
This algorithm is a modification of Powell's algorithm as applied within Quadratic programing however the basic rationale of this approach is similar. That is, it has the ability to select good directions along which to the seek the extremum and hence is particular appropriate when the function being considered has long narrow valleys in which the other approach will tend to get stuck in.
When addressing general multi-dimensional problems you have the choice of selecting this method or the Simplex method of Nelder and Mead (see Nelder and Mead). The advantage of this approach is that it has the ability to choose good initial directions in which to search for an extremum. This ability to select good directions means that problems such as getting stuck in long valleys of the object function are mitigated. It also means that this algorithm is almost surely faster than the Simplex method used in Nelder and Mead. However, it should be pointed out that this approach in general is more difficult and time consuming to set up and get running.
After this algorithm has be run it will exit when one of the following two conditions has been satisfied:
maxIterations is exceeded,
then TooManyMultiDimensionalIterationsException is thrown resulting in the algorithm
exiting.
| Exception Type | Condition |
|---|---|
| TooManyMultiDimensionalIterationsException | Thrown if a number of steps greater than maxIterations is necessary in order to obtain the desired tolerance. |
| InvalidMultiDimensionalFunctionException | Thrown if the user function returns invalid values like infinity or NaN. |
| MultiDimensionalException | Thrown if the delivered function does not implement MultiDimensionalFunction, or an interface which extends MultiDimensionalFunction. |
MultiDimensionalSolver Class | WebCab.COM.Math.Optimization.MultiDimensional Namespace