网站大量收购独家精品文档,联系QQ:2885784924

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

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
function varargout = 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; %处理输入参数,用来给定一些默认的参数; for k = nargin:nargs-1 switch k case 0 dmat = 10*rand(20,20); case 1 salesmen = 5; case 2 min_tour = 2; case 3 pop_size = 80; case 4 num_iter = 5e3; case 5 show_prog = 1; case 6 show_res = 1; otherwise end end % 检查输入 矩阵 [nr,nc] = size(dmat); if nr ~= nc error(Invalid XY or DMAT inputs!) end n = nr - 1; % 除去起始的城市后剩余的城市的数 % 输入参数的检查 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)); % 初始化路线、断点的选择 num_brks = salesmen-1; dof = n - min_tour*salesmen; % 可以自由访问的城市数 addto = ones(1,dof+1); for k = 2:num_brks addto = cumsum(addto); end cum_prob = cumsum(addto)/sum(addto); % 初始化种群 pop_rte = zeros(pop_size,n); % 路径集合的种群 pop_brk = zeros(pop_size,num_brks); % 断点集合的种群 for k = 1:pop_size pop_rte(k,:) = randperm(n)+1; pop_brk(k,:) = randbreaks(); end % 选择绘图时的个商人的颜色 可删去; clr = [1 0 0; 0 0 1; 0.67 0 1; 0 1 0; 1 0.5 0]; if salesmen 5 clr = hsv(salesmen); end % 开始运行遗传算法过程 global_min = Inf; %初始化最短路径 total_dist = zeros(1,pop_size); dist_history = zeros(1,num_iter); tmp_pop_rte = zeros(8,n); %当前的路径设置 tmp_pop_brk = zeros(8,num_brks); %当前的断点设置 new_pop_rte = zeros(pop_size,n); %更新的路径设置 new_pop_brk = zeros(pop_size,num_brks);%更新的断点设置 if show_prog pfig = figure(Name,MTSPF_GA | Current Best Solution,Numbertitle,off); end for iter = 1:num_iter % 评价每一代的种群 适应情况并作出选择。 for p = 1:pop_

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档