【算法】禁忌算法+TSP问题 python代码

一、禁忌算法的概念

禁忌搜索是属于模拟人类智能的一种优化算法,它模仿了人类的记忆功能,在求解问题的过程中,采用了禁忌技术,对已经搜索过的局部最优解进行标记,并且在迭代中尽量避免重复相同的搜索(但不是完全杜绝),从而获得更广的搜索区间,有利于寻找到全局最优解。
在这里插入图片描述

二、相关名词解释

1、禁忌对象(Tabu Object,TO)

指禁忌表中被禁的那些变化元素。
例如在旅行商问题(TSP)中可以将交换的城市对作为禁忌对象,也可以将总路径长度作为禁忌对象。

2、禁忌表(Tabu List,TL)

用来存放(记忆)禁忌对象的表。它是禁忌搜索得以进行的基本前提。禁忌表本身是有容量限制的,它的大小对存放禁忌对象的个数有影响,会影响算法的性能。

3、禁忌期限(Tabu Tenure,TT)

也叫禁忌长度,指的是禁忌对象不能被选取的周期。
禁忌期限过短容易出现循环,跳不出局部最优。
紧急期限过长会造成计算时间过长。

4、藐视准则(Aspiration Criteria,AC)

也称为特赦规则。当所有的对象都被禁忌之后,可以让其中性能最好的被禁忌对象解禁,或者当某个对象解禁会带来目标值的很大改进时,也可以使用特赦规则。

在这里插入图片描述

5、终止准则

三种方法:

  1. 给定最大迭代步数。

  2. 设定某个对象的最大禁忌频率。

  3. 设定适配值的偏离幅度。

在这里插入图片描述

三、算法基本流程

Created with Raphaël 2.3.0 开始 初始化,随机生成一个解i,设置代数k=0,禁忌表H为空,最优解s = i
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值