你是否在问是否有一些全局最小值算法也可以返回局部最小值?
我不理解你所说的全局最小值算法,但是既然你提到了模拟退火,我会假设你在谈论具有全局搜索能力的元启发式算法。
不能保证元启发式算法(通常用于解决NP难问题)将探索整个搜索空间,因此不能保证找到每个局部最小值。然而,我假设你已经知道这一点,你想要的是修改一种方法,使其在寻找全局最小值的过程中提供一个局部最小值列表,而不仅仅是一个找到的最佳解决方案。
基于单解决方案的算法,如Tabu搜索、迭代局部搜索等,是基于局部搜索的。它们执行局部搜索,直到找到局部最优解,然后应用各自的规则尝试逃离局部最小值。让我们考虑迭代局部搜索,它执行局部搜索直到找到局部最优解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))