避免在 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 中调用函数两次的主要内容,如果未能解决你的问题,请参考以下文章

如何避免在html中输入字母? [复制]

避免在 WCF 数据协定中填充扩展属性

我应该避免在 iPhone 上递归吗?

避免死锁的方法

在 reloadItemsAtIndexPaths 之后避免 UICollectionView 的动画

在运行三足事务时避免死锁