📄 test.m
字号:
%{
test
测试程序
整个程序流程
1、初始化:
2、迭代tmax次
3、所有的蚂蚁运动一次
4、产生一个0-1之间的随机数R
5、如果当前蚂蚁处于未负载状态,而且当前蚂蚁所在处的有点Oi
5.1、计算群体相似度f(Oi)和拾起概率Pp(Oi)
5.2、如果拾起概率Pp(Oi)》R
5.2.1、当前蚂蚁拾起点Oi(注意Oi在窗格中的位置是不断变动的)
5.3 5.2结束
6、如果条件5不成立,如果当前蚂蚁处于负载状态,持有点Oi,而且当前位置没有其他点
6.1计算群体相似度f(Oi)和放下概率Pd(Oi)
6.2如果放下概率Pd(Oi)》R
6.2.1放下节点Oi(注意点Oi在窗格中的位置是不断变动的)
6.2.2修改蚂蚁状态为卸载
6.3 6.2结束
7、5结束
8、当前蚂蚁移到邻近区域内的没有被其他蚂蚁占据的节点
9、所有的蚂蚁运动一次结束
10、迭代tmax次结束
输入参数:
1、ant_number 蚂蚁数
2、item_number 点数
3、Z 区域范围
4、tmax 最大迭代次数
5、S 邻接区域
6、Alpha 相异度参数
7、item_space 点的空间矩阵
8、K1 拾起概率参数
9、K2 放下概率参数
%}
clear;
clc;
K1=0.1;
K2=0.15;
Alpha=0.15;
%S=6;
S=30;
tmax=300;
ant_number=20;
Z=50;
axis([0 Z 0 Z]);
item_space=[ 5.1 3.5 1.4 0.2;
4.9 3.0 1.4 0.2;
4.7 3.2 1.3 0.2;
4.6 3.1 1.5 0.2;
5.0 3.6 1.4 0.2;
5.4 3.9 1.7 0.4;
4.6 3.4 1.4 0.3;
5.0 3.4 1.5 0.2;
];
[row,col]=size(item_space);
item_number=row;
%1、初始化:
[ant_matrix,item_window]=initialize(ant_number,item_number,Z);
item_window
%2、迭代tmax次
for i=1:tmax
%3、所有的蚂蚁运动一次
for j=1:ant_number
%4、产生一个0-1之间的随机数R
r=rand;
%5、如果当前蚂蚁处于未负载状态,而且当前蚂蚁所在处的有点Oi
%[x,y,z]=ant_matrix(j,:);
one_ant=ant_matrix(j,:);
x=one_ant(1);
y=one_ant(2);
z=one_ant(3);
%rows1=find(item_window(:,1)==x);
%rows2=find(item_window(:,2)==y);
%Oi=find(item_window(find(item_window(:,1)==x),2)==y);
Oi=has_item(x,y,item_window);
if z==0 && Oi>0
%5.1、计算群体相似度f(Oi)和拾起概率Pp(Oi)
%fi=get_Fi(Oi,S,Alpha,item_window,Z,item_space);
Pp=get_Pp(Oi,S,Alpha,item_window,K1,Z,item_space);
Pp;
%5.2、如果拾起概率Pp(Oi)》R
if Pp>=r
%5.2.1、当前蚂蚁拾起点Oi(注意Oi在窗格中的位置是不断变动的)
ant_matrix(j,3)=Oi;
end
elseif ant_matrix(j,3)>0 && Oi==0
%6、如果条件5不成立,如果当前蚂蚁处于负载状态,持有点Oi,而且当前位置没有其他点
%6.1计算群体相似度f(Oi)和放下概率Pd(Oi)
Oi=ant_matrix(j,3);%代表当前蚂蚁所携带的点的行号
Pd=get_Pd(Oi,S,Alpha,item_window,K2,Z,item_space);
Pd;
%6.2如果放下概率Pd(Oi)》R
if Pd>=r
%6.2.1放下节点Oi(注意点Oi在窗格中的位置是不断变动的)
item_window(Oi,1)=x;
item_window(Oi,2)=y;
ant_matrix(j,3)=0;
end
end
%8、当前蚂蚁移到邻近区域内的没有被其他蚂蚁占据的节点
ant_matrix=ant_move(j,S,ant_matrix,Z);
end
end
item_window
axis([0 Z 0 Z]);
plot(item_window(:,1),item_window(:,2),'--rs');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -