quadprog | R Documentation |
Solves quadratic programming problems with linear and box constraints.
quadprog(C, d, A = NULL, b = NULL,
Aeq = NULL, beq = NULL, lb = NULL, ub = NULL)
C |
symmetric matrix, representing the quadratic term. |
d |
vector, representing the linear term. |
A |
matrix, represents the linear constraint coefficients. |
b |
vector, constant vector in the constraints. |
Aeq |
matrix, linear equality constraint coefficients. |
beq |
vector, constant equality constraint vector. |
lb |
elementwise lower bounds. |
ub |
elementwise upper bounds. |
Finds a minimum for the quadratic programming problem specified as:
min 1/2 x'Cx + d'x
such that the following constraints are satisfied:
A x <= b
Aeq x = beq
lb <= x <= ub
The matrix should be symmetric and positive definite, in which case the solution is unique, indicated when the exit flag is 1.
For more information, see ?solve.QP
.
Returns a list with components
xmin |
minimum solution, subject to all bounds and constraints. |
fval |
value of the target expression at the arg minimum. |
eflag |
exit flag. |
This function is wrapping the active set quadratic solver in the
quadprog
package: quadprog::solve.QP
, combined with
a more MATLAB-like API interface.
Nocedal, J., and St. J. Wright (2006). Numerical Optimization. Second Edition, Springer Series in Operations Research, New York.
lsqlincon
, quadprog::solve.QP
## Example in ?solve.QP
# Assume we want to minimize: 1/2 x^T x - (0 5 0) %*% x
# under the constraints: A x <= b
# with b = (8,-2, 0)
# and ( 4 3 0)
# A = (-2 -1 0)
# ( 0 2,-1)
# and possibly equality constraint 3x1 + 2x2 + x3 = 1
# or upper bound c(1.5, 1.5, 1.5).
C <- diag(1, 3); d <- -c(0, 5, 0)
A <- matrix(c(4,3,0, -2,-1,0, 0,2,-1), 3, 3, byrow=TRUE)
b <- c(8, -2, 0)
quadprog(C, d, A, b)
# $xmin
# [1] 0.4761905 1.0476190 2.0952381
# $fval
# [1] -2.380952
# $eflag
# [1] 1
Aeq <- c(3, 2, 1); beq <- 1
quadprog(C, d, A, b, Aeq, beq)
# $xmin
# [1] 1.4 -0.8 -1.6
# $fval
# [1] 6.58
# $eflag
# [1] 1
quadprog(C, d, A, b, lb = 0, ub = 1.5)
# $xmin
# [1] 0.625 0.750 1.500
# $fval
# [1] -2.148438
# $eflag
# [1] 1
## Example help(quadprog)
C <- matrix(c(1, -1, -1, 2), 2, 2)
d <- c(-2, -6)
A <- matrix(c(1,1, -1,2, 2,1), 3, 2, byrow=TRUE)
b <- c(2, 2, 3)
lb <- c(0, 0)
quadprog(C, d, A, b, lb=lb)
# $xmin
# [1] 0.6666667 1.3333333
# $fval
# [1] -8.222222
# $eflag
# [1] 1
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.