如何在 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 >= X
、M_y * y >= Y
和 x + y == 1
,其中 M_x 和 M_y 是常量,您设置的值不会不必要地绑定 X和 Y。这些约束不会将 X 和 Y 的值限制为 1,并且当 X > 0 时使 x = 1,当 Y > 0 时使 y = 1。
假设我有两个实数变量: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 >= X
、M_y * y >= Y
和 x + y == 1
,其中 M_x 和 M_y 是常量,您设置的值不会不必要地绑定 X和 Y。这些约束不会将 X 和 Y 的值限制为 1,并且当 X > 0 时使 x = 1,当 Y > 0 时使 y = 1。