关于pulp.solve()的报错,pulp.apis.core.PulpSolverError: Pulp: Error while executing,末尾为cbc.exe提出的报错

  File "E:\python\建模\.venv\Lib\site-packages\pulp\apis\coin_api.py", line 112, in actualSolve
    return self.solve_CBC(lp, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\python\建模\.venv\Lib\site-packages\pulp\apis\coin_api.py", line 188, in solve_CBC
    raise PulpSolverError("Pulp: Error while executing " + self.path)
pulp.apis.core.PulpSolverError: Pulp: Error while executing E:\python\建模\.venv\Lib\site-packages\pulp\solverdir\cbc\win\64\cbc.exe
 

咋一看好像是cbc解释器错误,所以可以重新安装看看是不是解释器的问题
pip install cbc

如果还不行,可以试试下述代码查看是哪个位置出了问题

pulpTestAll()

如果依旧不行,就回到源码中去,这里其实是float("inf")报错,推测原因是CBC解释器识别不了(个人推测),总之LpVariable上下限已经给出就是无穷,不必画蛇添足加这一步

import pulp as p

# pulpTestAll()
# pulp.CBC_PATH = "e:\python\建模\.venv\lib\site-packages"
LP = p.LpProblem("problem1", sense=p.LpMaximize)
x1 = p.LpVariable("x1", 0, float("inf"), cat="LpContinuous")
x2 = p.LpVariable("x2", 0, float("inf"), cat="LpContinuous")
x3 = p.LpVariable("x3", 0, float("inf"), cat="LpContinuous")
# 已找到问题,不能使用float("inf")这个正无穷,会报错, cat默认连续形

LP += 1000 * x1 + 2000 * x2 + 3000 * x3
LP += (x1 + x2 * 2 + x3 * 3 <= 10)
LP += (x2 + x3 * 2 <= 5)

LP.solve()
print("Status:", p.LpStatus[LP.status])

 因为没有blog做过这个报错,所以我给一个补充嘞

  • 13
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值