You need to enable JavaScript to run this app. PySCIPOpt逻辑约束及model.addConsOr/addConsAnd用法示例咨询
优惠活动
大模型
产品
解决方案
定价
更多

PySCIPOpt逻辑约束及model.addConsOr/addConsAnd用法示例咨询

PySCIPOpt 中addConsOr与addConsAnd的使用说明

注:两类逻辑约束的操作对象均为二进制(0-1)布尔变量,其中1代表逻辑真,0代表逻辑假。

1. addConsAnd 逻辑与约束

逻辑与的运算规则:所有输入变量为真时,结果才为真,否则为假。
调用语法为:model.addConsAnd(vars, result=None, name="")

  • vars:输入的布尔变量列表
  • result:可选参数,布尔变量,用来存储逻辑与的运算结果;不指定时默认要求逻辑与的结果必须为真,等价于强制所有输入变量都为1

示例代码

如果要求只有当x1和x2都为1时,x3才能为1,实现如下:

from pyscipopt import Model

# 初始化模型
model = Model("and_demo")
# 定义三个布尔变量
x1 = model.addVar(vtype="B", name="x1")
x2 = model.addVar(vtype="B", name="x2")
x3 = model.addVar(vtype="B", name="x3")

# 添加与约束:x3 = x1 AND x2
model.addConsAnd([x1, x2], x3, name="and_cons")

# 设目标为最大化x3,求解后x1和x2会自动设为1满足与逻辑
model.setObjective(x3, "maximize")
model.optimize()

# 输出结果:x1=1.0, x2=1.0, x3=1.0
print(f"x1={model.getVal(x1)}, x2={model.getVal(x2)}, x3={model.getVal(x3)}")

如果调用时不填result参数,如model.addConsAnd([x1,x2]),等价于直接强制约束x1 == 1 且 x2 == 1。


2. addConsOr 逻辑或约束

逻辑或的运算规则:只要有一个输入变量为真,结果就为真;所有输入都为假时结果才为假。
调用语法为:model.addConsOr(vars, result=None, name="")

  • vars:输入的布尔变量列表
  • result:可选参数,布尔变量,用来存储逻辑或的运算结果;不指定时默认要求逻辑或的结果必须为真,等价于强制至少一个输入变量为1

示例代码

如果要求只要y1或y2任意一个为1,y3就为1,实现如下:

from pyscipopt import Model

# 初始化模型
model = Model("or_demo")
# 定义三个布尔变量
y1 = model.addVar(vtype="B", name="y1")
y2 = model.addVar(vtype="B", name="y2")
y3 = model.addVar(vtype="B", name="y3")

# 添加或约束:y3 = y1 OR y2
model.addConsOr([y1, y2], y3, name="or_cons")

# 额外约束y1=0、y2=1,验证或逻辑
model.addCons(y1 == 0)
model.addCons(y2 == 1)

model.optimize()
# 输出结果:y1=0.0, y2=1.0, y3=1.0
print(f"y1={model.getVal(y1)}, y2={model.getVal(y2)}, y3={model.getVal(y3)}")

如果调用时不填result参数,如model.addConsOr([y1,y2]),等价于直接强制约束y1 == 1 或 y2 == 1,也就是两个变量至少选一个。


复杂逻辑组合示例

两种约束可以嵌套使用实现自定义逻辑,比如要求(x1 AND x2) OR x3 == 1,实现方式如下:

# 先定义临时变量存储x1和x2的与运算结果
temp = model.addVar(vtype="B", name="temp")
model.addConsAnd([x1, x2], temp)
# 再添加或约束,不填result默认要求运算结果为真
model.addConsOr([temp, x3])

内容的提问来源于stack exchange,提问作者Junaid Hasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 08:15:09