| solve.QP(quadprog) | R Documentation |
This routine implements the dual method of Goldfarb and Idnani (1982, 1983) for solving quadratic programming problems.
solve.QP (Dmat, dvec, Amat, bvec, meq=0, factorized=FALSE) solve.QP.compact(Dmat, dvec, Amat, Aind, bvec, meq=0, factorized=FALSE)
Dmat |
matrix appearing in the quadratic function to be minimized. |
dvec |
vector appearing in the quadratic function to be minimized. |
Amat |
For solve.QP():matrix defining the constraints under which we want to minimize the quadratic function.
For |
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 b0 (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. |
solution |
vector containing the solution of the quadratic programming problem. |
value |
scalar, the value of the quadratic function at the solution. |
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.
Matrix Inversion with solve.
# 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)
bvec <- c(-8,2,0)
Amat0 <- matrix(c(-4,-3,0, 2,1,0, 0,-2,1),3,3)
solve.QP(Dmat,dvec, Amat0, bvec=bvec)
# Now with solve.QP.compact :
#
Aind <- rbind(c(2,2,2),
c(1,1,2),
c(2,2,3))
Amat <- rbind(c(-4,2,-2),
c(-3,1, 1))
solve.QP.compact(Dmat,dvec,Amat,Aind,bvec=bvec)