leach算法的实现过程_LEACH分簇算法实现和能量控制算法实现(示例代码)

一、前言

1、在给定WSN的节点数目(100)前提下,节点随机分布,按照LEACH算法,实现每一轮对WSN的分簇。记录前K轮(k=10)时,网络的分簇情况,即每个节点的角色(簇头或簇成员)。标记节点之间的关系,标记其所属的簇头。

2、在1的基础上,增加能量有效性控制:给定的所有节点具有相同的能量,考察第一个节点能量耗尽出现在第几轮。节点的能量消耗仅考虑关键的几次通信过程,其他能量消耗不计。通信过程能量消耗规则如下:

Setup:簇成元:每次收到候选簇头信息-1,每个候选簇头仅被收集一次;通知簇头成为其成员,发送信息-2。候选簇头:被簇成元接收信息,即发送信息,能量-2;被通知成为簇头,接收信息能量-1。

Steady:每个簇成员每轮向簇头发送10次数据,每次成员能量-2,簇头能量-1。

二、目的

(1)在固定节点个数的前提下,仿真LEACH算法的分簇过程。

(2)在上述节点个数和分簇算法的前提下,计算节点的能量消耗,判断能量消耗到0的节点出现在第几轮。

三、方法描述

(1)LEACH分簇

簇头选举初始阶段,每个节点根据所建议网络簇头的百分比(事先确定)和节点已经成为簇头的次数来确定自己是否当选为簇头。每个节点产生一个0-1的随机数字,如果该数字小于阈值,节点成为当前轮的簇头。阈值

其中,P为预期的簇头百分比,r为当前轮数,G是最近1/p轮里没有成为簇头的节点的集合。

首先确定传感器网络中的节点个数为100个,并对所有节点初始化其三个属性,分别有type(节点类型),selected(是否当选过簇头)和temp_rand(随机数)。设定簇头产生概率p=0.08。

算法步骤如下:

Step1:随机生成100个节点位置,并赋值随机数temp_rand,设置type和selected为’N’。

Step2:将所有selected为’N’的节点随机值与做比较,若temp_rand小于等于则转向Step3,否则转向Step4。

Step3:表明节点当选为簇头节点,将type赋值’C’, selected赋值’O’。

Step4:表明节点为普通节点,将type扔赋值’N’, selected不改变赋值。

Step5:遍历所有节点,若节点type为’C’,将节点在图上标记’*’,并标上节点数目。否则将节点在图上标记为’o’,同时标记上节点数目。

Step6:如果节点为普通节点,则计算其与所有簇头的欧式距离,形成距离矩阵。

Step7:利用min函数,找到与普通节点相距最近的簇头

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值