Solves a nonlinear least-squares problem subject to bounds on the variables using a modified Levenberg-Marquardt algorithm.

Namespace: Imsl.Math
Assembly: ImslCS (in ImslCS.dll) Version: 6.5.0.0

Syntax

C#
[SerializableAttribute]
public class BoundedLeastSquares
Visual Basic (Declaration)
<SerializableAttribute> _
Public Class BoundedLeastSquares
Visual C++
[SerializableAttribute]
public ref class BoundedLeastSquares

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).

Inheritance Hierarchy

System..::.Object
Imsl.Math..::.BoundedLeastSquares

See Also