1 简介 无线传感器网络(Wireless Sensor Network-WSN)作为物联网的"末梢神经",是一种综合数据感知与采集,融合处理和信息传输功能于一体的无线自组织智能群体型网络信息系统,其典型的应用就
1 简介
无线传感器网络(Wireless Sensor Network-WSN)作为物联网的"末梢神经",是一种综合数据感知与采集,融合处理和信息传输功能于一体的无线自组织智能群体型网络信息系统,其典型的应用就是监测某个目标区域,采集人们所需的各种客观世界的物理信息,实际情况中,大部分监测区域都是人类无法直接到达进行确定性部署的,但可以通过随机散播传感节点以自组织的方式形成WSN.传感器节点其物理结构固有的特性导致节点感知范围是有限的,故不能有效地保证监测区域的覆盖率达到应用的需求,因此WSN要想得到广泛的实际应用,覆盖率必须得到保证,这关系着网络的性能及服务质量.
2 部分代码
close allclear
clc
addpath(genpath(cd))
warning('off')
%%
N=10; % 节点数
area=[10,10]; % 以米为单位的节点部署区域
Trange=2; % 传感器节点的传输范围(以米为单位)
nodes.pos=area(1).*rand(N,2);% 节点地理位置
lambda=0.125; % 以米为单位的信号波长
nodes.major = Trange; % 椭圆范围的长轴,以米为单位
nodes.minor = lambda*Trange; % 椭圆范围的短轴,以米为单位
% redundantNo=9; % 愈合节点数
redundantNo=round(10*N/100);
%% 绘制节点部署
cnt=1;
for ii=1:N
for jj=1:N
if ii~=jj
nodes.distance(ii,jj)=pdist([nodes.pos(ii,:);nodes.pos(jj,:)]);
if nodes.distance(ii,jj)<Trange || nodes.distance(ii,jj)==Trange
nodes.inrange(ii,jj)=1;
else
nodes.inrange(ii,jj)=0;
end
end
end
end
figure
F5=plot(nodes.pos(:,1),nodes.pos(:,2),'.','color','r');
hold on
for ii=1:N % 绘制圆形传输范围
[nodes.circle.x(ii,:),nodes.circle.y(ii,:)]=circle(nodes.pos(ii,1),nodes.pos(ii,2),Trange);
F6=fill(nodes.circle.x(ii,:),nodes.circle.y(ii,:),[0.25,0.25,0.25]);
alpha 0.3
hold on
end
axis on
xlabel('x(m)')
ylabel('y(m)')
title('具有圆形传输范围的节点的初始放置')
%% 绘制德劳内三角形
TRI = delaunay(nodes.pos(:,1),nodes.pos(:,2));
figure(2)
F5 = plot(nodes.pos(:,1),nodes.pos(:,2),'.','color','r');
hold on
for ii=1:N % 绘制圆形传输范围
[nodes.circle.x(ii,:),nodes.circle.y(ii,:)]=circle(nodes.pos(ii,1),nodes.pos(ii,2),Trange);
F6=fill(nodes.circle.x(ii,:),nodes.circle.y(ii,:),[0.25,0.25,0.25]);
alpha 0.3
hold on
end
axis on
xlabel('x(m)')
ylabel('y(m)')
title('节点初始位置的覆盖孔')
hold on
triplot(TRI,nodes.pos(:,1),nodes.pos(:,2))
%%孔洞检测
[holeDetected.circle,Circmcenter.circle,circumradius.circle]=holeDetection(TRI,nodes,F5,F6,Trange,area,2,1);
display(['--> No of detected Holes for Circular = ',num2str(numel(find(holeDetected.circle)))])
%% PSO 优化其余 wsn 节点的位置以覆盖孔
nvars = 2*(N);
fun=@(x)objf(x,Trange,area);
lb=zeros(nvars,1);
ub=area(1).*ones(nvars,1);
options = optimoptions(@particleswarm,'Display','iter','MaxIterations',100,'PlotFcn','pswplotbestf');
[x,fval] = particleswarm(fun,nvars,lb,ub,options);
finalPos = reshape(x,[numel(x)/2,2]);
% 绘制最终调整的节点的位置
figure
plot(finalPos(:,1),finalPos(:,2),'o','color','r');
hold on
for ii=1:N % 绘制圆形传输范围
[finalcircle.x(ii,:),finalcircle.y(ii,:)]=circle(finalPos(ii,1),finalPos(ii,2),Trange);
fill(finalcircle.x(ii,:),finalcircle.y(ii,:),[0.25,0.25,0.25]);
alpha 0.3
hold on
end
axis on
xlabel('x(m)')
ylabel('y(m)')
title('具有圆形传输范围的节点的优化位置')
3 仿真结果
4 参考文献
[1]史朝亚. 基于PSO算法无线传感器网络覆盖优化的研究[D]. 南京理工大学.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。