首页 > 解决方案 > 避免在 scipy.optimize.minimize 中调用函数两次

问题描述

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

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

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

非常感谢您的帮助。

标签: pythonoptimizationstorageevaluationpersistent

解决方案


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

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

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


推荐阅读