[英]ILP - "Is variable equal to another variable"
在 ILP 中,给定两个变量 x 和 y,是否可以定义变量 z 其中
z = (x==y)?
意思是,如果 x 等于 y,则 z = 1。否则,z = 0。
x 和 y 是介于 (1, M) 之间的 integer 个变量。
如果您知道x <= y
,那么您可以z in {0,1}, x+Mz >= y, x+z <= y
。
如果您不知道x
和y
中的哪一个是最小值,您可以通过添加一个取最小值的变量minxy
来做更多的工作。 您需要引入另一个新变量(我称之为a
)来执行此操作。
引入一个变量a
如果 x<=y 则为 0,如果 y<=x 则为 1(如果 x==y 则它可以是 0 或 1):
a in {0,1}, x-y <= Ma, y-x <= M(1-a)
引入一个变量minxy
,它是x
和y
的最小值:
minxy <= x
minxy <= y
minxy >= x - Ma
minxy >= y - M(1-a)
然后你可以定义你的z
:
minxy + Mz >= x + y - minxy
minxy + z <= x + y - minxy
(注意max(x,y)
是x + y - minxy
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.