线性化 MILP 约束中的 if 语句

Linearize if statement in MILP constraint

我正在尝试解决一个优化问题,其中一个约束是: x*y=0,其中x和y是决策变量,只有x或y可以为正。换句话说,如果 x!=0 则 y=0,如果 y!=0 则 x=0。 请帮助

  • 假设:xy 是非负的

  • 推断 xy

    的上限 UB_xUB_y
  • 引入新的布尔变量b

  • 添加约束:

    x <= (1-b) * UB_x
    y <= b * UB_y