我使用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)我怎么才能修复它?
发布于 2020-04-15 06:18:10
Gurobi不能解决非线性优化模型(除了二次模型的一些实例)。有了目标中的对数项,你需要一个可以处理它们的求解器,比如BARON或IPOPT。
发布于 2020-07-28 15:59:12
免责声明:我为Gurobi工作。
这里的问题是pyomo,因为Gurobi能够解决非凸混合整数二次约束二次规划问题。特别是,这个问题出现在文件cpxlp.py中,它最初只处理CPLEX文件的写入,但现在还处理Gurobi的LP文件。在这里,在第500-650行,您可以看到所有适用的限制,这就是抛出异常的地方。
我将发布一个github问题(如果还不存在),希望能澄清这一点。
https://stackoverflow.com/questions/61217721
复制相似问题