%交叉
function y=crossover(prob,x)
%{
rowx=length(x(:,1));
widx=length(x(1,:));
randnum=rand(1);
if randnum<prob
a=randsrc(1,2,1:rowx);
b=randsrc(1,2,1:31-1);
if b(1)==b(2)
b(2)=b(2)+1;
end
if b(1)>b(2)
bb=b(1);
b(1)=b(2);
b(2)=bb;
end
for i=b(1):b(2)
c=x(a(1),i);
x(a(1),i)=x(a(2),i);
x(a(2),i)=c;
end
for i=b(1):b(2)
for j=1:b(1)-1
if x(a(1),i)==x(a(1),j)
x(a(1),j)=x(a(2),i);
end
end
for j=b(2)+1:widx
if x(a(1),i)==x(a(1),j)
x(a(1),j)=x(a(2),i);
end
end
end
for i=b(1):b(2)
for j=1:b(1)-1
if x(a(2),i)==x(a(2),j)
x(a(2),j)=x(a(1),i);
end
end
for j=b(2)+1:widx
if x(a(2),i)==x(a(2),j)
x(a(2),j)=x(a(1),i);
end
end
end
y=x;
else
y=x;
end
end
%}
rowx=length(x(:,1));
widx=length(x(1,:));
randnum=rand(1);
if randnum<prob
a=randsrc(1,2,1:rowx);
b=randsrc(1,1,1:31);
cc=x(a(1),b);
x(a(1),b)=x(a(2),b);
x(a(2),b)=cc;
for i=1:length(x(a(1),:))
if i~=b && x(a(1),i)==x(a(1),b)
x(a(1),i)=x(a(2),b);
end
end
for i=1:length(x(a(2),:))
if i~=b && x(a(2),i)==x(a(2),b)
x(a(2),i)=x(a(1),b);
end
end
y=x;
else
y=x;
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
遗传算法解TSP问题Matlab程序
共13个文件
m:8个
asv:5个
3星 · 超过75%的资源 需积分: 12 14 下载量 35 浏览量
2015-04-13
20:41:19
上传
评论
收藏 4KB RAR 举报
温馨提示
本资源为自己编写的遗传算法求解TSP问题的Matlab代码,共大家共同学习和研究。
资源推荐
资源详情
资源评论
收起资源包目录
遗传算法解TSP问题Matlab程序.rar (13个子文件)
GAforTSP.asv 1KB
initgroup.m 75B
selection.asv 594B
crossover.asv 1KB
fun.m 285B
selection.m 605B
GAforTSP.m 1KB
crossover.m 1KB
shiyan.m 122B
adapt.m 255B
adapt.asv 235B
mutation.m 381B
shiyan.asv 37B
共 13 条
- 1
资源评论
- qq_271059292015-05-31这代码还不错,有待继续改进
xajdwangpeng
- 粉丝: 4
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功