首页 > 解决方案 > 如何在整数编程中对复杂的 if-then 语句进行建模

问题描述

我正在尝试为 MIP 建模 if-then 条件。MIP 看起来像

最大化 SUM_i H(i) - C

英石,

  SUM_j x(i, j) <= D(i) and 

  SUM_i x(i, j) <= S(j)

其中 H(i) = 1 如果 SUM_j x(i, j) = D(i),否则为 0

和 C = SUM_i,j(如果 x(i, j) > 1 则为 1,否则为 0)

我知道如何在 MIP 中模拟一个简单的 if-then 条件。但无法模拟这个。

标签: modelinglinear-programming

解决方案


我们可以通过在需求方程中引入一个松弛变量v来处理这个问题,然后说

h(i)=1 => v(i)=0

这个含义很容易实现为不等式:

v(i) <= (1-h(i))*D(i)

完整的模型可能如下所示:

在此处输入图像描述


推荐阅读