| 查看: 790 | 回复: 0 | ||
ghjfly新虫 (初入文坛)
|
[求助]
TSP matlab程序问题 请各位大侠帮忙啊
|
|
现在在坐标系中一共有7个点,分别是(0,0)(1,1)(2,2)(3,3)(1,2)(2,4)(3,6)这七个点,求他们的最短路径,下面的程序老师出问题,请各位大侠帮忙啊。。,我的邮箱是ghj_fly@126.com 在这里先谢谢大家了 我的金币就剩下7个了,等有了会再加的 程序一:主程序 %D是距离矩阵,n为种群个数 %参数a是中国31个城市的坐标 %C为停止代数,遗传到第 C代时程序停止,C的具体取值视问题的规模和耗费的时间而定 %m为适应值归一化淘汰加速指数 %alpha为淘汰保护指数 %R为最短路径,Rlength为路径长度 function [R,Rlength]=geneticTSP(D,a,n,C,m,alpha) a=(0 0;1 1;2 2;3 3;1 2;2 4;3 6); C=10; m=2; alpha=0.9; D=ff01(a); [N,NN]=size(D); farm=zeros(n,N);%用于存储种群 for i=1:n farm(i,: )=randperm(N);%随机生成初始种群 end R=farm(1,: ); subplot(1,3,1) scatter(a( :,1),a( :,2),'x') pause(1) subplot(1,3,2) plotaiwa(a,R) pause(1) farm(1,: )=R; len=zeros(n,1);%存储路径长度 fitness=zeros(n,1);%存储归一化适应值 counter=0; while counter for i=1:n len(i,1)=myLength(D,farm(i,: ));%计算路径长度 end maxlen=max(len); minlen=min(len); fitness=fit(len,m,maxlen,minlen);%计算归一化适应值 rr=find(len==minlen); R=farm(rr(1,1),: );%更新最短路径 FARM=farm;%优胜劣汰,nn记录了复制的个数 nn=0; for i=1:n if fitness(i,1)>=alpha*rand nn=nn+1; FARM(nn,: )=farm(i,: ); end end FARM=FARM(1:nn,: ); [aa,bb]=size(FARM);%交叉和变异 while aa if nn<=2 nnper=randperm(2); else nnper=randperm(nn); end A=FARM(nnper(1),: ); B=FARM(nnper(2),: ); [A,B]=intercross(A,B); FARM=[FARM;A;B]; [aa,bb]=size(FARM); end if aa>n FARM=FARM(1:n,: );%保持种群规模为n end farm=FARM; clear FARM counter=counter+1 end Rlength=myLength(D,R); subplot(1,3,3) plotaiwa(a,R) 程序二:计算邻接矩阵 function D=ff01(a) [c,d]=size(a); D=zeros(c,c); for i=1:c for j=i:c bb=(a(i,1)-a(j,1)).^2+(a(i,2)-a(j,2)).^2; D(i,j)=bb^(0.5); D(j,i)=D(i,j); end end 程序三:计算归一化适应值 %计算归一化适应值的子程序 function fitness=fit(len,m,maxlen,minlen) fitness=len; for i=1:length(len) fitness(i,1)=(1-((len(i,1)-minlen)/(maxlen-minlen+0.0001))).^m; end 程序四:交叉和变异的子程序 function [a,b]=intercross(a,b) L=length(a); if L<=10%确定交叉宽度 W=9; elseif ((L/10)-floor(L/10))>=rand&&L>10 W=ceil(L/10)+8; else W=floor(L/10)+8; end p=unidrnd(L-W+1);%随机选择交叉范围,从p到p+W for i=1:W%交叉 x=find(a==b(1,p+i-1)); y=find(b==a(1,p+i-1)); [a(1,p+i-1),b(1,p+i-1)]=exchange(a(1,p+i-1),b(1,p+i-1)); [a(1,x),b(1,y)]=exchange(a(1,x),b(1,y)); end function [x,y]=exchange(x,y) temp=x; x=y; y=temp; 程序五: 计算路径的子程序 function len=myLength(D,p) [N,NN]=size(D); len=D(p(1,N),p(1,1)); for i=1 : (N-1) len=len+D(p(1,i),p(1,i+1)); end 程序六:用于绘制路径示意图的程序 function plotaiwa(a,R) scatter(a(:,1),a(:,2),'x') hold on plot([a(R(1),1),a(R(7),1)],[a(R(1),2),a(R(7),2)]) hold on for i=2:length(R) x0=a(R(i-1),1); y0=a(R(i-1),2); x1=a(R(i),1); y1=a(R(i),2); xx=[x0,x1]; yy=[y0,y1]; plot(xx,yy) hold on end [ Last edited by ghjfly on 2012-7-30 at 16:07 ] |
» 猜你喜欢
不自信的我
已经有6人回复
磺酰氟产物,毕不了业了!
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有10人回复
26申博(荧光探针方向,有机合成)
已经有4人回复
要不要辞职读博?
已经有3人回复
论文终于录用啦!满足毕业条件了
已经有26人回复
2026年机械制造与材料应用国际会议 (ICMMMA 2026)
已经有4人回复
Cas 72-43-5需要30g,定制合成,能接单的留言
已经有8人回复
北京211副教授,35岁,想重新出发,去国外做博后,怎么样?
已经有8人回复
自荐读博
已经有3人回复
找到一些相关的精华帖子,希望有用哦~
请各位大侠帮忙……TLC显色剂问题!!!!
已经有11人回复
请各位大侠帮忙,燃料电池初入门
已经有6人回复
下载了MATLAB2012可是安装不了。大侠帮帮忙谢谢
已经有13人回复
第一次发SCI 遇到问题 请各位大侠帮忙分析
已经有7人回复
各位大侠,兄弟遇到难处了,请求帮忙,万分感谢!
已经有23人回复
小白一枚 请各位大侠帮帮忙吧~~
已经有10人回复
请各位大侠帮忙看看如何修改
已经有6人回复
请各位大侠帮忙:氨曲南的生产能否在青霉素车间???谢谢!~
已经有8人回复
请各位大侠帮忙看看:煤堆自燃边界条件设置问题。谢谢!
已经有6人回复
求助大侠帮忙,有关matlab模拟数据
已经有29人回复
环氧树脂成膜控制厚度问题,希望各位大侠帮忙!
已经有7人回复
请教各位大侠溴化的问题
已经有10人回复
请各位大侠帮忙看一下我的液相色谱图究竟怎么了?
已经有13人回复
【求助】向各位大侠求助matlab求解微分方程组遇到的一个问题
已经有21人回复
【求助】请教一个matlab程序,谢谢帮忙!!
已经有15人回复
【求助/交流】vector 安装不了怎么回事啊?各位大侠帮帮忙啊
已经有3人回复
【求助】请各位大侠帮忙推荐几种比较耐水的气相色谱柱~~
已经有5人回复
科研从小木虫开始,人人为我,我为人人












回复此楼
点击这里搜索更多相关资源