【问题标题】:Quadratic Programming CPLEX二次规划 CPLEX
【发布时间】:2016-05-15 23:20:19
【问题描述】:

我正在尝试使用 CPLEX 的 Python API 实现一个简单的二次程序。随 CPLEX 提供的样本文件 qpex1 讨论了这一点。如 qpex.lp 中所述,问题是

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

这个问题在 python 中实现时,接收一个矩阵 qmat,它实现了目标函数的二次部分。矩阵是:

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)

谁能解释一下这个矩阵的结构?正在使用的数据结构中有哪些部分?有哪些组件等等。

【问题讨论】:

    标签: python cplex quadratic-programming


    【解决方案1】:

    第一个列表是索引的集合,第二个列表是对应值的集合,所以qmat矩阵是:

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

    结果:

             | -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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多