如何在MILP约束上添加整数割以找到替代的最佳解决方案?

时间:2018-07-02 09:27:39

标签: matlab mathematical-optimization algebra mixed-integer-programming

我正在用MATLAB中的二进制变量来解决MILP优化问题,在该问题中,我想通过排除以前的解决方案找到多个最优解决方案。因此,我知道我必须在模型中包括以下整数切割作为约束:

总和{y_j:y'_j = 1} +总和{(1-y_j):y'_j = 0} <= M-1

其中y_j是我的二进制变量向量。 M是二进制变量的总数(j从1到M循环),而y'_j是先前解决方案中我的二进制变量的值。

在MILP框架中,约束通过矩阵A包括:A * x <= b,其中x是二进制变量的向量,b是已知系数的RHS。

然后,我的问题是我无法将上面的约束“转换”为这种MILP格式。

非常感谢您的帮助,

豪尔赫

1 个答案:

答案 0 :(得分:0)

  1. 创建全零的行
  2. 如果y * [j] = 1(y [j]的最佳值),则在与y [j]对应的列中放入1.0。
  3. 如果y * [j] = 0,则在相应列中添加-1.0
  4. 将rhs设置为y * [j] = 1减一。