Optimization Can-Scipy';s优化找到多个局部极值?

Optimization Can-Scipy';s优化找到多个局部极值?,optimization,scipy,Optimization,Scipy,这是我上一个问题的后续问题: 我一直在尝试如何使用scipy.optimize.minimize_scalar,因为它专门用于一个变量的函数,并为我提供了一种控制感兴趣的时间间隔的方法。但当我尝试使用它时,我只得到一个极值,而对于我的实际应用,我需要多个极值 这里有一个简单的例子 from scipy.optimize import minimize_scalar def f(x): return x*(x-1)*(x-2)*(x-3) minimum=minimize_scalar

这是我上一个问题的后续问题:

我一直在尝试如何使用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个最高的局部最大值


谢谢

我相信你将不得不求助于能够提供这些信息的全局优化算法,但无论如何,你还是得走运。你可以尝试一下AMPGO(我写的一个隧道策略),看看它是否能给你提供一些见解

安普戈:

基准: