【正文】
cityn=city31。 for i=1:31 for j=1:31 DL31(i,j)=((city31(i,1)city31(j,1))^2+(city31(i,2)city31(j,2))^2)^。2778 2826。3140 3550。3439 3201。3507 2367。4263 2931。3676 2578。4061 2370。3715 1678。 2381 1676。2562 1756。4386 570。4196 1004。3326 1556。3712 1399。3639 1315。)。,39。legend(39。搜索過程39。grid。b39。 hold on。r39。endBestShortcut=BSFtheMinDistance=bsffigure(2)。 drawTSP(Clist,BSF,bsf,p,0)。 break。 for m=1:CityNum for n=1:CityNum if Tlist(m,n)~=0 Tlist(m,n)=Tlist(m,n)1。 end end end Tlist(CL(1,3),CL(1,4))=tl。 BSF=S。 end if CL(1,2)bsf %藐視準(zhǔn)則(aspiration criterion) bsf=CL(1,2)。 end [fs fin]=sort(CCL(:,2))。 CCL(i,3)=S(A(i,1))。 CCL(i,1)=i。 end end for i=1:l1 Si(i,:)=S。 else i=i。 else isdel=0。A(i,2)==A(j,2) isdel=1。 else for j=1:i1 if A(i,1)==A(j,1)amp。A(i,2)=m2。m2=min(M(1),M(2))。 M=ceil(M)。 A=zeros(l1,2)。 end ArrS(p)=CalDist(dislist,S)。 l1=(CityNum*(CityNum)/2)^.5。候選解個數(shù),不大于n*(n1)/2(全部領(lǐng)域解個數(shù))! 系統(tǒng)自動退出!39。figure(1)。 %終止步數(shù)p=1。Si=zeros(l1,CityNum)。S=S0。 %禁忌長度(tabu length)l1=200。%保留前cl個最好候選解bsf=Inf。Tlist=zeros(CityNum)。CityNum=31。 snnew(chb1+1:chb2)=fliplr(x)。 chb2=max(c1,c2)。 %在[1,bn1]范圍內(nèi)隨機(jī)產(chǎn)生一個變異位 c2=round(rand*(bn2))+1。pmm=pro(pm)。bn=size(snew,2)。 scro(2,i)=y。 end while find(scro(2,1:chb2)==scro(2,i)) zhi=find(scro(2,1:chb2)==scro(2,i))。 y=scro(2,zhi)。 scro(2,i)=y。 end while find(scro(2,chb1+1:chb2)==scro(2,i)) zhi=find(scro(2,chb1+1:chb2)==scro(2,i))。 y=scro(2,chb1+zhi)。 scro(2,chb1+1:chb2)=middle。 middle=scro(1,chb1+1:chb2)。 chb1=min(c1,c2)。if pcc==1 c1=round(rand*(bn2))+1。 %根據(jù)交叉概率決定是否進(jìn)行交叉操作,1則是,0則否scro(1,:)=s(seln(1),:)。bn=size(s,2)。 end seln(i)=j。 j=1。%從種群中選擇兩個個體for i=1:2 r=rand。 end%%“選擇”操作function seln=sel(s,p)。n=round(rand*99)+1。l=round(100*pc)。end%function pcc=pro(pc)。for i=2:inn p(i)=p(i1)+ps(i)。endfor i=1:inn ps(i)=f(i)^15/fsum。%計算選擇概率fsum=0。 %讀取種群大小for i=1:inn f(i)=CalDist(dislist,s(i,:))。end%%計算適應(yīng)度函數(shù)function [f,p]=objf(s,dislist)。平均解39。最優(yōu)解39。)。title(39。)。plot(ymean,39。)。plot(ymax,39。endgn=gn1。 gn=gn+1。 %記錄當(dāng)前代的最佳個體 x=s