【问题标题】:Avoid calling function twice in scipy.optimize.minimize避免在 scipy.optimize.minimize 中调用函数两次
【发布时间】:2020-11-12 06:19:12
【问题描述】:

我想用 scipy.optimize.minimize 解决一个优化问题,其中目标和不等式约束函数都使用依赖于 x 的常见“模拟”函数的结果。

天真的方法只是在目标和约束中调用“模拟”函数。虽然这样可行,但效率不高,因为这意味着“模拟”会被评估两次。

有没有办法避免这种情况,可能是通过存储和重用已经计算的结果?在 Matlab 中可以使用嵌套函数 (see here),但这似乎在 python 中不起作用。

非常感谢您的帮助。

【问题讨论】:

  • 你可以让共享函数记住它的结果。

标签: python optimization storage evaluation persistent


【解决方案1】:

一种方法是添加一个决策变量和一个等式约束:

  Min y
  y >= c
  y = fsimulation(x)

当然,这可以推广到更多维度的y

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多