![数学建模与数学规划:方法、案例及编程实战(Python+COPT/Gurobi实现)](https://wfqqreader-1252317822.image.myqcloud.com/cover/577/52521577/b_52521577.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2.3 逻辑或
考虑两个命题P和Q,则二者的逻辑或关系可表示为P∨Q。当命题P、Q至少有一个为真时,P∨Q为真,其他情况下P∨Q为假。引入3个0-1变量x1、x2和y,分别表示命题P、Q和P∨Q的真值,则逻辑或运算可以被等价地转换为以下约束。
![](https://epubservercos.yuewen.com/0DD641/31155568907421606/epubprivate/OEBPS/Images/txt003_8.jpg?sign=1739263493-0Jff78RgVoq82YdlF5vnVzxub9tHORjv-0-cf49b0fa61cc406f971288614f3f8429)
下面使用Python分别调用COPT和Gurobi来验证上述转换的等价性。这里仅展示Python调用COPT的完整代码,Python调用Gurobi的实现方法与COPT基本一致,完整代码见本书配套电子资源2-1。
![](https://epubservercos.yuewen.com/0DD641/31155568907421606/epubprivate/OEBPS/Images/txt003_9.jpg?sign=1739263493-sLnRknSbD8Y7dMQzGknj7RMn1IJq7kcD-0-f236e5a431dd86cd3f169fc6f8e2664e)
求解结果如下。
![](https://epubservercos.yuewen.com/0DD641/31155568907421606/epubprivate/OEBPS/Images/txt003_10.jpg?sign=1739263493-7l1h5HdxYyTBrzKPKYKhT7AqBdhVUUsW-0-0109677b38c6c8f313143350fd775bb2)
同样地,COPT和Gurobi也都提供了内置的逻辑或约束的添加方法,对应的函数接口均为addGenConstrOr(y,[x1,x2],name="")。若要使用上述函数添加逻辑或约束y=(x1∨x2),相应的代码如下。
![](https://epubservercos.yuewen.com/0DD641/31155568907421606/epubprivate/OEBPS/Images/txt003_11.jpg?sign=1739263493-i5L2gii7EKw8LOdda8KBNyYFshwIipOP-0-db147e36a8171bb22bcd629acf16f686)
经过验证,直接使用函数addGenConstrOr进行建模的结果与使用式(2.8)~式(2.11)建模的结果完全相同。
进一步地,考虑N个命题的逻辑或运算。引入N个0-1变量xi(∀i=1,…,N),表示对应命题的真值。引入0-1变量y,表示N个命题的逻辑或运算的真值,即y=(x1∨x2∨…∨xN)。y的真值取值情况可用以下约束等价描述。
![](https://epubservercos.yuewen.com/0DD641/31155568907421606/epubprivate/OEBPS/Images/txt003_12.jpg?sign=1739263493-CPPMJ3Dv96m2GMnAFZYGl3lrQMfrmlmR-0-e91f1dda0d2370fa600eb3b4763576bb)