quadprog (version 1.4-12)

solve.QP: 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:
  • solutionvector containing the solution of the quadratic programming problem.
  • valuescalar, the value of the quadratic function at the solution
  • unconstrained.solutionvector containing the unconstrained minimizer of the quadratic function.
  • iterationsvector 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.
  • iactvector with the indices of the active constraints at the solution.

References

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

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

See Also

solve.QP.compact

Examples

Run this code
##
## 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)

Run the code above in your browser using DataCamp Workspace