1 简介
本发明提供一种基于虚拟力算法的无线传感网覆盖优化方法,包括以下步骤:1,设定无线传感网的监测区域范围,传感器的探测距离;2,无线传感器在监测区域范围内的布撒;3,确定无线传感器节点的坐标值,计算各节点之间距离,存储至节点坐标矩阵;4,计算各节点的受力情况;5,判断节点移动是否满足约束条件:如果是则以当前的节点坐标矩阵作为节点位置数据输出;否则进入下一步骤;判断节点位置与监测区域范围的边界之间的距离是否超过距离阈值:如果未超过,则使节点受力后正常移动,返回步骤3;如果超过,则使节点停止向监测区域范围的边界方向的移动,回弹第二距离阈值,然后返回步骤3.本发明还涉及一种无线传感网覆盖优化系统.
2 部分代码
clear all
clc
load('xp.mat');
[kp,L]=size(xp);
N=40;%传感器节点个数
XMAX=900;%区域总长度
XMIN=100;
YMAX=800;%区域总宽度
YMIN=100;%区域总宽度
figure,
for j=1:kp
x=xp{j,1};
%figure,
subplot(2,3,j)
xm=[XMIN YMIN;XMIN YMAX;XMAX YMAX;XMAX YMIN];
fill(xm(:,1),xm(:,2),[0.8,0.8,0.8]);
hold on
plot(x(:,1),x(:,2),'r.','linewidth',5);
r=90; %传感器节点的感知半径
w=0:pi/50:2*pi;
for i=1:N
x1=x(i,1)+r*cos(w);
y1=x(i,2)+r*sin(w);
hold on
plot(x1,y1,'b');
text(x(i,1)+3,x(i,2),['\fontsize{8}\rm',num2str(i)]);
hold on
fill(x1,y1,'b')
end
axis([0 1000 0 900]);
xlabel('X/m');ylabel('Y/m');
%legend('要监测的区域',['传感器节点(','\fontsize{12}\bf',num2str(N),'\fontsize{10}\rm个)的位置'],' 传感器节点的感知范围');
hold on
plot([XMIN XMAX],[YMIN YMIN],'k','linewidth',1.5);
hold on
plot([XMIN XMIN],[YMIN YMAX],'k','linewidth',1.5);
hold on
plot([XMAX XMAX],[YMIN YMAX],'k','linewidth',1.5);
hold on
plot([XMIN XMAX],[YMAX YMAX],'k','linewidth',1.5);
end
%-------------------------画覆盖率曲线图----------------------------
load('q.mat');
subplot(2,3,6)
%plot(1:length(q),q(:,1),'r','markerfacecolor','r','linewidth',1);
plot(1:length(q),q(:,1),'r','linewidth',2);
grid on
xlabel('迭代次数');ylabel('网络覆盖率');
grid on
xlabel('迭代次数');ylabel('网络覆盖率');
set(gca,'xTick',[1:round(length(q)/10):length(q)])
axis([1 length(q) min(q)-0.05 1.005]);
3 仿真结果
4 参考文献
[1]王晓萍, 周文, 徐立升, 张日飞, 蒋秀波, & 宋早迪等. 基于虚拟力算法的无线传感网覆盖优化方法与系统.
部分理论引用网络文献,若有侵权联系博主删除。
5 完整MATLAB代码与数据下载地址
见博客主页头条