基于MATLAB的蚁群算法解决旅行商问题(附带源程序、仿真).doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的蚁群算法解决旅行商问题(附带源程序、仿真) ..摘要:旅行商问题的传统求解方法是遗传算法,但此算法收敛速度慢,并不能获得问题的最优化解。
蚁群算法是受自然界中蚁群搜索食物行为启发而提出的一种智能优化算法,通过介绍蚁群觅食过程中基于信息素的最短路径的搜索策略,给出基于MATLAB的蚁群算法在旅行商问题中的应用,对问题求解进行局部优化。
经过计算机仿真结果表明,这种蚁群算法对求解旅行商问题有较好的改进效果。
关键词:
蚁群算法;
旅行商问题;
MATLAB;
优化
一、意义和目标旅行商问题是物流领域中的典型问题,它的求解具有十分重要的理论和现实意义。
采用一定的物流配送方式,可以大大节省人力物力,完善整个物流系统。
已被广泛采用的遗传算法是旅行商问题的传统求解方法,但遗传算法收敛速度慢,具有一定的缺陷。
本文采用蚁群算法,充分利用蚁群算法的智能性,求解旅行商问题,并进行实例仿真。
进行仿真计算的目标是,该算法能够获得旅行商问题的优化结果,平均距离和最短距离。
二、国内外研究现状仿生学出现于XXXX年代中期,人们从生物进化机理中受到启发,提出了遗传算法、进化规划、进化策略
等许多用以解决复杂优化问题的新方法。
这些以生物特性为基础的演化算法的发展及对生物群落行为的发现引导研究人员进一步开展了对生物社会性的研究,从而出现了基于群智能理论的蚁群算法,并掀起了一股研究的热潮。
XXXX年代意大利科学家M.Dorigo M最早提出了蚁群优化算法——蚂蚁系统(Ant system, AS),在求解二次分配、图着色问题、车辆调度、集成电路设计以及通信网络负载问题的处理中都取得了较好的结果。
旅行商问题(TSP, Traveling Salesman Problem)被认为是一个基本问题,是在1859年由威廉·汉密尔顿爵士首次提出的。
所谓TSP问题是指:
有N个城市,要求旅行商到达每个城市各一次,且仅一次,并回到起点,且要求旅行路线最短。
这是一个典型的优化问题,对一个具有中等顶点规模的图来说,精确求解也是很复杂的,计算量随着城市个数的增加而呈指数级增长,即属于所谓的NP问题。
TSP在工程领域有着广泛的应用,并常作为比较算法性能的标志。
如网络通讯、货物运输、电气布线、管道铺设、加工调度、专家系统、柔性制造系统等方面,都是TSP广泛应用的领域。
求解算法包括贪婪法(GM)、极小代数法(MA)、模拟退火法(SA)和遗传算法(GA)等。
而应用蚁群算法求解旅行商问题是近年来研究的新方向,由于其并行性与分布性,特别适用于大规模启发式搜索,实验结果证明了其可行性和有效性。
三、蚁群系统基本原理在蚂蚁群找到食物时,它们总能找到一条从食物到巢穴之间的最优路径。
这是因为蚂蚁在寻找路径时会在路径上释放出一种特殊的信息素(phero-旅行商问题的传统求解方法是遗传算法,但此算法收敛速度慢,并不能获得问题的最优化解。
蚁群算法是受自然界中蚁群搜索食物行为启发而提出的一种智能优化算法,通过介绍蚁群觅食过程中基于信息素的最短路径的搜索策略,给出基于MATLAB的蚁群算法在旅行商问题中的应用,对问题求解进行局部优化。
经过计算机仿真结果表明,这种蚁群算法对求解旅行商问题有较好的改进效果。
关键词:
蚁群算法;
旅行商问题;
MATLAB;
优化
一、意义和目标旅行商问题是物流领域中的典型问题,它的求解具有十分重要的理论和现实意义。
采用一定的物流配送方式,可以大大节省人力物力,完善整个物流系统。
已被广泛采用的遗传算法是旅行商问题的传统求解方法,但遗传算法收敛速度慢,具有一定的缺陷。
本文采用蚁群算法,充分利用蚁群算法的智能性,求解旅行商问题,并进行实例仿真。
进行仿真计算的目标是,该算法能够获得旅行商问题的优化结果,平均距离和最短距离。
二、国内外研究现状仿生学出现于XXXX年代中期,人们从生物进化机理中受到启发,提出了遗传算法、进化规划、进化策略等许多用以解决复杂优化问题的新方法。
这些以生物特性为基础的演化算法的发展及对生物群落行为的发现引导研究人员进一步开展了对生物社会性的研究,从而出现了基于群智能理论的蚁群算法,并掀起了一股研究的热潮。
XXXX年代意大利科学家M.Dorigo M最早提出了蚁群优化算法——蚂蚁系统(Ant system, AS),在求解二次分配、图着色问题、车辆调度、集成电路设计以及通信网络负载问题的处理中都取得了较好的结果。
旅行商问题(TSP, Traveling Salesman Problem)被认为是一个基本问题,是在1859年由威廉·汉密尔顿爵士首次提出的。
所谓TSP问题是指:
有N个城市,要求旅行商到达每个城市各一次,且仅一次,并回到起点,且要求旅行路线最短。
这是一个典型的优化问题,对一个具有中等顶点规模的图来说,精确求解也是很复杂的,计算量随着城市个数的增加而呈指数级增长,即属于所谓的NP问题。
TSP在工程领域有着广泛的应用,并常作为比较算法性能的标志。
如网络通讯、货物运输、电气布线、管道铺设、加工调度、专家系统、柔性制造系统等方面,都是TSP广泛应用的领域。
求解算法包括贪婪法(GM)、极小代数法(MA)、模拟退火法(SA)和遗传算法(GA)等。
而应用蚁群算法求解旅行商问题是近年来研究的新方向,由
于其并行性与分布性,特别适用于大规模启发式搜索,实验结果证明了其可行性和有效性。
三、蚁群系统基本原理在蚂蚁群找到食物时,它们总能找到一条从食物到巢穴之间的最优路径。
这是因为蚂蚁在寻找路径时会在路径上释放出一种特殊的信息素(phero:设有n个城市C=(1,2,...,n),任意两个城市i,j 之间的距离为dij ,求一条经过每个城市的路径π=(π(1),-省略部分-st(NC));R_best(NC,:)=Tabu(pos(1),:); %此轮迭代后的最佳路线L_ave(NC)=mean(L); %此轮迭代后的平均距离NC=NC+1; %迭代继续%%第五步:更新信息素Delta_Tau=zeros(n,n); %开始时信息素为n*n的0矩阵for i=1:m for j=1:(n-更新信息素Delta_Tau=zeros(n,n); %开始时信息素为n*n的0矩阵for i=1:m for j=1:(n:禁忌表清零Tabu=zeros(m,n); %%直到最大迭代次数end%%第七步:
输出结果Pos=find(L_best==min(L_best)); %找到最佳路径(非0为真)Shortest_Route=R_best(Pos(1),:) %最大迭代次数后最佳路径Shortest_Length=L_best(Pos(1)) %最大迭代次数后最短距离subplot(1,2,1); %绘制第一个子图形DrawRoute(C,Shortest_Route); %画路线图的子函数subplot(1,2,2); %绘制第二个子图形plot(L_best);hold on %保持图形plot(L_ave,'r');title('平均距离和最短距离') %标题function DrawRoute(C,R)%%===================================== ====================================%% DrawRoute.m%%
画路线图的子函数%%-------------------------------------------------------------------------%% C Coordinate 节点坐标,由一个N×2的矩阵存储%% R Route 路线%%=============================================== ==========================N=length(R);scatter(C(:,1),C(:,2));ho ld onplot([C(R(1),1),C(R(N),1)],[C(R(1),2),C(R(N),2)],'g');hold onfor ii=2:N plot([C(R(ii-1),1),C(R(ii),1)],[C(R(ii-1),2),C(R(ii),2)],'g'); hold onendtitle('旅行商问题优化结果')word教育资料达到当天最大量API KEY 超过次数限制。