寻找一个算法,也提供了局部极小值b

2024-05-15 22:26:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我所知道的所有黑箱函数优化算法,比如simulated annealingBayesian optimization,都会返回全局最小值。你知道吗

我正在寻找一个python算法,它可以为我提供全局和所有局部极小值。你知道吗

有什么算法可以解决这个问题吗?你知道吗

或者是否有任何一种全局最小值算法也能将局部最小值传递回来?你知道吗


Tags: 函数算法局部bayesian全局黑箱optimizationannealing
1条回答
网友
1楼 · 发布于 2024-05-15 22:26:19

Or is there any of the global minimum algorithms that deliver also the local minima back?

我不明白你所说的全局最小算法是什么意思,但既然你提到了模拟退火,我就假设你所说的是具有全局搜索能力的元启发式算法。你知道吗

无法保证元启发式算法(通常用于解决NP-hard问题)能够探索整个搜索空间,因此无法保证找到每个局部极小值。但是,我假设您知道这一点,并且您想要的是以它提供的方式修改一个方法,而不仅仅是一个解决方案(最佳解决方案),一个在寻找全局最小值的过程中找到的局部最小值的列表。你知道吗

基于单一解的算法,如禁忌搜索、迭代局部搜索等,都是基于局部搜索的。他们进行局部搜索,直到找到一个局部最优解,然后,他们应用各自的规则试图逃离局部极小值。让我们考虑迭代局部搜索,它执行一个局部搜索直到解S是局部最优的,然后它扰动当前的局部最优解来逃离它,并在搜索空间中获得另一个点来再次执行局部搜索,直到满足一个条件。在您的情况下,每次在搜索过程中找到局部最优解时,您都应该保留。你知道吗

下面的伪代码是一个改进的ILS算法,用于保持在搜索过程中找到的所有局部最优解。你知道吗

HillClimbing(S)
   while S is not locally optimal do
       S ← best(N(S)) // best solution in neighborhood N of solution S
   Return S

IteratedLocalSearch()
    L ← {} // set of locally optimal solutions
    G ← randomSolution()
    S ← G
    while criterionIsNotMeet() do
        HillClimbing(S)
        Add S to L // add the current local
        if S.objective < G.objective do // minimization
            G ← S // best solution found
        perturbateSolution(Copy(S))

这种算法易于实现。如果您决定自己实现,请准备一份好的参考文献,如果这还不够,您可以尝试在GitHub或Mathworks discovery上找到一个好的实现来为您的代码奠定基础。你知道吗

相关问题 更多 >