Finds the location of a local extremum (i.e. minimum or maximum) of a differentiable multidimensional function using the method of Steepest Descent.
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 (an N-dimensional vector) where the function has a local extremum.
This algorithm proceeds by taking a series of steps along the steepest downhill direction which we are able to evaluate because we are able to evaluate the functions gradient. After each steepest downhill step we imply a unidimensional minimization algorithm, which is determined by the bracketing algorithm (i.e. BracketingAlgorithm) and Locate Algorithm (i.e. LocateAlgorithm) chosen.
Remark: Since the steepest downhill steps are in a sense ideal, the locate algorithm used does not need to be particularly precise. Moreover, the precision of the Locate algorithm will only influence the speed at which the extremum is found and not the accuracy of the final result.
It is recommended that you use AccelDerivBracketing and CubicDerivLocate.
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 Gradient or an interface which extends Gradient. |
MultiDimensionalSolver Class | WebCab.COM.Math.Optimization.MultiDimensional Namespace