一、WSN模型

1.1 动机

近年来,随着对等网络、云计算和网格计算等分布式环境的发展,无线传感器网络(WSN)得到了广泛的应用。无线传感器网络(WSN)是一种新兴的计算和网络模式,它可以被定义为一个由称为传感器节点的微小、小型、昂贵和高度智能化的设备组成的网络。传感器节点位于被观测空间内的不同位置,通过无线通信信道交换从监测领域收集的数据。收集的数据被发送到sink节点,sink节点要么本地处理数据,要么将数据发送到处理能力更强的其他网络。

无线传感器网络最基本的挑战之一是节点定位。节点定位问题的实例很多,属于NP难优化问题。传统的确定性技术和算法不能在合理的计算时间内解决NP-hard问题。在这种情况下,最好采用非确定性(随机)算法,如元启发式算法。

群体智能元启发式算法模拟自然界中的生物群体,如鸟和鱼的群体、蜜蜂和蚂蚁的群体、蝙蝠和杜鹃鸟的群体等。这些算法是基于种群的、随机的和迭代的搜索方法,基于四个自组织原则:正反馈、负反馈,多重相互作用和波动。

1.2 无线传感器网络中的定位问题

定位问题是无线传感器网络中研究最多的问题之一,因为如果传感器节点的位置未知,则覆盖、功率和路由都将无法确定最佳。定位是无线传感器网络的关键。一些传感器节点的位置可以由全球定位系统(GPS)来定义,这些节点被称为锚节点或信标节点,而其他传感器节点则随机分布在搜索空间中。这些节点称为未知节点或传感器节点。由于每个节点的电池寿命、成本、气候条件等因素,只有少数节点的位置是由GPS坐标确定的,而其他节点的位置则需要采用定位算法进行估计。

针对无线传感器网络中传感器节点的定位问题,提出了锚节点和未知节点两种定位算法。第一阶段称为测距阶段,算法确定未知节点和相邻锚节点之间的距离。针对无线传感器网络中传感器节点的定位问题,提出了锚节点和未知节点两种定位算法。第一阶段称为测距阶段,算法确定未知节点和相邻锚节点之间的距离。第二阶段通过在第一阶段使用各种方法收集测距信息来估计节点的位置,如到达角(AOA)、到达时间(TOA)、到达时差(TDOA)、往返时间(RTT)、无线信号强度(RSS)等。

1.3 问题陈述

在由M个传感器节点组成的无线传感器网络中,定位问题的目标是利用M-N个锚节点的位置信息,在传输范围为R的情况下,估计N个未知节点的位置,如果一个传感器节点在三个或更多锚节点的传输范围内,则认为它是定位的。这是一个总坐标数为2n的二维定位问题。

本文采用RSS方法估计节点间距离。无论采用何种测距方法,都可能出现不精确的测量。N个未知节点坐标的位置估计可以表示为一个优化问题,涉及表示节点定位误差的目标函数的最小化[19]。该问题的目标函数由N个未知节点和M N个相邻锚节点之间的误差平方和表示[19]。

随着RSS的出现,三边测量将被用来解决WSN中的定位问题。该方法的原理是基于三个锚节点的已知位置。未知节点的位置可以在三个锚节点的传输范围内估计。

每个节点估计到第i个锚点的距离为d̂=di+ni,其中ni是高斯噪声,di是使用以下等式计算的实际距离:

应最小化的目标函数表示为计算节点坐标的实际和估计距离与实际节点坐标之间的均方误差(MSE):

其中di是实际距离,d̂i是估计距离(从噪声范围测量获得的值di),M≥3(传感器节点的位置在传输范围R内至少需要三个锚)。

由于节点定位中的距离测量是有噪声的,为了估计节点之间的足够距离,采用了群体智能元启发式等优化方法。

二、遗传算法

• 遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法 则,它最初由美国Michigan大学的J. Holland教授于1967年提出。 • 遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一 定数目的个体(individual)组成。因此,第一步需要实现从表现型到基因型的映射即编码工作。初代种群产生之后,按照 适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度 (fitness)大小选择个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉和变异,产生出代表新 的解集的种群。这个过程将导致种群像自然进化一样,后生代种群比前代更加适应于环境,末代种群中的最优个体经过解 码(decoding),可以作为问题近似最优解。

• 遗传算法有三个基本操作:选择(Selection)、交叉(Crossover)和变异(Mutation)。 • (1)选择。选择的目的是为了从当前群体中选出优良的个体,使它们有机会作为父代为下一代繁衍子孙。根据各个个体的 适应度值,按照一定的规则或方法从上一代群体中选择出一些优良的个体遗传到下一代种群中。选择的依据是适应性强的 个体为下一代贡献一个或多个后代的概率大。 • (2)交叉。通过交叉操作可以得到新一代个体,新个体组合了父辈个体的特性。将群体中的各个个体随机搭配成对,对每 一个个体,以交叉概率交换它们之间的部分染色体。 • (3)变异。对种群中的每一个个体,以变异概率改变某一个或多个基因座上的基因值为其他的等位基因。同生物界中一样, 变异发生的概率很低,变异为新个体的产生提供了机会。

遗传算法的基本步骤:

1)编码:GA在进行搜索之前先将解空间的解数据表示成遗传空间的基因型串结构数据, 这些串结构数据的丌同组合便构成了丌同的点。 2)初始群体的生成:随机产生N个初始串结构数据,每个串结构数据称为一个个体,N个 个体构成了一个群体。GA以这N个串结构数据作为初始点开始进化。 3)适应度评估:适应度表明个体或解的优劣性。丌同的问题,适应性函数的定义方式也丌 同。

4)选择:选择的目的是为了从当前群体中选出优良的个体,使它们有机会作为父代为下一 代繁殖子孙。遗传算法通过选择过程体现这一思想,进行选择的原则是适应性强的个体为 下一代贡献一个或多个后代的概率大。选择体现了达尔文的适者生存原则。 5)交叉:交叉操作是遗传算法中最主要的遗传操作。通过交叉操作可以得到新一代个体, 新个体组合了其父辈个体的特性。交叉体现了信息交换的思想。 6)变异:变异首先在群体中随机选择一个个体,对于选中的个体以一定的概率随机地改变 串结构数据中某个串的值。同生物界一样, GA中变异发生的概率很低,通常取值很小。

遗传算法工具箱:

• MATLAB内嵌遗传算法工具箱: gadst • Sheffield大学遗传算法工具箱: gatbx • 北卡罗来纳大学遗传算法工具箱: gaot

initializega函数:

ga函数:

遗传算法优化BP神经网络初始权值与阈值:

三、代码

%%遗传算法主函数
clc;
clear all;
close all;
warning off%%遗传算法参数
maxgen=200; %进化代数,也即是迭代次数
sizepop=20; %种群规模,个体数,也即是染色体数
pcross=[0.6];   %交叉概率,[0,1]之间为什么写成数组的形式?
pmutation=[0.01];%变异概率,【0,1】之间
lenchrom=[1 1 1 1 1];%每个变量的字符串长度,如果是浮点型变量,则长度都为1
bound=[0,0.9*pi;0,0.9*pi;0,0.9*pi;0,0.9*pi;0,0.9*pi];%%个初始化
individuals=struct('fitness',zeros(1,sizepop),'chrom',[]);%种群结构体
avgfitness=0;%种群平均适应度
bestfitness=0;%种群最佳适应度
bestchrom=[];%适应度最好的染色体
bf=[];%记录种群最佳适应度
af=[];%记录种群平均适应度%%初始化种群
for i=1:sizepopindividuals.chrom(i,:)=Code(lenchrom,bound);%随机产生一个种群x=individuals.chrom(i,:);individuals.fitness(i)=fun(x);%计算染色体适应度
end        %以上完成了初始化种群,并计算了初始化种群每个个体的适应度%%找最好的染色体
[bestfitness bestindex]=min(individuals.fitness);%得到初始化种群的最小的适应度函数值和位置。(函数值最小,那么倒数也就是适应度就最大,在轮盘赌操作的时候再去倒数)
bestchrom=individuals.chrom(bestindex,:);%适应度最好,也就是函数值最小的染色体编号
avgfitness=sum(individuals.fitness)/sizepop;%染色体平均适应度
trace=[];%记录每一代进化中最好的适应度和平均适应度,可以用来绘图反映是否过早收敛%%进化开始
for i=1:maxgen%选择individuals=Select(individuals,sizepop);%返回被选中的染色体sizepop条和对应被选中染色体的适应度avgfitness=sum(individuals.fitness)/sizepop;%经过选择之后的种群的平均适应度%交叉individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);%返回交叉后的染色体群%变异individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i,maxgen],bound);%%非线性寻优,可以被注释掉,注释掉之后就是一般的遗传算法%每进化10代,以所得值为初始值进行非线性寻优,这是将遗传算法和非线性规划的函数寻优算法结合起来,nonlinearif(mod(i,10)==0)individuals.chrom=nonlinear(individuals.chrom,sizepop);end%%计算适应度for j=1:sizepopx=individuals.chrom(j,:);       individuals.fitness(j)=fun(x);end%找到最优染色体及他们在种群中的位置[newbestfitness,newbestindex]=min(individuals.fitness);%进行更新,代替上一次进化中最好的染色体if bestfitness>newbestfitness       %如果新一代染色体的函数值小,也就是适应度高bestfitness=newbestfitness;     %那么把新的适应度赋值给bestfitnessbestchrom=individuals.chrom(newbestindex,:);%把新的当前最好的染色体给bestchromendavgfitness=sum(individuals.fitness)/sizepop;bf=[bf bestfitness];af=[af avgfitness];%trace=[trace,avgfitness bestfitness];%记录每一代进化中最好的适应度和平均适应度
end %进化结束%绘制图像分析
[r,c]=size(bf);
plot([1:c],bf,'r-',[1:c],af,'b--','LineWidth',2);
title(['函数值曲线' '终止代数=' num2str(maxgen)]);
xlabel('进化代数');
ylabel('函数值');
ylim([1.5 8]);
legend('各代最佳值','各代平均值');
disp('函数值            变量');
grid on
%窗口显示
disp([bestfitness x]);% %绘制图像分析
% [r c]=size(trace);%计算trace的行列
% figure(1)
% plot([1:r]',trace(:,1),'r-',[1:r]',trace(:,2),'b--');
% title(['函数值曲线' '终止代数=' num2str(maxgen)]);
% xlabel('进化代数');
% ylabel('函数值');
% legend('各代平均值','各代最佳值');
% disp('函数值            变量');
% grid on
% %窗口显示
% disp([bestfitness x]);

四、参考文献

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

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

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

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

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

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

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

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

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

  5. 【ELM预测】基于遗传算法改进极限学习机ELM实现数据预测matlab源码

    一.极限学习机的概念 极限学习机(Extreme Learning Machine) ELM,是由黄广斌提出来的求解单隐层神经网络的算法. ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网 ...

  6. 【定位问题】RSSI和模拟退火优化粒子群算法求解无线传感器网络定位问题【含Matlab源码 1766期】

    ⛄一.简介 1 引言 随着物联网技术的发展,传感器之间通过通信方式连接在一起,构成了极为庞大的无线传感器网络,这使得传感器在各行各业的应用相当广泛[.然而,因为大规模抛撒的传感器节点无法全部配备价格昂 ...

  7. 基于遗传算法的护士排班问题(含Matlab源码)

    目录 前言 一.排班问题 二.遗传算法 1.背景介绍 2.编码 总结 前言 对于遗传算法的学习,相信很多和我一样的初学者都是从最简单的二元函数求极值开始的.一步步的理解去理解种群数量.基因长度.迭代次 ...

  8. matlab resampc函数,基于contourlet变换的红外与可见光图像融合matlab源码

    基于contourlet变换的红外与可见光图像融合matlab源码 matlab 2020-12-1 下载地址 https://www.codedown123.com/53619.html 基于con ...

  9. 信号检测:基于双稳随机共振的微弱信号检测含Matlab源码

    信号检测:基于双稳随机共振的微弱信号检测含Matlab源码 双稳随机共振是一种有效的微弱信号检测方法,广泛应用于各个领域.本文将介绍如何使用Matlab实现基于双稳随机共振的微弱信号检测,并提供相应的 ...

最新文章

  1. C++运行时候库操作概述和整个程序运行流程
  2. android 文本左对齐,在Android中与文本左可绘制对齐
  3. 算法导论学习笔记 第6章 堆排序
  4. 12行代码AC——试题 算法训练 猴子吃包子——解题报告
  5. 数据分析师经常遇到的13个问题
  6. Ubuntu 配置swftools(Ubuntu14.04)
  7. 北京智控美信(长春)数据中心应聘总结
  8. 首张牌照花落“东方购物” 或抬高电视购物门槛
  9. 详解java定时任务
  10. 为什么普通红包自己不能领_为什么行驶证和驾驶证不能放在车上?别给自己找麻烦...
  11. maven 本地仓库的配置
  12. 如何判断一个数是否为素数(质数)?
  13. DuckDuckGo将与整合Apple Maps有更丰富的地图信息及隐私
  14. 蓝桥杯:座次问题(枚举法 回溯) java
  15. windows 7 开机错误 未能连接到一个Windows服务
  16. 视频超分:TGA(Video Super-resolution with Temporal Group Attention)
  17. Vue仿网易云音乐播放器(二)
  18. CMS介绍和过程分析
  19. ICLR 2022 | 基于对抗自注意力机制的预训练语言模型
  20. 量子计算机双刃剑,科技是把双刃剑,“脑机接口”的利与弊,让人细思极恐

热门文章

  1. nexus最全使用教程
  2. 用蒲公英实现app发布版本自动更新和Crash收集
  3. 手机安装Charles的https证书
  4. Mac、iPad 之间拖拽即可移动文件、iOS 15 来了,这届 WWDC21 精彩内容尽在这里!...
  5. 期末周总结-矩阵理论-非负矩阵分解
  6. 在project 2007中实现企业自定义域与视图
  7. python对文件的写操作方法seek_python文件操作及seek偏移详解
  8. js 设置时间戳,进行倒计时。比如距离活动结束时间等等
  9. MySQL中如何用全库备份恢复单张表
  10. 论文《Intelligent Computing: The Latest Advances, Challenges and Future》 思维导图-仅供参考