来源: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.存储的结果就是最终的树-簇路由结构 

 
                                                                                                                     

第八周论文学习03 An Efficient Tree-based Power Saving Scheme for Wireless Sensor Networks with Mobile Sink的更多相关文章

  1. 第八周java学习总结

    学号 20175206 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章:泛型与集合框架 主要内容 泛型 链表 堆栈 散列映射 树集 树映射 重点和难点 重点:泛型和集合的使 ...

  2. 20165223《Java程序设计》第八周Java学习总结

    教材学习内容总结 第12章-JAVA多线程机制 要点 Java中的线程 Thread类与线程的创建 线程的常用方法 线程同步 协调同步的线程 线程联合 GUI线程 计时器线程 教材学习中的问题和解决过 ...

  3. 20145307第八周JAVA学习报告

    20145307<Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logge ...

  4. 第八周LINUX学习笔记

    vsftpd丶NFS丶SAMBA nfs基于rpcsamba基于cifs(smb)  DRBD: ftp:File Transfer protocol 文件传输协议 两个连接:       tcp:命 ...

  5. 2019年8月19日~8月25日 第八周JAVA学习总结

    临近开学,本周的任务完成情况不够好,平常乱七八糟的事情比较多,所以放在学习上的心思比较少.平均每天放在JAVA学习的时间约1个小时,放在编程的时间约半小时,解决问题的时间约1小时. 下一个星期就要开学 ...

  6. 20175317 《Java程序设计》第八周学习总结

    20175317 <Java程序设计>第八周学习总结 教材学习内容总结 第八周我学习了教材第十五章的内容,认识了什么是泛型与集合框架,具体内容如下: 泛型 1. 如何声明泛型类 2. 如何 ...

  7. 20155227 2016-2017-2 《Java程序设计》第八周学习总结

    20155227 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 NIO与NIO2 NIO即New IO.java从JDK1.4开始提供了NIO,在JAVA ...

  8. 201671010140. 2016-2017-2 《Java程序设计》java学习第八周

    第八周Java学习      本周,老师带领我们完善了一下继承,借口,拷贝,lambda表达式,内部类方面欠缺,不完善的地方,帮助我们查漏补缺.       以拷贝的学习为例,我本来对拷贝的理解非常浅 ...

  9. #2019-2020-4 《Java 程序设计》第八周总结

    2019-2020-4 <Java 程序设计>第八周知识总结 第15章:泛型与集合框架 一.泛型 1.泛型(Generics)是可以建立具有类型安全的集合框架,如链表.散列映射等数据结构: ...

随机推荐

  1. python-15-常用文件操作与注册登录练习

    前言 1.常用的文件操作无非就是读或写,但python中没有提供文件修改的功能,是无法实现,但我们可以新增-删除源文件-更改新增文件为源文件名称. 2.使用文件的存储与读取方式来简单完成注册.登录功能 ...

  2. 05-Django模型(2)

    1.特殊查询 F和Q查询: 之前的查询都是模型对象的属性与常量值比较,两个属性怎么比较呢?使用F查询. F查询语法: from django.db.models import F F('属性名称') ...

  3. jQuery 源码分析(十七) 事件系统模块 实例方法和便捷方法 详解

    实例方法和便捷方法是指jQuery可以直接通过链接操作的方法,是通过调用$.event上的方法(上一节介绍的底层方法)来实现的,常用的如下: on(types,selector,data,fn,one ...

  4. 在wcharczuk/go-chart图表上打印文字

    先看效果: 源码 package main import (    "bytes"    "fmt"    "io/ioutil"    & ...

  5. 使用Redis实现最近N条数据的决策

    前言 很多时候,我们会根据用户最近一段时间的行为,做出一些相应的策略,从而改变系统的运动轨迹. 举个简单的例子来说明一下: 假设A公司现在有两个合作伙伴(B和C),B和C都是提供天气数据的,现在A公司 ...

  6. Python读写Excel文件的实例

    最近由于经常要用到Excel,需要根据Excel表格中的内容对一些apk进行处理,手动处理很麻烦,于是决定写脚本来处理.首先贴出网上找来的读写Excel的脚本. 1.读取Excel(需要安装xlrd) ...

  7. go-家庭收支记账软件例子

    家庭收支记账软件项目 项目需求说明 1) 模拟实现基于文本界面的<家庭记账软件> 2) 该软件能够记录家庭的收入.支出,并能够打印收支明细表 项目的界面 看代码效果 项目代码实现 实现基本 ...

  8. list方法补充

    在上一个随便我们写了list 常用的方法,该随便为一些需要补充的内容 注:本次例子为: student = ["张天赐","小明","小红" ...

  9. MySQL学习——约束

    MySQL学习——约束 摘要:本文主要学习了数据库的约束. primary key(主键) 定义 主键约束是一个列或者多个列,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可以强制 ...

  10. AFNetworking遇到错误 Request failed: unacceptable content-type: text/html

    iOS 使用AFNetworking遇到错误 Request failed: unacceptable content-type: text/html 原因: 不可接受的内容类型 “text/html ...