- 积分
- 42
- 注册时间
- 2006-9-26
- 仿真币
-
- 最后登录
- 1970-1-1
|
%% 无线传感器网络布局优化的粒子群导向虚拟力算法仿真程序
clc
clear
close all
%%
ZawFlag=[0,0,0,0,0];%障碍物的启用设置,为0表示不启用
BorderLength=1000;%正方形区域的边界长度
DL=4;%离散化质点的间距,要求DL能够整除BorderLength
[Sx,Sy]=InitSK(BorderLength,DL,ZawFlag);%调用子函数,产生正方形区域,并用离散化质点存储该区域
%%
% GreenSim团队原创作品,转载请注明
% Email:greensim@163.com
% GreenSim团队主页:http://blog.sina.com.cn/greensim
% 欢迎访问GreenSim——算法仿真团队→
[url=http://blog.sina.com.cn/greensimhttp://blog.sina.com.cn/greensim[/url][/color[/url]]
rLower=70;%传感器节点覆盖半径取值范围的下界
rUpper=70;%传感器节点覆盖半径取值范围的上界
NodeNum0=50;%设置固定节点个数
[Cx0,Cy0,r0,R0]=InitCovRand(NodeNum0,rLower,rUpper,ZawFlag,BorderLength);%调用子函数,产生固定节点
NodeNum1=50;%设置移动节点个数
[Cx1,Cy1,r1,R1]=InitCovRand(NodeNum1,rLower,rUpper,ZawFlag,BorderLength);%调用子函数,产生移动节点
figure(1)
DrawCovering0(Cx0,Cy0,r0,ZawFlag,BorderLength);
title('初始化网络布局(固定节点)')
figure(2)
DrawCovering0(Cx0,Cy0,r0,ZawFlag,BorderLength);
hold on
DrawCovering1(Cx1,Cy1,r1,ZawFlag,BorderLength);
title('初始化网络布局(固定节点和可移动节点)')
%%
Cx=[Cx0,Cx1];
Cy=[Cy0,Cy1];
r=[r0,r1];
R=[R0,R1];
%如需人为指定个别节点的初始位置,请参考下面的语句进行设置(注意指定的坐标不要落入障碍物内)
%Cx(1)=400;Cy(1)=300;%人工指定标号为1的节点的坐标
Move=ones(1,NodeNum0+NodeNum1);%节点移动控制参数,等于0表示节点不参与移动
Move(1:NodeNum0)=0;
M=200;%%迭代次数
CC=zeros(1,M+1);%计算初始覆盖率
[C,IfCovered]=CovRates(Cx,Cy,r,Sx,Sy);%计算初始覆盖率
CC(1)=C;
counter=2;
for i=1:M
[CX,CY]=Gravitation(Cx,Cy,r,R,0.2,Sx,Sy,IfCovered);
[CX,CY]=DoNotMove(Cx,Cy,CX,CY,Move);
[Cx,Cy]=Coulomb(CX,CY,r,R,0.00005);
[Cx,Cy]=DoNotMove(CX,CY,Cx,Cy,Move);
if i>0.05*M
[r,R]=ProsperityForAll(Cx,Cy,r,R,0.03,0.1);
end
[C,IfCovered]=CovRates(Cx,Cy,r,Sx,Sy);
CC(i+1)=C;
if i==2
figure(3)
DrawCovering0(Cx(1:NodeNum0),Cy(1:NodeNum0),r(1:NodeNum0),ZawFlag,BorderLength);
hold on
DrawCovering1(Cx(NodeNum0+1:end),Cy(NodeNum0+1:end),r(NodeNum0+1:end),ZawFlag,BorderLength);
title('粒子群优化网络布局')
end
if i==50
figure(4)
DrawCovering0(Cx(1:NodeNum0),Cy(1:NodeNum0),r(1:NodeNum0),ZawFlag,BorderLength);
hold on
DrawCovering1(0.25*BorderLength+0.5*Cx(NodeNum0+1:end),0.25*BorderLength+0.5*Cy(NodeNum0+1:end),r
(NodeNum0+1:end),ZawFlag,BorderLength);
title('虚拟力优化网络布局')
end
if i==M
figure(5)
DrawCovering0(Cx(1:NodeNum0),Cy(1:NodeNum0),r(1:NodeNum0),ZawFlag,BorderLength);
hold on
DrawCovering1(Cx(NodeNum0+1:end),Cy(NodeNum0+1:end),r(NodeNum0+1:end),ZawFlag,BorderLength);
title('虚拟力导向粒子群优化网络布局')
end
end
%%
figure(6)
plot(CC)
xlabel('迭代次数','FontName','Times New Roman','FontSize',10);
ylabel('覆盖率(%)','FontName','Times New Roman','FontSize',10);
title('虚拟力导向粒子群优化网络布局覆盖率收敛曲线'); |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|