IMSL C# Numerical Library

BoundedLeastSquares Class

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

For a list of all members of this type, see BoundedLeastSquares Members.

System.Object
   Imsl.Math.BoundedLeastSquares

public class BoundedLeastSquares

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

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

Requirements

Namespace: Imsl.Math

Assembly: ImslCS (in ImslCS.dll)

See Also

BoundedLeastSquares Members | Imsl.Math Namespace | Example 1 | Example 2