IMSL_QUADPROG

Syntax | Return Value | Arguments | Keywords | Discussion | Example | Errors | Version History

The IMSL_QUADPROG function solves a quadratic programming (QP) problem subject to linear equality or inequality constraints.

Note
This routine requires an IDL Advanced Math and Stats license. For more information, contact your ITT Visual Information Solutions sales or technical support representative.

Syntax

Result = IMSL_QUADPROG(a, b, g, h [, DIAG=variable] [, /DOUBLE] [, DUAL=variable] [, MEQ=value] [, OBJ=variable])

Return Value

The solution x of the QP problem.

Arguments

a

Two-dimensional matrix containing the linear constraints.

b

One-dimensional matrix of the right-hand sides of the linear constraints.

g

One-dimensional array of the coefficients of the linear term of the objective function.

h

Two-dimensional array of size N_ELEMENTS(g) x N_ELEMENTS(g) containing the Hessian matrix of the objective function. It must be symmetric positive definite. If h is not positive definite, the algorithm attempts to solve the QP problem with h replaced by h + Diag*I, such that h + Diag*I is positive definite.

Keywords

DIAG

Name of the variable into which the scalar, equal to the multiple of the identity matrix added to h to give a positive definite matrix, is stored.

DOUBLE

If present and nonzero, double precision is used.

DUAL

Name of the variable into which an array with N_ELEMENTS(g) elements, containing the Lagrange multiplier estimates, is stored.

MEQ

Number of linear equality constraints. If MEQ is used, then the equality constraints are located at a(i, *) for i = 0, ..., Meq – 1.
Default: MEQ = N_ELEMENTS(a(*, 0)) n; i.e., all constraints are equality constraints.

OBJ

Name of variable into which optimal object function found is stored.

Discussion

The IMSL_QUADPROG function is based on M.J.D. Powell's implementation of the Goldfarb and Idnani dual quadratic programming (QP) algorithm for convex QP problems subject to general linear equality/inequality constraints (Goldfarb and Idnani 1983). That is, problems of the form:

IMSL_QUADPROG-38.jpg

subject to:

IMSL_QUADPROG-39.jpg

given the vectors b0, b1, and g, and the matrices H, A0, and A1. Matrix H is required to be positive definite. In this case, a unique x solves the problem, or the constraints are inconsistent. If H is not positive definite, a positive definite perturbation of H is used in place of H. For more details, see Powell (1983, 1985).

If a perturbation of H, H + αI, is used in the QP problem, H + αI also should be used in the definition of the Lagrange multipliers.

Example

In this example, the QP problem:

min f(x) = –x20 + x21 + x22 + x23 + x24 – 2x1x2 – 2x3x4 –2x0

subject to:

x0 + x1 + x2 + x3 + x4 = 5

x2 – 2x3 – 2x4 = –3

is solved.

RM, a, 2, 5 
; Define the coefficient matrix A. 
row 0: 1 1 1  1  1 
row 1: 0 0 1 -2 -2 
h = [[2,  0,  0,  0,  0], [0,  2, -2,  0,  0], $ 
   [0, -2,  2,  0,  0], [0,  0,  0,  2, -2], $ 
   [0,  0,  0, -2,  2]] 
; Define the Hessian matrix of the objective function. Notice 
; that since h is symmetric, the array concatenation operators 
; "[ ]" are used to define it. 
b = [5, -3] 
; Define b. 
g = [ -2, 0, 0, 0, 0] 
; Define g. 
x = IMSL_QUADPROG(a, b, g, h) 
; Call IMSL_QUADPROG. 
PM, x 
; Output solution. 
Solution: 
         1.00000 
         1.00000 
         1.00000 
         1.00000 
         1.00000 

Errors

Warning Errors

MATH_NO_MORE_PROGRESS—Due to the effect of computer rounding error, a change in the variables fails to improve the objective function value. Usually, the solution is close to optimum.

Fatal Errors

MATH_SYSTEM_INCONSISTENT—System of equations is inconsistent. There is no solution.

Version History

6.4

Introduced