Python使用pulp库实现运输问题时报TypeError: must be real number, not str错误
pulp实现运输问题TypeError报错修复方案
报错根因
- 核心问题是
LpVariable.dicts方法的参数传递顺序错误:该方法第3个参数为lowBound(变量下界,要求为数值类型),第5个参数才是变量类型cat。原代码将LpInteger(本质是字符串常量)传递给了第3位的lowBound参数,导致求解器校验参数时抛出「必须为实数,不能是字符串」的类型错误。 - 附带逻辑问题:运输问题的运输量不能为负数,需要显式设置
lowBound=0,原代码未设置该约束也会导致求解结果不符合业务逻辑。
解决方法
修改route_variables变量的定义代码,两种写法二选一即可:
- 按参数顺序补全参数
route_variables = LpVariable.dicts("Route", (origin, destination), 0, None, LpInteger)
- 用关键字参数显式指定,可读性更强
route_variables = LpVariable.dicts("Route", (origin, destination), lowBound=0, cat=LpInteger)
修改完成后重新运行代码即可正常执行求解逻辑。
内容的提问来源于stack exchange,提问作者Kirti goyal
相关产品推荐
相关产品推荐

