Finds the location of a local extremum (i.e. minimum or maximum) of a differentiable multidimensional function using the Fletcher-Reeves algorithm.
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 is a conjugate gradient method which is generally much more efficient than the Steepest Descent (see DerivSteepestDescent) method.
This algorithm proceeds to find an extremum by applying at each step a unidimensional minimization algorithm, which is determined by the selection of a Bracketing (see BracketingAlgorithm) and Locate (see LocateAlgorithm) Algorithms. The accuracy of the Locate algorithm chosen will not effect the precision of the final results but only the speed with which it is found.
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