MinConGenLin Class |
Namespace: Imsl.Math
The MinConGenLin type exposes the following members.
Name | Description | |
---|---|---|
![]() | MinConGenLin |
Constructor for MinConGenLin.
|
Name | Description | |
---|---|---|
![]() | Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
![]() | GetFinalActiveConstraints |
Returns the indices of the final active constraints.
|
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetLagrangeMultiplierEstimate |
Returns the Lagrange multiplier estimates of the final active
constraints.
|
![]() | GetSolution |
Returns the computed solution.
|
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | SetGuess |
Sets an initial guess of the solution.
|
![]() | Solve |
Minimizes a general objective function subject to linear
equality/inequality constraints.
|
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
Name | Description | |
---|---|---|
![]() | FinalActiveConstraintsNum |
Returns the final number of active constraints.
|
![]() | NumberOfProcessors |
Perform the parallel calculations with the maximum possible number of
processors set to NumberOfProcessors.
|
![]() | ObjectiveValue |
Returns the value of the objective function.
|
![]() | Parallel |
Enable or disable performing MinConGenLin.IFunctionn.F in parallel.
|
![]() | Tolerance |
The nonnegative tolerance on the first order conditions at the
calculated solution.
|
The class MinConGenLin is based on M.J.D. Powell's TOLMIN, which solves linearly constrained optimization problems, i.e., problems of the form
subject to
given the vectors ,
,
, and
and the matrices
and
.
The algorithm starts by checking the equality constraints for inconsistency
and redundancy. If the equality constraints are consistent, the method will
revise , the initial guess, to satisfy
Next, is adjusted to satisfy the simple bounds
and inequality constraints. This is done by solving a sequence of quadratic
programming subproblems to minimize the sum of the constraint or bound
violations.
Now, for each iteration with a feasible , let
be the set of indices of inequality constraints
that have small residuals. Here, the simple bounds are treated as inequality
constraints. Let
be the set of indices of active
constraints. The following quadratic programming problem
subject to
is solved to get where
is a row vector representing either a constraint
in
or
or a bound
constraint on x. In the latter case, the
for the bound constraint
and
for the constraint
. Here,
is a
vector with 1 as the i-th component, and zeros
elsewhere. Variables
are the Lagrange
multipliers, and
is a positive definite
approximation to the second derivative
.
After the search direction is obtained, a line
search is performed to locate a better point. The new point
has to satisfy the conditions
and
The main idea in forming the set is that, if
any of the equality constraints restricts the step-length
, then its index is not in
. Therefore, small steps are likely to be avoided.
Finally, the second derivative approximation , is
updated by the BFGS formula, if the condition
holds. Let , and start
another iteration.
The iteration repeats until the stopping criterion
is satisfied. Here is the supplied tolerance.
For more details, see Powell (1988, 1989).