- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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_
您可能关注的文档
- 预编译、宏定义及条件编译.doc
- 对象关系映射(ORM)_附件.docx
- 探究Symbian 资源管理及独特的异常处理机制.docx
- 《数据库系统与应用》复习提纲.docx
- 财务会计类工作在企业和会计事务所的区别.doc
- 现代汉语语法专题(二要领.doc
- 第六章 电影院政策支持.doc
- 关于Centos5.2配置Bind服务器(主从结构).doc
- 网页消重及净化.docx
- 第二章 电子政务考试模拟试题(二).doc
- 二零二五年产权式商铺返租投资收益分享与管理协议.docx
- 二零二五年度WTO电子商务全球市场协调合同.docx
- 二零二五年KTV安全设施升级与装修工程合同.docx
- (高清版)DB32∕T 4989-2024 海铁班列服务质量监测与评估规范.docx
- (高清版)DB32∕T 4995-2024 设施蔬菜湿旱轮作技术规程.docx
- (高清版)DB34∕T 2153-2024 高速公路机电系统管理规范.docx
- (高清版)DB32∕T 4906-2024 科技报告编写规范.docx
- (高清版)DB32∕T 4945-2024 作物全生物降解地膜覆盖栽培技术规程.docx
- (高清版)DB32∕T 4973.4-2024 核与辐射突发事件卫生应急处置技术规范 第4部分:人体体表放射性核素污染监测与去污.docx
- (高清版)DB32∕T 4936-2024 滨海湿地资源调查技术规程.docx
文档评论(0)