python - RuntimeError: 无法写入合法的 LP 文件。目标“Maximum_profit”具有非二次的非线性项
问题描述
我使用 pyomo 和 gurobi 来解决非线性优化问题。但是当我运行我的代码时,我得到了这个错误:
RuntimeError: Cannot write legal LP file. Objective 'Maximum_profit' has nonlinear terms that are not quadratic.
(当我在线性优化问题中使用 gurobi 作为求解器时,我没有任何问题。)我的目标函数是:
Maximum_profit=pyo.Objective(doc="Profit Maximization", rule=lambda model: sum(pyo.log10(1+sum(pyo.log10(1.0 + model.t[i,k]) for i in model.N)) for k in model.J) - sum(sum(model.t[i,k] * model.p[i,k] for k in model.J) for i in model.N),sense=-1)
我该如何解决?
解决方案
免责声明:我为 Gurobi 工作。
这里的问题是 pyomo,因为 Gurobi 能够解决非凸混合整数二次约束二次规划问题。特别是文件中出现了问题,该文件cpxlp.py
最初只处理写入 CPLEX LP 文件,但现在也处理 Gurobi 的 LP 文件。在那里,在第 500-650 行中,您可以看到所有适用的限制,这就是引发异常的地方。
我将发布一个 github 问题(如果尚不存在),希望能澄清这一点。
推荐阅读
- sql - SQL中的花括号
- vue.js - Vue路由器推送相同路径不同的查询或参数,重新加载页面的不同内容
- python - 覆盖保存方法以在 django 模型中保存 IP 地址
- javascript - 将变量的值从测试传递到赛普拉斯中的下一个
- python - 如何指定要抓取的 div 标签?
- xamarin - 访问共享的 onedrive txt 文件 - 403 禁止错误
- html - 在 html 中向左浮动以占用可用空间
- android - Flutter 编译错误 - 任务 ':flutter_paystack:compileDebugKotlin' 执行失败
- python - 递归函数中的 UnboundLocalError
- javascript - 如何在altair python中将列中的数据绘制到世界地图上