【问题标题】:Can Scipy's Optimization find Multiple Local Extrema?Scipy 的优化能找到多个局部极值吗?
【发布时间】:2019-09-06 04:11:35
【问题描述】:

这是我上一个问题的后续:Finding Local Extema in Scipy's Gaussian KDE

我一直试图弄清楚如何使用 scipy.optimize.minimize_scalar,因为它专门用于一个变量的函数,并为我提供了一种控制感兴趣区间的方法。但是当我尝试使用它时,我只有一个极值,而对于我的实际应用,我需要多个。

这是一个简单的例子

from scipy.optimize import minimize_scalar

def f(x):
    return x*(x-1)*(x-2)*(x-3)

minimum=minimize_scalar(f,bounds=(-1,4),method='bounded')

有两个局部最小值:一个靠近 x=0.382,另一个靠近 x=2.618;但只报告了其中的第一个。

有没有办法让它同时报告两者(除了手动更改边界以一次只捕获最小值,如果我还不知道最小值在哪里,我就不会拥有这种奢侈)?还是可以做到这一点的不同功能?在我的实际应用中,我希望它报告 3 个最高的局部最大值。

谢谢

【问题讨论】:

    标签: optimization scipy


    【解决方案1】:

    我相信您将不得不求助于可以提供该信息的全局优化算法,但无论如何您仍然需要走运。你可以试试 AMPGO(我写的一个隧道策略),看看它是否能给你任何见解。

    AMPGO:https://github.com/andyfaff/ampgo/blob/master/%20ampgo%20--username%20andrea.gavana%40gmail.com/go_amp.py

    基准测试:http://infinity77.net/global_optimization/multidimensional.html

    【讨论】:

      猜你喜欢
      • 2017-02-17
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      相关资源
      最近更新 更多