【问题标题】:Call scipy.optimize inside pyomo在 pyomo 中调用 scipy.optimize
【发布时间】:2017-12-14 20:14:13
【问题描述】:

我可以将scipy.optimize.minimize 求解器与method=SLSQP 集成到pyomo 中吗? pyomo 中的建模比 scipy 中的要快得多,但 pyomo 文档似乎并没有明确说明这是否可行。

【问题讨论】:

  • 很抱歉前几个词被删掉了。我的意思是问我是否可以用 pyomo 整合 scipy.optimize.minimize 求解器。谢谢
  • IPOPT 可用时为什么要使用 SLSQP?
  • 因为我正在等待批准下载在IPOPT中使用的HSL不定线性求解器,所以我想在业余时间尝试一些东西......
  • 带有 MUMPS 的 IPOPT 仍然会好很多(恕我直言)。 (并且安装脚本也支持这个,包括自动下载)
  • @sascha 谢谢。我也会检查一下。看来我还需要等待请求批准或通过在第三方文件夹中使用 wget 来获取它。我担心这可能不是最新版本,所以我会等待...

标签: python scipy pyomo


【解决方案1】:

目前(2017 年 12 月),没有内置支持将 Pyomo 模型传递给 scipy.optimize。也就是说,编写一个可以生成必要(值、雅可比、黑森)评估函数以传递给scipy.optimize.minimize() 的合理通用对象并不是一项非常困难的任务。

【讨论】:

  • 知道了。您是否建议我使用一些自动微分包来获取雅可比矩阵?
  • 是的。 Pyomo 表达式可以调用来评估它们。 Jacobian和Hessian信息可以通过符号微分获得。假设你有 sympy,你可以使用 pyomo.core.base.symbolic.differentiate 来获得 Jacobian & Hessian 表达式(代码量适中)。您必须深入研究 pyomo.core 才能了解 Constraint 是如何保存信息的,我不能保证使用 sympyscipy.optimize 的性能。 (我希望通过 ipopt 运行 Pyomo 模型会明显更快。)
  • (一年后)有没有从 python 调用 pyomo 问题的例子,没有衍生物? (你描述问题的方式看起来很不错。)谢谢
猜你喜欢
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
相关资源
最近更新 更多