可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点。感觉也是生物智能的一个体现,和遗传算法、神经网络有异曲同工之妙。只不过当时没有实际需求学习,所以没去研究。最近有一个这样的任务,所以就好好把基础研究了一下,驱动式学习,目标明确,所以还是比较快去接受和理解,然后写代码实现就好了。今天就带领大家走近TSP问题以及群蚁算法。
本文原文地址:
旅行商问题(Traveling Saleman Problem,TSP)是车辆路径调度问题(VRP)的特例,由于数学家已证明TSP问题是NP难题,因此,VRP也属于NP难题。旅行商问题(TSP)又译为旅行推销员问题、货郎担问题,简称为TSP问题,是最基本的路线问题,该问题是在寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本。——
很明显,当节点数很少时,大多数人都会想到,问题很简单,直接穷举就OK了,但实际问题中,节点数往往很大,变得不可能。例如:对于一个仅有16个城市的旅行商问题,如果用穷举法来求问题的最优解,需比较的可行解有:15!/2=653,837,184,000个。在1993年,使用当时的工作站用穷举法求解此问题需时92小时。即使现在计算机速度快,但是面对复杂的问题,仍然不够。这就是所谓的“组合爆炸”,指数级的增长,所以科学家逐步寻找近似算法或者启发式算法,目的是在合理的时间范围内找到可接受的最优解。
TSP问题解决算法的发展可以分为3个部分:
1).经典精确算法:穷举法、线性规划算法、动态规划算法、分支定界算法等运筹学中的传统算法,这些算法复杂度一般都很大,只适用于求解小规模问题。
2).近似算法:当问题规模较大时,其所需的时间成级数增长,这是我们无法接受的,算法求解问题的规模受到了很大的限制,一个很自然的想法就是牺牲精确解法中的最优性,去寻找一个好的时间复杂度我们可以容忍的,同时解的质量我们可以接受的算法.基于这一思想所设计出的算法统称为近似算法。如插入算法,最邻近算法等。
3).智能算法:随着科学技术和生产的不断发展,许多实际问题不可能在合理的时间范围内找到全局最优解,这就促使了近代最优化问题求解方法的产生。随着各种不同搜索机制的启发式算法相继出现,如禁忌搜索、遗传算法、模拟退火算法、人工神经网络、进化策略、进化编程、粒子群优化算法、蚁群优化算法和免疫计算等,掀起了研究启发式算法的高潮。
具体每一种算法不再详细描述,大家可以针对性的寻找相应资料进行了解。
TSP问题在实际的生产生活中,更加实际环境不同,有很多衍生的经典问题。车辆路径调度(VRP)扩展问题是经典VRP加入各种约束条件后而形成的。例如需求约束形成的需求随机的车辆路径问题(SVRP);加入时间约束得到的带时间窗的车辆路径题(VRPTW);加入距离约束的距离约束车辆路径问题(DVRP);根据其它条件的不同,还有多配送中心车辆路径问题(MDVRP)、可切分的车辆路径问题(SDVRP);先配送再收集车辆路径问题(VRPB)、配送收集车辆路径问题(VRPPD);信息不完全的模糊车辆路径问题(FVRP)[3]。
我们封装了一个基础的BaseTspAntSystem类,包括了一些基本属性和计算过程,后续相关改进版本可以进行直接继承。当然设计可能有缺陷,先这样进行,碰到需求再改吧。 BaseTspAntSystem类的主要属性如下:
基类有一个构造函数,对系统的初始化就是传入基本的参数,并对相关列表进行初始化,代码如下:
核心的是求解过程,完全按照迭代次数要求进行迭代进行,过程就是概率选择和信息素更新,我们辅助的用到了Ant蚂蚁类,目的就是让程序更加独立和容易理解。Ant类里面有蚂蚁路径寻找过程的所有信息。下一节将进行介绍。求解过程代码如下面,看看注释和对比算法进行:
根据算法的描述,m只蚂蚁同时进行自己的工作和寻找路程,是一个并行的过程,因此也在单次过程中,蚂蚁都是独立的。蚂蚁的每一次迭代,过程都比较清楚,寻找路径过程,注意维护一些可用的节点列表,以及最后一条路径的处理。看看蚂蚁类的主要属性和构造函数:
Ant类的核心是寻找下一个城市节点的过程,以及循环直到所有路径都完成。如下面代码,是一个循环过程:
1 #region 蚂蚁行为-依次按概率选择下一个城市,直到走完 6 //为空,就不需要计算了 11 //依次计算当前点到其他点可选择点的 值 19 //计算各个点的概率 21 //产生1个随机数,并按概率确定下一个城市 29 //最后1条路径的问题,额外增加,直接 回原点
后面的GetNextCityByRandValue是一个辅助函数,进行随机概率值的选择,确定是否选择哪一个节点。
基本TSP问题的C#代码下载:
如果下载有问题,请到本文原文下载:
[2].文永军.旅行商问题的两种智能算法[M].西安电子科技大学,2010年
[3].杨瑞臣.有时间窗和在前约束车辆路径问题的蚁群优化[M].西安建筑科技大学,2005.
[4].谷俊峰.智能算法-第七章:蚁群算法 PPT,大连理工大学,下载:
可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
亲,程序搞到了吗?能传一个吗?万分感谢哈
有么,借阅一下,万分感谢!!
%% C n个城市的坐标,n×2的矩阵
%% Alpha 表征信息素重要程度的参数
%% Beta 表征启发式因子重要程度的参数
%% Q 信息素增加强度系数
%%第一步:变量初始化
Eta=1./D;%Eta为启发因子,这里设为距离的倒数
%%第二步:将m只蚂蚁放到n个城市上
%%第三步:m只蚂蚁按概率函数选择下一座城市,完成各自的周游
P=J; %待访问城市的选择概率分布
%下面计算待选城市的概率分布
%按概率原则选取下一个城市
%%第四步:记录本次迭代最佳路线
%%第五步:更新信息素
%%第六步:禁忌表清零
%% 画路线图的子函数