ATR-CKN算法的研究与实现
前言
最近在学校做了无线传感器网络(WSN)睡眠调度算法方面的一些研究,本篇文章主要对其中的CKN、EC-CKN算法的学习做个总结,并给出基于这两种算法而改进后的ATR-CKN算法的核心实现以及在Nettopo上的运行结果。
CKN与EC-CKN算法
K-邻居节点连通算法(CKN)是一个有效的分布式睡眠/工作时序安排算法。该算法可以在有效的减少网络中处于工作状态的节点个数的同时保证整个网络处于连通状态和需求的路径延迟。执行CKN算法时对WSN中的每个节点u主要进行以下几步:
针对CKN算法在能量消耗方面存在的问题,基于能量消耗的睡眠/工作时序安排算法(EC-CKN)可以延长网络的寿命。EC-CKN算法利用节点当前的剩余能量信息作为参数来决定节点是否进入睡眠状态。EC-CKN算法不仅可以保证整个网络处于K邻居节点连通状态,同时还可以保证每个节点处于工作状态的K个邻居节点当前的剩余能量在所有邻居节点当前剩余能量排序中为最大的K个。
存在的问题
EC-CKN对CKN有了一定的改进,但在某些场景下仍然会存在一些问题,例如下文将介绍的死亡加速与网络隔离。
死亡加速
在下图的场景中,节点B有很多个邻居节点,按理是可以进入睡眠状态的,但是由于它的其中一个邻居节点A只有它一个邻居节点,因此节点A和B永远得不到睡眠机会,这导致的后果就是:节点B的能量很快就被消耗完了,而节点B周围原本刚好满足睡眠条件的节点由于少了一个醒着的邻居节点,睡眠的几率也因此下降,从而加速了整个网络的死亡。
网络隔离
类似于死亡加速,在下面的场景中节点A和B永远也得不到睡眠机会,因此会更快的消耗完能量,导致相连的两个网络被隔离开了。
ATR-CKN算法
ATR-CKN算法优于原始的基于CKN的睡眠调度算法,它的优势在于可以在物理上调整传感器节点的传输半径,从而执行CKN使部分节点进入睡眠状态。ATR-CKN算法在继承了EC-CKN算法的所有主要属性的同时,通过提高节点的睡眠率为延长网络生命周期做出了重要贡献。
相较于EC-CKN,ATR-CKN只用在之前加入一个判断逻辑即可:
核心实现
下面给出在Nettopo上对于ATR-CKN算法的实现,其关键在于执行EC-CKN之前加入下面一段判断逻辑:
private void ATRCKN_Function() {//...boolean flag = false;Integer[] neighbors1 = neighbors.get(currentID);if(neighbors1.length < k) {while(!isUsingMaxTR(currentID)) {increaseTR(currentID);neighbors1 = neighbors.get(currentID);if(neighbors1.length >= k) {for(int j = 0; j < neighbors1.length; j++) {int tr = ((SensorNode)wsn.getNodeByID(currentID)).getMaxTR();((SensorNode)wsn.getNodeByID(neighbors1[j])).setMaxTR(tr);}flag = true;break;}}if(!flag) setDefaultTR(currentID);}//...}
运行结果
下面将在Nettopo上简单的演示一遍ATR-CKN算法对于死亡加速问题的解决。
k = 2,round = 1的时候:
k = 2,round = 10的时候:
k = 2,round = 30的时候
k = 2,round = 43的时候:
由于增大了传感器节点的物理传输半径,可以看到两个关键节点都可以进入睡眠状态,以此延长了网络的整体寿命。虽然增大传输半径的同时也增加了能量消耗,但在进行了大量实验并对统计数据进行详细分析后,我们可以发现ATR-CKN的生命周期相比EC-CKN平均增加了19%,最大增加了41%,因此可以得出其更优于EC-CKN的结论。
ATR-CKN算法的研究与实现相关推荐
- 阅读豆丁网----基于模型的混合多目标算法的研究
链接: 基于模型的混合多目标算法的研究 - 豆丁网 http://www.docin.com/p-1088777086.html (1) 研究背景意义 RM-MEDA(Regularity Mode ...
- 全基因组关联分析中上位性检测算法的研究
全基因组关联分析中上位性检测算法的研究 前言 这个项目主要是分享一些全基因组关联分析中上位性检测算法的研究经验,算是,怎么入门,写这么个东西,一是做总结,二是咱实验室估计以后还会有做这个方向的,备着吧 ...
- 更高效的PacBio长read纠错算法的研究
更高效的PacBio长read纠错算法的研究 更高效的PacBio长read纠错算法的研究 中文摘要 第三代PacBio测序技术的长read已越来越广泛的应用于各类测序项目中,而降低其约15%的错误率 ...
- 基于长短读长和参考基因组的组装错误检测算法的研究
基于长短读长和参考基因组的组装错误检测算法的研究 论文目录 致谢 第1-6页 摘要 第6-7页 ABSTRACT 第7-8页 序言 第9-13页 1 引言 第13-26页 1.1 基因测序项目介绍 第 ...
- K单体型重建算法的研究
K单体型重建算法的研究 王兆灿 [摘要]:随着新一代基因测序技术的飞速发展,以及单体型数据在人类遗传学等领域研究和应用的不断深入,对单体型数据的研究开始转向其他生物物种.由于测序技术的限制,通过生 ...
- R-Tree空间索引算法的研究历程和最新进展分析
摘要:本文介绍了空间索引的概念.R-Tree数据结构和R-Tree空间索引的算法描述,并从R-Tree索引技术的优缺点对R-Tree的改进结构--变种R-Tree进行了论述.最后,对R-Tree的最新 ...
- 韦冬雪计算机应用,捕获效应下RFID防碰撞算法的研究与应用
摘要: 作为物联网核心技术之一的射频识别(Radio Frequency Identification,RFID)技术,其应用市场正随着物联网的普及而拓宽.阅读器和标签是RFID系统的重要组成部分,阅 ...
- 计算机控制pid控制实验,计算机控制实验三数字PID调节器算法的研究
计算机控制技术实验报告 学院:********** 班级:********** 姓名:****** 学号:**********实验三 数字PID调节器算法的研究 实验项目名称:数字PID调节器算法的研 ...
- matlab重建算法stomp,压缩感知图像重建算法的研究现状及其展望.pdf
压缩感知图像重建算法的研究现状及其展望.pdf D陆33EE iE γ,理想想 [本文献信息}李然,干宗良,崔子冠,等.压缩感知图像重建算法的研究现状及其展望[J]. 电视技术,20日,37 (19) ...
- Dinic算法(研究总结,网络流)
Dinic算法(研究总结,网络流) http://www.cnblogs.com/SYCstudio/p/7260613.html posted on 2018-08-23 17:45 Pyloj 阅 ...
最新文章
- 专访图灵奖得主John Hopcroft:中国必须提升本科教育水平,才能在AI领域赶上美国
- HDU 4411 Arrest(费用流)
- [Android]只显示月和日的DatePickerDialog
- pr扫光转场插件_2020年最新pr转场特效:300套模板+200集视频教程+插件,送你参考...
- c#实现 改进弧长法判断点在多边形里面
- SAP 取月度期初库存和月度期末库存(历史库存)
- OpenGL - Normal Map
- Ubuntu增加一个用户并给普通用户赋予root权限的方法
- imu与gps之间的时间戳_TCP 窗口缩放、时间戳和 SACK(2) | Linux 中国
- PyTorch中查看GPU使用情况以及一些重要函数
- element的表格中scope中的东西
- 自我介绍及阅读与思考及未来的期望
- 教程篇(7.0) 01. 介绍FortiClient和FortiClient EMS ❀ FortiClient EMS ❀ Fortinet 网络安全专家 NSE 5
- 网站设计之网站背景设计思路
- 计算机浏览器无法上网怎么办,电脑有网络,但是浏览器不能上网怎么办
- Redis存储数据类型,及存取值方法
- python爬虫-国家企业_自动查企业工商登记信息(企业信用信息公示系统、极验Geetest与Python爬虫)...
- 播放器可以完成:开机自动打开指定网页,自动运行浏览器打开指定的网页。
- vue后端返回数据流 前端导出下载xls文件
- maven多模块 统一版本管理 的正确姿势 (CI Friendly Versions) - ${revision}
热门文章
- linux ubi 分区,Linux ubi子系统原理分析
- Ripple相关资源汇总
- 安装Charles证书失败(夜神模拟器总是弹出此网站安全证书有问题),对安卓手机网络进行抓包
- 2021年中国企业信息归档(EIA)市场趋势报告、技术动态创新及2027年市场预测
- 关于http响应200 OK的问题
- 雪人(snowman)
- python3爬取网易云歌曲,利用python3爬取网易云周杰伦所有专辑,歌曲,评论,并完成可视-站长资讯中心...
- 数据通信基础之双绞线
- C#应用程序界面开发基础——窗体控制(4)——选择类控件(有部分地方没明白)
- Android Studio中Intent的一些相关知识