找回密码
 注册
Simdroid-非首页
查看: 87|回复: 0

【原创】无线传感器网络布局优化的粒子群导向虚拟力算法仿真程序

[复制链接]
发表于 2010-3-2 23:48:10 | 显示全部楼层 |阅读模式 来自 四川成都
%% 无线传感器网络布局优化的粒子群导向虚拟力算法仿真程序
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/greensim
http://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('虚拟力导向粒子群优化网络布局覆盖率收敛曲线');

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-2 03:45 , Processed in 0.031505 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表