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

在Python中使用Cplex调用set_coefficients时遇非整数值错误求助

解决CPLEX linear_constraints.set_coefficients 报 TypeError: non-integral value in input sequence (0) 的问题

针对你遇到的报错,以下是几个实际可行的排查和解决方向:

  • 强制转换索引为原生Python整数类型
    如果你传入的rows或cols是numpy整数类型(比如numpy.int64),即使数值是整数,CPLEX的Python API也可能无法识别为合法的整数索引。可以显式转换为原生int:

    rows = [int(r) for r in rows]
    cols = [int(c) for c in cols]
    prob.linear_constraints.set_coefficients(list(zip(rows, cols, vals)))
    
  • 将zip迭代器转为列表
    Python3中zip()返回的是迭代器而非列表,部分版本的CPLEX API可能对迭代器的处理存在问题,转为列表后再传入:

    coeffs = list(zip(rows, cols, vals))
    prob.linear_constraints.set_coefficients(coeffs)
    
  • 排查索引范围合法性
    确认rows中的每个元素都小于你添加的约束总数(即len(my_rhs)),cols中的每个元素都小于变量总数(即len(c))。索引越界有时会触发非预期的类型错误提示。

  • 检查vals的数值有效性
    虽然错误提示指向整数问题,但也可以确认vals中没有NaN、inf这类非法数值,确保所有系数都是有效的浮点数或整数。

内容的提问来源于stack exchange,提问作者Iñaki Rodríguez Longarela

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:42:44