ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:64.30KB ,
资源ID:18330702      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-18330702.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(蚁群算法在车辆路径问题中的应用.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

蚁群算法在车辆路径问题中的应用.docx

1、蚁群算法在车辆路径问题中的应用 蚁群算法在车辆路径问题中的应用摘 要蚁群算法(Ant Colony Optimization, ACO)是意大利学者M.Dorigo等人通过模拟蚁群觅食行为提出的一种基于种群的模拟进化算法。通过介绍蚁群觅食过程中基于信息素(pheromone)的最短路径的搜索策略,给出了基于MATLAB的蚁群算法在车辆路径问题(Vehicle Routing Problem, VRP)中的应用。蚁群算法采用分布式并行计算机制,易于其他方法结合,而且具有较强的鲁棒性,但搜索时间长,容易陷入局部最优解。针对蚁群算法存在的过早收敛问题,加入2opt方法对问题求解进行了局部优化,计算机

2、仿真结果表明,这种混合型蚁群算法对求解车辆路径问题有较好的改进效果。关键词:蚁群算法、 组合优化、车辆路径问题、2-opt方法 1.车辆路径问题车辆路径问题(VRP)来源于交通运输,1959年由Dantzig提出,它是组合优化问题中一个典型的NP-hard问题。最初用于研究亚特兰大炼油厂向各个加油站投送汽油的运输路径优化问题,并迅速成为运筹学和组合优化领域的前沿和研究热点。车路优化问题如下:已知有一批客户,各客户点的位置坐标和货物需求已知,供应商具有若干可供派送的车辆,运载能力给定,每辆车都是从起点出发,完成若干客户点的运送任务后再回到起点。现要求以最少的车辆数和最少的车辆总行程来完成货物的派

3、送任务。2、蚁群系统基本原理 在蚂蚁群找到食物时,它们总能找到一条从食物到蚁穴之间的最短路径。因为蚂蚁在寻找食物时会在路途上释放一种特殊的信息素。当它们碰到一个还没有走过的路口时,会随机地挑选一条路径前行。与此同时释放出与路径长度有关的信息素。路径越长,释放的激素浓度越低。当后面的蚂蚁再次碰到这个路口时,会选择激素浓度较高的路径走。这样形成了一个正反馈,最优路径上的激素浓度越来越高,而其他的路径上激素浓度却会随时间的流逝而消减。最终整个蚁群会找出最优路径。在整个寻找过程中,整个蚁群通过相互留下的信息素作用交换着路径信息,最终找到最优路径。3、基本蚁群算法求解车辆路径问题 求解VRP问题的蚂蚁算

4、法中,每只蚂蚁是一个独立的用于构造路线的过程,若干蚂蚁过程之间通过信息素值来交换信息,合作求解,并不断优化。这里的信息素值分布式存储在图中,与各弧相关联。蚂蚁算法求解VRP问题的过程如下:(1)参数初始化。令t=0和循环次数也NC=0,设置最大循环次数NCmax。,将m只蚂蚁随机地放到n个城市,将每条边(i,j)上的信息素设为一个常数,且=0(表示循环中路径(i,j)上的信息素增量),将出发点城市设置到禁忌表中;(2)选择城市。每个蚂蚁按照状态变化规则逐步地构造一个解,即生成一条路。蚂蚁任务是在约束条件下,访问客户后回到仓库,生成一条回路。设蚂蚁k当前所在的顶点为i ,则蚂蚁k由点i 向点j

5、移动要遵循一下公式(1)的状态变化规则而不断迁徙,按不同概率来选择下一个。 (,) Exploitation () Exploration (1)(其中 表示蚂蚁k当前选择的城市集合,为禁忌表,它记录蚂蚁k已经路过的城市,用来说明人工蚂蚁的记忆性。用于评价蚂蚁由点i 向点j 移动的启发函数,其值通常用距离的倒数求得,即。体现了信息素和启发信息对蚂蚁决策的影响。取值为1;参数描述启发函数的重要性;参数()决定利用和开发的相对重要性,利用(Exploitation)指走最好的路,开发(Exploration)指按信息素浓度高概率高的原则选择V, q是在0,1上任取的随机数) 当时,按公式(2)的概

6、率进行选择:(3)修改禁忌表,即选择好之后将蚂蚁移动到下一个城市,并把该城市移动到蚂蚁个体的禁忌表中;(4)循环执行第2步和第3步,直到每只蚂蚁都生成一条路径;(5)计算第k只蚂蚁所走路径的总长度;(6)根据公式(3)(4)更新所有路径上的信息量; (3) (4)(7)若循环次数NCNCmax,则循环结束并输出计算结果,否则清空禁忌表并转到第2步。相应的MATLAB程序如下:%第一步:变量初始化L_nn,P_nn=NearestNeighborTSP(d);%是最近邻域启发算法产生的路线长度L_best=inf;T_best=0;tau0=1/(n* L_nn);%n为客户以及仓库数tau=o

7、nes(n,n)*tan0;ant_path=zeros(m,n+1);%第二步:将将m个蚂蚁置于仓库中ant_path(:,1)=randint(m,1,1,1);%第三步:选择城市current_node=ant_path(k,s-1);%k为蚂蚁数目,取值1m, s为问题规模,取2nvisited=ant_path(k,:);to_visit=setdiff(1:n,visited);c_temp=length(to_visit);if c_temp=0 p=zeros(1,c_temp);for i=1:c_temp p(i)=(tau(current_node,to_visit(i)

8、alpha*(1/d(current_node, to_visit(i)beta:%计算endsun_p=sum(p);q0=rand;select=to_visit(c_temp);if q0capacity_limit %不满足约束条件则回到仓库select=1;endtotal_load=0;city_to_visit=select;ant_path(k,s)=city_to_visit;end%第四步:更新信息素值tau(current_node,city_to_visit)=(1-rho)*tau(current_node, city_to_visit)+tan0;tau(Tour_

9、min(i),Tour_min(i+1)=(1-rho)*tau(Tour_min(i), Tour_min(i+1)+rho/L_gb;%第五步:禁忌表清零ant_path=zeros(m,n+1);end%第六步:输出结果Pos=find(L_best=min(L_best);Shortest_Route=T_best(Pos(1),:)Shortest_Length=L_best(Pos(1)4、基本蚁群算法的优缺点 基本蚁群算法具有很强的发现解的能力,这是因为该算法不仅利用了正反馈原理,在一定程度上可以加快进化过程,而且是一种本质上并行的算法,不同个体之间不断进行信息交流和传递,从而能

10、够相互协作,有利于发现较好解。具有如下的优点:(1)分布式本质并行算法,它是一种基于种群的进化算法,本质上具有并行性,易于并行实现;(2)具有较强的鲁棒性,对其模型稍加修改,便可以应用于其他问题;(3)易于与其他方法结合,基本蚁群算法很容易与多种启发式算法结合,以改善算法的性能;(4)其优化过程不依赖于优化问题本身的严格数学性质,如连续性,可导性及目标函数和约束函数的精确数学描述;(5)是一类概率型的全局搜索方法,这种非确定性使算法能够有更多的机会求得全局最优解;基本蚁群算法是一种有效的随机搜索算法,但也存在一些缺陷:(1)与其他方法相比,该算法一般需要较长的时间;(2)该算法易出现停滞现象,

11、即搜索进行到一定程度后,所有个体所发现的解完全一致,不能对解空间进一步搜索,不利于发现更好的解。5、一种新的改进蚁群算法用2-opt方法局部优化用蚁群算法构造的VRP解不同的智能算法出现停滞现象的原因各不相同,但结果是相同的,即所求的解越来越相似,避免这种现象的方法也是一致的,那就是增加解的多样性。蚂蚁算法尽管能够分布式并行搜索,但在限定的时间或代数内找到最优解仍是困难的,可能找到的只是可行的近优解,这一点与遗传算法相似。 用于启发式局部优化的方法很多!,主要包括2-opt,3-opt,顶点重定位(relocate),交换(exchange)和交叉(cross)等,其中最实用有效的是2-opt

12、和3-opt算法。因此,我们在蚂蚁算法中混入局部优化算法,对每代构造的解进行改进,从而进一步缩短解路线的长度,以加快蚂蚁算法的收敛速度。 将2-opt方法混入蚂蚁算法求解过程中,对每代迭代产生的最优解的相邻边进行交换。将2-opt方法混入蚂蚁算法求解过程中:repeatmodified_tour:=apply_2-opt_move(current_tour)if length(modified_tour)0) r= All_line(1,1);s= All_line(1,2);All_line=setdiff(All_line,r s,rows);%排除已经处理过的边ctemp=T(r+1:s

13、-1);n_ctemp=length(ctemp);temp=zeros(1,n_ctemp);for i=0: n_ctemp-1temp(i+1)= ctemp(n_ctemp-i);endcurrent_T=T(1:r-1)T(s) temp T(r) T(s+1:n);%进行边交换current_T=current_T current_T(1);%形成回路current_L=0;for i=1:ncurrent_L= current_L+d(current_T(i), current_T(i+1);endif(current_LL)T= current_T;L= current_L;All_line=N;endend %此时的T为经过2-opt后的最短路劲6、改进蚁群算法和基本蚁群算法实验对比选用VRPLIB中列出的Christofides实例。对问题C1分别用基本蚁群算法和加入2-opt方法的蚁群算法进行求解,每个程序各运行30次,m、n取客户和仓库数目之和,计算如下表: 两种算法结果比较 计算结果如上表所示, 可以看出基本蚁群算法和加入2-opt的混合算法相比,后者的解得到明显改善。综上所述,混合算法改进了蚂蚁算法的局部搜索能力,因而提高了算法的求解能力,可得到更短的路线长度,明显优于基本蚁群算法,验证了改进措施的有效性。参考文献

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2