21组灾情巡视路线安排 - 图文(6)

2019-09-01 15:11

if show_prog

pfig = figure('Name','MTSPF_GA | Current Best Solution','Numbertitle','off'); end

for iter = 1:num_iter

% ?à????ò?′úμ???èo êêó|?é??2¢×÷3??????£ for p = 1:pop_size d = 0;

p_rte = pop_rte(p,:); p_brk = pop_brk(p,:);

rng = [[1 p_brk+1];[p_brk n]]'; for s = 1:salesmen

d = d + dmat(1,p_rte(rng(s,1)))/35; % ìí?ó?aê?μ??·???ùó?ê±??(μ???μ?μ??·3?) for k =

rng(s,1):rng(s,2)-1 %????éìè?′ó?eμ?μ???μ?′|?í??£¨?′?÷×?μ???μ?£? if k<=36

d = d + dmat(p_rte(k),p_rte(k+1))/35+1; %??′?í£á?1D?ê± else

d = d + dmat(p_rte(k),p_rte(k+1))/35+2; %?òí£á?2D?ê± end end

d = d + dmat(p_rte(rng(s,2)),1)/35;% ìí?ó?áê?μ?μ??·?? dis(p,s)=d;

%d=d+myLength(dmat,p_rte(rng(s,1):rng(s,2)));%?éμ÷ó?oˉêy′|àí

end

total_dist(p) = d;

%distan(p)=max(dis(p,:));%????èy??è??Dμ?×?′ó?μ end

% ?ú??′ú??èo?D?òμ?×?o?μ??·?? [min_dist,index] = min(total_dist);

dist_history(iter) = min_dist; %+max(distan);01

if min_dist < global_min global_min = min_dist;

opt_rte = pop_rte(index,:); %×?ó?μ?×??ì?·?? opt_brk = pop_brk(index,:); %×?ó?μ???μ?éè?? rng = [[1 opt_brk+1];[opt_brk n]]'; %éè????????μ?μ?·?·¨ end

% ò?′???·¨??×óμ?2ù×÷?ˉo?

rand_grouping = randperm(pop_size);

for p = 8:8:pop_size

rtes = pop_rte(rand_grouping(p-7:p),:); brks = pop_brk(rand_grouping(p-7:p),:); dists = total_dist(rand_grouping(p-7:p)); [ignore,idx] = min(dists); best_of_8_rte = rtes(idx,:); best_of_8_brk = brks(idx,:);

rte_ins_pts = sort(ceil(n*rand(1,2))); I = rte_ins_pts(1); J = rte_ins_pts(2); for k = 1:8 % 2úéúD?μ?·?°?

tmp_pop_rte(k,:) = best_of_8_rte; tmp_pop_brk(k,:) = best_of_8_brk; switch k

case 2 % μ1??2ù×÷

tmp_pop_rte(k,I:J) = fliplr(tmp_pop_rte(k,I:J)); case 3 % ?¥??2ù×÷

tmp_pop_rte(k,[I J]) = tmp_pop_rte(k,[J I]); case 4 % ???ˉ??ò?2ù×÷

tmp_pop_rte(k,I:J) = tmp_pop_rte(k,[I+1:J I]); case 5 % ?üD???μ?

tmp_pop_brk(k,:) = randbreaks(); case 6 % μ1??2¢?üD???μ?

tmp_pop_rte(k,I:J) = fliplr(tmp_pop_rte(k,I:J)); tmp_pop_brk(k,:) = randbreaks(); case 7 % ?¥??2¢?üD???μ?

tmp_pop_rte(k,[I J]) = tmp_pop_rte(k,[J I]); tmp_pop_brk(k,:) = randbreaks(); case 8 % ?àòé2¢?üD???μ?

tmp_pop_rte(k,I:J) = tmp_pop_rte(k,[I+1:J I]); tmp_pop_brk(k,:) = randbreaks(); otherwise % 2???DD2ù×? end end

new_pop_rte(p-7:p,:) = tmp_pop_rte; new_pop_brk(p-7:p,:) = tmp_pop_brk; end

pop_rte = new_pop_rte; pop_brk = new_pop_brk; end

% ·μ???á1?2?·?

rng = [[1 opt_brk+1];[opt_brk n]]';

dis_e=zeros(1,salesmen); %éè??2¢??????????DDéìμ?×??ì?·??

for s = 1:salesmen d=0;

%dis_e(s)=myLength2(dmat,opt_rte(rng(s,1):rng(s,2))); d = d +dmat(1,opt_rte(rng(s,1)))/35; % ìí?ó?aê?μ??·???ùó?ê±??(μ???μ?μ??·3?) for k =

rng(s,1):rng(s,2)-1 %????éìè?′ó?eμ?μ???μ?′|?í??£¨?′?÷×?μ???μ?£? if k<=36 d = d +

dmat(opt_rte(k),opt_rte(k+1))/35+1; %??′?í£á?1D?ê± else d = d +

dmat(opt_rte(k),opt_rte(k+1))/35+2; %?òí£á?2D?ê± end end

d = d + dmat(opt_rte(rng(s,2)),1)/35; % ìí?ó?áê?μ?μ??·?? dis_e(s)=d; end

if nargout

varargout{1} = opt_rte; varargout{2} = opt_brk; varargout{3} = min_dist; varargout{4} = dis_e; end

%×?3?μü′ú1y3ìμ?í?ê? %plot(dist_history);

%grid on;xlabel('μü′úμ?′úêy');ylabel('?ù×?μ??·????oí'); % ???ú2úéúò?ì×??μ? μ??ˉo? function breaks = randbreaks()

if min_tour == 1 % ò?????DDéìê±£???óD??μ?μ?éè?? tmp_brks = randperm(n-1);

breaks = sort(tmp_brks(1:num_brks)); else % ??????μ??áéù ?ò μ?×??ìμ???DD3¤?è num_adjust = find(rand < cum_prob,1)-1; spaces = ceil(num_brks*rand(1,num_adjust)); adjust = zeros(1,num_brks); for kk = 1:num_brks

adjust(kk) = sum(spaces == kk); end

breaks = min_tour*(1:num_brks) + cumsum(adjust); end end end


21组灾情巡视路线安排 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:马万成QQ群讲课记录整理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: