初识禁忌搜索算法

  一周前和实验室师弟一起探讨的,在我的影响下他开始去坐毕设了...啧啧;现在等我同学过来找我,把那次的讨论内容回忆一下。

  写一写个人理解,语句比较混乱,只一个入门,我并没有深入研究过。

  这是一个启发式搜索算法。

  以解决TSP问题为例,假设ABCDE五个城市,各个城市间距离的无向图。

  1.假设以A开头,ABCDE,这个假设是随意的,因为TSP是环,没有开头,计算距离的时候需要加上环.

  2.BCDE两两交换,注意是相邻交换,不是A(n,2),是BC,CD,DE交换,算出所有的TSP距离,注意ABCDE距离需要加上EA的距离,假设算出的最短距离的序列为Seq1。

  3.将Seq1加入禁忌表中,包括序号1,表示第一个序列,序列,以及长度。

  4.取Seq1,ABCDE,相邻交换BCDE,这肯定和上一次有重复,但是不会完全重复,取最短路径对应的序列加入禁忌表,成为Seq2.

  5.重复k次,禁忌表的长度为k,为什么禁忌表中要保存k次,不选k次中最小的一次,因为即便最小的一次可能是局部最优,其他的非局部最优通过相邻交换可能得到全局最优。

  禁忌表的长度和禁忌长度不是一个概念,都是为了保证算法多样性。

  for 禁忌表的长度

    for 禁忌长度

      对每个序列,重复禁忌长度的次数,比如说禁忌长度为3,选择3次中最小的替换禁忌表中的新东西。

  完全是个人理解,不一定正确,我还没有研究禁忌搜索,只是做一个记录,请各位看官去其糟粕,取其精华。

时间: 2024-08-22 08:06:52

初识禁忌搜索算法的相关文章

现代优化算法 之 禁忌搜索算法

这次是首次接触这个算法,看了一些资料,总结一下. 禁忌搜索算法简介 禁忌搜索算法是组合优化算法的一种,是局部搜索算法的扩展.禁忌搜索算法是人工智能在组合优化算法中的一个成功应用.禁忌搜索算法的特点是采用了禁忌技术.所谓禁忌就是禁止重复前面的工作.禁忌搜索算法用一个禁忌表记录下已经到达过的局部最优点,在下一次搜索中,利用禁忌表中的信息不再或有选择地搜索这些点. 禁忌搜索算法实现的技术问题是算法的关键.禁忌搜索算法涉及侯选集合.禁忌对象.评价函数.特赦规则.记忆频率信息等概念. (1)邻域 在组合优

【高级算法】禁忌搜索算法解决3SAT问题(C++实现)

转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46440389 近期梳理,翻出了当年高级算法课程做的题目.禁忌搜索算法解决3SAT问题. 吐槽:数学符号怎样在编辑器里打出来啊,为了保留符号,我直接截图了. 1 SAT问题描写叙述 定理4.4.1: 赋值v为使CNF可满足的充要条件是f(x1,x2,-,xm)达到最小值0. 2  禁忌搜索算法 禁忌搜索算法是在局部搜索的过程中引进了贪心选择机制.并利用禁忌表改动邻域,通过构造的候选

禁忌搜索算法解决3SAT问题(C++代码实现)

最近梳理,翻出了当年高级算法课程做的题目,禁忌搜索. 吐槽:数学符号如何在编辑器里打出来啊,为了保留符号,我直接截图了. 1 SAT问题描述 定理4.4.1: 赋值v为使CNF可满足的充要条件是f(x1,x2,-,xm)达到最小值0. 2  禁忌搜索算法 禁忌搜索算法是在局部搜索的过程中引进了贪心选择机制,并利用禁忌表修改邻域,通过构造的候选邻域来控制解得选择和接受过程.在搜索的过程中,禁忌搜索算法从上一步计算解的候选邻域里选择一个最好的解,即使这个解比上一步得到的解还差,也接受它,同时修改禁忌

【算法】禁忌搜索算法(Tabu Search,TS)超详细通俗解析附C++代码实例

01 什么是禁忌搜索算法? 1.1 先从爬山算法说起 爬山算法从当前的节点开始,和周围的邻居节点的值进行比较. 如果当前节点是最大的,那么返回当前节点,作为最大值 (既山峰最高点):反之就用最高的邻居节点来,替换当前节点,从而实现向山峰的高处攀爬的目的.如此循环直到达到最高点.因为不是全面搜索,所以结果可能不是最佳. 1.2 再到局部搜索算法 局部搜索算法是从爬山法改进而来的.局部搜索算法的基本思想:在搜索过程中,始终选择当前点的邻居中与离目标最近者的方向搜索.同样,局部搜索得到的解不一定是最优

【算法】变邻域搜索算法(Variable Neighborhood Search,VNS)超详细一看

更多精彩尽在微信公众号[程序猿声] 变邻域搜索算法(Variable Neighborhood Search,VNS)一看就懂的解析 00 目录 局部搜索再次科普 变邻域搜索 造轮子写代码 01 局部搜索科普三连 虽然之前做的很多篇启发式的算法都有跟大家提过局部搜索这个概念,为了加深大家的印象,在变邻域主角登场之前还是给大家科普一下相关概念.热热身嘛- 1.1 局部搜索是什么玩意儿? 官方一点:局部搜索是解决最优化问题的一种启发式算法.对于某些计算起来非常复杂的最优化问题,比如各种NP完全问题,

【高级算法】遗传算法解决3SAT问题(C++实现)

转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46910079 1 SAT问题描写叙述 命题逻辑中合取范式 (CNF) 的可满足性问题 (SAT)是当代理论计算机科学的核心问题, 是一典型的NP 全然问题.在定义可满足性问题SAT之前,先引进一些逻辑符号. 一个 SAT 问题是指: 对于给定的 CNF 是否存在一组关于命题变元的真值指派使A为真. 显然,如A为真,则CNF的每一个子句中必有一个命题变元为1(真). 2 遗传算法

智能优化算法对TSP问题的求解研究

要求: TSP 算法(Traveling Salesman Problem)是指给定 n 个城市和各个城市之间的距离,要 求确定一条经过各个城市当且仅当一次的最短路径,它是一种典型的优化组合问题,其最优 解得求解代价是指数级的.TSP 问题代表一类优化组合问题,在实际工程中有很多应用,如 计算机联网.电子地图.交通诱导等,具有重要的研究价值.遗传算法和禁忌搜所算法都是 是一种智能优化算法,具有全局的优化性能.通用性强.这种算法一般具有严密的理论依据, 理论上可以在一定的时间内找到最优解或近似最优

遗传算法解决3SAT问题(C++实现代码)

1 SAT问题描述 命题逻辑中合取范式 (CNF) 的可满足性问题 (SAT)是当代理论计算机科学的核心问题, 是一典型的NP 完全问题.在定义可满足性问题SAT之前,先引进一些逻辑符号. 一个 SAT 问题是指: 对于给定的 CNF 是否存在一组关于命题变元的真值指派使A为真. 显然,如A为真,则CNF的每个子句中必有一个命题变元为1(真). 2 遗传算法 遗传算法类似于自然进化,通过作用于染色体上的基因寻找好的染色体来求解问题.与自然界相似,遗传算法对求解问题的本身一无所知,它所需要的仅是对

计算智能 Computational Intelligence,CI

计算智能(Computational Intelligence,CI)是借助自然界(生物界)规律的启示,根据其规律,设计出求解问题的算法.智能计算只是一种经验化的计算机思考性程序. 计算智能算法主要包括神经计算.模糊计算和进化计算三大部分.典型的计算智能算法包括神经计算中的人工神经网络算法,模糊计算中的模糊逻辑,进化计算中 的遗传算法. 蚁群优化算法.粒子群优化算法.免疫算法.分布估计算法.Memetic算法,和单点搜索技术例如模拟退火算法.禁忌搜索算法,等等. Nature-Aspire co