Page 168 - 《软件学报》2021年第8期
P. 168
2450 Journal of Software 软件学报 Vol.32, No.8, August 2021
其他组员加入后,当前的宣布离开的组员才会真正地离开,或者等整个切换机制即第 9 步完成以后,真正地离开
当前组.
第 4 种算法,组主切换如算法 4 所示.
算法 4. 组主切换.
输入:GONodeSet;GMNodeSet.
初始化:TempGONodeSet←GONodeSet.
BEGIN
1. reset GONodeSet;
2. rank the consumption of GMNodeSet;
3. for i=0 to the length of TempGONodeSet do
4. Choosing the node from GMNodeSet[i][⋅];
5. if GMNodeSet[i][⋅] wants to be GO then
6. update GONodeSet, GMNodeSet and group size;
7. continue;
8. else
9. choosing next node;
10. end if;
11. end for
12. for i=0 to the length of GONodeSet do
13. for i=0 to each group members in GMNodeSet do
14. NodeSwitch(GONodeSet[i],GMNodeSet[i][j]);
15. end for
16. end for
17. return 0;
END
在算法 4 中,使用 NetConfiguration 作为算法 4 的函数名.它拥有两个参数:GONodeSet 和 GMNodeSet.算法
4 每 10min 被调用一次.当被调用以后,为每一组选择下一任组主,该算法是作为组主切换.当被调用时,初始化一
个临时的组主数组 TempGONodeSet,并把目前的组主序列 GONodeSet 赋予 TempGONodeSet.随后,算法重置
GONodeSet 的序列为空,然后开始将每组的组员消耗开始进行排列.从 TempGONodeSet 的第 1 个组主开始,首先
从各自的组员中选择消耗最低的组员.如果选择的组员想成为新组主,开始更新组主、组员列表以及组大小,随
后从当前组的循环跳出,开始下一个组的循环.如果当前被选择的组员不愿意作为新组主,则选择下一个成员.
当所有的新组主被选择完毕以后,从新组主的第 1 个组主开始,剩下的组员中选择是否加入当前组主,每次选择
完成以后,都需要更新所有的数组以及组大小.
4 实 验
4.1 实验设置
在实验过程中,为了清楚地观察到不同组大小下的性能差异,节点被直接按照组大小分为若干个组,在实验
过程中,可能会出现不同组大小的现象.例如,当组大小为 6 时,有 8 个组大小为 6 的组,有一个组大小为 2 的组.
因此,进行性能评价时,本文按照当前网络的平均组大小进行评价.运行实验时,将运行两个实验,分别是:a. 禁用
节能机制;和 b. 启用节能机制.其中,禁用节能机制中将会作为对照组.除了禁用节能机制外,两个实验中,除了发
射功率,其他设置完全一样.对于提出的节能机制,每 10min 进行一次组主切换,组员切换和功率调控则实时控
制.在节能机制禁用时,其发射功率被设置为 20dBm,这是正常用户使用时的默认值 [25] .当节能机制启用并且组