【优化选址】基于虚拟力算法求解无线网络传感覆盖优化问题Matlab代码

163 阅读2分钟

​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代码与数据下载地址

见博客主页头条