1.算法概述
蜂窝网络不仅需要能够为用户提供高质量的语音服务,而且要能够提供大量的数据传输服务,这就决定了蜂窝网络的发展必须要进一步提高系统容量和高速数据速率覆盖,而传统的蜂窝网络基本无法满足目前的需求。为了满足不断提高系统需求,需要通过通过增加基站密度可以提升系统容量,提高数据传输速率,但是,这会大大增加网络的成本为代价来实现的。仅仅当通信用户数目也以和基站同样级别增加的时候才是可行的[01]。但这在大部分国家,特别是在一些发达国家,蜂窝电话己经高度普及,因此这种方案几乎无法被接受。另一方面,同样数量的用户将要求更高的传输速率,这将成为造成未来无线系统吞吐量拥塞的瓶颈。假设用户不愿意像对语音通话一样对每比特的数据付同样的钱,大量增加基站数目在经济上也是不合算的。针对这种情况,目前应用较为广泛的是中继节点的应用,中继节点RS作为一种比BS更为简单、成本更低的技术可以进一步扩大的整个小区信号的覆盖范围以及增加数据传输速率。中继节点的基本作用是通过缩减基站和用户站之间的传输距离,对信号进行重新处理并向前转发从而提升无线链路质量。
当中继节点关闭以后,可以大大降低能耗,此时的中继节点失去了发送的能力,被称为休眠节点。而在一个大型的蜂窝网中,由于每个单一的中继节点并不会在每时每刻都处于工作之中,那么会对整个网络产生一定的冗余,在这样一个环境中,中继节点收集到的数据高度相关,完全可以让一部分中继节点休眠,而让另一部分中继节点工作,此外,在中继节点密度较高的区域,此时,在不影响整个小区性能的前提下,通过关闭一部分节点的方法,可以有效降低整个小区的功耗。
下面讨论在引入节点休眠算法之后,整个小区的功耗,吞吐量以及能效等性能指标。假设在某一时刻,整个小区有k0个中继节点关闭,k-k0个中继节点在正常工作,那么整个小区的总的功耗为:
2.仿真效果预览
matlab2022a仿真
从上面的式子可知,通过节点休眠算法后,整个系统的能效显然提高了。下面讨论节点休眠算法的休眠控制机制。
图1的仿真对比效果可知,采用节点休眠算法后的中继蜂窝网具有最小功耗,其次是中继蜂窝网,而普通蜂窝其功耗最大。
改进后的中继蜂窝其吞吐量略大于中继蜂窝网,大于普通蜂窝网,故在吞吐量指标上,基于节点休眠算法的中继蜂窝网具有最佳的性能。此外,从理论上分析可知,采用普通中继算法的吞吐量和采用休眠节点算法的中继模式的系统吞吐量是相同的,但在实际中,考虑各个基站和中继之间的影响及干扰,当采用休眠算法的中继算法的时候,将无关的基站和中继均关闭,这样可以有效降低部分临近区域的基站或中继的干扰,所以采用休眠节点算法的吞吐量会略大于普通中继算法的吞吐量。
采用改进算法后的中继蜂窝网,其能效最佳,且在用户较少的时候,其性能更为优越,而当用户数量增加的时候,其性能快速下降,但其整体能效仍然优于普通蜂窝网和中继蜂窝网。
3.MATLAB部分代码预览
load MATLAB_basic_platform\cell.mat
%显示该通信平台
%系统内总用户数 %总中继数 %用户设备位置坐标 %基站位置坐标 %中继位置坐标
%小区半径 %小区个数 %服务扇区列表 %每个扇区中的用户数 %每个小区的Relay数 %服务小区列表
func_draw_cell(nTotalNumofUser,nNumofCell*nNumofRelayPerCell,dUEPosition ,dBSPosition ,dRelayPosition,...
dCellRadius ,nNumofCell ,ServingSector ,nNumofUserPerSector,nNumofRelayPerCell,ServingCell_Relay);
Simulation_time = 50;
Max_people = 18;
Step_people = 1;
Min_people = 2;
ALL_throughput = 0;
ALL_Power_comp = 0;
p = 0;
%计算吞吐量
%每个小区5个用户
for i = Min_people:Step_people:Max_people
p = p + 1;
ALL_throughput = 0;
ALL_Power_comp = 0;
for k = 1:Simulation_time%利用蒙特卡罗的思想,对一个情况进行多次计算,结果用平均值表示
i
[T_user,Power] = func_traffic(i);
%进行调度
T_PF_Scheduler = func_PF_Scheduler(T_user,i);
%计算吞吐量
ALL_throughput = ALL_throughput + sum(T_PF_Scheduler);
ALL_Power_comp = ALL_Power_comp + sum(sum(Power));
end
ALL_throughput2(p) = ALL_throughput/Simulation_time;
ALL_Power_comp2(p) = ALL_Power_comp/Simulation_time;
end
%计算能效
figure(6);
%计算能效 = 用户吞吐量/功耗
plot(MM,ALL_throughput2./ALL_Power_comp2,'b-*','LineWidth',2);title('能效 = 用户吞吐量/功耗');grid on;
xlabel('用户数量');
ylabel('能效');
01-40m