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))
我不明白你所说的全局最小算法是什么意思,但既然你提到了模拟退火,我就假设你所说的是具有全局搜索能力的元启发式算法。你知道吗
无法保证元启发式算法(通常用于解决NP-hard问题)能够探索整个搜索空间,因此无法保证找到每个局部极小值。但是,我假设您知道这一点,并且您想要的是以它提供的方式修改一个方法,而不仅仅是一个解决方案(最佳解决方案),一个在寻找全局最小值的过程中找到的局部最小值的列表。你知道吗
基于单一解的算法,如禁忌搜索、迭代局部搜索等,都是基于局部搜索的。他们进行局部搜索,直到找到一个局部最优解,然后,他们应用各自的规则试图逃离局部极小值。让我们考虑迭代局部搜索,它执行一个局部搜索直到解
S
是局部最优的,然后它扰动当前的局部最优解来逃离它,并在搜索空间中获得另一个点来再次执行局部搜索,直到满足一个条件。在您的情况下,每次在搜索过程中找到局部最优解时,您都应该保留。你知道吗下面的伪代码是一个改进的ILS算法,用于保持在搜索过程中找到的所有局部最优解。你知道吗
这种算法易于实现。如果您决定自己实现,请准备一份好的参考文献,如果这还不够,您可以尝试在GitHub或Mathworks discovery上找到一个好的实现来为您的代码奠定基础。你知道吗
相关问题 更多 >
编程相关推荐