M=repmat(1/800,21,41);
a=zeros(20,2);
b=zeros(20,2);
c=zeros(20,2);
d=zeros(20,2);
Ma=zeros(21,41);
t=1/800;
for q=1:1:2
i=4;
j=0;
a(1,:)=[i j]; %将初始化的第一个点存入a数组
p=0;
while i~=7||j~=20 %循环的截至条件为蚂蚁(i,j )到达第六个点,即我们假设的出
%………………………………………………………………………………………………………………………………………………
D=zeros(1); %产生一个随机数D,该数有计算机按照信息素所产生的概率进行概率性产
x=rand(1); %且D的取值为0,90,180,代表着处于(i,j )坐标点的第一只蚂蚁下一步走向,其中假设1,2,3点不可以向下走
D(find(x
D(find(x>=M(i+1,j)/(M(i+1,j)+M(i,j+1)+M(i-1,j))))=90; %其中0代表蚂蚁向右拐,90代表向上拐,180代表左拐
D(find(x>=(M(i,j+1)+M(i+1,j))/(M(i+1,j)+M(i,j+1)+M(i-1,j))))=180;
%……………………………………………………………………………………………………………………………………………………
if D==0
p=p+1;
a(p+1,:)=[i+1 j]; %蚂蚁向左转一次,得到第二个网络节点
i=i+1; %此段即是说明蚂蚁的转向,其中p为记录蚂蚁经过的网格线数目,a数组记录其经过的网格点坐标
elseif D==90
p=p+1;
a(p+1,:)=[i j+1];
j=j+1;
else
p=p+1;
a(p+1,:)=[i-1 j];
i=i-1;
end
end
end