python - 在 scipy.optimize 中恢复优化?

标签 python scipy mathematical-optimization

scipy.optimize 为多变量系统的局部和全局优化提供了许多不同的方法。但是,我需要进行很长的优化运行,可能会被中断(在某些情况下,我可能想故意中断它)。有什么办法可以重新启动……好吧,其中任何一个?我的意思是,显然可以提供最后一组最优化的参数作为初始猜测,但这并不是唯一的参数——例如,还有梯度(例如雅可比矩阵)、差分进化中的种群等.我显然不希望这些也必须重新开始。

我看不出有什么办法可以向 scipy 证明这些,也没有办法保存它的状态。对于以 jacobian 为例的函数,有一个 jacobian 参数(“jac”),但它要么是一个 bool 值(表明您的评估函数返回一个 jacobian,而我的没有),要么是一个可调用函数(我只会提供上次运行的单一结果)。没有什么只需要最后一个可用的 jacobian 数组。对于差异进化,种群的损失对于性能和收敛来说将是可怕的。

有什么解决办法吗?有什么方法可以恢复优化?

最佳答案

一般的答案是否定的,除了如您所说,从上一次运行的最后估计开始之外,没有一般的解决方案。

不过,对于差分进化,您可以实例化 DifferentialEvolutionSolver,您可以在检查点对其进行 pickle,然后取消 pickle 以恢复。 (建议来自https://github.com/scipy/scipy/issues/6517)

关于python - 在 scipy.optimize 中恢复优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002172/

相关文章:

python - 从抓取的数据中分割 html (Python+BeautifulSoup4)

python - opt.curve_fit 只有一个参数

Python 等效于 R 的因子数据类型

python - 如何使用 Mechanize cookie 获取 http 页面?

python - 搜索 .db 中包含关键字的特定行

algorithm - 不规则函数的优化

python - 使用 GEKKO 解决约束 x(0) + x(2) =0 的最优控制问题

r - 使用quadProg库进行约束二次优化

python - PyTest Fixtures - 在 Docker 中运行时 SQLAlchemy 连接未关闭

python - 在 python 中使用 scipy 的 kmeans2 函数