干货|迭代局部搜索算法(Iterated local search)探幽(附C++代码及注释)
迭代局部搜索
介绍
迭代局部搜索属于探索性局部搜索方法的一种。它在局部搜索得到的局部最优解上,加入了扰动,然后再重新进行局部搜索
搜索过程
- 初始状态:best_solution(最优解)、current_solution(当前解)。
- 从初始解(best_solution)中进行局部搜索,找到一个局部最优解s1(best_solution)。
- 扰动s1(best_solution),获得新的解s2(current_solution)。
- 从新解s2(current_solution)中进行局部搜索,再次找到一个局部最优解s3(best_solution)。
- 基于判断策略,对s3(current_solution)好坏进行判断。选择是否接受s3(current_solution)作为新的best_solution。
- 直到达到边界条件,不然跳回第二步一直循环搜索。
伪代码
ILS伪代码
示意图
ILS示意图