Quadratic programming

Defines quadratic programming (QP), including quadratically-constrained programming (QCP), mixed integer quadratic programming (MIQP), and mixed-integer quadratically-constrained programming (MIQCP).

OPL supports quadratic programming (QP), including quadratically-constrained programming (QCP), mixed integer quadratic programming (MIQP), and mixed-integer quadratically-constrained programming (MIQCP).

Conventionally, a quadratic program is formulated this way:

Minimize 1/2 xTQx + cTx

subject to Ax ~ b

with these bounds lb ≤ x ≤ ub

where the relation ~ may be any combination of equal to, less than or equal to, greater than or equal to, or range constraints. As in other problem formulations, l indicates lower and u upper bounds. Q is a matrix of objective function coefficients. That is, the elements Q jj are the coefficients of the quadratic terms xj^ 2, and the elements Q ij and Q ji are summed to make the coefficient of the term x i x j.

Here is an example of quadratic objective problem:

A quadratic objective problem (qpex1.mod)

dvar float x[0..2] in 0..40;


maximize
  x[0] + 2 * x[1] + 3 * x[2]
  - 0.5 * 
    ( 33*x[0]^2 + 22*x[1]^2 + 11*x[2]^2 
    - 12*x[0]*x[1] - 23*x[1]*x[2] );

subject to {
  ct1:  - x[0] +     x[1] + x[2] <= 20;
  ct2:    x[0] - 3 * x[1] + x[2] <= 30;
}

Here is an example of quadratic constraint problem.

A quadratic constraint problem (qcpex1.mod)

dvar float x[0..2] in 0..40;


maximize
  x[0] + 2 * x[1] + 3 * x[2]
  - 0.5 * ( 33 * x[0]^2 + 22 * x[1]^2 + 11 * x[2]^2 
          - 12 * x[0] * x[1] - 23 *x [1] * x[2] );

subject to {
  ct1:  - x[0] +     x[1] + x[2] <= 20;
  ct2:    x[0] - 3 * x[1] + x[2] <= 30;
  ct3:    x[0]^2 + x[1]^2 + x[2]^2 <= 1.0;
}

Quadratic programming is described in detail in the IBM ILOG CPLEX Optimizer User’s Manual.

Refer to the sections:

  • Solving Problems with a Quadratic Objective (QP)

  • Solving Problems with Quadratic Constraints (QCP)

  • Solving Mixed Integer Programming Problems (MIP)

for information on MIQP and MIQCP.