【问题标题】:MIP/LP - Modelling "if b=1 then x=y" constraintMIP/LP - 建模“如果 b=1 则 x=y”约束
【发布时间】:2017-10-27 13:26:34
【问题描述】:

我有一个混合整数规划 (MIP) 问题,目前在 Python 的 PuLP 库中建模。然而,我的问题非常笼统,语法在这里不起作用。

我想为我的模型添加一个约束,如下所示:

if b=1 then x=y

变量b 是一个取值为0 或1 的二进制变量。xy 是代表当前库存水平的变量。 x 作为连续变量,y 作为整数变量。

我知道约束只能用以下格式建模:

a*x+c <= y    # a, c are constants, x, y variables

我希望有一些解决方法可以对上述if b then x equals y 约束进行建模。

到目前为止,这是我的方法:

b*y <= x
y >= x*b   # works in theory, but multiplication of 2 variables is not allowed

对于 2 个二进制变量 x 和 y,以下是正确的:

M*y > x    # represents: if x then y (M is a sufficient large constant)

我想解决方案涉及一个大的 M 常数,甚至可能是更多的辅助变量。

一点背景知识:我想对库存问题建模,库存水平是连续的。然而,订单决定应该只能是整数。因此,我需要用浮点数对库存水平进行建模。在顺序点 (b==1) 但整数。

我希望有人可以在这里提供帮助,即使这是理论上的,而不是直接与编码相关的。对可能有帮助的进一步资源的提示也非常感谢。

【问题讨论】:

    标签: constraints mathematical-optimization linear-programming mixed-integer-programming


    【解决方案1】:
    b=1 => x=y
    

    可以建模为:

    y-M(1-b) <= x <= y+M(1-b) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多