首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RuntimeError:无法写入合法的LP文件。目标'Maximum_profit‘具有非二次的非线性项

RuntimeError:无法写入合法的LP文件。目标'Maximum_profit‘具有非二次的非线性项
EN

Stack Overflow用户
提问于 2020-04-15 05:41:39
回答 2查看 958关注 0票数 1

我使用pyomo和gurobi来解决一个非线性优化问题。但是当我运行我的代码时,我得到了这个错误:

代码语言:javascript
复制
RuntimeError: Cannot write legal LP file.  Objective 'Maximum_profit' has nonlinear terms that are not quadratic.

(当我使用gurobi作为线性优化问题的求解器时,我没有任何问题。)我的目标函数是:

代码语言:javascript
复制
 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)

我怎么才能修复它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-15 06:18:10

Gurobi不能解决非线性优化模型(除了二次模型的一些实例)。有了目标中的对数项,你需要一个可以处理它们的求解器,比如BARON或IPOPT。

票数 0
EN

Stack Overflow用户

发布于 2020-07-28 15:59:12

免责声明:我为Gurobi工作。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61217721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档