1、局部搜索算法
定义:局部搜索算法是从爬山法改进而来的。简单来说,局部搜索算法是一种简单的贪心搜索算法,该算法每次从当前解的邻域解空间中选择一个最好邻居作为下次迭代的当前解,直到达到一个局部最优解(local optimal solution)。
思想:局部搜索会先从一个初始解开始,通过邻域动作。产生初始解的邻居解,然后根据某种策略选择邻居解。一直重复以上过程,直到达到终止条件。
不同局部搜索算法的区别就在于:邻域动作的定义以及选择邻居解的策略。这也是决定算法好坏的关键之处。
2、简单局部搜索
1) 爬山法
2) 模拟退火
3)禁忌搜索算法
3、迭代局部搜索
定义:它在局部搜索得到的局部最优解上,加入了扰动,然后再重新进行局部搜索。
过程:
1)初始状态:best_solution(最优解)、current_solution(当前解)。
2)从初始解(best_solution)中进行局部搜索,找到一个局部最优解 s1(best_solution)。
3)扰动s1(best_solution),获得新的解s2(current_solution)。
4)从新解s2(current_solution)中进行局部搜索,再次找到一个局部最优解s3(best_solution)。
5)基于判断策略,对s3(current_solution)好坏进行判断。选择是否接受s3(current_solution)作为新的best_solution。
6)直到达到边界条件,不然跳回第二步一直循环搜索。
图解: