禁忌搜索算法评述(一)
- 格式:docx
- 大小:14.17 KB
- 文档页数:3
禁忌搜索算法又名“tabu搜索算法”为了找到“全局最优解”,就不应该执着于某一个特定的区域。
局部搜索的缺点就是太贪婪地对某一个局部区域以及其邻域搜索,导致一叶障目,不见泰山。
禁忌搜索就是对于找到的一部分局部最优解,有意识地避开它(但不是完全隔绝),从而获得更多的搜索区间。
兔子们找到了泰山,它们之中的一只就会留守在这里,其他的再去别的地方寻找。
就这样,一大圈后,把找到的几个山峰一比较,珠穆朗玛峰脱颖而出。
当兔子们再寻找的时候,一般地会有意识地避开泰山,因为他们知道,这里已经找过,并且有一只兔子在那里看着了。
这就是禁忌搜索中“禁忌表(tabu list)”的含义。
那只留在泰山的兔子一般不会就安家在那里了,它会在一定时间后重新回到找最高峰的大军,因为这个时候已经有了许多新的消息,泰山毕竟也有一个不错的高度,需要重新考虑,这个归队时间,在禁忌搜索里面叫做“禁忌长度(tabu length)”;如果在搜索的过程中,留守泰山的兔子还没有归队,但是找到的地方全是华北平原等比较低的地方,兔子们就不得不再次考虑选中泰山,也就是说,当一个有兔子留守的地方优越性太突出,超过了“best to far”的状态,就可以不顾及有没有兔子留守,都把这个地方考虑进来,这就叫“特赦准则(aspiration criterion)”。
这三个概念是禁忌搜索和一般搜索准则最不同的地方,算法的优化也关键在这里。
伪码表达:procedure tabu search;begininitialize a string vc at random,clear up the tabu list;cur:=vc;repeatselect a new string vn in the neighborhood of vc;if va>best_to_far then {va is a string in the tabu list}begincur:=va;let va take place of the oldest string in the tabu list;best_to_far:=va;end elsebegincur:=vn;let vn take place of the oldest string in the tabu list;end;until (termination-condition);end;以上程序中有关键的几点:(1)禁忌对象:可以选取当前的值(cur)作为禁忌对象放进tabu list,也可以把和当前值在同一“等高线”上的都放进tabu list。
图节点着色问题中的禁忌搜索算法09-03-25 作者:编辑:校方人员图节点着色问题是组合最优化中典型的非确定多项式(NP)完全问题,也是图论中研究得最久的一类问题。
目前解决该问题的算法很多,如回溯算法、分支界定法、Welsh-Powell算法、神经网络、遗传算法以及模拟退火算法等。
综合比较各种算法,前两种算法是精确算法,但时间复杂性太大;后三种属于近似算法,虽然时间复杂性可接受,能够得到较好的近似解,但算法本身过于复杂,算法效率难以保证。
本文采用禁忌搜索算法,它同时拥有高效性和鲁棒性。
禁忌搜索是一种全局逐步寻优的人工智能算法,它常能有效的应用于一些典型NP问题,如TSP。
但禁忌搜索存在一些参数较难设置,这也是应用于通信系统时研究的热点。
本文提出针对着色问题的禁忌搜索的具体设计方案,较好的设置了参数,并优化了数据结构,通过实验比较得到了较好的效果。
最后提出通过领域简单的变化,禁忌搜索能较好的用于一般算法难以实现的List着色问题。
1图节点着色问题图的着色问题可分为边着色、顶点着色、List着色和全着色,其中最主要的给定一个无向图G=(V,E),其中V是节点集V={1,2,…n},E是边集,其中(i,j)表示有连接(i,j)的一条边。
若,且V i内部的任何两个节点没有E中的边直接相连,则称(V1,V2,…,V n)为V的一个划分。
图的节点着色问题可以描述为:求一个最小的k,使得(V1,V2,…,V n)为V的一个划分。
通常的解决着色问题的算法采用蛮力法、贪婪法、深度优先或广度优先等思想可以得到最优解,但时间复杂性太大,如回溯法,其计算时间复杂性为指数阶的;有的在多项式时间内能得到可行解,但不是最优解,如Welsh-Powell算法和贪婪算法。
Welsh-Powell算法只能保证最多使用(为图中顶点的最大度)种颜色给一个图正常着色,而由Brooks定理,对于既不是完全图又不是奇圈的简单连通图,所需的颜色数。
禁忌搜索算法作者:季敏惠来源:《电脑知识与技术》2009年第27期摘要:随着网络应用不断广泛,网络数据也呈几何级增长。
基于内容的图像搜索算法成为一个很好的解决方案。
该文为图像提取方法提供了一个新的高效的框架,该算法框架相对于以前所使用的基于流形的方法具有明显的优势:本方法框架可以直接对图像数据评定相关性并返回相关性最高的图像数据,而以往的基于流形的方法必须要从特征空间到一个不清晰的语义流形空间做一个映射,并对这个映射进行学习。
关键词:图像;CUDA;熵;流形中图分类号:TP391.41文献标识码:A 文章编号:1009-3044(2009)27-7748-03Active Tabu SearchJI Min-hui(College of Software Engineering, Southeast University, Nanjing 210096, China)Abstract:With the extensive of network applications, network-level data is growing geometrically. Content-based image search algorithm is a good solution. A novel framework is proposed for image retrieval in this paper. Our framework has an clear advantage over pervious manifold based methods: our method can directly rank and return relevant images and does not need to learn a mapping from the feature space to the unclear semantic manifold space, further avoiding the unnecessary exploration on the dimensionality of the semantic space.Key words: image; CUDA; manifold随着信息技术的日益发展,有一样东西以无可遏制的速度增长着,这就是数据。
禁忌搜索算法浅析摘要:本文介绍了禁忌搜索算法的基本思想、算法流程及其实现的伪代码。
禁忌搜索算法(Tabu Search或Taboo Search,简称TS算法)是一种全局性邻域搜索算法,可以有效地解决组合优化问题,引导算法跳出局部最优解,转向全局最优解的功能。
关键词:禁忌搜索算法;组合优化;近似算法;邻域搜索1禁忌搜索算法概述禁忌搜索算法(Tabu Search)是由美国科罗拉多州大学的Fred Glover教授在1986年左右提出来的,是一个用来跳出局部最优的搜寻方法。
在解决最优问题上,一般区分为两种方式:一种是传统的方法,另一种方法则是一些启发式搜索算法。
使用传统的方法,我们必须对每一个问题都去设计一套算法,相当不方便,缺乏广泛性,优点在于我们可以证明算法的正确性,我们可以保证找到的答案是最优的;而对于启发式算法,针对不同的问题,我们可以套用同一个架构来寻找答案,在这个过程中,我们只需要设计评价函数以及如何找到下一个可能解的函数等,所以启发式算法的广泛性比较高,但相对在准确度上就不一定能够达到最优,但是在实际问题中启发式算法那有着更广泛的应用。
禁忌搜索是一种亚启发式随机搜索算法,它从一个初始可行解出发,选择一系列的特定搜索方向(移动)作为试探,选择实现让特定的目标函数值变化最多的移动。
为了避免陷入局部最优解,TS搜索中采用了一种灵活的“记忆”技术,对已经进行的优化过程进行记录和选择,指导下一步的搜索方向。
TS是人工智能的一种体现,是局部领域搜索的一种扩展。
禁忌搜索是在领域搜索的基础上,通过设置禁忌表来禁忌一些已经历的操作,并利用藐视准则来奖励一些优良状态,其中涉及邻域(neighborhood)、禁忌表(tabu list)、禁忌长度(tabu 1ength)、候选解(candidate)、藐视准则(candidate)等影响禁忌搜索算法性能的关键因素。
迄今为止,TS算法在组合优化、生产调度、机器学习、电路设计和神经网络等领域取得了很大的成功,近年来又在函数全局优化方面得到较多的研究,并大有发展的趋势。
禁忌搜索算法评述(一)
摘要:工程应用中存在大量的优化问题,对优化算法的研究是目前研究的热点之一。
禁忌搜索算法作为一种新兴的智能搜索算法具有模拟人类智能的记忆机制,已被广泛应用于各类优化领域并取得了理想的效果。
本文介绍了禁忌搜索算法的特点、应用领域、研究进展,概述了它的算法基本流程,评述了算法设计过程中的关键要点,最后探讨了禁忌搜索算法的研究方向和发展趋势。
关键词:禁忌搜索算法;优化;禁忌表;启发式;智能算法
1引言
工程领域内存在大量的优化问题,对于优化算法的研究一直是计算机领域内的一个热点问题。
优化算法主要分为启发式算法和智能随机算法。
启发式算法依赖对问题性质的认识,属于局部优化算法。
智能随机算法不依赖问题的性质,按一定规则搜索解空间,直到搜索到近似优解或最优解,属于全局优化算法,其代表有遗传算法、模拟退火算法、粒子群算法、禁忌搜索算法等。
禁忌搜索算法(TabuSearch,TS)最早是由Glover在1986年提出,它的实质是对局部邻域搜索的一种拓展。
TS算法通过模拟人类智能的记忆机制,采用禁忌策略限制搜索过程陷入局部最优来避免迂回搜索。
同时引入特赦(破禁)准则来释放一些被禁忌的优良状态,以保证搜索过程的有效性和多样性。
TS算法是一种具有不同于遗传和模拟退火等算法特点的智能随机算法,可以克服搜索过程易于早熟收敛的缺陷而达到全局优化1]。
迄今为止,TS算法已经广泛应用于组合优化、机器学习、生产调度、函数优化、电路设计、路由优化、投资分析和神经网络等领域,并显示出极好的研究前景2~9,11~15]。
目前关于TS 的研究主要分为对TS算法过程和关键步骤的改进,用TS改进已有优化算法和应用TS相关算法求解工程优化问题三个方面。
禁忌搜索提出了一种基于智能记忆的框架,在实际实现过程中可以根据问题的性质做有针对性的设计,本文在给出禁忌搜索基本流程的基础上,对如何设计算法中的关键步骤进行了有益的总结和分析。
2禁忌搜索算法的基本流程
TS算法一般流程描述1]:
(1)设定算法参数,产生初始解x,置空禁忌表。
(2)判断是否满足终止条件?若是,则结束,并输出结果;否则,继续以下步骤。
(3)利用当前解x的邻域结构产生邻域解,并从中确定若干候选解。
(4)对候选解判断是否满足藐视准则?若成立,则用满足藐视准则的最佳状态y替代x成为新的当前解,并用y对应的禁忌对象替换最早进入禁忌表的禁忌对象,同时用y替换“bestsofar”状态,然后转步骤(6);否则,继续以下步骤。
(5)判断候选解对应的各对象的禁忌情况,选择候选解集中非禁忌对象对应的最佳状态为新的当前解,同时用与之对应的禁忌对象替换最早进入禁忌表的禁忌对象。
(6)转步骤(2)。
算法可用图1所示的流程图更为直观的描述。
3禁忌搜索算法中的关键设计
3.1编码及初始解的构造
禁忌搜索算法首先要对待求解的问题进行抽象,分析问题解的形式以形成编码。
禁忌搜索的过程就是在解的编码空间里找出代表最优解或近似优解的编码串。
编码串的设计方式有多种策略,主要根据待解问题的特征而定。
二进制编码将问题的解用一个二进制串来表示2],十进制编码将问题的解用一个十进制串来表示3],实数编码将问题的解用一个实数来表示4],在某些组合优化问题中,还经常使用混合编码5]、0-1矩阵编码等。
禁忌搜索对初始解的依赖较大,好的初始解往往会提高最终的优化效果。
初始解的构造可以
随机产生,但效果往往不够理想,通常是基于问题特征信息,借助一些启发式方法产生,以保证初始解的性能。
3.2邻域移动、邻域解及邻域解规模
邻域移动,相关文献也称作邻域操作、邻域结构、邻域变换等。
禁忌搜索要想不断进行就要依赖邻域移动来不断拓展搜索空间,邻域移动是在当前解的基础上,按照特定的移动策略产生一定数目的新解,这些新解被称为邻域解,新解的数目称为邻域解规模。
邻域移动的设计通常与问题有关,如排列置换类组合优化问题,常用的邻域移动方法是交换、插入、逆序等3,6,7,8]。
不同的移动将导致邻域解个数及其变化情况的不同,进而影响搜索的质量和效率。
在一些应用中为了取得好的搜索效果,会根据搜索的进展情况动态改变邻域移动策略,即变邻域移动9]。
邻域移动的设计策略既要保证变化的有效性还要保证变化的平滑性,即产生的邻域解和当前解既有不同,又不能差异太大。
不同使搜索过程向前进行,不能差异太大保证搜索是有序而非随机的搜索。
邻域解的规模,也并不总是取可产生邻域解个数的上限,可以根据需要和经验设定成小于上限的值,以提高搜索的运行效率。
3.3解的评价函数
解的评价函数,相关文献又称其为适应值函数、适配值函数或适应度函数。
对于禁忌搜索空间中的解,通过评价函数来计算其对应的评价函数值,评价函数值的大小代表了解的优劣程度。
根据问题的特性,可能评价函数值越大越好,反之也可能越小越好。
依据数学方法,两种目标可以等价转换。
直接把优化目标作为评价函数是一种简单、直观的方法,同时任何与优化目标等价的变换函数也可以作为评价函数。
有时,目标函数的计算困难或是耗时较多,则可以取体现问题目标的特征值来替代计算,但必须要保证特征值与问题目标有一致的最优性。
与遗传算法的评价函数类似,在求解带有约束的优化问题时,可以将解违反约束的情况作为惩罚因子加入评价函数,从而规避传统启发式方法中对于约束的复杂处理。
基本形式如公式(1)。
其中,P(Rj,x)为第j个约束的惩罚值,当解满足约束时,惩罚值为0。
关于评价函数的设计详见文献10]。
3.4禁忌表、禁忌对象、禁忌长度、候选解及禁忌频率
禁忌表是用来存放禁忌对象的一个容器,被放入禁忌表中的禁忌对象在解禁之前不能被再次搜索,可见禁忌表模拟了人的记忆机制,防止搜索陷入局部最优,进而探索更多的搜索空间。
禁忌表可以使用数组、队列、栈、链表等顺序结构实现,每个顺序结构的元素定义根据具体问题确定。
禁忌对象就是放入禁忌表中的元素,归纳而言,禁忌对象通常可选取状态(解的编码)本身或状态分量或适配值的变化等,禁忌范围依次扩大1]。
其中选取状态本身易于理解,也最为常用,禁忌范围最小。
禁忌长度就是每个禁忌对象在禁忌表中的生存时间,也称为禁忌对象的任期。
当一个禁忌对象加入禁忌表时,设置其任期为禁忌长度值,搜索过程每迭代一次,禁忌表中的各禁忌对象的任期自动减1,当某一禁忌对象任期为0时,将其从禁忌表中删除。
任期不为0的禁忌对象处于禁忌状态,不能被搜索过程选为新解。
候选解是当前解邻域解集的一个子集。
搜索中为了减少搜索的代价(包括空间和时间),要求禁忌长度和候选解集尽量小,但禁忌长度过小将使搜索无法跳出局部最小,候选解集过小将使搜索早熟收敛。
候选解集的大小常根据问题特性和对算法的要求确定,禁忌长度的选取则主要有静态和动态两种方法。
静态方法是指在搜索过程中,禁忌长度是一个固定值,比如,其中n为问题维数或规模。
动态方法是指在搜索过程中,禁忌长度也是动态变化的,当算法搜索能力较强时,可以增大禁忌长度从而延续当前的搜索能力,并避免搜索陷入局部优解,反之亦然。
禁忌频率记录每个禁忌对象出现在禁忌表中的次数,以此作为搜索过程的重要参考,如若某个对象出现频繁,则可以增加禁忌长度来避免循环。
此外可以把某对象的禁忌频率作为评价解
的因素加入评价函数来指导搜索过程。