繁体   English   中英

ILP - “变量是否等于另一个变量”

[英]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

如果您不知道xy中的哪一个是最小值,您可以通过添加一个取最小值的变量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 ,它是xy的最小值:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM