禁忌搜索算法(TS)

禁忌搜索算法(Taboo Search)(TS)

禁忌搜索算法模仿人类的记忆功能,使用禁忌表来封锁刚搜索过的区域来避免迂回搜索,同时赦免禁忌区域中的一些优良状态,进而保证搜索的多样性,从而达到全局最优。

TS具体思路:

禁忌搜索算法采用了邻域选优的搜索方法,为了能逃离局部最优解,算法必须能够接收劣解,也就是每一次迭代得到的解不必一定优于原来的解。但是,一旦接受了劣解,迭代就可能陷入循环。为了避免循环,算法将最近接受的一些移动放在禁忌表中,在以后的迭代中加以禁止。即只有不在禁忌表中的较好解(可能比当前解差)才被接受作为下一代迭代的初始解。随着迭代的进行,禁忌表不断更新,经过一定迭代次数后,最早进入禁忌表的移动就从禁忌表中解禁退出。

算法的构成要素

编码方式、适值函数、解的初始化、移动与邻域、禁忌表、选择策略、渴望水平、停止准则。
主要介绍禁忌表和渴望水平:
禁忌表:用来防止搜索过程中出现循环,避免陷入局部最优。他通常记录最近接受的若干次移动,在一定次数之内禁止再次被访问;经过一定次数之后,这些移动从禁忌表中退出,又可以重新被访问。禁忌表是禁忌搜索算法中的核心,它的功能和人类的短期记忆功能十分相似,因此又称为“短期表”
渴望水平:在某些特定的条件下,不管某个移动是否在禁忌表中,都接受这个移动,并更新当前解和历史最优解。这个移动满足的这个特定条件称为渴望水平,或者称破禁水平,特赦准则。

算法流程

在这里插入图片描述
图中x代表新的改进解,x*代表历史全局最优,x为当前位置。
步骤:
(1)初始化、给出初始解,禁忌表设为空。
(2)判断是否满足停止条件。如果满足,输出结果,算法停止;否则继续以下步骤。
(3)对于候选解集中的最好解,判断其是否满足渴望水平。如果满足,更新渴望水平,更新当前解,转到第(5)步,否则继续以下步骤。
(4)选择候选解集中不被禁忌的最好解作为当前解。
(5)更新禁忌表。
(6)转到第(2)步。

中期表和长期表

使用短期表的搜索方式可以认为是邻域搜索,而使用中期表的方式可以认为是区域强化式搜索,但仍可能达不到全局搜索,使用长期表的目的是实现全局多样化搜索。

改进

1、并行禁忌搜索算法

在这里插入图片描述
搜索空间分解:通过搜索空间的分解将原问题分解为多个子问题分别进行求解,从而实现并行化。
邻域分解:每一步中用多种方式对邻域分解得到的子集进行评价,从而实现对最佳邻域解搜索的并行化,这种分解策略对同步的要求比较高。
任务分解策略:将待求解的问题分解为多个任务,每一个任务使用一个禁忌搜索算法来求解。不同的禁忌搜索算法可以设置不同的参数。

2、主动禁忌搜索算法

主动禁忌搜索算法的核心思想是反馈机制与逃逸机制。
反馈机制用来自动调整禁忌表长度,自动平衡集中强化搜索策略和分散多样性化搜索策略。算法中给吴增大调节系数 N N N I N IN IN N N N I N IN IN > 1)和减小调节系统 N N N D N DN DN(0 < N N N I N IN IN < 1)。搜索过程中,所有访问过的解都被存储起来,每当执行一步移动时,首先检查当前解是否已经访问过。如果已经访问过,说明进入了某个循环,禁忌长度变为原来的 N N N I N IN IN倍;如果经过给定的若干次迭代后,没有重复的解出现,禁忌长度变为原来的 N N N D N DN DN倍。
逃逸机制是为了避免循环。在搜索过程中,当大量解重复出现次数超过给定的次数 R R R E P EP EP时,逃逸机制便被激活。逃逸操作一般通过从当前解执行若干步随机移动实现,执行移动的步长在定义域内随机选择。为了避免很快跳回刚搜索过的区域,所有随机操作都被禁止。

主动禁忌搜索算法流程

在这里插入图片描述
(1)初始化两个计数器:n_dec=0,n_esc=0;
(2)初始化其他参数,给定初始解;
(3)针对当前解,给出候选解集;
(4)根据禁忌表情况和渴望水平情况,选出一个解作为下一次迭代的初始解,更新记录表(包括正常的禁忌表和所有访问过的解)
(5)如果该选中的解出现过,则禁忌长度 t = t ∗ N t=t*N t=tNIN ,n_esc = n_esc+1,n_dec=0;否则n_dec=n_dec+1;
(6)如果n_dec=num_dec,则 t = t ∗ N t=t*N t=tNDE,n_dec=0;
(7)如果n_esc=num_esc,则实施逃逸操作,n_esc=0,n_dec=0;
(8)如果满足停止准则,则算法终止;否则转第(3)步。

主动禁忌搜索算法中,所有访问过的解都需要存储起来,这避免了搜索的循环,同时可以自动地调整禁忌长度,能很多地平衡集中强化搜索与分散多样化搜索。但是,事情都是具有两面性的,主动禁忌搜索算法中存储了大量的信息,而且对这些信息都要频繁地访问,如果只是使用一般的数组来存储,显然是不够的。为了提高搜索的速度,主动禁忌搜索算法中一般使用哈希表来存储这些信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值