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

Docplex的Solution对象kpi_value_by_name方法报错问题咨询

Docplex SolveSolution类kpi_value_by_name异常问题解答

你遇到的是Docplex旧版本的已知Bug,该问题存在于2.23及更早的发行版中,根因是docplex.mp.solution模块内SolveSolution类的kpi_value_by_name方法,错误调用了DecisionKPI类不存在的私有方法_raw_solution_value。

官方修复情况

该问题在2.24及之后的正式版本中已完成修复,官方修复逻辑和你测试的可行方案一致:将原方法中kpi._raw_solution_value(self)的调用,替换为kpi._get_solution_value(self)。
如果可以升级依赖版本,直接将Docplex升级到2.24及以上版本即可彻底解决该问题。

临时规避方案

如果暂时无法升级Docplex版本,可选用以下两种方案规避:

  • 优先通过模型侧的同名方法获取KPI值,该方法在全版本中均可正常运行:
    print(sol.model.kpi_value_by_name("my_kpi"))
    
  • 自行封装安全调用方法,替换默认实现:
    def safe_get_kpi_by_name(sol, kpi_name, match_case=True):
        kpi = sol.model.kpi_by_name(kpi_name, try_match=True, match_case=match_case)
        return kpi._get_solution_value(sol)
    
    # 调用示例
    print(safe_get_kpi_by_name(sol, "my_kpi"))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:04