python - 避免在 scipy.optimize.minimize 中调用函数两次
问题描述
我想用 scipy.optimize.minimize 解决优化问题,其中目标和不等式约束函数都使用取决于 x 的常见“模拟”函数的结果。
天真的方法只是在目标和约束中调用“模拟”函数。虽然这可行,但它不是很有效,因为这意味着“模拟”被评估两次。
有没有办法避免这种情况,可能通过存储和重用已经计算的结果?在 Matlab 中,可以使用嵌套函数(参见此处),但这似乎在 python 中不起作用。
非常感谢您的帮助。
解决方案
一种方法是添加决策变量和等式约束:
Min y
y >= c
y = fsimulation(x)
当然,这可以推广到更多维y
。
推荐阅读
- java - 是否有停止使用 altbeacon 查找重复信标的功能?
- javascript - 如何将动态 id 从 ajax 数据传递到 Modal
- javascript - 有没有办法引用在变量中声明的函数?
- swift - 在 iOS 应用程序中查找文件
- c++ - 如何知道 Windows 中初始即插即用枚举何时完成
- angularjs - 如何在控制器中使用元素?
- reactjs - React - 更新具有默认值的受控元素
- android - 如何解决firebase问题:“创建项目时出现未知错误。再试一次。”?
- vue.js - 如何将 pug 与电子 vue 一起使用?
- laravel - 我想在 Laravel 中的 update_at 列使用碳 24 小时后启用该章节