資源簡介
利用蟻群算法計算提取拉曼光譜特征峰,Matlab語言編寫

代碼片段和文件信息
function?[R_bestL_bestL_aveShortest_RouteShortest_Length]=ACATSP(CNC_maxmAlphaBetaRhoQ)
%%=========================================================================
%%?ACATSP.m
%%?Ant?Colony?Algorithm?for?Traveling?Salesman?Problem
%%?ChengAihuaPLA?Information?Engineering?UniversityZhengZhouChina
%%?Email:aihuacheng@gmail.com
%%?All?rights?reserved
%%-------------------------------------------------------------------------
%%???????
%%?C?n???????n????
%%?NC_max???????
%%?m?????
%%?Alpha?????????????
%%?Beta???????????????
%%?Rho????????
%%?Q??????????
%%?R_best???????
%%?L_best??????????
%%=========================================================================
%%?????????
n=size(C1);%n?????????????
D=zeros(nn);%D????????????
for?i=1:n
for?j=1:n
if?i~=j
D(ij)=((C(i1)-C(j1))^2+(C(i2)-C(j2))^2)^0.5;
else
D(ij)=eps;
end
D(ji)=D(ij);
end
end
Eta=1./D;%Eta???????????????
Tau=ones(nn);%Tau??????
Tabu=zeros(mn);%??????????
NC=1;%?????
R_best=zeros(NC_maxn);%??????
L_best=inf.*ones(NC_max1);%?????????
L_ave=zeros(NC_max1);%?????????
while?NC<=NC_max%???????????????
%%?????m?????n????
Randpos=[];
for?i=1:(ceil(m/n))
Randpos=[Randposrandperm(n)];
end
Tabu(:1)=(Randpos(11:m))‘;
%%????m???????????????????????
for?j=2:n
for?i=1:m
visited=Tabu(i1:(j-1));%??????
J=zeros(1(n-j+1));%??????
P=J;%????????????
Jc=1;
for?k=1:n
if?length(find(visited==k))==0
J(Jc)=k;
Jc=Jc+1;
end
end
%?????????????
for?k=1:length(J)
P(k)=(Tau(visited(end)J(k))^Alpha)*(Eta(visited(end)J(k))^Beta);
end
P=P/(sum(P));
%????????????
Pcum=cumsum(P);
Select=find(Pcum>=rand);
to_visit=J(Select(1));
Tabu(ij)=to_visit;
end
end
if?NC>=2
Tabu(1:)=R_best(NC-1:);
end
%%??????????????
L=zeros(m1);
for?i=1:m
R=Tabu(i:);
for?j=1:(n-1)
L(i)=L(i)+D(R(j)R(j+1));
end
L(i)=L(i)+D(R(1)R(n));
end
L_best(NC)=min(L);
pos=find(L==L_best(NC));
R_best(NC:)=Tabu(pos(1):);
L_ave(NC)=mean(L);
NC=NC+1
%%?????????
Delta_Tau=zeros(nn);
for?i=1:m
for?j=1:(n-1)
Delta_Tau(Tabu(ij)Tabu(ij+1))=Delta_Tau(Tabu(ij)Tabu(ij+1))+Q/L(i);
end
Delta_Tau(Tabu(in)Tabu(i1))=Delta_Tau(Tabu(in)Tabu(i1))+Q/L(i);
end
Tau=(1-Rho).*Tau+Delta_Tau;
%%?????????
Tabu=zeros(mn);
end
%%????????
Pos=find(L_best==min(L_best));
Shortest_Route=R_best(Pos(1):)
Shortest_Length=L_best(Pos(1))
subplot(121)
DrawRoute(CShortest_Route)
subplot(122)
plot(L_best)
hold?on
plot(L_ave)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2497??2011-05-30?14:11??蟻群算法\ACATSP.m
?????文件????????527??2011-05-30?14:12??蟻群算法\DrawRoute.m
?????文件????????531??2011-05-30?14:27??蟻群算法\Test.m
?????文件???????3834??2011-05-30?13:54??蟻群算法\螞蟻算法程序-matlab.txt
?????目錄??????????0??2011-07-04?16:13??蟻群算法
-----------?---------??----------?-----??----
?????????????????7389????????????????????5
- 上一篇:自適應均衡器仿真
- 下一篇:數字信號處理——基于計算機的方法第四版MATLAB源程序
評論
共有 條評論