01 什么是禁忌搜索算法?
1.1 先从爬山算法说起
爬山算法从当前的节点开始,和周围的邻居节点的值进行比较。 如果当前节点是最大的,那么返回当前节点,作为最大值 (既山峰最高点);反之就用最高的邻居节点来,替换当前节点,从而实现向山峰的高处攀爬的目的。如此循环直到达到最高点。因为不是全面搜索,所以结果可能不是最佳。
1.2 再到局部搜索算法
局部搜索算法是从爬山法改进而来的。局部搜索算法的基本思想:在搜索过程中,始终选择当前点的邻居中与离目标最近者的方向搜索。同样,局部搜索得到的解不一定是最优解。
1.3 然后到禁忌搜索算法
为了找到“全局最优解”,就不应该执着于某一个特定的区域。于是人们对局部搜索进行了改进,得出了禁忌搜索算法。
禁忌(Tabu Search)算法是一种亚启发式(meta-heuristic)随机搜索算法,它从一个初始可行解出发,选择一系列的特定搜索方向(移动)作为试探,选择实现让特定的目标函数值变化最多的移动。为了避免陷入局部最优解,TS搜索中采用了一种灵活的“记忆”技术,对已经进行的优化过程进行记录和选择,指导下一步的搜索方向,这就是Tabu表的建立。
1.4 最后打个比方
为了找出地球上最高的山,一群有志气的兔子们开始想办法。
-
爬山算法
兔子朝着比现在高的地方跳去。他们找到了不远处的最高山峰。但是这座山不一定是珠穆朗玛峰。这就是爬山法,它不能保证局部最优值就是全局最优值。 -
禁忌搜索算法
兔子们知道一个兔的力量是渺小的。他们互相转告着,哪里的山已经找过,并且找过的每一座山他们都留下一只兔子做记号。他们制定了下一步去哪里寻找的策略。这就是禁忌搜索。

禁忌搜索算法(Tabu Search)是一种亚启发式随机搜索算法,用于避开局部最优解找到全局最优解。从爬山算法和局部搜索算法引申,通过禁忌表记录和指导搜索方向,防止重复进入已搜索区域。基本思想是在搜索过程中避开已解得的局部最优解。算法流程包括初始化、选择不受禁忌的候选解、更新禁忌表并重复该过程,直至找到满意解。文章提供了一个C++代码实例,帮助理解算法应用。
最低0.47元/天 解锁文章
5772

被折叠的 条评论
为什么被折叠?



