来源:IEEE Sensors Journal

Year: 2016, Volume: 16, Issue: 20
Pages: 7545 - 7557, DOI: 10.1109/JSEN.2016.2601327    

目的: 减少能量损耗,延长网络生命周期
了解基本思路

    圆:传感器节点  框:Mobile Sink   (大致原则是:距离越小,能耗越小。后面给出能耗的计算公式)
A节点肯定直接与Ms相连;
B节点到MS的距离大于BA的距离,所有选择A节点作为自己转发数据的下一个节点;B,C,D相同;
E节点到MS的距离是所有EC,EB,EA距离中最小的,所以选择直接与MS相连,达到节省能耗的目的。
最终结果如下图:


具体实现过程
模型建立
    基本假设:
          -----结点有三类:簇头(CH)、中继(hop node)、普通结点;
          -----所有节点的位置信息可知(GPS等技术);
          -----任意两个结点的距离是可以计算的;
          -----每一轮的数据收集过程,移动结点(Mobile sink)都可以知道每一个节点的位置信息以及剩余能量;
    基本公式
    能耗的计算:
          -----1)转发消息的能耗计算公式;

-----2)接收消息的能耗计算公式;

------d表示两个结点间距,L表示L bits大小的数据,EDA表示数据融合与压缩时的能量消耗,εamp 放大器的能耗

放大器能耗计算:

-----d0表示节点传输距离的阈值,εfs 自由空间传播模型;εamp 多路径衰减信道模型


 
核心算法: 动态排序成簇算法
 
1.Input:N,M                                                                                                       //传感器节点数量,M表示给定区域的边长
2.Output:树-簇路由结构                                                                                                                          
3.初始化:total_energy=0,min_distance=√2 M,temporary result=null and hop_node_state=false                    
                                                                                                                          //剩余能量总和,初始值为0,;记录任意两个节点的最小距离变量
4.For (i=1;i<=N;i++)                                                                                                                          
5.    Calculate d(i,MS)                                                                                            //计算节点i与移动节点间的距离
6.    total_energy += energy[i]
7.End For                                                                                                             //4-7 计算出所有节点的剩余能量
8.avg_energy = total_energy/N                                                                              // 所有传感器节点的平均剩余能量
9.sorted_order[].node                                                                                           //根据d(i,MS)的升序排序
10.For (α=1,α<=N;α++)
11.     Calculate d(sortrd_order[α].node,MS)
12.          For(ß=1,ß<=α-1;ß++)
13.               Calculate d(sorted_order[α].node,sorted_order[ß].node)                        //计算节点α,ß之间的距离,记为dα,β .节点与MS之间的距离分别为dα,MS dβ,MS
14.               Calculate  dβ,MS
15.               If((dα,MS<dα,β)and hop_node_state == false)
16.                  hop_node_state == false
17.               Else
18.                   If(min_distance>dα,β)
19.                        hop_node = sorted_order[β].node
20.                        hop_node_state = true
21.                        min_distance = dα,β
22.                   End If
23.               End If
24.           End For
25.     If(hop_node_state == true)
26.         sorted_order[α].node 连接到hop_node 并且暂时存储该状态
27.     Else
28.         sorted_order[α].node 自己链接到MS 并且暂时存储该状态
29.     End If
30.     min_distance = √2 M
31.     hop_node_state = false
32. End For
33.存储的结果就是最终的树-簇路由结构 

 
                                                                                                                     

最新文章

  1. 常见.NET功能代码汇总 (2)
  2. cpu缓存与多线程
  3. realloc 函数的使用
  4. Eclipse perl的IDE环境插件-EPIC
  5. 【编程技巧】java不使用第三个变量处理两个变量的交换
  6. SpringBatch前言
  7. 使用Elasticsearch-dump迁移ES数据
  8. 【vue学习】vue 2.0版本以上创建项目的的步骤
  9. ubuntu typora使用学习
  10. PHPMYWIND4.6.6前台Refer头注入+后台另类getshell分析
  11. Android 常见异常及解决办法
  12. 【51nod1847】 奇怪的数学题
  13. 【python游戏编程04--加载位图与常用的数学函数】
  14. 03_java基础(八)之static关键字与代码块
  15. APR Recipe
  16. IDEA使用笔记(二)——常用快捷键
  17. Unity----Scene加载问题
  18. spring---aop(10)---Spring AOP中AspectJ
  19. STM32知识点纪要
  20. WebDriver高级应用——操作Web页面的滚动条

热门文章

  1. Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题
  2. apt-get failed:The following signatures were invalid: BADSIG
  3. 给 K8s API “做减法”:阿里巴巴云原生应用管理的挑战和实践
  4. 错误InnoDB:Attemptedtoopenapreviouslyopenedtablespace.
  5. 英语阅读——A meaningful life
  6. Java开发桌面程序学习(一)——JavaFx+Jfoenix初始以及搭建
  7. mybatis关联关系映射
  8. js addEventListener事件多次绑定问题
  9. 安装新版Magisk卡在启动页面等问题以及解决办法
  10. Git:SSH、SSH与HTTP区别、git常用命令