Click or drag to resize
MinUnconMultiVar Class
Minimizes a multivariate function using a quasi-Newton method.
Inheritance Hierarchy
SystemObject
  Imsl.MathMinUnconMultiVar

Namespace: Imsl.Math
Assembly: ImslCS (in ImslCS.dll) Version: 6.5.2.0
Syntax
[SerializableAttribute]
public class MinUnconMultiVar

The MinUnconMultiVar type exposes the following members.

Constructors
  NameDescription
Public methodMinUnconMultiVar
Unconstrained minimum constructor for a function of n variables of type double.
Top
Methods
  NameDescription
Public methodComputeMin
Return the minimum point of a function of n variables of type double using a finite-difference gradient or using a user-supplied gradient.
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as a hash function for a particular type.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodSetGuess
Sets the initial guess of the minimum point of the input function.
Public methodSetXscale
Sets the diagonal scaling matrix for the variables.
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Properties
  NameDescription
Public propertyDigits
The number of good digits in the function.
Public propertyErrorStatus
The non-fatal error status.
Public propertyFscale
The function scaling value for scaling the gradient.
Public propertyGradientTolerance
The gradient tolerance used to compute the gradient.
Public propertyIhess
The Hessian initialization parameter.
Public propertyIterations
The number of iterations used to compute a minimum.
Public propertyMaximumStepsize
The maximum allowable stepsize to use.
Public propertyMaxIterations
The maximum number of iterations allowed.
Public propertyNumberOfProcessors
Perform the parallel calculations with the maximum possible number of processors set to NumberOfProcessors.
Public propertyParallel
Enable or disable performing MinUnconMultiVar.IFunction.F in parallel.
Public propertyStepTolerance
The scaled step tolerance to use when changing x.
Top
Remarks

Class MinUnconMultivar uses a quasi-Newton method to find the minimum of a function f(x) of n variables. The problem is stated as follows:

\mathop {\min }\limits_{x\; \in \;R^n } f\left
            ( x \right)

Given a starting point x_c, the search direction is computed according to the formula

d = -B^{-1} g_c

where B is a positive definite approximation of the Hessian, and g_c is the gradient evaluated at x_c
            . A line search is then used to find a new point

 x_n  = \,x_c  + \lambda d,\lambda  > 0

such that

f\left( {x_n } \right) \le f\left( {x_c } 
            \right) + \alpha g^T d,\,\,\,\, \alpha  \in \left( {0,\,0.5} \right)

Finally, the optimality condition {\rm{||g(x)|| }} \le 
            \varepsilon where \varepsilon is a gradient tolerance.

When optimality is not achieved, B is updated according to the BFGS formula

 B \leftarrow B - \frac{{Bss^T B}}{{s^T
            Bs}} + \frac{{yy^T }}{{y^T s}}

where s = x_n - x_c and y = g_n - g_c
            . Another search direction is then computed to begin the next iteration. For more details, see Dennis and Schnabel (1983, Appendix A).

In this implementation, the first stopping criterion for MinUnconMultivar occurs when the norm of the gradient is less than the given gradient tolerance property, GradientTolerance. The second stopping criterion for MinUnconMultivar occurs when the scaled distance between the last two steps is less than the step tolerance property, StepTolerance.

Since by default, a finite-difference method is used to estimate the gradient. An inaccurate estimate of the gradient may cause the algorithm to terminate at a noncritical point. Supply the gradient for a more accurate gradient evaluation (MinConMultiVar.IGradient).

See Also