5.3.1. 二次规划建模

二次规划(Quadratic Programming, QP)问题可以用以下数学形式表示:

mincf+cTx+12xTQxs.t.lrAxur,lcxuc,
其中
  • xRn 是决策变量,

  • lcRnucRn 分别为 x 的下界和上界,

  • cfR 是目标函数中的常量,

  • cRn 是目标函数中的系数向量,

  • QRn×n 是目标函数中二次项的系数矩阵,

  • ARm×n 是约束矩阵,

  • lrRmurRm 分别为是约束的下界和上界。

使用 MindOpt 的步骤为:

  1. 创建优化模型;

  2. 输入优化问题并设置算法参数;

  3. 求解优化问题并获取解。

Note

MindOpt 仅存储中的约束矩阵 A 和二次矩阵 Q 中的 非零元;因此,使用时只需要输入 非零元 在约束矩阵中的 行列位置 (row/column index) 以及对应的 非零数值 (nonzero value)

5.3.1.1. 二次规划问题示例

在下文中,我们将考虑下列二次规划问题:

min1x0+1x1+1x2+1x3+1/2[x02+x12+x22+x32+x0x1]s.t.1x0+1x1+2x2+3x311x01x2+6x3=1
0x0100x10x20x3

我们将展示如何使用 MindOpt 建模和求解这个优化问题。二次规划与线性规划的区别在于二次项矩阵的输入。

对于二次项系数矩阵 Q,为了保证对称性,用户只需输入其下三角的部分, MindOpt 在求解器内部会乘以 1/2.

我们将分别给出不同编程语言下的示例,来展示如何使用 MindOpt 建模和求解这个优化问题。