文章目录

  • 一、理论基础
    • 1、节点感知模型
      • (1)0/1感知模型
      • (2)概率感知模型
    • 2、覆盖数学模型
    • 3、粒子群优化(PSO)算法
  • 二、MATLAB程序实现
    • 1、参数设置
    • 2、适应度函数
    • 3、主函数
    • 3、结果分析
  • 三、参考文献

一、理论基础

1、节点感知模型

传感器节点的感知模型主要分为两种:0/1(二元)感知模型和概率感知模型。

(1)0/1感知模型

该模型是最理想的感知模型,指的是在一个平面上以传感器节点为圆心、rrr为半径的圆区域,在此区域内的感知概率记为1,超出这个区域的传感器对它的感知概率为0。其中rrr感知半径由传感器节点的物理特性决定。对二维平面的任何一定点p(x,y)p(x,y)p(x,y),传感器节点iii对它的感知概率定义如下:p={1,ifdip≤r0else(1)p=\begin{dcases}1,\quad if\,d_{ip}≤r\\0\quad\,\, else\end{dcases}\tag{1}p={1,ifdip​≤r0else​(1)上式中rrr是传感器的感知半径,dipd_{ip}dip​是传感器节点到目标点ppp的欧氏距离。dip=(x−xi)2+(y−yi)2(2)d_{ip}=\sqrt {(x-x_i)^2+(y-y_i)^2}\tag{2}dip​=(x−xi​)2+(y−yi​)2​(2)二元感知模型推广到三维空间中,就是以传感器节点为圆心、半径为感知半径rsrsrs的球形区域。

(2)概率感知模型

由于实际的无线传感器网络的应用环境非常的复杂,节点的感知能力会随着距离的增大而减弱,概率感知模型解决了这个问题。传感器节点iii对平面内任何一点p(x,y)p(x,y)p(x,y)的感知概率为:p=e−αdip(3)p=e^{-\alpha d_{ip}}\tag{3}p=e−αdip​(3)dipdipdip指的是传感器节点iii到ppp点的距离;参数α\alphaα指的是节点随着距离的增大感知能力的衰减程度。后来 Zou 等对这个模型进行了修改,使之更加适合于实际环境的感知。当目标点到传感器节点的距离小于r−rer-r_er−re​的时候,传感器节点对该目标点的感知概率为 1,当目标点到传感器节点的距离大于r+rer+r_er+re​的时候,传感器节点对该目标点的感知概率为 0,在两者之间的时候,感知能力为两点距离的指数函数,具体描述如下:p={0,r+re<dipe−λαβ,r−re<dip<r+re1,r−re≥dip(4)p=\begin{cases}0,\quad\quad\,\,\,\,\, r+r_e<d_{ip} \\ e^{-\lambda\alpha^{\beta}} ,\quad r-r_e<d_{ip}<r+r_e\\ 1,\quad\quad\,\,\,\,\, r-r_e≥d_{ip} \end{cases}\tag{4}p=⎩⎪⎨⎪⎧​0,r+re​<dip​e−λαβ,r−re​<dip​<r+re​1,r−re​≥dip​​(4)其中,rer_ere​为传感器节点不确定检测能力的一个度量。参数α=dip−(r−re)\alpha=d_{ip}- (r-r_e)α=dip​−(r−re​),λ\lambdaλ和β\betaβ用于刻画当目标点ppp和传感器节点iii之间的距离落于某个测量范围之内时,传感器节点iii对目标点ppp的感知概率。
本文主要基于0/1模型,进行寻优。

2、覆盖数学模型

现假定目标监测区域为二维平面,在区域AreaAreaArea上投放同型结构传感器节点的数目为NNN,每个节点的位置坐标值假设已被初始化赋值,且节点的感知半径为rrr。传感器节点集则表示为:Node{x1,x2,⋯,xN}(5)Node\{x_1,x_2,\cdots,x_N\}\tag{5}Node{x1​,x2​,⋯,xN​}(5)其中nodei={xi,yi,r}node_i=\{x_i,y_i,r\}nodei​={xi​,yi​,r},表示以节点(xi,yi)(x_i,y_i)(xi​,yi​)为圆心,rrr为监测半径的圆,假定监测区域AreaAreaArea被数字化离散为l×ml×ml×m个像素点,像素点的坐标为(x,y)(x,y)(x,y),目标像素点与传感器节点间的距离为:d(nodei,p)=(xi−x)2+(yi−y)2(6)d(node_i,p)=\sqrt{(x_i-x)^2+(y_i-y)^2}\tag{6}d(nodei​,p)=(xi​−x)2+(yi​−y)2​(6)目标区域内像素点被传感器节点所覆盖的事件定义为cic_ici​。则该事件发生的概率PciPc_iPci​即为像素点(x,y)(x,y)(x,y)被传感器节点nodeinode_inodei​所覆盖的概率:Pcov(x,y,nodei)={1,ifd(nodei,p)≤r0,otherwise(7)P_{cov}(x,y,node_i)=\begin{cases}1,\quad if\,d(node_i,p)≤r\\0,\quad otherwise\end{cases}\tag{7}Pcov​(x,y,nodei​)={1,ifd(nodei​,p)≤r0,otherwise​(7)我们将所有的传感器节点NodeNodeNode在目标监测环境中的区域覆盖率Rarea(node)R_{area}(node)Rarea​(node)定义为传感器节点集NodeNodeNode的覆盖面积与监测区域的面积AreaAreaArea之比,如公式(8)所示:Rarea(node)=∑PcovArea(8)R_{area}(node)=\frac{\sum P_{cov}}{Area}\tag{8}Rarea​(node)=Area∑Pcov​​(8)那我们的最终目标就是找到一组节点使得覆盖率最大。

3、粒子群优化(PSO)算法

请参考这里。

二、MATLAB程序实现

1、参数设置

实验参数:
迭代次数:500,节点个数:35,感知半径:r=5r=5r=5,位置范围:[0,50][0,50][0,50],速度范围:[−2,2][-2,2][−2,2],加速因子:c1=c2=2c_1=c_2=2c1​=c2​=2,惯性权重:0.4≤wg≤0.90.4≤wg≤0.90.4≤wg≤0.9,离散粒度:data=1data=1data=1

2、适应度函数

适应度函数fun.m代码如下:

function z = fun(x, y, L, R, data)
%% 适应度函数:WSN的覆盖率
% input:
% x        圆心横坐标
% y        圆心纵坐标
% L        区域边长
% R        通信半径
% data     离散粒度
% output:
% z        覆盖率
N = length(x);                      % 节点总个数
[m, n] = meshgrid(0:data:L);        % 离散化区域内的点
[row, col] = size(m);
for i = 1:ND = sqrt((m-x(i)).^2+(n-y(i)).^2);   % 计算坐标点到圆心的距离[m0, n0] = find(D <= R);             % 检测出圆覆盖点的坐标Ind = (m0-1).*col+n0;                % 坐标与索引转化M(Ind) = 1;                          % 改变覆盖状态
end
scale = sum(M(1:end))/(row*col);         % 计算覆盖比例
z = scale;

3、主函数

%% 清空环境变量
clc
clear
%% 网络参数
L = 50;                  % 区域边长
n = 35;                  % 节点个数
R = 5;                   % 通信半径
data = 1;                % 离散粒度
%% 粒子群参数
maxgen = 500;            % 迭代次数
sizepop = 20;            % 粒子规模
Wmax = 0.9;
Wmin = 0.4;
%% 参数初始化
c1 = 2;                  % 自我认知参数
c2 = 2;                  % 社会认知参数
Vmax = 2;                % 最大速度
Vmin = -2;               % 最小速度
popmax = 50;             % 位置最大值
popmin = 0;              % 位置最小值
gbest = zeros(n, 2);    % 最优解
%% 随机生成群体位置、速度和对应的适应度值
empty_pop.Position = [];
empty_pop.V = [];
pop = repmat(empty_pop, sizepop, 1);
for i=1:sizepoppop(i).Position = rand(n, 2).*L;  % 初始种群位置pop(i).V = rands(n, 2)*2;         % 初始化速度fitness(i) = fun(pop(i).Position(:, 1), pop(i).Position(:, 2), L, R, data);  % 粒子群的适应度
end
[bestfitness, bestindex] = max(fitness);
gbest = pop(bestindex).Position;    % 群体最优极值
pbest = pop;                        % 个体最优极值
fitnessgbest = bestfitness;         % 种群最优适应度值
fitnesspbest = fitness;             % 个体最优适应度值
%% 初始结果显示
disp('初始位置:' );
disp([num2str(gbest)]);
disp(['初始覆盖率:', num2str(fitnessgbest)]);
% 初始覆盖图
figure
for i = 1:naxis([0 L 0 L]);        % 限制坐标范围x = gbest(:, 1);y = gbest(:, 2);sita = 0:pi/100:2*pi;   % 角度[0, 2*pi]hold on;p2 = fill(x(i)+R*cos(sita), y(i)+R*sin(sita), 'y');
end
p1 = plot(gbest(:, 1), gbest(:, 2), 'r*');
legend([p1, p2], {'WSN节点', '覆盖区域'});
title 'PSO-WSN初始结果';
%% 迭代寻优
for i = 1:maxgenW = Wmax-((Wmax-Wmin)/maxgen)*i;for j=1:sizepop%% 速度更新pop(j).V = W*pop(j).V + c1*rand*(pbest(j).Position - pop(j).Position) + c2*rand*(gbest - pop(j).Position);% 边界处理pop(j).V = max(pop(j).V, Vmin);pop(j).V = min(pop(j).V, Vmax);%% 位置更新pop(j).Position = pop(j).Position+pop(j).V;% 边界处理pop(j).Position = max(pop(j).Position, popmin);pop(j).Position = min(pop(j).Position, popmax);%% 适应度值更新fitness(j) = fun(pop(j).Position(:, 1), pop(j).Position(:, 2), L, R, data);    end%% 个体和群体极值更新for j = 1:sizepop% 个体极值更新if fitness(j) > fitnesspbest(j)pbest(j).Position = pop(j).Position;fitnesspbest(j) = fitness(j);end% 群体极值更新if fitness(j) > fitnessgbestgbest = pop(j).Position;fitnessgbest = fitness(j);endend%% 每一代群体最优值存入zz数组zz(i) = fitnessgbest;
end
%% 结果显示
disp('最优位置:' );
disp([num2str(gbest)]);
disp(['最优覆盖率:', num2str(zz(end))]);
%% 绘图
figure;
plot(zz, 'r', 'lineWidth', 2);          %  画出迭代图
title('算法训练过程', 'fontsize', 12);
xlabel('迭代次数', 'fontsize', 12);
ylabel('粒子覆盖率', 'fontsize', 12);
figure
for i = 1:naxis([0 L 0 L]);        % 限制坐标范围x = gbest(:, 1);y = gbest(:, 2);sita = 0:pi/100:2*pi;   % 角度[0, 2*pi]hold on;p2 = fill(x(i)+R*cos(sita), y(i)+R*sin(sita), 'g');
end
p1 = plot(gbest(:, 1), gbest(:, 2), 'r*');
legend([p1, p2], {'WSN节点', '覆盖区域'});
title 'PSO-WSN最终结果';

3、结果分析

初始随机值和最终的最优解如下:

初始位置:
0.904522      19.02588.69026      25.989342.2468      45.620216.0256      12.038848.0632      44.417413.919      16.016931.6586      29.40943.82078      32.641932.4564      19.017649.0228      34.013226.0312      10.12344.64958      38.21068.32003      40.017815.7309      42.504926.2661       21.47938.4964      43.631839.9338      30.376133.4178      21.756514.4604      15.940544.4453      21.268124.6109      32.928625.784      48.382937.5038      15.48234.71615      25.28177.92029      10.925337.6701      39.818540.9716      1.8543421.4861      38.457448.3235      5.260851.79348      1.7424913.1786       18.06331.1479      19.578131.951      14.410620.6043      5.0090447.2907         41.4
初始覆盖率:0.68435
最优位置:
6.69667      17.4692
18.6787       25.677
37.6056       45.967
16.4003      16.3665
44.4088      44.9523
15.6398      7.9438439.028      23.5229
10.3198      35.3409
24.9243      13.9243
45.4214      34.6088
33.1839      8.65765
4.95417      44.5512
14.0575      42.7922
17.1556       45.236
17.5786      31.108933.359      46.6023
32.2229      32.893938.185      28.7335
13.3897      19.9836
47.2304      27.7674
27.6429       33.348
25.1923      41.2169
43.2884      15.5091
4.37728      29.2529
8.24945      9.83391
38.2074       38.675
41.7384       3.5438
21.5924      33.3411
46.2542      10.1693
4.29853      3.31768
10.9144       21.165
27.2748      23.9816
33.1514      17.8386
24.6509       4.1925
47.9948      44.5559
最优覆盖率:0.82045

对应的覆盖图如图1、图2所示。

图1 PSO-WSN初始覆盖效果

图2 PSO-WSN最终覆盖效果

覆盖率变化如图3所示。

图3 WSN节点覆盖率变化

三、参考文献

[1] 史朝亚. 基于PSO算法无线传感器网络覆盖优化的研究[D]. 南京: 南京理工大学, 2013.
[2] 张谦. 基于群智能算法的无线传感器网络覆盖优化研究[D]. 长沙: 湖南大学, 2015.
[3] 心升明月. 基于粒子群优化算法的函数寻优算法. CSDN博客.

基于PSO算法的无线传感器网络的覆盖优化相关推荐

  1. 基于均衡优化算法的无线传感器网络三维覆盖优化

    文章目录 一.理论基础 1.种群初始化 2.均衡池 3.浓度更新 4.EO算法伪代码 二.仿真实验与分析 1.函数测试与数值分析 2.WSN三维覆盖优化 三.参考文献 一.理论基础 均衡优化(Equi ...

  2. 【布局优化】基于布谷鸟算法实现无线传感器网(WSN)覆盖优化 Matlab源码

    一.WSN模型 1.1 动机 近年来,随着对等网络.云计算和网格计算等分布式环境的发展,无线传感器网络(WSN)得到了广泛的应用.无线传感器网络(WSN)是一种新兴的计算和网络模式,它可以被定义为一个 ...

  3. 【布局优化】基于蚁狮算法的无线传感器网(WSN)覆盖优化matlab源码

    一.WSN模型 1.1 动机 近年来,随着对等网络.云计算和网格计算等分布式环境的发展,无线传感器网络(WSN)得到了广泛的应用.无线传感器网络(WSN)是一种新兴的计算和网络模式,它可以被定义为一个 ...

  4. 【优化覆盖】基于matlab人工蜂群算法求解无线网络传感覆盖优化问题【含Matlab源码 1097期】

    ⛄一.人工蜂群算法求解无线网络传感覆盖优化问题简介 1 WSN覆盖模型 1.1 问题描述 在WSN中, 要实现较高的无线网络传感器节点覆盖率从而减少监测盲点的出现, 就必须加大无线网络传感器节点的分布 ...

  5. 【Matlab优化覆盖】虚拟力算法求解无线网络传感覆盖优化问题【含源码 1187期】

    一.代码运行视频(哔哩哔哩) [Matlab优化覆盖]虚拟力算法求解无线网络传感覆盖优化问题[含源码 1187期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  6. 【布局优化】基于人工蜂群算法的无线传感器网(WSN)覆盖优化matlab源码

    一.WSN模型 1.1 动机 近年来,随着对等网络.云计算和网格计算等分布式环境的发展,无线传感器网络(WSN)得到了广泛的应用.无线传感器网络(WSN)是一种新兴的计算和网络模式,它可以被定义为一个 ...

  7. 【优化选址】基于人工蜂群算法求解无线网络传感覆盖优化问题含Matlab源码

    1 简介 近年来,物联网技术,人工智能技术的兴起使传感器网络分布覆盖检测区域的研究以及最大限度地提高传感器网络的覆盖率变得尤为必要.人工蜂群算法在无约束条件的数值优化问题上能取得较好的收敛效果.通过人 ...

  8. 无线传感器网络WSN覆盖优化问题

    目录 一.相关基础 1 相关概念 2 相关分类 2.1 按节点部署方式分类 2.2 按覆盖目标分类 2.3 按网络中的传感器类型分类 2.4 传感器种类 2.5 地形分类 3 评价指标 3.1 覆盖率 ...

  9. 【布局优化】基于遗传算法的的无线传感器网(WSN)覆盖优化Matlab源码

    一.WSN模型 1.1 动机 近年来,随着对等网络.云计算和网格计算等分布式环境的发展,无线传感器网络(WSN)得到了广泛的应用.无线传感器网络(WSN)是一种新兴的计算和网络模式,它可以被定义为一个 ...

  10. 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码

    ​ 一.WSN模型 ​ 二.鲸鱼算法 2.1. 鲸鱼优化算法的生物机制 ​ 图1 座头鲸的泡泡捕食示意图 据研究,鲸鱼大脑的某些区域有与人类相似的梭形细胞,而这些细胞负责人类的判断.情感和社会行为.鲸 ...

最新文章

  1. Cocos2d-x3.0 TestCPP文件夹笔记
  2. python flask解决上传下载的问题
  3. mysql执行查询出来的数据_F#连接到在线MySQL数据库执行查询
  4. HDU 2612 Find a way bfs
  5. Spring Boot YAML配置
  6. [Cocos2d-x]Cocos2d-x 3.2 学习笔记
  7. centos 下安装mysql
  8. 【前端 · 面试 】HTTP 总结(一)—— HTTP 概述
  9. mysql 创建表字段Double类型长度
  10. 音乐鉴赏 周海宏 网络课程 题库(Ctrl+f查找)点赞哦
  11. django线上环境配置
  12. 中国哪里的大米最好吃?这几个地区最出名,网友为此吵翻了
  13. 【毕业设计】基于stm32的示波器设计与实现 - 单片机 嵌入式
  14. 《布尔教育php设计模式教程 共17课 》完整版
  15. android系统语言切换及系统烧写默认语言设置
  16. CSR8675项目实战:BlueHiFi蓝牙音乐收发器
  17. c语言指针倒数之和,用C语言将一个数开根号后再取倒数的方法
  18. 【视频编码学习】——变换的理解
  19. Flexone系统服务器,产品技术-HPE Superdome Flex 280服务器-新华三集团-H3C
  20. 维克仓库管理软件 v3.4 绿色

热门文章

  1. 二极管和极性电容的正负测量
  2. js实现数字金额转换大写及数字加千分符
  3. C语言中钩子函数使用讲解
  4. Matplotlib系列(三):坐标轴变换及注释
  5. Linux怎么恢复已删除的文件,Linux中使用extundelete恢复已删除的文件
  6. 互联网发展的成功经验,以及面临的挑战
  7. 1-以太坊私钥公钥地址生成
  8. 局域网自定义域名H5站点移动设备测试时的代理设置
  9. 慕课课程《简明世界史》课堂笔记二
  10. android发送短信验证码并自动获取验证码填充文本框