发明名称 基于非均匀分簇的无线传感器网络能耗均衡路由方法
摘要 本发明公开了一种基于非均匀分簇的无线传感器网络能耗均衡路由方法,无线传感器网络包括若干各自独立的簇和汇聚节点;所述簇包括一个簇头节点和若干个普通节点,本发明簇头分簇半径Ri随着簇头距离汇聚节点的距离d和节点成为簇头的概率CHprob呈递增关系。对于孤立节点加入其通信半径内距离最近的节点所属簇内,若其通信半径内无节点,则孤立节点单独成簇。在数据传输阶段,采用簇内单跳和簇间多跳数据传输方式,每个簇头节点需要从相邻簇的簇头节点中选择一个簇头节点作为其中继节点,转发数据到汇聚节点。本发明实现了簇间和簇内能耗的均衡,使得网络的生命周期延长。
申请公布号 CN103249108A 申请公布日期 2013.08.14
申请号 CN201310139653.3 申请日期 2013.04.19
申请人 江苏科技大学 发明人 解志斌;于谦;仲伟波;沈斌
分类号 H04W40/10(2009.01)I;H04W40/02(2009.01)I;H04W28/08(2009.01)I;H04W84/18(2009.01)I 主分类号 H04W40/10(2009.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 楼高潮
主权项 1.一种基于非均匀分簇的无线传感器网络能耗均衡路由方法,无线传感器网络包括若干各自独立的簇和汇聚节点;所述簇包括一个簇头节点和若干个普通节点,其特征在于,该方法包含下列步骤:1)初始化阶段步骤S101:设置网络场景,在网络环境内,随机部署N个具有相同初始能量、ID编号从0~N-1的普通节点;汇聚节点部署在网络四周的某一处,各普通节点可直接和汇聚节点通信,汇聚节点能量无限大且可以处理数据;步骤S102:网络初始化,汇聚节点广播一个hello消息给网络中的所有普通节点,每个普通节点在接收到hello消息后根据接收信号强度指示估算出其与汇聚节点的距离d(i,BS);同时每个普通节点广播消息一次,某个普通节点广播范围内的其他普通节点为其邻节点,计算各普通节点到其邻节点的最小平均可达功率AMRP;最小平均可达功率AMRP用该普通节点收到的邻节点的平均信号强度来表示:<maths num="0001"><![CDATA[<math><mrow><mi>AMRP</mi><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>Radio</mi><mi>j</mi></msub><mo>/</mo><mi>n</mi></mrow></math>]]></maths>其中n是该普通节点的邻节点个数,Radio<sub>j</sub>是该普通节点收到邻节点j的信号强度;2)成簇阶段步骤S201:成簇准备,首先设置网络中所有普通节点成为簇头节点的初始比例C<sub>prob</sub>,然后每个普通节点根据公式(1)计算其成为簇头节点的概率CH<sub>prob</sub>,并初始化所有普通节点的备选簇头节点集合为空,且所有普通节点均不是候选簇头节点,其节点状态为普通节点;CH<sub>prob</sub>=max(C<sub>prob</sub>×E<sub>residual</sub>/E<sub>max</sub>,P<sub>min</sub>)            (1)其中E<sub>residual</sub>为该普通节点当前剩余能量,E<sub>max</sub>为该普通节点的初始能量,规定CH<sub>prob</sub>最小值为P<sub>min</sub>,防止簇头节点选举迭代收敛速度太慢;步骤S202:每个普通节点判定自己的备选簇头节点集合是否为空,即该节点是否加入簇内,如果是,则进入步骤S203,否则转步骤S204;步骤S203:每个普通节点判定其成为簇头节点的概率CH<sub>prob</sub>是否大于等于1,如果是,则该普通节点成为最终簇头节点,并进入步骤S205,否则转步骤S206;步骤S204:备选簇头节点集合不为空的普通节点判定自己是否是候选簇头节点,如果是,则进入步骤S207,否则转步骤S208;步骤S205:该普通节点成为最终簇头节点,更新节点状态为最终簇头节点,将自己加入其备选簇头节点集合,然后根据公式(2)计算其簇半径R<sub>i</sub>,并以簇半径R<sub>i</sub>向其簇内普通节点广播自己当选为最终簇头节点的消息,此消息包括该最终簇头节点的ID号、节点状态、最小平均可达功率AMRP和簇半径;消息广播完后,其簇半径内所有普通节点更新其备选簇头节点集合,将该最终簇头节点加入备选簇头节点集合中,并转入步骤S212;<maths num="0002"><![CDATA[<math><mrow><msub><mi>R</mi><mi>i</mi></msub><mo>=</mo><mi>&omega;</mi><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>c</mi><mfrac><mrow><msub><mi>d</mi><mi>max</mi></msub><mo>-</mo><mi>d</mi><mrow><mo>(</mo><mi>i</mi><mo>-</mo><mi>BS</mi><mo>)</mo></mrow></mrow><mrow><msub><mi>d</mi><mi>max</mi></msub><mo>-</mo><msub><mi>d</mi><mi>min</mi></msub></mrow></mfrac><mo>)</mo></mrow><msub><mi>R</mi><mn>0</mn></msub><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&omega;</mi><mo>)</mo></mrow><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>c</mi><mfrac><mrow><msub><mi>CH</mi><mrow><mi>prob</mi><mi>max</mi></mrow></msub><mo>-</mo><msub><mi>CH</mi><mi>prob</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><mrow><msub><mi>CH</mi><mrow><mi>prob</mi><mi>max</mi></mrow></msub><mo>-</mo><msub><mi>CH</mi><mrow><mi>prob</mi><mi>min</mi></mrow></msub></mrow></mfrac><mo>)</mo></mrow><msub><mi>R</mi><mn>0</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中d<sub>max</sub>和d<sub>min</sub>分别为普通节点到汇聚节点的距离的最大值和最小值,d(i,BS)为普通节点i到汇聚节点的距离,CH<sub>probmax</sub>和CH<sub>probmin</sub>分别为普通节点成为簇头节点的最大概率和最小概率,CH<sub>prob</sub>(i)为普通节点i成为簇头节点的概率,R<sub>0</sub>为普通节点最大辐射半径,ω和c是用于控制取值范围的参数;步骤S206:每个普通节点判定其成为簇头节点的概率CH<sub>prob</sub>是否大于等于0~1之间随机生成的数,如果是,则进入步骤S209,否则转步骤S210;步骤S207:成为候选簇头节点的普通节点判定其成为簇头节点的概率CH<sub>prob</sub>是否大于等于1,如果是,则进入步骤S205,否则转步骤S209;步骤S208:对于备选簇头节点集合不为空且其自己不是候选簇头节点的普通节点,该普通节点加入其备选簇头节点集合中最小平均可达功率AMRP最小的候选簇头节点或者最终簇头节点所属的簇内,并进入步骤S211;步骤S209:该普通节点成为候选簇头节点,更新该普通节点状态为候选簇头节点,将自己加入其备选簇头节点集合,并根据公式(2)计算其簇半径R<sub>i</sub>,同时向其簇内普通节点广播自己当选为候选簇头节点的消息,该消息包括该候选簇头节点自身的ID号、节点状态、最小平均可达功率AMRP和簇半径;当候选簇头节点广播完消息后,其簇半径内所有普通节点更新其备选簇头节点集合,将该候选簇头节点加入备选簇头节点集合中,并执行步骤S210;步骤S210:普通节点或候选簇头节点将自身的CH<sub>prob</sub>乘以2并进入步骤S211;步骤S211:判定迭代次数是否大于N次,N为最大迭代次数且<img file="FDA00003071112400031.GIF" wi="412" he="157" />如果是,则中止迭代进入步骤S212,否则迭代次数加1,并转步骤S202;步骤S212:成簇终止,每个节点决定其最终状态;若普通节点在迭代过程时已成为最终簇头节点,则其当选为簇头节点;若普通节点的备选簇头节点集合中存在最终簇头节点,则其加入备选簇头节点集合中最小平均可达功率AMRP最小的最终簇头节点所属簇内;若某普通节点为孤立节点,即备选簇头节点集合中不存在最终簇头节点,则加入其通信半径内距离最近的成簇节点所属簇内;若该孤立节点通信半径内无其他节点,则孤立节点单独成簇;3)簇间通信阶段采用簇内单跳和簇间多跳数据传输方式,每个簇头节点需要从相邻簇的簇头节点中选择一个簇头节点作为其中继节点,转发数据到汇聚节点;对于簇头距离汇聚节点的距离小于T的簇头均直接单跳传输到汇聚节点,其中T是一个预先设定的值,其值总是小于普通节点最大辐射半径R<sub>0</sub>,对于簇头距离汇聚节点的距离大于T的簇头,从相邻簇头节点集合中选择一个代价最小的簇头作为其中继节点,经过多跳,完成数据传输到汇聚节点处;具体过程如下:步骤S301:簇头节点计算其距汇聚节点的距离,并判定距离是否小于T,如果是,则进入步骤S302,否则转步骤S303;步骤S302:簇头节点直接将数据单跳传输至汇聚节点;步骤S303:簇头节点c<sub>i</sub>以其β倍簇半径广播消息,其中β一般取值1~1.5之间且其广播半径小于普通节点最大辐射半径R<sub>0</sub>;簇头节点广播的消息包括簇头节点ID、剩余能量、簇头节点自身的节点代价和到汇聚节点的距离,节点代价根据公式(3)计算;接收到消息的其他簇头节点也发送一个返回消息给发送消息的簇头节点c<sub>i</sub>,返回消息包括其节点代价和到汇聚节点的距离;簇头节点c<sub>i</sub>根据发来返回消息的簇头数来计算相邻簇头节点集合c<sub>i</sub>.R<sub>CH</sub>,簇头c<sub>i</sub>的相邻簇头节点集合定义为:c<sub>i</sub>.R<sub>CH</sub>={c<sub>j</sub>|d(c<sub>i</sub>,c<sub>j</sub>)≤βR<sub>i</sub>,d(c<sub>j</sub>,BS)<d(c<sub>i</sub>,BS)};节点代价计算公式为:<maths num="0003"><![CDATA[<math><mrow><mi>cos</mi><mi>t</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><mi>&mu;</mi><mfrac><mover><msub><mi>d</mi><mrow><mi>c</mi><mo>-</mo><mi>BS</mi></mrow></msub><mo>&OverBar;</mo></mover><msub><mi>d</mi><mrow><mi>ci</mi><mo>-</mo><mi>BS</mi></mrow></msub></mfrac><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&mu;</mi><mo>)</mo></mrow><mfrac><msub><mi>E</mi><mi>ci</mi></msub><mover><msub><mi>E</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中<img file="FDA00003071112400042.GIF" wi="126" he="76" />为该簇头节点和其相邻簇头节点集合内的簇头节点到汇聚节点距离的平均值,d<sub>ci-BS</sub>为簇头节点c<sub>i</sub>到汇聚节点的距离,<img file="FDA00003071112400043.GIF" wi="68" he="75" />为簇头节点和其相邻簇头节点集合内的簇头节点剩余能量的平均值,E<sub>ci</sub>为簇头节点c<sub>i</sub>的剩余能量,μ是用于控制取值范围的参数;步骤S304:簇头节点c<sub>i</sub>从其相邻簇头节点集合中选择代价最小的簇头节点作为其下一跳节点。
地址 212003 江苏省镇江市梦溪路2号