Functions to solve Quadratic Programming Problems.

Functions to solve Quadratic Programming Problems. [R logo]

Help pages for package `quadprog' version 1.4-10

solve.QP | Solve a Quadratic Programming Problem
solve.QP.compact | Solve a Quadratic Programming Problem


Solve a Quadratic Programming Problem

Description

This routine implements the dual method of Goldfarb and Idnani (1982, 1983) for solving quadratic programming problems of the form min(-d^T b + 1/2 b^T D b) with the constraints A^T b >= b_0.

Usage

solve.QP(Dmat, dvec, Amat, bvec, meq=0, factorized=FALSE)

Arguments

Dmat | matrix appearing in the quadratic function to be minimized.
dvec | vector appearing in the quadratic function to be minimized.
Amat | matrix defining the constraints under which we want to minimize the quadratic function.
bvec | vector holding the values of b_0 (defaults to zero).
meq | the first meq constraints are treated as equality constraints, all further as inequality constraints (defaults to 0).
factorized | logical flag: if TRUE, then we are passing R^(-1) (where D = R^T R) instead of the matrix D in the argument Dmat.

Value

a list with the following components:

solution | vector containing the solution of the quadratic programming problem.
value | scalar, the value of the quadratic function at the solution
unconstrained.solution | vector containing the unconstrained minimizer of the quadratic function.
iterations | vector of length 2, the first component contains the number of iterations the algorithm needed, the second indicates how often constraints became inactive after becoming active first. vector with the indices of the active constraints at the solution.

References

Goldfarb, D. and Idnani, A. (1982). Dual and Primal-Dual Methods for Solving Strictly Convex Quadratic Programs. In Numerical Analysis J.P. Hennart, ed. Springer-Verlag, Berlin. pp. 226-239.

Goldfarb, D. and Idnani, A. (1983). A numerically stable dual method for solving strictly convex quadratic programs. Mathematical Programming 27, 1-33.

See Also

solve.QP.compact

Examples

#
# Assume we want to minimize: -(0 5 0) %*% b + 1/2 b^T b
# under the constraints:      A^T b >= b0
# with b0 = (-8,2,0)^T
# and      (-4  2  0)
#      A = (-3  1 -2)
#          ( 0  0  1)
# we can use solve.QP as follows:
#
Dmat       <- matrix(0,3,3)
diag(Dmat) <- 1
dvec       <- c(0,5,0)
Amat       <- matrix(c(-4,-3,0,2,1,0,0,-2,1),3,3)
bvec       <- c(-8,2,0)
solve.QP(Dmat,dvec,Amat,bvec=bvec)
[Package quadprog version 1.4-10 Index]


Solve a Quadratic Programming Problem

Description

This routine implements the dual method of Goldfarb and Idnani (1982, 1983) for solving quadratic programming problems of the form min(-d^T b + 1/2 b^T D b) with the constraints A^T b >= b_0.

Usage

solve.QP.compact(Dmat, dvec, Amat, Aind, bvec, meq=0, factorized=FALSE)

Arguments

Dmat | matrix appearing in the quadratic function to be minimized.
dvec | vector appearing in the quadratic function to be minimized.
Amat | matrix containing the non-zero elements of the matrix A that defines the constraints. If m_i denotes the number of non-zero elements in the i-th column of A then the first m_i entries of the i-th column of Amat hold these non-zero elements. (If maxmi denotes the maximum of all m_i, then each column of Amat may have arbitrary elements from row m_i+1 to row maxmi in the i-th column.)
Aind | matrix of integers. The first element of each column gives the number of non-zero elements in the corresponding column of the matrix A. The following entries in each column contain the indexes of the rows in which these non-zero elements are.
bvec | vector holding the values of b_0 (defaults to zero).
meq | the first meq constraints are treated as equality constraints, all further as inequality constraints (defaults to 0).
factorized | logical flag: if TRUE, then we are passing R^(-1) (where D = R^T R) instead of the matrix D in the argument Dmat.

Value

a list with the following components:

solution | vector containing the solution of the quadratic programming problem.
value | scalar, the value of the quadratic function at the solution
unconstrained.solution | vector containing the unconstrained minimizer of the quadratic function.
iterations | vector of length 2, the first component contains the number of iterations the algorithm needed, the second indicates how often constraints became inactive after becoming active first. vector with the indices of the active constraints at the solution.

References

Goldfarb, D. and Idnani, A. (1982). Dual and Primal-Dual Methods for Solving Strictly Convex Quadratic Programs. In Numerical Analysis J.P. Hennart, ed. Springer-Verlag, Berlin. pp. 226-239.

Goldfarb, D. and Idnani, A. (1983). A numerically stable dual method for solving strictly convex quadratic programs. Mathematical Programming 27, 1-33.

See Also

solve.QP

Examples

#
# Assume we want to minimize: -(0 5 0) %*% b + 1/2 b^T b
# under the constraints:      A^T b >= b0
# with b0 = (-8,2,0)^T
# and      (-4  2  0)
#      A = (-3  1 -2)
#          ( 0  0  1)
# we can use solve.QP.compact as follows:
#
Dmat       <- matrix(0,3,3)
diag(Dmat) <- 1
dvec       <- c(0,5,0)
Aind       <- rbind(c(2,2,2),c(1,1,2),c(2,2,3))
Amat       <- rbind(c(-4,2,-2),c(-3,1,1))
bvec       <- c(-8,2,0)
solve.QP.compact(Dmat,dvec,Amat,Aind,bvec=bvec)
[Package quadprog version 1.4-10 Index]