基于粒子群算法的无线传感器网络覆盖优化
2021/6/20 11:52:15
本文主要是介绍基于粒子群算法的无线传感器网络覆盖优化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 一、理论基础
-
- 1、节点感知模型
-
- (1)0/1感知模型
- (2)概率感知模型
- 2、覆盖数学模型
- 3、粒子群优化(PSO)算法
- 二、MATLAB程序实现
-
- 1、参数设置
- 2、适应度函数
- 3、主函数
- 3、结果分析
- 三、参考文献
一、理论基础
1、节点感知模型
传感器节点的感知模型主要分为两种:0/1(二元)感知模型和概率感知模型。
(1)0/1感知模型
该模型是最理想的感知模型,指的是在一个平面上以传感器节点为圆心、r rr为半径的圆区域,在此区域内的感知概率记为1,超出这个区域的传感器对它的感知概率为0。其中r rr感知半径由传感器节点的物理特性决定。对二维平面的任何一定点p ( x , y ) p(x,y)p(x,y),传感器节点i ii对它的感知概率定义如下:
(2)概率感知模型
(2)概率感知模型
2、覆盖数学模型
3、粒子群优化(PSO)算法
二、MATLAB程序实现
1、参数设置
实验参数:
迭代次数:500,节点个数:35,感知半径:r = 5 r=5r=5,位置范围:[ 0 , 50 ] [0,50][0,50],速度范围:[ − 2 , 2 ] [-2,2][−2,2],加速因子:c 1 = c 2 = 2 c_1=c_2=2c1=c2=2,惯性权重:0.4 ≤ w g ≤ 0.9 0.4≤wg≤0.90.4≤wg≤0.9,离散粒度:d a t a = 1 data=1data=1
2、主函数
%% 清空环境变量 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(sizepop, 2); % 最优解 %% 随机生成群体位置、速度和对应的适应度值 empty_pop.Position = []; empty_pop.V = []; pop = repmat(empty_pop, sizepop, 1); for i=1:sizepop pop(i).Position = rand(n, 2).*[L, 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:n axis([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:maxgen W = 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); %% 位置更新 end end %% 每一代群体最优值存入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:n axis([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.0258 8.69026 25.9893 42.2468 45.6202 16.0256 12.0388 48.0632 44.4174 13.919 16.0169 31.6586 29.4094 3.82078 32.6419 32.4564 19.0176 49.0228 34.0132 26.0312 10.1234 4.64958 38.2106 8.32003 40.0178 15.7309 42.5049 26.2661 21.479 38.4964 43.6318 39.9338 30.3761 33.4178 21.7565 14.4604 15.9405 44.4453 21.2681 24.6109 32.9286 25.784 48.3829 37.5038 15.4823 4.71615 25.2817 7.92029 10.9253 37.6701 39.8185 40.9716 1.85434 21.4861 38.4574 48.3235 5.26085 1.79348 1.74249 13.1786 18.063 31.1479 19.5781 31.951 14.4106 20.6043 5.00904 47.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.94384 39.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.1089 33.359 46.6023 32.2229 32.8939 38.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节点覆盖率变化
代码下载https://www.cnblogs.com/matlabxiao/p/14883637.html
三、参考文献
[1] 史朝亚. 基于PSO算法无线传感器网络覆盖优化的研究[D].南京理工大学,2013.
[2] 张谦. 基于群智能算法的无线传感器网络覆盖优化研究[D].湖南大学,2015.
这篇关于基于粒子群算法的无线传感器网络覆盖优化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南