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

使用pyscipopt建模时SCIP误判二进制线性问题不可行的原因咨询

问题分析与解决方案

你的核心问题是约束C3被错误转换为等式约束,导致模型不可行:当y1=y2=1时,等式z - y1 - y2 = 0要求z=2,但z的上界为1,直接触发不可行判定。

问题原因

这不是你建模的疏漏,而是pyscipopt 4.3.0与SCIP 9.0.0的兼容性bug——该版本组合下,用<=运算符定义的不等式约束被错误解析为等式约束。

修复方法

你可以通过以下两种方式解决:

  • 显式构造约束表达式,避免直接使用运算符:

    # 方式1:直接整理不等式项
    m.addCons(z - y1 - y2 <= 0, name="C3")
    # 方式2:用SCIP表达式API构建
    expr = scip.Expr()
    expr.addVar(z, 1.0)
    expr.addVar(y1, -1.0)
    expr.addVar(y2, -1.0)
    m.addCons(expr <= 0, name="C3")
    
  • 升级pyscipopt版本:更新到4.5.0及以上版本(该版本已修复此兼容性问题),即可正常使用z <= y1 + y2的写法。

验证结果

修正约束定义后,重新运行代码,SCIP会正确识别z <= y1 + y2的约束,模型最优解为(y1,y2,z)=(1.0,1.0,1.0),最优目标值为1.0,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:55:12