Description

Solves quadratic programming problems with linear and box constraints.

Usage

 1 2 quadprog(C, d, A = NULL, b = NULL, Aeq = NULL, beq = NULL, lb = NULL, ub = NULL)

Arguments

 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.

Details

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.

Value

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.

Note

This function is wrapping the active set quadratic solver in the quadprog package: quadprog::solve.QP, combined with a more MATLAB-like API interface.

References

Nocedal, J., and St. J. Wright (2006). Numerical Optimization. Second Edition, Springer Series in Operations Research, New York.

Examples

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ## 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 #  0.4761905 1.0476190 2.0952381 # \$fval #  -2.380952 # \$eflag #  1 Aeq <- c(3, 2, 1); beq <- 1 quadprog(C, d, A, b, Aeq, beq) # \$xmin #  1.4 -0.8 -1.6 # \$fval #  6.58 # \$eflag #  1 quadprog(C, d, A, b, lb = 0, ub = 1.5) # \$xmin #  0.625 0.750 1.500 # \$fval #  -2.148438 # \$eflag #  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 #  0.6666667 1.3333333 # \$fval #  -8.222222 # \$eflag #  1

Example output

\$xmin
 0.4761905 1.0476190 2.0952381

\$fval
 -2.380952

\$eflag
 1

\$xmin
  1.4 -0.8 -1.6

\$fval
 6.58

\$eflag
 1

\$xmin
 0.625 0.750 1.500

\$fval
 -2.148438

\$eflag
 1

\$xmin
 0.6666667 1.3333333

\$fval
 -8.222222

\$eflag
 1

pracma documentation built on Dec. 11, 2021, 9:57 a.m.