You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DOcplex中编写约束A+B≤1?新手求解类型错误问题

解决DOcplex中A+B≤1约束的报错问题

问题出在你定义变量时用了大括号{},这会把DOcplex返回的二元变量对象包装成集合(set),而集合之间不支持用+运算符做运算,所以才会触发TypeError: unsupported operand type(s) for +: 'set' and 'set'错误。

只需要去掉变量定义时的大括号,让A、B直接成为二元变量对象,就能正常构建约束了,正确代码如下:

# 先初始化模型(如果还没初始化的话)
from docplex.mp.model import Model
mdl = Model(name="mutual_exclusion_model")

# 正确定义二元变量,不要加大括号
A = mdl.binary_var(name="A")
B = mdl.binary_var(name="B")

# 添加互斥约束
mdl.add_constraint(A + B <= 1, ctname="A_B_mutually_exclusive")

# 可选:添加目标函数并求解
# mdl.maximize(A + 2*B)
# sol = mdl.solve()
# if sol:
#     print(f"A={sol[A]}, B={sol[B]}")

这个约束实现的是A和B互斥的逻辑——两个二元变量最多只能有一个取值为1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:45:55