我必须在线性程序中表达一个AND条件。如果布尔变量x和y都取值1,则布尔变量z取值1。否则,z的值为0。如何在线性程序中编写?
在纯线性程序中,布尔表达式是不可能的。
如果您在一个(混合(整数程序中,并且x、y、z都是二进制变量,那么您可以通过以下方式实现and。
- z>=x+y-1
- z<=x
- z<=y
这里,如果x=y=1,第一个确保z=1,如果两个力中的任何一个不为1,最后两个力z=0。
正如@Erwin Kalvelagen在评论中指出的那样,这比使用2z <= x+y
的配方更轻松。