多旅行商问题遗传算法.doc

多旅行商问题遗传算法.doc

ID:54915039

大小:23.50 KB

页数:5页

时间:2020-04-23

多旅行商问题遗传算法.doc_第1页
多旅行商问题遗传算法.doc_第2页
多旅行商问题遗传算法.doc_第3页
多旅行商问题遗传算法.doc_第4页
多旅行商问题遗传算法.doc_第5页
资源描述:

《多旅行商问题遗传算法.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、functionvarargout=mtspf_ga(dmat,salesmen,min_tour,pop_size,num_iter,show_prog,show_res)%dmat任意两城市间的最短路径矩阵通过floyed算法求得结果。%salesmen旅行商个数%min_tour每个旅行商最少访问的城市数%pop_size种群个体数%num_iter迭代的代数%show_prog,show_res显示的参数设定nargs=7;%处理输入参数,用来给定一些默认的参数;fork=nargin:n

2、args-1switchkcase0dmat=10*rand(20,20);case1salesmen=5;case2min_tour=2;case3pop_size=80;case4num_iter=5e3;case5show_prog=1;case6show_res=1;otherwiseendend%检查输入矩阵[nr,nc]=size(dmat);ifnr~=ncerror('InvalidXYorDMATinputs!')endn=nr-1;%除去起始的城市后剩余的城市的数%输入参数的检

3、查salesmen=max(1,min(n,round(real(salesmen(1)))));min_tour=max(1,min(floor(n/salesmen),round(real(min_tour(1)))));pop_size=max(8,8*ceil(pop_size(1)/8));num_iter=max(1,round(real(num_iter(1))));show_prog=logical(show_prog(1));show_res=logical(show_res(1

4、));%初始化路线、断点的选择num_brks=salesmen-1;dof=n-min_tour*salesmen;%可以自由访问的城市数addto=ones(1,dof+1);fork=2:num_brksaddto=cumsum(addto);endcum_prob=cumsum(addto)/sum(addto);%初始化种群pop_rte=zeros(pop_size,n);%路径集合的种群pop_brk=zeros(pop_size,num_brks);%断点集合的种群fork=1:p

5、op_sizepop_rte(k,:)=randperm(n)+1;pop_brk(k,:)=randbreaks();end%选择绘图时的个商人的颜色可删去;clr=[100;001;0.6701;010;10.50];ifsalesmen>5clr=hsv(salesmen);end%开始运行遗传算法过程global_min=Inf;%初始化最短路径total_dist=zeros(1,pop_size);dist_history=zeros(1,num_iter);tmp_pop_rte=z

6、eros(8,n);%当前的路径设置tmp_pop_brk=zeros(8,num_brks);%当前的断点设置new_pop_rte=zeros(pop_size,n);%更新的路径设置new_pop_brk=zeros(pop_size,num_brks);%更新的断点设置ifshow_progpfig=figure('Name','MTSPF_GA

7、CurrentBestSolution','Numbertitle','off');endforiter=1:num_iter%评价每一代的种群

8、适应情况并作出选择。forp=1:pop_sized=0;p_rte=pop_rte(p,:);p_brk=pop_brk(p,:);rng=[[1p_brk+1];[p_brkn]]';fors=1:salesmend=d+dmat(1,p_rte(rng(s,1)));%添加开始的路径fork=rng(s,1):rng(s,2)-1d=d+dmat(p_rte(k),p_rte(k+1));endd=d+dmat(p_rte(rng(s,2)),1);%添加结束的的路径dis(p,s)=d;%

9、d=d+myLength(dmat,p_rte(rng(s,1):rng(s,2)));%可调用函数处理endtotal_dist(p)=d;%distan(p)=max(dis(p,:));%计算三个人中的最大值end%在每代种群中找到最好的路径[min_dist,index]=min(total_dist);dist_history(iter)=min_dist;%+max(distan);ifmin_dist

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。