600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 基于PSO算法的无线传感器网络的覆盖优化

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

时间:2024-06-17 16:32:41

相关推荐

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

文章目录

一、理论基础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;% 改变覆盖状态endscale = sum(M(1:end))/(row*col); % 计算覆盖比例z = scale;

3、主函数

%% 清空环境变量clcclear%% 网络参数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)]);% 初始覆盖图figurefor 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');endp1 = 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);figurefor 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');endp1 = plot(gbest(:, 1), gbest(:, 2), 'r*');legend([p1, p2], {'WSN节点', '覆盖区域'});title 'PSO-WSN最终结果';

3、结果分析

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

初始位置:0.90452219.02588.6902625.989342.246845.66.025612.038848.063244.417413.91916.016931.658629.40943.8207832.641932.456419.017649.022834.013226.031210.12344.6495838.21068.340.017815.730942.504926.2661 21.47938.496443.631839.933830.376133.417821.756514.460415.940544.445321.268124.610932.928625.78448.382937.503815.48234.7161525.28177.9202910.925337.670139.818540.97161.8543421.486138.457448.32355.260851.793481.7424913.1786 18.06331.147919.578131.95114.410620.60435.0090447.2907 41.4初始覆盖率:0.68435最优位置:6.6966717.469218.6787 25.67737.6056 45.96716.400316.366544.408844.952315.63987.9438439.02823.522910.319835.340924.924313.924345.421434.608833.18398.657654.9541744.551214.057542.792217.1556 45.23617.578631.108933.35946.602332.222932.893938.18528.733513.389719.983647.230427.767427.6429 33.34825.192341.216943.288415.50914.3772829.25298.249459.8339138.2074 38.67541.7384 3.543821.592433.341146.254210.16934.298533.3176810.9144 21.16527.274823.981633.151417.838624.6509 4.192547.994844.5559最优覆盖率:0.82045

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

图1 PSO-WSN初始覆盖效果图2 PSO-WSN最终覆盖效果

覆盖率变化如图3所示。

图3 WSN节点覆盖率变化

三、参考文献

[1] 史朝亚. 基于PSO算法无线传感器网络覆盖优化的研究[D]. 南京: 南京理工大学, .

[2] 张谦. 基于群智能算法的无线传感器网络覆盖优化研究[D]. 长沙: 湖南大学, .

[3] 心升明月. 基于粒子群优化算法的函数寻优算法. CSDN博客.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。