避免在 scipy.optimize.minimize 中调用函数两次
Posted
技术标签:
【中文标题】避免在 scipy.optimize.minimize 中调用函数两次【英文标题】:Avoid calling function twice in scipy.optimize.minimize 【发布时间】:2020-11-12 06:19:12 【问题描述】:我想用 scipy.optimize.minimize 解决一个优化问题,其中目标和不等式约束函数都使用依赖于 x 的常见“模拟”函数的结果。
天真的方法只是在目标和约束中调用“模拟”函数。虽然这样可行,但效率不高,因为这意味着“模拟”会被评估两次。
有没有办法避免这种情况,可能是通过存储和重用已经计算的结果?在 Matlab 中可以使用嵌套函数 (see here),但这似乎在 python 中不起作用。
非常感谢您的帮助。
【问题讨论】:
你可以让共享函数记住它的结果。 【参考方案1】:一种方法是添加一个决策变量和一个等式约束:
Min y
y >= c
y = fsimulation(x)
当然,这可以推广到更多维度的y
。
【讨论】:
以上是关于避免在 scipy.optimize.minimize 中调用函数两次的主要内容,如果未能解决你的问题,请参考以下文章