目录
[1️⃣3.1 异构网络拓扑模型](#1️⃣3.1 异构网络拓扑模型)
[2️⃣3.2 信道模型与用户接入速率](#2️⃣3.2 信道模型与用户接入速率)
[3️⃣3.3 系统能效目标函数](#3️⃣3.3 系统能效目标函数)
[4️⃣3.4 用户重关联机制](#4️⃣3.4 用户重关联机制)
[5️⃣3.5 Sarsa学习](#5️⃣3.5 Sarsa学习)
✅1.引言
异构蜂窝网络(Heterogeneous Cellular Network, HetNet)是5G和B5G移动通信系统的关键架构,通过在宏基站(Macro Base Station, MBS)覆盖范围内叠加部署大量小型飞蜂窝基站(Femtocell Base Station, FBS),可以显著提升网络容量与覆盖质量。然而,密集部署的FBS在业务低峰时段会造成大量能源浪费,基站能耗占移动网络总能耗的60%至80%。因此,基站休眠策略成为实现绿色通信和节能降碳的核心技术手段。
传统基站休眠方法多依赖于预定义的负载阈值或静态规则,难以适应实际网络中用户分布的时空动态变化。近年来,强化学习(Reinforcement Learning, RL)作为一种无模型的智能决策方法,因其不需要精确的环境先验知识而备受关注。本文详细介绍一种基于Sarsa学习算法的FBS动态休眠策略,该方法通过智能体与异构网络环境的持续交互,自适应学习每个网络状态下的最优基站开关决策,在保障用户服务质量(Quality of Service, QoS)和服务连续性的前提下,最大化网络整体能效。
Sarsa算法是一种在策略(on-policy)时序差分学习方法,其名称来源于学习过程中使用的五元组(St,At,Rt,St+1,At+1)。与Q-learning等离策略方法相比,Sarsa算法的更新过程始终基于当前实际执行的策略,具有更好的策略一致性和训练稳定性,避免了在复杂离散动作空间中可能出现的Q值过估计问题。这一特性使Sarsa特别适用于基站休眠场景------其保守探索机制能有效防止过于激进的休眠决策导致用户服务突然中断。
👉2.算法测试效果




💡3.算法涉及理论知识概要
1️⃣3.1 异构网络拓扑模型
考虑一个两层异构蜂窝网络,由1个MBS和N个FBS共同覆盖一个正方形区域。MBS部署在区域中心,提供基础覆盖保障;N个FBS分散部署在热点区域,负责提供高速数据服务。定义FBS集合为N={1,2,...,N},区域内随机分布KK个移动用户,用户集合为K={1,2,...,K}。每个FBS存在两种工作模式:激活态(active,正常服务用户)和休眠态(sleep,关闭射频模块仅保留最低维护功耗)。
2️⃣3.2 信道模型与用户接入速率
用户k接收来自基站n的下行信号,其信干噪比(SINR)计算如下:

其中PnP为基站n的发射功率,hk,n为瑞利小尺度衰落系数,dk,n为用户kk到基站nn的欧氏距离,α为路径损耗指数,A为当前激活基站集合,σ2为加性高斯白噪声功率。基于香农公式,用户k的可达传输速率为:

其中B为分配给用户的子信道带宽。
3️⃣3.3 系统能效目标函数
网络整体能效定义为系统总吞吐量与总功耗之比:

优化目标即为通过合理调度各FBS的休眠与激活状态,最大化上述能效指标,同时确保所有用户的最低速率需求得到满足。
4️⃣3.4 用户重关联机制
当某个FBS被决策进入休眠态后,原本由其服务的用户将失去连接。为保证用户的服务连续性,必须建立用户重关联规则。本方法采用最大接收功率准则进行用户重分配:被释放的用户k将重新接入使其接收信号功率最强的激活基站:

重关联完成后,目标基站将分配资源为新接入用户提供服务,系统随后重新计算各用户的SINR和速率。
5️⃣3.5 Sarsa学习
状态空间
每个决策时刻tt的网络状态由所有FBS的开关状态向量与当前网络负载等级联合表征:

动作空间
智能体在每个决策时刻可执行以下动作之一:对某个特定FBS进行状态切换,或保持所有FBS当前状态不变:

奖励函数
奖励函数是引导学习方向的核心要素,需要同时体现能效提升目标和QoS约束:

其中ω1和ω2为正权重系数,分别控制能效激励和QoS惩罚的强度,Rmin为用户最低速率门限,1(⋅)为指示函数------当用户速率低于门限时返回1触发惩罚。这种设计确保算法在追求节能的同时不会过度牺牲用户体验。
Sarsa Q值更新

❤️4.MATLAB核心程序
%网络参数设置
areaSize = 500;
numFBS = 6;
numUsers = 30;
bandwidth = 10e6;
noisePower = 1e-13;
pathLossExp = 3.5;
mbsPowerdBm = 46;
fbsPowerdBm = 20;
mbsStaticPow = 130;
fbsActivePow = 10;
fbsSleepPow = 1;
rateMin = 1e6;
w1 = 1.0; w2 = 5.0;
mbsPos = [areaSize/2, areaSize/2];
fbsPos = [100 400; 350 100; 400 400; 150 150; 300 300; 450 200];
mbsPLin = 10^((mbsPowerdBm-30)/10);
fbsPLin = 10^((fbsPowerdBm-30)/10);
%Sarsa参数设置
numLoadLevels = 3;
numStates = 2^numFBS * numLoadLevels;
numActions = numFBS + 1;
alpha0 = 0.5;
gammaRL = 0.9;
epsilon0 = 0.9;
epsilonMin = 0.05;
epsilonDecay = 0.995;
numEpisodes = 1000;
stepsPerEp = 60;
Qtable = zeros(numStates, numActions);
✨5.完整算法代码文件获得
完整程序见博客首页左侧或者打开本文底部GZH名片
( V关注后回复码: X136)
V