如何在 PYOMO 中分配虚拟二进制变量

How to assign dummy binary variables in PYOMO

假设我有两个实数变量:X & Y 和两个二进制变量 x & y。

我想添加以下约束 pyomo:

when X>0 x--->1 else x-->0
when Y>0 y--->1 else y-->0
and x+y==1

我的方法是 缺点1: x>=X 缺点2: y>=Y 缺点3: x+y==1

但上面的方法似乎不起作用,x 和 y 的值是随机的。

你的前两个条件需要大 M 约束。你可以试试

M_x * x >= XM_y * y >= Yx + y == 1,其中 M_x 和 M_y 是常量,您设置的值不会不必要地绑定 X和 Y。这些约束不会将 X 和 Y 的值限制为 1,并且当 X > 0 时使 x = 1,当 Y > 0 时使 y = 1。