通用局部搜索算法之tabu搜索
设施区位及算法 2009-08-28 20:28:34 阅读49 评论0 字号:大中小
tabu搜索算法由爬山法演变而来,又名禁忌搜索算法
禁忌搜索最重要的思想是标记对应已搜索的局部最优解的一些对象,并在进一步的
迭代搜索中尽量避开这些对象(注意不是绝对禁止循环),从而保证对不同的有效
搜索途径的探索。
关于tabu搜索的比喻——来自百度百科
兔子们找到了泰山,它们之中的一只就会留守在这里,其他的再去别的地方寻找。
就这样,一大圈后,把 找到的几个山峰一比较,珠穆朗玛峰脱颖而出。当兔子们
再寻找的时候,一般地会有意识地避开泰山,因为他们知道,这里已经找过,并
且有一只兔子 在那里看着了,这就是禁忌搜索中“禁忌表(tabu list)”的含义。
那只留在泰山的兔子一般不会就安家在那里了,它会在一定时间后重新回到找最高峰
的大军中,因为那个时候应该已经有了许多新的消息,泰山毕竟也有一个不错的高度,
需要重新考虑,这个归队时间,在禁忌搜索里面叫做“禁忌长度(tabu length)”;
如果在搜索的过程中,留守泰山的兔子还没有归队,但是找到的地方全是华北平原等
比较低的地方,兔子们就不得不再次考虑选中泰山,也就是说,当一个有兔子留守的
地方优越性太突出,超过了“best to far”的状态,就可以不顾及有没有兔子留守,都把
这个地方考虑进来,这就叫“特赦准则(aspiration criterion)”。
上述三个概念是禁忌搜索和一般搜索准则不同的地方,算法的优化也关键在这里。
简单TS算法的基本思想描述如下:
(1)给定算法参数,随机产生初始解x,置禁忌表为空。
(2)判断算法终止条件是否满足?若是,则结束算法并输出优化结果;否则,继续以下步骤。
(3)利用当前解的邻域函数产生其所有(或若干)邻域解,并从中确定若干候选解。
(4)对候选解判断特赦准则是否满足?若成立,则用满足特赦准则的最佳状态y替代x成为新的当前解,即x=y,并用与y对应的禁忌对象替换最早进入禁忌表的禁忌对象,同时用y替换“best so far”状态,然后转步骤6;否则,继续以下步骤。
(5)判断候选解对应的各对象的禁忌属性,选择候选解集中非禁忌对象对应的最佳状态为新的当前解,同时用与之对应的禁忌对象替换最早进入禁忌表的禁忌对象元素。
(6)转步骤(2)。
转自:
http://blog.163.com/highway_xxw/blog/static/26754625200972882834278/