📄 anttravel.m
字号:
function[p,fm]=anttravel(tao,alpha,beta,Y1,Y2,Y3)
%tao=ones(20,20);
%alpha=1;
%beta=2;
[z,l]=size(tao);
%Y1=0.2*rand(z,1)+0.4*ones(z,1);
%Y2=rand(z,1)+1.5*ones(z,1);
%Y3=rand(z,1)+1.5*ones(z,1);
P=[Y1(1),Y2(1),Y3(1)];
%[y(1),f(1)]=antsimu(P(1),P(2),P(3));
fm=0;
for k=1:(z-1)
%P=[5*Y(k,1),200*Y(k,2),0.5*Y(k,3)];
[yv,fv]=antsimu(P(1),P(2),P(3));
p_sum=0;
for g=1:z
f(g)=0;
end
for g=1:z
b(g,1)=Y1(g);b(g,2)=Y2(g);b(g,3)=Y3(g);
f(g)=0;
for i=1:3
if (b(g,i)==P(i))|b(g,i)<0
continue;
else
[y,f(g)]=antsimu(b(g,1),b(g,2),b(g,3));
ada=fv-f(g);
if (ada<=0)|(f(g)==0) continue;
%if (fv<f)|(f=0) continue;
else
p_sum=p_sum+tao(k,g)^alpha*ada^beta;
end
end
end
cp=zeros(1,z);
for t=1:z
%b=[5*Y(t,1),200*Y(t,2),0.5*Y(t,3)];
%if b==P
%continue;
%else
%[y,f]=antsimu(b(1),b(2),b(3));
ada=fv-f(t);
if (ada<=0)|(f(t)==0) continue;
else
cp(t)=tao(k,t)^alpha*ada^beta/p_sum;%求转移概率
end
end
end
cpp=cp(1);
for s=1:z
if cpp<=cp(s)
cpp=cp(s);
P(1)=b(s,1);P(2)=b(s,2);P(3)=b(s,3);
end
end
[yv,fv]=antsimu(P(1),P(2),P(3));
fm=fv;
end
p=P;
%plot(yv);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -