Click or drag to resize
BoundedLeastSquares Class
Solves a nonlinear least-squares problem subject to bounds on the variables using a modified Levenberg-Marquardt algorithm.
Inheritance Hierarchy
SystemObject
  Imsl.MathBoundedLeastSquares

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

The BoundedLeastSquares type exposes the following members.

Constructors
  NameDescription
Public methodBoundedLeastSquares
Constructor for BoundedLeastSquares.
Top
Methods
  NameDescription
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 methodGetJacobianSolution
Returns the Jacobian at the approximate solution.
Public methodGetResiduals
Returns the residuals at the approximate solution.
Public methodGetSolution
Returns the solution.
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 methodSetFscale
Sets the diagonal scaling matrix for the functions.
Public methodSetGuess
Sets the initial guess of the solution.
Public methodSetInternalScale
The internal variable scaling option.
Public methodSetXscale
The scaling vector for the variables.
Public methodSolve
Solves a nonlinear least-squares problem subject to bounds on the variables using a modified Levenberg-Marquardt algorithm.
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Properties
  NameDescription
Public propertyAbsoluteTolerance
The absolute function tolerance.
Public propertyDigits
The number of good digits in the function.
Public propertyGradientTolerance
The scaled gradient tolerance.
Public propertyMaximumFunctionEvals
The maximum number of function evaluations.
Public propertyMaximumIterations
The maximum number of iterations.
Public propertyMaximumJacobianEvals
The maximum number of Jacobian evaluations.
Public propertyMaximumStepsize
The maximum allowable step size.
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 propertyRelativeTolerance
The relative function tolerance.
Public propertyScaledStepTolerance
The scaled step tolerance.
Public propertyTrustRegion
The size of initial trust region radius.
Top
Remarks

Class BoundedLeastSquares uses a modified Levenberg-Marquardt method and an active set strategy to solve nonlinear least-squares problems subject to simple bounds on the variables. The problem is stated as follows:

 min {1 \over 2}F\left( x \right)^T F\left( x 
            \right) = {1 \over 2}\sum\limits_{i = 1}^m {f_i } \left( x \right)^2
subject to
\,l \le x \le u
here {\rm{m }} \ge {\rm{ n}}, {\it F}: 
            {\rm{R}}^n  \to {\rm{R}}^m, and f_i(x) is the i-th component function of F(x). From a given starting point, an active set IA, which contains the indices of the variables at their bounds, is built. A variable is called a "free variable" if it is not in the active set. The routine then computes the search direction for the free variables according to the formula
d = - \left( {J^T J + \mu I} \right)^{ - 1} 
            J^T F
where \mu is the Levenberg-Marquardt parameter, F = F(x), and J is the Jacobian with respect to the free variables. The search direction for the variables in IA is set to zero. The trust region approach discussed by Dennis and Schnabel (1983) is used to find the new point. Finally, the optimality conditions are checked. The conditions are:

\left\| {g\left( {x_i{} } \right)} \right\| 
            \le \varepsilon ,l_i  \lt x_i \lt u_i
g\left( {x_i } \right) \lt 0,x_i  = u_i
g\left( {x_i } \right) \gt 0,x_i  = l_i
where \varepsilon is a gradient tolerance. This process is repeated until the optimality criterion is achieved.

The active set is changed only when a free variable hits its bounds during an iteration or the optimality condition is met for the free variables but not for all variables in IA, the active set. In the latter case, a variable that violates the optimality condition will be dropped out of IA. For more details on the Levenberg-Marquardt method, see Levenberg (1944) or Marquardt (1963). For more detail on the active set strategy, see Gill and Murray (1976).

See Also