statBeginner
statBeginner

Reputation: 849

Quadratic Programming CPLEX

I am trying to implement a simple quadratic program using CPLEX's Python API. The sample file qpex1 provided with CPLEX discusses this. The problem, as mentioned in qpex.lp is

Maximize
 obj: x1 + 2 x2 + 3 x3 + [ - 33 x1 ^2 + 12 x1 * x2 - 22 x2 ^2 + 23 x2 * x3
 - 11 x3 ^2 ] / 2
Subject To
 c1: - x1 + x2 + x3 <= 20
 c2: x1 - 3 x2 + x3 <= 30
Bounds
0 <= x1 <= 40
End

The problem, while being implemented in python, receives a matrix qmat which implements the quadratic portion of the objective function. The matrix is :

qmat = [[[0, 1], [-33.0, 6.0]],
        [[0, 1, 2], [6.0, -22.0, 11.5]],
        [[1, 2], [11.5, -11.0]]]

p.objective.set_quadratic(qmat)

Can someone explain the structure of this matrix? What are the parts in the data structure that is being used? What are the components and so on.

Upvotes: 3

Views: 2086

Answers (1)

serge_k
serge_k

Reputation: 1772

First list is the set of indeces, the second list the set of the corresponding values, so the qmat matrix is:

-33   6   0
  6  -22  11.5
  0  11.5 -11

that results in:

         | -33   6   0    | x1
x1 x2 x3 |   6  -22  11.5 | x2 = - 33 x1 ^2 + 12 x1 * x2 - 22 x2 ^2 + 23 x2 * x3 - 11 x3 ^2
         |   0  11.5 -11  | x3

Upvotes: 6

Related Questions