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

如何用CPLEX库定义约束?PyCharm中约束代码报错求助

问题解决方法

错误1:约束15括号未闭合

原代码中约束15的add_constraint调用缺少右括号,引发语法错误。修正后代码:

#constraint 15
mdl.add_constraint(1 >= y*(n+1)*(2*v + 2*w))

错误2:约束16批量添加方式错误

add_constraint方法仅支持单个约束对象,直接传入生成器表达式无效。若要批量添加约束,需使用复数形式的add_constraints:

#constraint 16
mdl.add_constraints(1 >= (y / m[i])*(p[i] + c[i] + 2*w) for i in range(n))

注:y*1/m[i]与y/m[i]逻辑等价,后者写法更简洁直观。

错误3:循环添加约束时缩进错误

Python是缩进敏感语言,第二个代码块中mdl.add_constraint语句未缩进,不属于for循环代码块,导致语法错误。修正缩进后:

#constraint 16
for i in range(n):
    mdl.add_constraint(1 >= (y / m[i])*(p[i] + c[i] + 2*w))

额外优化建议

  • 替换cplex.infinity为docplex内置的mdl.infinity,代码风格更统一:
    y = mdl.integer_var(lb=0, ub=mdl.infinity, name='y')
    
  • 提前计算约束中的常数项,提升代码可读性:
    # 约束15提前计算常数部分
    const_15 = (n+1)*(2*v + 2*w)
    mdl.add_constraint(1 >= y * const_15)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:15:31