首页 > 解决方案 > 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)

我该如何解决?

标签: pythonpyomogurobi

解决方案


免责声明:我为 Gurobi 工作。

这里的问题是 pyomo,因为 Gurobi 能够解决非凸混合整数二次约束二次规划问题。特别是文件中出现了问题,该文件cpxlp.py最初只处理写入 CPLEX LP 文件,但现在也处理 Gurobi 的 LP 文件。在那里,在第 500-650 行中,您可以看到所有适用的限制,这就是引发异常的地方。

我将发布一个 github 问题(如果尚不存在),希望能澄清这一点。


推荐阅读