线性程序中的布尔表达式



我必须在线性程序中表达一个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的配方更轻松。

最新更新