当前位置:文档之家› 禁忌搜索算法

禁忌搜索算法

禁忌搜索算法
禁忌搜索算法

禁忌搜索算法

2009210042 李同玲运筹学与控制论

搜索是人工智能的一个基本问题,一个问题的求解过程就是搜索。人工智能在各应用领域中,被广泛的使用。现在,搜索技术渗透在各种人工智能系统中,可以说没有哪一种人工智能的应用不用搜索方法。

禁忌搜索算法(Tabu Search或Taboo Search,简称TS)的思想最早由Glover (美国工程院院士,科罗拉多大学教授)在1977年提出,它是对局部邻域搜索的一种扩展,是一种全局邻域搜索算法,是人工智能的一种体现,是一种全局逐步寻优算法,是对人类智力过程的一种模拟。TS算法通过引入一个灵活的存储结构和相应的禁忌准则来避免迂回搜索,并通过藐视准则来赦免一些被禁忌的优良状态,进而保证多样化的有效探索以最终实现全局优化。迄今为止,TS算法在组合优化、生产调度、机器学习、电路设计和神经网络等领域取得了很大的成功,近年来又在函数全局优化方面得到较多的研究,并大有发展的趋势。

1.1引言

1.1.1局部邻域搜索

局部邻域搜索是基于贪婪思想持续地在当前的邻域中进行搜索,虽然算法通用易实现,且容易理解,但其搜索性能完全依赖于邻域结构和初始解,尤其容易陷入局部极小而无法保证全局优化性。

局部搜索的算法可以描述为:

1、 选定一个初始可行解:0x ;记录当前最优解0best x x =,()best T N x =;

2、 当\best T x =?时,或满足其他停止运算准则时,输出计算结果,

停止运算;否则,从T 中选一集合S ,得到S 中的最好解now x ;若()()now best f x f x <,则best now x x =,()best T N x =;否则,\T T S =;重复2,继续搜索

这种邻域搜索方法容易实现理解,容易实现,而且具有很好的通用性,但是搜索结果完全依赖于初始解和邻域的结构,而且只能搜索到局部最优解。为了实现全局搜索,禁忌搜索采用允许接受劣解来逃离局部最优解。针对局部领域搜索,为了实现全局优化,可尝试的途径有:以可控性概率接受劣解来逃逸局部极小,如模拟退火算法;扩大领域搜索结构,如TSP 的2-opt 扩展到k-opt ;多点并行搜索,如进化计算;变结构领域搜索( Mladenovic et al,1997);另外,就是采用TS 的禁忌策略尽量避免迂回搜索,它是一种确定性的局部极小突跳策略。

1.1.2禁忌搜索算法的基本思想

禁忌搜索算法的基本思想就是在搜索过程中将近期的历史上的搜索过程存放在禁忌表(Tabu List )中,阻止算法重复进入,这样就有效地防止了搜索过程的循环。禁忌表模仿了人类的记忆功能,禁忌搜索因此得名,所以称它是一种智能优化算法。

具体的思路如下:禁忌搜索算法采用了邻域选优的搜索方法,为了能逃离局部最优解,算法必须能够接受劣解,也就是每一次迭代得到的解不必一定优于原来的解。但是。一旦接受了劣解,迭代就可能

陷入循环。为了避免循环,算法将最近接受的一些移动放在禁忌表中,在以后的迭代中加以禁止。即只有不在禁忌表中的较好解(可能比当前解差)才能接受作为下一次迭代的初始解。随着迭代的进行,禁忌表不断更新,经过一定迭代次数后,最早进入禁忌表的移动就从禁忌表中解禁退后。

为了找到“全局最优解”,就不应该执着于某一个特定的区域。局部搜索的缺点就是太贪婪地对某一个局部区域以及其邻域搜索,导致一叶障目,不见泰山。禁忌搜索就是对于找到的一部分局部最优解,有意识地避开它(但不是完全隔绝),从而获得更多的搜索区间。兔子们找到了泰山,它们之中的一只就会留守在这里,其他的再去别的地方寻找。就这样,一大圈后,把找到的几个山峰一比较,珠穆朗玛峰脱颖而出。

当兔子们再寻找的时候,一般地会有意识地避开泰山,因为他们知道,这里已经找过,并且有一只兔子在那里看着了。这就是禁忌搜索中“禁忌表(tabu list)”的含义。那只留在泰山的兔子一般不会就安家在那里了,它会在一定时间后重新回到找最高峰的大军,因为这个时候已经有了许多新的消息,泰山毕竟也有一个不错的高度,需要重新考虑,这个归队时间,在禁忌搜索里面叫做“禁忌长度(tabu length)”;如果在搜索的过程中,留守泰山的兔子还没有归队,但是找到的地方全是华北平原等比较低的地方,兔子们就不得不再次考虑选中泰山,也就是说,当一个有兔子留守的地方优越性太突出,超过了“best to far”的状态,就可以不顾及有没有兔子留守,都把这个地

方考虑进来,这就叫“特赦准则(aspiration criterion)”。这三个概念是禁忌搜索和一般搜索准则最不同的地方。

1.2算法的构成要素

禁忌搜索最重要的思想是标记对应已搜索的局部最优解的一些对象,并在进一步的迭代搜索中尽量避开这些对象(而不是绝对禁止循环),从而保证对不同的有效搜索途径的探索。禁忌搜索涉及到编码方式(Encode)、适值函数、移动(Moving)与领域(neighborhood)、禁忌表(tabu list)、禁忌长度(tabu 1ength)、选择策略(Selection Strategy)、候选解(candidate)、藐视准则(candidate)等概念,下面将介绍一下这些概念

1.2.1编码方法

编码就是将实际问题的解用一种便于算法操作的形式来描述,通常采用数学的形式;算法进行过程中活着算法结束之后,还需要通过解码来还原到实际问题的解。

根据问题的具体情况,可以灵活地选择编码方式。下面介绍两种编码。

(1)编码1

各不相同的n件物品要分为m组,满足特定的约束条件,要达到特定的目标函数。以自然数1-n分别代表n件物品,n个数加上m-1个分割符号(例如用0表示)混编在一起,随意排列,使得到一种编码方式。例如,n=9,m=3,下面便是一个合法的编码:

1-3-4-0-2-6-7-5-0-8-9

这种可以成为带分隔符的顺序编码。

(2)编码2

编码的每一位分别代表一件物品,而每一位的值代表该物品所在得分组。同样是n=9,m=3的情况,可以给出如下形式的编码:

1-2-1-1-2-2-3-3

这种是一般的自然数编码。

不同编码形式通常是可以相互转化的,例如带分隔符的顺序编码与一般的自然数编码就很容易相互转化。事实上,上面给出的两个编码表示的是同一个解,也就是物品1,3,4分在第一组;物品2,6,7,5分在第二组;其余的物品8,9分在第三组。

1.2.2适值函数的构造

将目标函数直接作为适值函数是最直接也是最容易理解的做法。 当然,对目标函数的任何变形都可以作为适值函数,只要这个变形是严格单调的。例如,对于目标函数才c(x),设适值函数用c ’(x) 表示,

那么2()(())()...()c x c x kc x b a c x +?

?=???

0()00,1k c X a a ≠>>≠那么都是可以的,只要在选择的时候注意一下

这个变形应该和原来目标函数的大小顺序保持一致。

适值函数的选择主要考虑提高算法的效率、便于搜索的进行等因素,以上给出的各种变形都是针对特定的目标函数形式为了简化算法而设计的。

1.2.3初始解的获得

禁忌搜索算法可以随机给出初始解,也可以事先使用其他启发式

等算法给出一个较好的初始解。由于禁忌搜索算法主要是基于邻域搜索的,初始解的好坏对搜索的性能影响很大。尤其是一些带有很复杂约束的优化问题,如果随机给出初始解很可能是不行的,甚至通过多步搜索也很难找到一个可行解,这个时候应该针对特定的复杂约束,采用启发式方法或其它方法找出一个可行解作为初始解。

1.2.4移动与邻域移动

移动是从当前解产生新解的途径,从当前解可以进行的所有移动构成邻域,也可以理解为从当前解经过“一步”可以到达的区域。适当的移动规则的设计,是取得高效的搜索算法的关键。

邻域移动是从一个解产生另一个解的途径。它是保证产生好的解和算法搜索速度的最重要因素之一。邻域移动定义的方法很多,对于不同的问题应采用不同的定义方法。通过移动,目标函数值将产生变化,移动前后的目标函数值之差,称之为移动值。如果移动值是非负的,则称此移动为改进移动;否则称作非改进移动。最好的移动不一定是改进移动,也可能是非改进移动,这一点就保证搜索陷入局部最优时,禁忌搜索算法能自动把它跳出局部最优。

1.2.5禁忌表

不允许恢复即被禁止的性质称作Tabu。禁忌表的主要目的是阻止搜索过程中出现循环和避免陷入局部最优,它通常记录前若干次的移动,禁止这些移动在近期内返回。在迭代固定次数后,禁忌表释放这些移动,重新参加运算,因此它是一个循环表,每迭代一次,将最近的一次移动放在禁忌表的末端,而它的最早的一个移动就从禁忌表中

释放出来。为了节省记忆时间,禁忌表并不记录所有的移动,只记录那些有特殊性质的移动,如记载能引起目标函数发生变化的移动。禁忌表记载移动的方式主要有三种:*记录目标值;*移动前的状态;*移禁忌搜索算法在冷藏供应链配送网络中的应用研究动本身。

禁忌表是禁忌搜索算法的核心,禁忌表的大小在很大程度上影响着搜索速度和解的质量。如果选择的好,可有助于识别出曾搜索过的区域。实验表明,如果禁忌表长度过小,那么搜索过程就可能进入死循环,整个搜索将围绕着相同的几个解徘徊;相反,如果禁忌表长度过大,那它将在相当大的程度上限制了搜索区域,好的解就有可能被跳过,同时,不会改进解的效果而增加算法运算时间。因此一个好的禁忌表长度应该是尽可能小却又能避免算法进入循环。禁忌表的这种特性非常类似于“短期记忆”,因而人们把禁忌表称作短期记忆函数。

禁忌表另一个作用是通过调整禁忌表的大小使搜索发散或收敛。初始搜索时,为提高解的分散性,扩大搜索区域,使搜索路径多样化,经常希望禁忌表长度小。

相反当搜索过程接近最优解时,为提离解的集中性,减少分散,缩小搜索区域,这时通常希望禁忌表长度大。为达到这样的目的,最近越来越多的人们允许禁忌表的大小和结构随搜索过程发生改变,即使用动态禁忌表,实验结果表明了动态禁忌表往往比固定禁忌表获得更好的解。

禁忌表是用来存放禁忌对象的一个容器,被放入禁忌表中的

禁忌对象在解禁之前不能被再次搜索,可见禁忌表模拟了人的记

忆机制,防止搜索陷入局部最优,进而探索更多的搜索空间。禁

忌表可以使用数组、队列、栈、链表等顺序结构实现,每个顺序

结构的元素定义根据具体问题确定。

禁忌对象就是放入禁忌表中的元素,归纳而言,禁忌对象通

常可选取状态(解的编码)本身或状态分量或适配值的变化等,

禁忌范围依次扩大。其中选取状态本身易于理解,也最为常

用,禁忌范围最小。

禁忌长度就是每个禁忌对象在禁忌表中的生存时间,也称为

禁忌对象的任期。当一个禁忌对象加入禁忌表时,设置其任期为

禁忌长度值,搜索过程每迭代一次,禁忌表中的各禁忌对象的任

期自动减1,当某一禁忌对象任期为0时,将其从禁忌表中删除。任期不为0的禁忌对象处于禁忌状态,不能被搜索过程选为新解。

候选解是当前解邻域解集的一个子集。搜索中为了减少搜索

的代价(包括空间和时间),要求禁忌长度和候选解集尽量小但禁忌长度过小将使搜索无法跳出局部最小,候选解集过小将使搜索早熟收敛。候选解集的大小常根据问题特性和对算法的要求确定,禁忌长度的选取则主要有静态和动态两种方法。静态方法是指在搜索过程中,禁忌长度是一个固定值,比如n,其中n为问题维数或规模。动态方法是指在搜索过程中,禁忌长度也是动态变化的,当算法搜索能力较强时,可以增大禁忌长度从而延续当前的搜索能力,并避免搜索陷入局部最优解,反之亦然。禁忌频率记录每个禁忌对象出现在禁忌表中的次数,以此作为搜索过程的重要参考,如若某个对象出现频繁,则

可以增加禁忌长度来避免循环。此外可以把某对象的禁忌频率作为评价解的因素加入评价函数来指导搜索过程。

1.2.6.选择策略

选择策略即择优规则,是对当前的邻域移动选择一个移动而采用的准则。择优规则可以采用多种策略,不同的策略对算法的性能影响不同。一个好的选择策略应该是既保证解的质量又保证计算速度。当前采用最广泛的两类策略是最好解优先策略和第一个改进解优先策略。最好改进解优先策略就是对当前邻域中选择移动值最好的移动产生的解,作为下一次迭代的开始。而第一个改进解优先策略是搜索邻域移动时选择第一改进当前解的邻域移动产生的解作为下一次迭代的开始。最好改进解优先策略相当于寻找最陡的下降,这种择优规则效果比较好,但是它需要更多的计算时间;而最快的下降对应寻找第一个改进解的移动,由于它无需搜索整个一次邻域移动,所以它所花计算时间较少,对于比较大的邻域,往往比较适合。

1.2.7.破禁水平

破禁水平通常指渴望水平(Aspiration)函数选择,当一个禁忌移动在随后T次的迭代内再度出现时,如果它能把搜索带到一个从未搜索过的区域,则应该接受该移动即破禁,不受禁忌表的限制。衡量标准就是定义一个渴望水平函数,渴望水平函数通常选取当前迭代之前所获得的最好解的目标值或此移动禁忌时的目标值作为渴望水平函数。

渴望水平的设定也有很多种形式,总结起来如下。

(1)基于适配值的准则。

(2)基于搜索方向的准则。

(3)基于影响力的准则。

1.2.8.停止规则

在禁忌搜索中停止规则通常有三种,一种是把最大迭代步数作为停止算法的标准,而不以局优为停止规则;第二种是在给定数目的迭代内所发现的最好解无法改进或无法离开它时,算法停止,最后一种是设定某对象的最大禁忌频率。如果某对象的禁忌频率达到了事先给定的值,或者历史最优值连续若干步迭代得不到改善,则算法停止。

1.3禁忌搜索算法流程

简单TS算法的基本思想是:给定一个当前解(初始解)和一种邻域,然后在当前解的邻域中确定若干候选解;若最佳候选解对应的目标值优于“best so far”状态,则忽视其禁忌特性,用其替代当前解和“best so far”状态,并将相应的对象加入禁忌表,同时修改禁忌表中各对象的任期;若不存在上述候选解,则选择在候选解中选择非禁忌的最佳状态为新的当前解,而无视它与当前解的优劣,同时将相应的对象加入禁忌表,并修改禁忌表中各对象的任期;如此重复上述迭代搜索过程,直至满足停止准则。

简单禁忌搜索的算法步骤可描述如下:

(1)给定算法参数,随机产生初始解x,置禁忌表为空。

(2)判断算法终止条件是否满足?若是,则结束算法并输出优化结果;否则,继续以下步骤。

(3)利用当前解的邻域函数产生其所有(或若干)邻域解,并从中

确定若干候选解。

(4)对候选解判断藐视准则是否满足?若成立,则用满足藐视准则的最佳状态y替代x成为新的当前解,即x=y,并用与y对应的禁忌对象替换最早进入禁忌表的禁忌对象,同时用y替换“best so far”状态,然后转步骤6;否则,继续以下步骤。

(5)判断候选解对应的各对象的禁忌属性,选择候选解集中非禁忌对象对应的最佳状态为新的当前解,同时用与之对应的禁忌对象替换最早进入禁忌表的禁忌对象元素。

(6)转步骤(2)。

可见,简单的禁忌搜索是在领域搜索的基础上,通过设置禁忌表来禁忌一些已经历的操作,并利用藐视准则来奖励一些优良状态,其中领域结构、候选解、禁忌长度、禁忌对象、藐视准则、终止准则等是影响禁忌搜索算法性能的关键。需要指出的是:

(1)首先,由于TS是局部领域搜索的一种扩充,因此领域结构的设计很关键,它决定了当前解的领域解的产生形式和数目,以及各个解之间的关系。

(2)其次,出于改善算法的优化时间性能的考虑,若领域结构决定了大量的领域解(尤其对大规模问题,如TSP的SW AP操作将产生Cn2个领域解),则可以仅尝试部分互换的结果,而候选解也仅取其中的少量最佳状态。

(3)禁忌长度是一个很重要的关键参数,它决定禁忌对象的任期,其大小直接进而影响整个算法的搜索进程和行为。同时,以上示例中,

禁忌表中禁忌对象的替换是采用FIFO方式(不考虑藐视准则的作用),当然也可以采用其他方式,甚至是动态自适应的方式。

(4)藐视准则的设置是算法避免遗失优良状态,激励对优良状态的局部搜索,进而实现全局优化的关键步骤。

(5)对于非禁忌候选状态,算法无视它与当前状态的适配值的优劣关系,仅考虑它们中间的最佳状态为下一步决策,如此可实现对局部极小的突跳(是一种确定性策略)。

(6)为了使算法具有优良的优化性能或时间性能,必须设置一个合理的终止准则来结束整个搜索过程。

此外,在许多场合禁忌对象的被禁次数(frequency)也被用于指导搜索,以取得更大的搜索空间。禁忌次数越高,通常可认为出现循环搜索的概率越大。

我们可以明显地看到,邻域函数、禁忌对象、禁忌表和藐视准则,构成了禁忌搜索算法的关键。其中,邻域函数沿用局部邻域搜索的思想,用于实现邻域搜索;禁忌表和禁忌对象的设置,体现了算法避免迂回搜索的特点;藐视准则,则是对优良状态的奖励,它是对禁忌策略的一种放松。需要指出的是,上述算法仅是一种简单的禁忌搜索框架,对各关键环节复杂和多样化的设计则可构造出各种禁忌搜索算法。同时,算法流程中的禁忌对象,可以是搜索状态,也可以是特定搜索操作,甚至是搜索目标值等。

同时,与传统的优化算法相比,TS算法的主要特点是:

(1)在搜索过程中可以接受劣解,因此具有较强的“爬山”能力;

(2)新解不是在当前解的邻域中随机产生,而或是优于“best so far ”的解,或是非禁忌的最佳解,因此选取优良解的概率远远大于其他解。由于TS 算法具有灵活的记忆功能和藐视准则,并且在搜索过程中可以接受劣解,所以具有较强的“爬山”能力,搜索时能够跳出局部最优解,转向解空间的其他区域,从而增强获得更好的全局最优解的概率,所以TS 算法是一种局部搜索能力很强的全局迭代寻优算法.

我们首先用一个示例来理解禁忌搜索及其各重要概念,而后给出算法的一般流程。

示例:五城市的TSP 问题,设禁忌长度为3,以SW AP 为邻域操作(解的起点是1),规定()x N x ?,候选解选当前邻域解集中的最佳4

个解。问题的距离矩阵如下:()01015621008139158020156132005291550ij d ?? ? ? ?= ? ? ???

第一步:当前状态为(1,2,3,4,5;45),其中45为目标值。 此时禁忌表H =?,候选解集为{(1,3,2,4,5;43),(1,4,3,2,5;45),(1,2,5,4,3;59),(1,2,3,5,4;44)},则选取(1,3,2,4,5;43)为新的当前解,并令H={(1,3,2,4,5;43)},

第二步:当前解为(1,3,2,4,5;43),H={(1,3,2,4,5;43)},:候选解集为{(1,3,2,5,4;43),(1,4,2,3,5;

44),(1,2,3,4,5;45),(1,3,5,4,2;48)},则选取(1,3,2,5,4;43)为新的当前解,并令H={(1,3,2,4,5;43),(1,3,2,5,4;43)}

第三步:当前解为(1,3,2,5,4;43),H={(1,3,2,4,5;43),(1,3,2,5,4;43)},候选解集为{(1,3,2,4,5;43),(1,2,3,5,4;44),(1,5,2,3,4,;45),(1,4,2,5,3,;58)},则选取(1,2,3,5,4;43)为新的当前解,并令H={(1,3,2,4,5;43),(1,3,2,5,4;43),(1,2,3,5,4;44)} 第四步:当前解为(1,2,3,5,4;44),H={(1,3,2,4,5;43),(1,3,2,5,4;43),(1,2,3,5,4;44)},候选解集为{(1,3,2,5,4;43),(1,5,3,2,4;44),(1,2,3,4,5;45),(1,2,4,5,3,;58)},则选取(1,5,3,2,4;44)为新的当前解,并令H={(1,3,2,5,4;43),(1,2,3,5,4;44),(1,5,3,2,4;44)}

第五步:当前解为(1,5,3,2,4;44),H={(1,3,2,5,4;43),(1,2,3,5,4;44),(1,5,3,2,4;44)},候选解集为{(1,5,4,2,3;43),(1,2,3,5,4;44),(1,5,3,4,2;44),(1,5,2,3,4;58)},则选取(1,5,4,2,3;44)为新的当前解。

1.4中期表与长期表

1.4.1中期表

中期表也称为频数表或频率表。禁忌频数(频率)是对禁忌属性的一种补充,可以放宽选择决策对象的范围。例如,如果某个适配值频繁出现,可以推测搜索陷入了循环或者达到了某个极限点,或者说算法当前参数很难搜索到更好的状态,需要调整参数,以期望更好的

效果。

1.4.2长期表

长期表:短期记忆用来避免最近所作的一些移动被重复,但是在很多的情况下短期记忆并不足以把算法搜索带到能够改进解的区域。因此在实际应用中常常短期记忆与长期记忆相结合使用,以保持局部的强化和全局多样化之间的平衡,即在加强与好解有关性质的同时还能把搜索带到未搜索过的区域。

在长期记忆中,频率起着非常重要的作用,使用频率的目的就是通过了解同样的选择在过去做了多少次来重新指导局部选择。当在非禁忌移动中找不到可以改进的解时用长期记忆更有效。

目前长期记忆函数主要有两种形式,一种通过惩罚的形式,即用一些评价函数来惩罚在过去的搜索中用得最多或最少的那些选择,并用一些启发方法来产生新的初始点。用这种方式获得的多样性可以通过保持惩罚一段时间来得到加强,然后取消惩罚,禁忌搜索继续按照正常的评价规则进行。另一种形式采用频率矩阵,使用两种长期记忆,一种是基于最小频率的长期记忆,另一种是基于最大频率的长期记忆。通过使用基于最小频率的长期记忆,可以在未搜索的区域产生新的序列;而使用基于最大频率的长期记忆,可以在过去的搜索中认为是好的可行区域内产生不同的序列。在整个搜索过程中频率矩阵被不断的修改。

1.5算法性能的改进

1.5.1并行禁忌搜索算法

并行禁忌搜索算法分为两种,一种是基于空间分解策略,另一种是基于任务分解策略。

1.基于空间分解策略包括搜索空间分解和邻域分解两种做法。

搜索空间分解,即通过搜索空间的分解将原问题分解为多个子问题分别进行求解,从而实现并行化。这里求解各个子问题的算法参数可以相同,也可以不相同。

邻域分解策略,即每一步中用很多种方法对邻域分解得到的子集进行评价,从而实现对最佳邻域解搜索的并行化,这种分解策略对同步的要求较高。

2.基于任务分解策略

将待求解问题分解为多个任务,每一个任务使用一个禁忌搜索算法来求解。不同的禁忌搜索算法可以设置不同的参数,包括初始解、邻域结构、选择策略、渴望水平等。在多处理机的情况下,根据这些任务对各处理机的分配情况,又可以分为如下三种。

(1)非自适应方式。

(2)半自适应方式。

(3)自适应方式。

1.5.2主动禁忌搜索算法

主动搜索(Reactive Search,简称RS)是一种反馈机制,是一种适合与求解离散优化问题的启发式算法。Battiti和Tecchiolli (1994)将主动搜索算法机制引入到禁忌搜索算法中来,提出了主动禁忌搜索(Reactive Tabu Search,简称RTS )算法。主动禁忌搜索算法利用反

馈机制自动调整禁忌表长度,自动平衡表中强化搜索策略和分散多样化搜索策略。

1.6禁忌搜索算法的应用

1.6.1基于禁忌搜索的组合优化

置换Flow-shop问题是一类典型的组合优化问题,而且是典型NP-complete问题。基于禁忌搜索算法的一般设计原则,其算法可以按如下方案实现。

1.初始解,就置换Flow-shop问题而言,NEH方法(Nawaz)是一种性能较好的快速构造性方法,借助于NEH方法进行初始化为许多算法所采用(Ben-Daya)

2.邻域结构,邻域结构的设计通常与问题有关。就置换Flow-shop这类以置换为搜索状态的组合优化问题,通常用的方法是互换(SW AP)、插入(INSERT)、逆序(INVERSE)等操作,而这些操作自然可成为算法中的禁忌对象。

3.候选解的选择,首先需要确定的是候选解的数量,然后确定最佳候选解的选取。原则上应当做到对当前解的邻域解的便历,但当问题规模较大时,当前解的邻域数量将很大,而考虑到邻域搜索的效率,通常仅取当前解的邻域解集的一个子集

1.6.2基于禁忌搜索的函数优化

对于函数优化问题,设计禁忌搜索算法的目的主要是克服局部极小的影响以高效实现全局优化

1.6.3.基于禁忌搜索的多目标优化问题

在过去,实际问题必须描述成一种特定的传统方法能够求解的形式,然而这是不容易。为了能够求解,很多实际问题需要经过大量的假设或者修改,例如:变量德尔取整(离散化),放松约束,某种程度上做近似处理,等等,这必然会影响到解的质量。为了解决传统优化方法中的这些问题,提出了一系列不依赖于问题的启发式算法,例如本书介绍的禁忌搜索算法、遗传算法、模拟退火算法等。

使用禁忌搜索算法求解多目标问题,最简单的一个思路就是通过引入权重机制,将多目标问题化为单目标问题,然后求解。这种做法完全属于多目标问题的处理,求解所用的禁忌搜索算法与普通的禁忌搜索算法没有任何区别。

禁忌搜索算法浅析

禁忌搜索算法浅析 摘要:本文介绍了禁忌搜索算法的基本思想、算法流程及其实现的伪代码。禁忌搜索算法(Tabu Search或Taboo Search,简称TS算法)是一种全局性邻域搜索算法,可以有效地解决组合优化问题,引导算法跳出局部最优解,转向全局最优解的功能。 关键词:禁忌搜索算法;组合优化;近似算法;邻域搜索 1禁忌搜索算法概述 禁忌搜索算法(Tabu Search)是由美国科罗拉多州大学的Fred Glover教授在1986年左右提出来的,是一个用来跳出局部最优的搜寻方法。在解决最优问题上,一般区分为两种方式:一种是传统的方法,另一种方法则是一些启发式搜索算法。使用传统的方法,我们必须对每一个问题都去设计一套算法,相当不方便,缺乏广泛性,优点在于我们可以证明算法的正确性,我们可以保证找到的答案是最优的;而对于启发式算法,针对不同的问题,我们可以套用同一个架构来寻找答案,在这个过程中,我们只需要设计评价函数以及如何找到下一个可能解的函数等,所以启发式算法的广泛性比较高,但相对在准确度上就不一定能够达到最优,但是在实际问题中启发式算法那有着更广泛的应用。 禁忌搜索是一种亚启发式随机搜索算法,它从一个初始可行解出发,选择一系列的特定搜索方向(移动)作为试探,选择实现让特定的目标函数值变化最多的移动。为了避免陷入局部最优解,TS搜索中采用了一种灵活的“记忆”技术,对已经进行的优化过程进行记录和选择,指导下一步的搜索方向。 TS是人工智能的一种体现,是局部领域搜索的一种扩展。禁忌搜索是在领域搜索的基础上,通过设置禁忌表来禁忌一些已经历的操作,并利用藐视准则来奖励一些优良状态,其中涉及邻域(neighborhood)、禁忌表(tabu list)、禁忌长度(tabu 1ength)、候选解(candidate)、藐视准则(candidate)等影响禁忌搜索算法性能的关键因素。迄今为止,TS算法在组合优化、生产调度、机器学习、电路设计和神经网络等领域取得了很大的成功,近年来又在函数全局优化方面得到较多的研究,并大有发展的趋势。 2禁忌搜索算法的基本思想 禁忌搜索最重要的思想是标记对应已搜索的局部最优解的一些对象,并在进一步的迭代搜索中尽量避开这些对象(而不是绝对禁止循环),从而保证对不同的有效搜索途径的探索,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矩阵编码等。 禁忌搜索对初始解的依赖较大,好的初始解往往会提高最终的优化效果。初始解的构造可以

论文-禁忌搜索算法

基于禁忌搜索算法的车辆路径选择 摘要:本文从VRP的提出背景与求解方法出发,阐释了禁忌搜索算法的原理与影响算法性能的关键因素,进而将禁忌搜索算法的思想运用于解决车辆路径问题,在VRP问题初始解的基础上,用禁忌搜索算法优化车辆配送路线,设计出直观且策略易于理解的客户直接排列的解的表示方法,最后将该算法用C语言实现并用于求解VRP问题,测试结果表明该算法可行且解的质量较高。 关键词:车辆路径问题;禁忌搜索;邻域;禁忌表 1.引言 物流配送过程的成本构成中,运输成本占到52%之多,如何安排运输车辆的行驶路径,使得配送车辆依照最短行驶路径或最短时间费用,在满足服务时间限制、车辆容量限制、行驶里程限制等约束条件下,依次服务于每个客户后返回起点,实现总运输成本的最小化,车辆路径问题正是基于这一需求而产生的。求解车辆路径问题(Vehicle Routing Problem简记VRP)的方法分为精确算法与启发式算法,精确算法随问题规模的增大,时间复杂度与空间复杂度呈指数增长,且VRP问题属于NP-hard问题,求解比较困难,因此启发式算法成为求解VRP问题的主要方法。禁忌搜索算法是启发式算法的一种,为求解VRP提供了新的工具。本文通过一种客户直接排列的解的表示方法,设计了一种求解车辆路径问题的新的禁忌搜索算法。 因此研究车辆路径问题,就是要研究如何安排运输车辆的行驶路线,使运输车辆依照最短的行驶路径或最短的时间费用,依次服务于每个客户后返回起点,总的运输成本实现最小。 2.车辆路径问题的禁忌搜索算法 2.1 车辆路径问题的描述 车辆路径问题的研究目标是对一系列送货点或取货点,确定适当的配送车辆行驶路线,使车辆有序地通过它们,在满足一定的约束条件(如货物需求量、发送量交发货时间、车辆容量限制、行驶里程限制、时间限制等)下,达到一定的目标(如路程最短、费用最小、时间尽量少、使用车辆尽量少等)。参见下图2.1所示:其中0表示配送中心,1~8表示客户编号。 图2.1 车辆路径问题 在本文中为使得问题易于理解,将该问题描述为:有一定数量的客户,各自有不同数量的货物需求,且每个客户的位置和需求量一定,一个物流中心提供这些货物,并有一个车队负责分送货物,每台配送车辆的载重量一定,这里假设车辆的型号一致,即最大载重量和最

禁忌搜索和应用

目录 一、摘要 (2) 二、禁忌搜索简介 (2) 三、禁忌搜索的应用 (2) 1、现实情况 (2) 2、车辆路径问题的描述 (3) 3、算法思路 (3) 4、具体步骤 (3) 5、程序设计简介 (3) 6、算例分析 (4) 四、禁忌搜索算法的评述和展望 (4) 五、参考文献 (5)

禁忌搜索及应用 一、摘要 工程应用中存在大量的优化问题,对优化算法的研究是目前研究的热点之一。禁忌搜索算法作为一种新兴的智能搜索算法具有模拟人类智能的记忆机制,已被广泛应用于各类优化领域并取得了理想的效果。本文介绍了禁忌搜索算法的特点、应用领域、研究进展,概述了它的算法基本流程,评述了算法设计过程中的关键要点,最后探讨了禁忌搜索算法的研究方向和发展趋势。 二、禁忌搜索简介 禁忌搜索(Tabu Search或Taboo Search,简称TS)的思想最早由Glover(1986)提出,它是对局部领域搜索的一种扩展,是一种全局逐步寻优算法,是对人类智力过程的一种模拟。TS算法通过引入一个灵活的存储结构和相应的禁忌准则来避免迂回搜索,并通过藐视准则来赦免一些被禁忌的优良状态,进而保证多样化的有效探索以最终实现全局优化。相对于模拟退火和遗传算法,TS是又一种搜索特点不同的meta-heuristic算法。 迄今为止,TS算法在组合优化、生产调度、机器学习、电路设计和神经网络等领域取得了很大的成功,近年来又在函数全局优化方面得到较多的研究,并大有发展的趋势。 禁忌搜索是人工智能的一种体现,是局部领域搜索的一种扩展。禁忌搜索最重要的思想是标记对应已搜索的局部最优解的一些对象,并在进一步的迭代搜索中尽量避开这些对象(而不是绝对禁止循环),从而保证对不同的有效搜索途径的探索。禁忌搜索涉及到邻域(neighborhood)、禁忌表(tabu list)、禁忌长度(tabu length)、候选解(candidate)、藐视准则(aspiration criterion)等概念。 三、禁忌搜索的应用 禁忌搜索应用的领域多种多样,下面我们简单的介绍下基于禁忌搜索算法的车辆路径选择。 1、现实情况 物流配送过程的成本构成中,运输成本占到52%之多,如何安排运输车辆的行驶路径,使得配送车辆依照最短行驶路径或最短时间费用,在满足服务时间限制、车辆容量限制、行驶里程限制等约束条件下,依次服务于每个客户后返回起点,实现总运输成本的最小化,车辆路径问题正是基于这一需求而产生的。求解车辆路径问题(vehicle routing problem简记vrp)的方法分为精确算法与启发式算法,精确算法随问题规模的增大,时间复杂度与空间复杂度呈指数增长,且vrp问题属于np-hard问题,求解比较困难,因此启发式算法成为求解vrp问题的主要方法。禁忌搜索算法是启发式算法的一种,为求解vrp提供了新的工具。本文通过一种客户直接排列的解的表示方法,设计了一种求解车辆路径问题的新的禁忌搜索算法。 因此研究车辆路径问题,就是要研究如何安排运输车辆的行驶路线,使运输车辆依照最

禁忌搜索算法摘录

禁忌(Tabu Search)算法是一种亚启发式(meta-heuristic)随机搜索算法1,它从一个初始可行解出发,选择一系列的特定搜索方向(移动)作为试探,选择实现让特定的目标函数值变化最多的移动。为了避免陷入局部最优解,TS搜索中采用了一种灵活的“记忆”技术,对已经进行的优化过程进行记录和选择,指导下一步的搜索方向,这就是Tabu表的建立。 为了找到“全局最优解”,就不应该执着于某一个特定的区域。局部搜索的缺点就是太贪婪地对某一个局部区域以及其邻域搜索,导致一叶障目,不见泰山。禁忌搜索就是对于找到的一部分局部最优解,有意识地避开它(但不是完全隔绝),从而获得更多的搜索区间。兔子们找到了泰山,它们之中的一只就会留守在这里,其他的再去别的地方寻找。就这样,一大圈后,把找到的几个山峰一比较,珠穆朗玛峰脱颖而出。 当兔子们再寻找的时候,一般地会有意识地避开泰山,因为他们知道,这里已经找过,并且有一只兔子在那里看着了。这就是禁忌搜索 中“禁忌表(tabu list)”的含义。那只留在泰山的兔子一般不会就安家在那里了,它会在一定时间后重新回到找最高峰的大军,因为这个时候已经有了许多新的消息,泰山毕竟也有一个不错的高度,需要重新考虑,这个归队时间,在禁忌搜索里面叫做“禁忌长度(tabu length)”;如果在搜索的过程中,留守泰山的兔子还没有归队,但是找到的地方全是华北平原等比较低的地方,兔子们就不得不再次考虑选中泰山,也就是说,当一个没有兔子留守的地方优越性太突出,超过 了“best so far”的状态,就可以不顾及有没有兔子留守,都把这个地方考虑进来,这就叫“特赦准则(aspiration criterion)”。这三个概念是禁忌搜索和一般搜索准则最不同的地方,算法的优化也关键在这里。 伪码表达 procedure tabu search; begin initialize a string vc at random,clear up the tabu list; cur:=vc; repeat select a new string vn in the neighborhood of vc; if va>best_to_far then {va is a string in the tabu list} begin

禁忌搜索算法公式

6.2基于均衡原理的LRP 算法设计 6.2.1基于均衡原理的LRP 算法整体流程 基于均衡原理的LRP 算法整体流程如下: step1:初始化,设置整体收敛性判断参数δ; step2:随机生成一组LRP 选址问题的解D ,求出相应的目标值F ; step3:根据上层解D ,利用Frank-Wolfe 算法(见6.2.3节)求出各客户的 货物总量Q j 及客户在各配送中心的货物均衡分配量x j i ,; step4:根据D 及x j i ,运用禁忌算法求解VRP 问题(见6.2.4节),得出各配送 中对各客户的单位货物配送费用C j i ,; step5:根据 x j i ,及公式(6-8)求出下层 x j i ,与 d i 的关系y d x j i i j i W ,,+ =; step6:将LRP 模型上层目标函数中用代替,并代入下层求得的Q j 和C j i ,,运用禁忌算法 求得新的LRP 选址规划的解'Z 及目标函数'F (见6.2.2节); step7:如果δ<-F F ' ,转step8,算法结束,D 、F 为LRP 的最终解和解值;否则 '':,:F F D D ==,转step3; step8:算法结束。 6.2.2 LRP 选址规划的禁忌算法 模型上层是基于0-1整数规划的选址问题。由于选址问题是NP-hard ,如果 用精确算法求解,对节点数目的限制将有严格的要求。本章根据模型的特点, 采用禁忌算法优化产业选址问题。 1.解的构造和初始解的生成 采用二进制编码,编码长度为潜在的配送中心地点数量N T ,对于编码中位置i ,1表示选中i 点作为厂址,0表示没有选中。对于解中任意点i ,产生随机数δ,如果N T N /≥δ,则置i 点为0,否则置1。重复以上步骤m 次,得到初始解。 2.邻域的搜索 根据本章选址问题的特点,设计了三种邻域操作,分别为自身取反、2-swap 交换和2-opt 交换。 1).自身取反。为单点操作,即选择解中i 点,对该点的值取反; 2).2-swap 交换。为双点操作,选择解中两点进行交换,其它位置的值不变。例如解001101中的2、6点被选中,则2-swap 交换后变为:011100; 3).2-opt 交换。为多点操作,选择解中两点进行交换,同时两点之间的值逆序改变。例如解001101中的2、6点被选中,则2-swap 交换后变为:010110;

禁忌搜索算法

无时限单向配送车辆优化调度问题的禁忌搜索算法无时限单向配送车辆优化调度问题,是指在制定配送路线时不考虑客户对货物送到(或取走)时间要求的纯送货(或纯取货)车辆调度问题。 无时限单向配送车辆优化调度问题可以描述为:从某配送中心用多台配送车辆向多个客户送货,每个客户的位置和需求量一定,每台配送车辆的载重量一定,其一次配送的最大行驶距离一定,要求合理安排车辆配送路线,使目标函数得到优化,并满足一下条件:(1)每条配送路径上各客户的需求量之和不超过配送车辆的载重量; (2)每条配送路径的长度不超过配送车辆一次配送的最大行驶距离; (3)每个客户的需求必须满足,且只能由一台配送车辆送货。 一、禁忌搜索算法的原理 禁忌搜索算法是解决组合优化问题的一种优化方法。该算法是局部搜索算法的推广,其特点是采用禁忌技术,即用一个禁忌表记录下已经到达过的局部最优点,在下一次搜索中,利用禁忌表中的信息不再或有选择地搜索这些点,以此来挑出局部最优点。 在禁忌搜索算法中,首先按照随机方法产生一个初始解作为当前解,然后在当前解的领域中搜索若干个解,取其中的最优解作为新的当前解。为了避免陷入局部最优解,这种优化方法允许一定的下山操作(使解的质量变差)。另外,为了避免对已搜索过的局部最优解的重复,禁忌搜索算法使用禁忌表记录已搜索的局部最优解的历史信息,这可在一定程度上使搜索过程避开局部极值点,从而开辟新的搜索区域。 二、算法要素的设计 1.禁忌对象的确定 禁忌对象是指禁忌表中被禁的那些变化元素。由于解状态的变化可以分为解的简单变化、解向量分量的变化和目标值变化三种情况,则在确定禁忌对象时也有相对应的三种禁忌情况。 一般来说,对解的简单变化进行禁忌比另两种的受禁范围要小,因此可能早能造成计算时间的增加,但其优点是提供了较大的搜索范围。 根据配送车辆优化调度问题的特点,可采用对解的简单变化进行禁忌的方法。举例进行说明:当解从x变化到y时,y可能是局部最优解,为了避开局部最优解,禁忌y这一解再度出现,可采用如下禁忌规则:当y的领域中有比它更优的解时,选择更优的解;当y为其领域的局部最优解时,不再选y,而选比y稍差的解。 2.禁忌长度的确定 禁忌长度是指被禁对象不允许被选取的迭代步数,一般是给被禁忌对象x一个数l(称为禁忌长度),要求x在l步迭代内被禁,在禁忌表中采用Tabu(x)=l记忆,每迭代一步,该指标做运算Tabu(x)=l-1,直到Tabu(x)=0时解禁。关于禁忌长度l的选取,可归纳为以下几种情况。 (1)l为常数,可取l=10、(n为领域中邻居的总个数)。这种规则容易在算法中实现。 (2)。此时,l是可以变化的数,其变化的依据是被禁对象的目标函数值和领域的结构。、是确定的数,确定的常用方法是根据问题的规模N,限定变化区间;也可以用领域中邻居的个数n确定变化区间。 禁忌长度的选取同实际问题和算法设计者的经验有紧密联系,同时它也会影响计算的复杂性,过短会造成循环的出现,过长又会造成计算时间的增加。 3.候选集合的确定 候选集合由领域中的邻居组成,常规的方法是从领域中选择若干个目标函数值或评价值最佳的邻居。

禁忌搜索算法CC++源代码

禁忌搜索算法C/C++源代码 #define N 100 void yuesefu1(int data[],int result[],int sum,int k) { int i=0,j=0,count=0; int n; while(count=count)/*若此人还在圈内*/ j++; if(j==k) { result[count++]=data[i];/*把出圈的人的编号存入禁忌表*/ j=0; } i++; if(i==sum) i=0; } } void main() { int data[N]; int result[N]={0}; int i,j,total,k; printf("\nPlease input the number of every people.\n"); for(i=0;i=i&&input>0) { data[i]=input; i++;

} else printf("\nData error.Re-input:"); } total=i; printf("\nY ou have input:\n"); for(i=0;i

2013年数学建模第一题方法总结禁忌搜索算法

禁忌搜索算法 又名“tabu搜索算法” 为了找到“全局最优解”,就不应该执着于某一个特定的区域。局部搜索的缺点就是太贪婪地对某一个局部区域以及其邻域搜索,导致一叶障目,不见泰山。禁忌搜索就是对于找到的一部分局部最优解,有意识地避开它(但不是完全隔绝),从而获得更多的搜索区间。兔子们找到了泰山,它们之中的一只就会留守在这里,其他的再去别的地方寻找。就这样,一大圈后,把找到的几个山峰一比较,珠穆朗玛峰脱颖而出。 当兔子们再寻找的时候,一般地会有意识地避开泰山,因为他们知道,这里已经找过,并且有一只兔子在那里看着了。这就是禁忌搜索中“禁忌表(tabu list)”的含义。那只留在泰山的兔子一般不会就安家在那里了,它会在一定时间后重新回到找最高峰的大军,因为这个时候已经有了许多新的消息,泰山毕竟也有一个不错的高度,需要重新考虑,这个归队时间,在禁忌搜索里面叫做“禁忌长度(tabu length)”;如果在搜索的过程中,留守泰山的兔子还没有归队,但是找到的地方全是华北平原等比较低的地方,兔子们就不得不再次考虑选中泰山,也就是说,当一个有兔子留守的地方优越性太突出,超过了“best to far”的状态,就可以不顾及有没有兔子留守,都把这个地方考虑进来,这就叫“特赦准则(aspiration criterion)”。这三个概念是禁忌搜索和一般搜索准则最不同的地方,算法的优化也关键在这里。 伪码表达: procedure tabu search; begin initialize a string vc at random,clear up the tabu list; cur:=vc; repeat select a new string vn in the neighborhood of vc; if va>best_to_far then {va is a string in the tabu list} begin cur:=va; let va take place of the oldest string in the tabu list; best_to_far:=va; end else begin cur:=vn; let vn take place of the oldest string in the tabu list; end; until (termination-condition); end; 以上程序中有关键的几点:

禁忌搜索算法

禁忌搜索算法 2009210042 李同玲运筹学与控制论 搜索是人工智能的一个基本问题,一个问题的求解过程就是搜索。人工智能在各应用领域中,被广泛的使用。现在,搜索技术渗透在各种人工智能系统中,可以说没有哪一种人工智能的应用不用搜索方法。 禁忌搜索算法(Tabu Search或Taboo Search,简称TS)的思想最早由Glover (美国工程院院士,科罗拉多大学教授)在1977年提出,它是对局部邻域搜索的一种扩展,是一种全局邻域搜索算法,是人工智能的一种体现,是一种全局逐步寻优算法,是对人类智力过程的一种模拟。TS算法通过引入一个灵活的存储结构和相应的禁忌准则来避免迂回搜索,并通过藐视准则来赦免一些被禁忌的优良状态,进而保证多样化的有效探索以最终实现全局优化。迄今为止,TS算法在组合优化、生产调度、机器学习、电路设计和神经网络等领域取得了很大的成功,近年来又在函数全局优化方面得到较多的研究,并大有发展的趋势。 1.1引言 1.1.1局部邻域搜索 局部邻域搜索是基于贪婪思想持续地在当前的邻域中进行搜索,虽然算法通用易实现,且容易理解,但其搜索性能完全依赖于邻域结构和初始解,尤其容易陷入局部极小而无法保证全局优化性。 局部搜索的算法可以描述为:

1、 选定一个初始可行解:0x ; 记录当前最优解0best x x =,()best T N x =; 2、 当\best T x =?时,或满足其他停止运算准则时,输出计算结果, 停止运算;否则,从T 中选一集合S ,得到S 中的最好解now x ;若()()now best f x f x <,则b e s t n o w x x =,()best T N x =;否则,\T T S =;重复2,继续搜索 这种邻域搜索方法容易实现理解,容易实现,而且具有很好的通用性,但是搜索结果完全依赖于初始解和邻域的结构,而且只能搜索到局部最优解。为了实现全局搜索,禁忌搜索采用允许接受劣解来逃离局部最优解。针对局部领域搜索,为了实现全局优化,可尝试的途径有:以可控性概率接受劣解来逃逸局部极小,如模拟退火算法;扩大领域搜索结构,如TSP 的2-opt 扩展到k-opt ;多点并行搜索,如进化计算;变结构领域搜索( Mladenovic et al,1997);另外,就是采用TS 的禁忌策略尽量避免迂回搜索,它是一种确定性的局部极小突跳策略。 1.1.2禁忌搜索算法的基本思想 禁忌搜索算法的基本思想就是在搜索过程中将近期的历史上的搜索过程存放在禁忌表(Tabu List )中,阻止算法重复进入,这样就有效地防止了搜索过程的循环。禁忌表模仿了人类的记忆功能,禁忌搜索因此得名,所以称它是一种智能优化算法。 具体的思路如下:禁忌搜索算法采用了邻域选优的搜索方法,为了能逃离局部最优解,算法必须能够接受劣解,也就是每一次迭代得到的解不必一定优于原来的解。但是。一旦接受了劣解,迭代就可能

相关主题
文本预览
相关文档 最新文档