[Path,PD,PB,W,xxxx,TABU,DD,D]=mutation(Path,PD,PB,W,xxxx,TABU,DD,D);
%第六步:依据变异后的路径执行二次蚂蚁搜索
[DD,BB,Path,PD,PB,W,TABU,xxxx,hegeDelays,hegePaths,hegeResources,zuiyouPaths,zuiyouDelays,zuiyouResources,paths,delays,resources,HP,fitness,iii]=ACA_Proc(DD,BB,Path,PD,PB,W,TABU,vs,vd,Tau,Alpha,Beta,Gamma,B,D,k,m,N,Daikuan,Yanshi,canshuA,canshuB,Q,Rho,iii,hegeDelays,hegePaths,hegeResources,zuiyouPaths,zuiyouDelays,zuiyouResources,paths,delays,resources,HP,fitness);
end
%--------------------------------------------------------------------
for m=(M1+1):(M2+M1)
%第七步:逆向搜素状态初始化
DD=D;%延时邻接矩阵(N×N)备份
BB=B;%带宽邻接矩阵(N×N)备份
vs=vdbf;%终点和源点互换
vd=vsbf;
W=vs;%当前节点初始化为源节点
Path=vs;%爬行路线初始化
PD=[];%爬行路线延时初始化
PB=[];%爬行路线带宽初始化
TABU=ones(1,N);%禁忌表初始化
TABU(vs)=0;%排除初始点
%第八步:执行逆向蚂蚁搜素
[DD,BB,Path,PD,PB,W,TABU,xxxx,hegeDelays,hegePaths,hegeResources,zuiyouPaths,zuiyouDelays,zuiyouResources,paths,delays,resources,HP,fitness,iii]=ACA_Proc(DD,BB,Path,PD,PB,W,TABU,vs,vd,Tau,Alpha,Beta,Gamma,B,D,k,m,N,Daikuan,Yanshi,canshuA,canshuB,Q,Rho,iii,hegeDelays,hegePaths,hegeResources,zuiyouPaths,zuiyouDelays,zuiyouResources,paths,delays,resources,HP,fitness);
%第九步:对目前找到的链路进行变异
[Path,PD,PB,W,xxxx,TABU,DD,D]=mutation(Path,PD,PB,W,xxxx,TABU,DD,D);
%第十步:依据变异后的路径执行二次蚂蚁搜索
[DD,BB,Path,PD,PB,W,TABU,xxxx,hegeDelays,hegePaths,hegeResources,zuiyouPaths,zuiyouDelays,zuiyouResources,paths,delays,resources,HP,fitness,iii]=ACA_Proc(DD,BB,Path,PD,PB,W,TABU,vs,vd,Tau,Alpha,Beta,Gamma,B,D,k,m,N,Daikuan,Yanshi,canshuA,canshuB,Q,Rho,iii,hegeDelays,hegePaths,hegeResources,zuiyouPaths,zuiyouDelays,zuiyouResources,paths,delays,resources,HP,fitness);
end
%----------------------------------------------------------------------
%第十一步:更新信息素
Delta_Tau=zeros(N,N);%更新量初始化
for m=1:M
if resources(k,m)<inf&delays(k,m)<Yanshi
ROUT=paths{k,m};
TS=length(ROUT)-1;%跳数
Cpkm=resources(k,m);
for s=1:TS
x=ROUT(s);
y=ROUT(s+1);
Delta_Tau(x,y)=Delta_Tau(x,y)+Q/Cpkm;
Delta_Tau(y,x)=Delta_Tau(y,x)+Q/Cpkm;
end
end
end
Tau=(1-Rho).*Tau+Delta_Tau;%信息素挥发一部分,新增加一部分
end
%第十二步:整理输出结果
%对于以终点开头的通路执行行逆转。
l=size(hegePaths);
for i=1:l(1)
hegePathsline=hegePaths(i,:);
hegePathsline1=hegePathsline(1);
if hegePathsline1==vdbf
inverhegePaths=fliplr(hegePaths(i,:));%行逆转
hegePaths(i,:)=inverhegePaths;
end
end
allround=hegePaths
[va,vb]=max(hegeResources);
if length(va)==0
va=1;
zuiyouResources=0
else
zuiyouResources=va
loc=vb
F=1/va
end
zuiyouPaths=hegePaths(vb,:)
zuiyouDelays=hegeDelays(vb)
toc
%第十一步:绘制曲线
%figure(1)
%for ii=1:M%整理输出结果
%for jj=1:M
%if resources(ii,jj)==inf
%resources(ii,jj)=0;
%end
%end
%end
%DiedaiNummaxfitness=zeros(M,DiedaiNum);
%for k=1:DiedaiNum
%DiedaiNummaxfitness(k,:)=max(resources(k,:));
%end
%plot(DiedaiNummaxfitness,'b-')
%hold on