• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: Matlab
  • 标签:

资源简介

利用蚁群算法计算提取拉曼光谱特征峰,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


评论

共有 条评论

相关资源