387 lines
25 KiB
TeX
387 lines
25 KiB
TeX
\chapter{基于深度强化学习的跳波束算法研究}
|
||
|
||
\section{引言}
|
||
对于多波束卫星,不同地区的覆盖会导致流量的空间分布不均匀,在某一个时间点亮部分活跃的波束,提供服务的跳波束机制是有效应对空间流量分布不均匀的方法。传统的方法解决跳波束问题多采用优化或者元启发算法。这些方法的主要问题是随着波束数量的增加,解空间会快速增长。而跳波束决策是一种典型的动态环境序列决策问题,可以采用深度强化学习的方法进行建模。但是单智能体DRL方法在面对巨大的解空间时求解困难,容易出现维度灾难,面对流量需求和波束的公平性存在权衡的问题。如果将波束视为智能体进行多智能体深度强化学习,又容易陷入局部解的问题。本文采取了一种折中的方法,通过结合单智能体和多智能体的方法,实现了一种基于深度强化学习的波束与信道联合分配的跳波束算法。
|
||
\section{系统与问题建模}
|
||
\subsection{场景描述}
|
||
本文考虑多波束卫星的下行链路,通过时分复用的形式,可以提供$K$个波束覆盖$N$个小区的用户($K<N$)。在$t$时刻,波束与小区的点亮关系可以使用以下矩阵描述:
|
||
\begin{equation}
|
||
\mathbf{X} = \{x_{k,n} | x_{k,n} \in \{0,1\},\sum_{n=1}^{N} x_{k,n}= 1\}
|
||
\label{eq:X_bh}
|
||
\end{equation}
|
||
|
||
|
||
在本章的假设中,每个小区的数据传输和业务请求通过数据包的形式表示,每个数据包大小均为$\varphi$比特,在一个时隙内产生多个不同业务数据包,请求符合参数为$\lambda_i$泊松分布。每个用户在$t$时刻请求服务,卫星系统通过星上业务缓存队列形成各个小区的业务队列,表示为$\Phi_{t,n} = \{\varphi_{1,n},\varphi_{2,n},\cdots, \varphi_{m, n}\}$。$T$为星上的缓存容量,星上缓存维护业务数据队列,超过时限还没有处理的业务数据将会丢弃。相应地,每个业务在被处理时,由于业务的到达时间和业务的处理时间不同产生排队延迟$\tau$。在$t$时刻,小区$n$的数据总需求为$d_{t,n} = \sum \Phi_{t, n}$。图\ref{fig:bh}展示了本章所示的跳波束系统模型。
|
||
\begin{figure}[hbpt]
|
||
\includegraphics[width=0.85\textwidth]{chap/figures/bh.png}
|
||
\caption{跳波束系统模型图}
|
||
\label{fig:bh}
|
||
\end{figure}
|
||
|
||
|
||
在本章使用的模型中,假设系统的总带宽为$B_{tot}$,可以被划分为$M$个不同的信道,每个信道的带宽为$B_{ch}$,在本文第二章的描述中,信道的分配是一个高维的信道分配矩阵,但在跳波束问题中,高维的信道分配矩阵会给问题带来额外的复杂度,为了简化由于信道分配带来的复杂度,本章中的波束每次只能分配连续的信道使用,即可能的信道分配方式有$1+2+3+\cdots+M$种。图\ref{fig:bwpattern}展示了四个信道时系统的信道分配方式。
|
||
\begin{figure}[hbpt]
|
||
\centering
|
||
\includegraphics[width=0.85\textwidth]{chap/figures/bwpattern.png}
|
||
\caption{信道分配方式示意图}
|
||
\label{fig:bwpattern}
|
||
\end{figure}
|
||
因此在$t$时刻系统的带宽分配方式可以记作:
|
||
\begin{equation}
|
||
\mathbf{B} = [B_t^1, B_t^2,\cdots, B_t^K]
|
||
\label{eq:Bwall}
|
||
\end{equation}
|
||
而$B_t^k$为图\ref{fig:bwpattern}所示中的各信道分配集合。
|
||
不同的波束点亮同一个小区时,如果所使用的信道具有重叠部分(图\ref{fig:alphaij}),会产生同频干扰。可以定义波束$i,j$之间的同频干扰系数$\alpha_t^{i,j}$:
|
||
\begin{equation}
|
||
\alpha_t^{i,j} = \frac{|B_t^i \cap B_t^j|}{|B_t^i|}.
|
||
\label{eq:alphaij}
|
||
\end{equation}
|
||
|
||
\begin{figure}[hbpt]
|
||
\centering
|
||
\includegraphics[width=0.75\textwidth]{chap/figures/alphaij.png}
|
||
\caption{同频干扰系数示意图}
|
||
\label{fig:alphaij}
|
||
\end{figure}
|
||
|
||
波束$k$点亮小区$n$的信道增益为:
|
||
\begin{equation}
|
||
h^{k,n} = G^k_t \cdot PL \cdot G^n_r
|
||
\label{eq:hnks}
|
||
\end{equation}
|
||
其中$G^k_t$为波束$k$的发射增益,$G^n_r$为小区$n$的接收增益,$PL$为信道损耗。波束$k$到小区$n$的
|
||
信干噪比为
|
||
\begin{equation}
|
||
SINR_t^{n,k} = x_{n,k} \frac{P_{beam}h^{n,k}}{N_0|B_t^k|B_{ch} + \sum_{n'\neq n} P_{beam} \alpha^{k, i}h^{n',i}}
|
||
\label{eq:sinrbh}
|
||
\end{equation}
|
||
其中$P_{beam}$为波束的发射功率,$N_0$为系统的噪声功率谱密度。根据香农公式, 可以计算出小区$n$的信道容量为:
|
||
\begin{equation}
|
||
C_t^n = \sum_k x_{n,k} |B_t^k|B_{ch} \log_2(1+SINR_t^{n,k}).
|
||
\label{eq:Capch}
|
||
\end{equation}
|
||
|
||
在$t$时刻小区$n$的总数据吞吐量为:
|
||
\begin{equation}
|
||
Th_t^n = \min \{C_t^n, d_{t,n}\}.
|
||
\label{eq:th}
|
||
\end{equation}
|
||
\subsection{问题建模}
|
||
在建立了跳波束的场景下,可以定义动态跳波束的优化问题。对于跳波束系统而言,其首要目标是在时变的小区数据传输需求下,最大化长期的总的数据吞吐量,同时为了保障系统中不同用户的QoS需要尽可能保障各小区业务的公平性,即最小化不同小区之间的业务延迟差异。对卫星而言,其长期吞吐量 可以写为
|
||
\begin{equation}
|
||
Th_{tot} = \sum_{t=1}^{T} \sum_{n=1}^{N} Th_t^n
|
||
\label{eq:thtotal}
|
||
\end{equation}
|
||
同时,业务的延迟$\tau_t^n$可以定义为数据包在缓存的等待时间对数据量的平均数,即
|
||
\begin{equation}
|
||
\tau_t^n = \frac{\sum_{i}^{T_{ttl}} i \cdot \varphi_{t-i, n}}{\sum_{i}^{T_{ttl}} \varphi_{t-i, n}}.
|
||
\label{eq:tau_nt}
|
||
\end{equation}
|
||
从而,$T$时间内不同小区之间的延迟差异可以表现为:
|
||
\begin{equation}
|
||
\Delta = \sum_{t=1}^{T} (\max_n \tau_t^n - \min_n \tau_t^n).
|
||
\label{eq:Dekta}
|
||
\end{equation}
|
||
|
||
吞吐量反映了系统的总体性能,表征了跳波束系统面对流量空间不均匀性的性能,而延迟的公平性则反映了系统整体的QoS指标。这两个指标存在一定的矛盾性,即提高系统的总体吞吐量可能会降低系统的QoS指标,而提高系统的QoS指标可能会降低系统的总体吞吐量。因此,本文将跳波束问题建模为一个多目标优化问题,即最大化系统的总体吞吐量,同时最小化系统的延时极差。将跳波束问题建模为以下问题:
|
||
\begin{align}
|
||
\mathrm{opt.} \max \mathcal{P} &= \beta \frac{Th_{tot}}{Th_{max}} - (1-\beta) \frac{\Delta}{\Delta_{max}} , \beta\in [0,1] \label{eq:target_p}\\
|
||
\mathrm{s.t.} &\sum_k P_{beam}^k > P_{tot} \label{eq:pttt} \\
|
||
&\sum_k |B_t^k|B_{ch} \leq B_{tot} \label{eq:btot} \\
|
||
&\sum_k x_{n,k} = 1 \label{eq:xnkk} \\
|
||
\end{align}
|
||
|
||
在此优化问题中,优化的目标是最大化系统的总体吞吐量和最小化系统的延时极差,其中$\beta$为权重系数,$\beta$反映了对吞吐量和公平性的取舍,$\beta$越大意味着优化越倾向于最大化吞吐量,反之意味着倾向最小化延时差。$Th_{max}$和$\Delta_{max}$为系统的最大吞吐量和最大极差。约束条件\ref{eq:pttt}为系统的总发射功率约束,约束条件\ref{eq:btot}为系统的总带宽约束,约束条件\ref{eq:xnkk}为波束分配约束。
|
||
\section{基于深度强化学习的跳波束算法建模}
|
||
本节详细介绍本章关于动态跳波束问题的解决方法。首先描述了多目标深度强化学习算法的体系结构,包含了算法中的一些考虑,随后给出了状态空间、动作空间、奖励函数等的处理。
|
||
\subsection{马尔可夫过程构建}
|
||
|
||
\textbf{(1)状态空间}
|
||
|
||
本章讨论的多波束卫星场景下,状态主要可以表示为环境当前的数据需求,即
|
||
|
||
\begin{equation}
|
||
s_t = {D_t}
|
||
\label{eq:state_tt}
|
||
\end{equation}
|
||
|
||
\textbf{(2)动作空间设计}
|
||
|
||
动作空间由两部分组成,即小区的点亮矩阵与信道的分配模式。
|
||
|
||
\begin{equation}
|
||
a_t = \{\mathbf{X_t}, \mathbf{B_t}\}
|
||
\end{equation}
|
||
|
||
\textbf{(3)奖励函数}
|
||
|
||
根据优化目标\ref{eq:target_p},算法的奖励函数可以写为
|
||
\begin{equation}
|
||
r_t(s_t, a_t) = \beta \frac{Th_{tot}}{Th_{max}} - (1-\beta) \frac{\Delta}{\Delta_{max}} , \beta\in [0,1]
|
||
\end{equation}
|
||
|
||
\subsection{状态重构}
|
||
本章中描述业务量状况使用的是泊松分布的数据包到来的状况,由于泊松分布的特性,业务的到来是时间连续的行为,为了对$D_t$进行处理,需要对业务进行状态重构。假设每个数据包的大小是相等的,每个跳波束时隙内的数据量可以代表在该时隙内的吞吐量需求,表示为
|
||
\begin{equation}
|
||
d_t^{i,j} = \sum \{\varphi_{m,t} | i \in [ \frac{T_{ttl}\cdot m}{M}, \frac{T_{ttl}\cdot(m+1)}{M})\}
|
||
\label{eq:data_packet}
|
||
\end{equation}
|
||
图\ref{fig:state_ch}描述了状态重构的结果。
|
||
|
||
\begin{figure}
|
||
\begin{small}
|
||
\begin{center}
|
||
\includegraphics[width=0.95\textwidth]{chap/figures/state_change_1.png}
|
||
\end{center}
|
||
\caption{状态重构示意图}
|
||
\label{fig:state_ch}
|
||
\end{small}
|
||
\end{figure}
|
||
|
||
|
||
\subsection{动作决策与Q网络设计}
|
||
\ref{sec:qwl}描述了深度Q学习中Q网络的基本结构。
|
||
在传统的基于动作价值函数的DRL方法中,算法会按照式\ref{eq:a_star}的定义选择最大动作价值对应的动作作为输出。但在本问题所示的跳波束场景下,波束不仅需要选择点亮的小区还需要选择点亮时的信道分配模式,而这两个问题所需要的动作空间是不同的。为了能够使用这个方法解决跳波束问题,本文给出了一种合作性多智能体强化学习方案,系统中有两个独立的智能体,在训练的过程中分别学习各自的策略、拥有独自的经验回访池,分别选择独立的动作,即点亮的波束与信道的分配模式,两个动作共同作用与环境进行交互从而得到共同的奖励函数$r$。
|
||
\begin{figure}[hbpt]
|
||
\centering
|
||
\includegraphics[width=\textwidth]{chap/figures/multidqn.png}
|
||
\caption{多智能体强化学习框架}
|
||
\label{fig:multiagent}
|
||
\end{figure}
|
||
通常而言这种动作价值的输出是一维的数值,而在图\ref{fig:multiagent}的多智能体合作强化学习网络中,两个智能体的动作选择都是具有$K$个分量的高维向量。面对高维动作空间问题,文献\parencite{hu2020dynamic}采用的方法是通过循环的方式,连续进行$K$次决策:每次选择一个小区后,将该小区的数据需求量暂时更新为0,重复$K$次,执行的动作是$K$个动作的并集,$\vec{a} = \{a_1,a_2,\cdots,a_K\}$。这种方法的缺点是系统需要更长的时间进行决策且算法难以收敛。而文献\parencite{lin2022dynamic}采取的方式是将每个分量再次拆解为单独的智能体,即将每个波束视为单独的智能体,这样做大大简化了问题的复杂度,但是会导致智能体之间的合作性降低,容易陷入局部最优解。为了应对以上的问题,本文采用了一种折中的方法,即每一个智能体的Q网络在输出层通过多头分叉的方式输出多组不同的Q值,既能充分利用全局的状态信息,又能在一定程度上降低系统的复杂度。在更新时,本文对每个动作分量分别计算网络的误差,通过总误差求平均值获得网络的误差函数:
|
||
|
||
\begin{equation}
|
||
L(\theta) = \frac{1}{K} \sum_k \mathrm{E}[(r_t + \gamma \max Q(s_{t+1}, a'_{t+1,k}; \theta') - Q(s_t, a_{t,k}; \theta))^2]
|
||
\label{eq:Loss_eq}
|
||
\end{equation}
|
||
|
||
本章算法使用了四层的全连接神经网络,每个网络共享的输入层、三层共享的隐藏层,输出层为多头分叉的输出层。具体的参数如表\ref{tab:multihead}所示。
|
||
|
||
\begin{table}[hbpt]
|
||
\begin{small}
|
||
\caption{网络参数设置}
|
||
\label{tab:multihead}
|
||
\begin{center}
|
||
\begin{tabular}{cccc}
|
||
\toprule
|
||
层 & 输入 & 输出& 激活函数 \\
|
||
\midrule
|
||
输入层 & $N \cdot T_{ttl}$ & 128 & ReLU \\
|
||
隐藏层1 & 128 & 128 & ReLU \\
|
||
隐藏层2 & 128 & 128 & ReLU \\
|
||
隐藏层3 & 128 & 128 & ReLU \\
|
||
智能体1输出层 & $128 \times K$ & $K \times N$ & - \\
|
||
智能体2输出层 & $128 \times K$ & $N \times \frac{M\times(M+1)}{2}$ & -\\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{center}
|
||
\end{small}
|
||
\end{table}
|
||
|
||
|
||
|
||
|
||
\begin{figure}[hbpt]
|
||
\centering
|
||
\includegraphics[width=0.85\textwidth]{chap/figures/mheads.png}
|
||
\caption{多头Q网络示意图}
|
||
\label{fig:multiq}
|
||
\end{figure}
|
||
\subsection{算法流程}
|
||
\begin{breakablealgorithm}
|
||
\caption{基于多智能体与多目标优化的深度强化学习跳波束算法}
|
||
\label{algo:2}
|
||
\begin{algorithmic}[1]
|
||
\renewcommand{\algorithmicrequire}{\textbf{参数初始化}}
|
||
\REQUIRE
|
||
\STATE 初始化多波束卫星场景
|
||
\STATE 初始化业务到达参数
|
||
\STATE 初始化两个智能体Q网络参数$\theta$初始化,目标Q网络参数$\theta '$初始化,初始化经验回放池$D = \emptyset, N = N_e$
|
||
\STATE 初始化业务队列信息
|
||
\renewcommand{\algorithmicrequire}{\textbf{训练与优化过程}}
|
||
\REQUIRE
|
||
\FOR{episode $i \leftarrow 1,2,\dots, S$}
|
||
\STATE 初始化状态$s_0$,并进行状态的重构
|
||
\FOR{timestep $t \leftarrow 1,2,\dots, T$}
|
||
\STATE 不同小区的业务需求量进行更新,抛弃超时的数据包$\epsilon = \max (\epsilon\cdot\lambda, \epsilon_f)$
|
||
\STATE 观察环境,构建状态$s_t$
|
||
\FOR{智能体 $j$}
|
||
\STATE 智能体利用$\epsilon - greedy$选择一个概率$p$
|
||
\IF{$p \le \epsilon$}
|
||
\STATE 随机选择动作$a_{t,j} \in \mathcal{A}(s_t)$
|
||
\ELSE
|
||
\STATE 选择$a_{t,j} = \arg \max Q(s_t, a; \theta)$
|
||
\ENDIF
|
||
\ENDFOR
|
||
\STATE 合并动作$a_t = {a_{t, j}|j=1,2}$
|
||
\STATE 执行$a_{t}$,更新环境的状态,计算吞吐量与延时,得到奖励$r_t$,观察下一个状态$s_{t+1}$
|
||
\STATE 处理$s_{t+1}$,将$\langle s_t, a_t, r_t, s_{t+1}\rangle$添加到经验回访池$D$中
|
||
\IF{经验存储池$D$中的数据量大于经验回放门限}
|
||
\STATE 从$D$中随机抽取一组经验数据进行训练
|
||
\STATE 计算目标网络的预测值
|
||
\STATE 根据\ref{eq:Ltheta}计算损失函数$L(\theta)$,通过神经网络的反向传播进行训练
|
||
\ENDIF
|
||
\IF{$t \mod G = 0$}
|
||
\STATE 更新目标网络$\theta' \leftarrow \theta$
|
||
\ENDIF
|
||
\ENDFOR
|
||
|
||
\ENDFOR
|
||
\STATE 输出参数$\theta$
|
||
\renewcommand{\algorithmicrequire}{\textbf{算法结束}}
|
||
\REQUIRE
|
||
\end{algorithmic}
|
||
\end{breakablealgorithm}
|
||
|
||
\section{仿真结果分析}
|
||
\subsection{仿真参数设计}
|
||
本节仿真的CPU平台为Intel Core i7 11700CPU,
|
||
使用了PyTorch机器学习框架。仿真中,使用了单颗Ka波段卫星,主要参数如表\ref{tab:bhparam}所示,卫星场景仿真参数参考\parencite{lin2022dynamic},跳波束时隙参考\parencite{etsi2005digital}。其中业务的请求量按照泊松分布产生,根据具体的吞吐量需求计算得到对应$\varphi$比特的数据包到达率$
|
||
\lambda$。
|
||
|
||
\begin{table}[hbpt]
|
||
\centering
|
||
\caption{卫星场景仿真参数表}
|
||
\label{tab:bhparam}
|
||
\begin{tabular}{cc}
|
||
\toprule
|
||
参数 & 值\\
|
||
\midrule
|
||
卫星高度 & \SI{36000}{km} \\
|
||
中心频率 & \SI{20}{GHz} \\
|
||
路径损失 & \SI{209.6}{dB} \\
|
||
小区数量$N$ & 19 \\
|
||
波束数量$K$ & 4 \\
|
||
信道数量$M$ & 4 \\
|
||
系统带宽$B_{tot}$ & \SI{500}{MHz} \\
|
||
波束发射功率$P_{beam}$ & \SI{27}{dBW} \\
|
||
天线半波束角 & \SI{0.75}{\degree} \\
|
||
天线的发射增益$G_T$ & \SI{40.3}{dBi} \\
|
||
用户接收增益 $G_R$ & \SI{31.6}{dBi} \\
|
||
最小时间间隔$t_{slot}$ & \SI{2}{ms} \\
|
||
星上缓存容量$T_{ttl}$ & $40\times t_{slot}$\\
|
||
小区业务需求量 & $U(\SI{50}{Mbps}, \SI{150}{Mbps})$ \\
|
||
经验回访池容量 & 10000 \\
|
||
经验回放门限 & 4000 \\
|
||
每次回放经验数 & 256 \\
|
||
学习率 & 0.00001 \\
|
||
初始探索概率 & 1.0 \\
|
||
最终探索概率 & 0.001 \\
|
||
目标网络更新步长 & 200 \\
|
||
训练轮次 & 15000 \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
\subsection{仿真结果分析}
|
||
|
||
\subsubsection{收敛性分析}
|
||
根据此前的分析,在$\beta$取不同的值时会导致算法偏向不同的优化目标,$\beta$越大时,算法会更倾向于满足通信的需求,而$\beta$越小会更偏重于时延的公平性。
|
||
本节对于不同的$\beta$取值,分别进行了训练,如图\ref{fig:rwbeta}所示。从图中可以看出,在不同的$\beta$的取值下,本算法对于奖励函数都最终趋于平稳的数值,反映出算法在不同偏好下都具有一定的收敛性。由图中的奖励函数信息可以分析出,在$\beta$取值较小时(0-0.2),奖励函数收敛性相比其他更慢,这说明为了实现时延的公平性,需要进行更多的探索,而其他取值则在4000轮次开始逐渐稳定。图\ref{fig:smooth}反映了$\beta = 0.5
|
||
$时,时延的收敛情况。
|
||
\begin{figure}[hbpt]
|
||
\centering
|
||
\includegraphics[width=0.85\textwidth]{chap/figures/reward.png}
|
||
\caption{不同$\beta$取值的奖励函数收敛性}
|
||
\label{fig:rwbeta}
|
||
\end{figure}
|
||
|
||
\begin{figure}[hbpt]
|
||
\centering
|
||
\includegraphics[width=0.75\textwidth]{chap/figures/smooth.png}
|
||
\caption{时延的收敛情况}
|
||
\label{fig:smooth}
|
||
\end{figure}
|
||
|
||
|
||
\subsubsection{性能分析}
|
||
|
||
\textbf{(1)不同$\beta$取值对系统性能的影响}
|
||
|
||
|
||
根据收敛性分析,本章算法对于不同的$\beta$都具有一定的效果,但是不同的$\beta$对系统收敛性存在一定的影响。为了明确说明算法在不同取值下的性能,图\ref{fig:beta_delay}说明随着$\beta$的升高,时延的公平性逐渐变差,而系统总的吞吐量随之增加,这一结论与此前的讨论相同。
|
||
\begin{figure}[hbpt]
|
||
\centering
|
||
\begin{subfigure}{0.45\textwidth}
|
||
|
||
\includegraphics[width=\textwidth]{chap/figures/delay.png}
|
||
\caption{时延随着$\beta$的变化}
|
||
\label{fig:subfigure1}
|
||
\end{subfigure}
|
||
\begin{subfigure}{0.45\textwidth}
|
||
\includegraphics[width=\textwidth]{chap/figures/th.png}
|
||
\caption{吞吐量随着$\beta$的变化}
|
||
\label{fig:subfigure2}
|
||
\end{subfigure}
|
||
\caption{不同$\beta$取值下的系统性能}
|
||
\label{fig:beta_delay}
|
||
\end{figure}
|
||
|
||
|
||
\textbf{(2)在不同吞吐量需求下的吞吐量表现}
|
||
|
||
为了比较本章算法与其他算法在不同业务需求量的情况下的表现情况,本节将本文算法与其他的方法进行了对比。本章对比的算法列表有:
|
||
\begin{enumerate}
|
||
\item 周期算法:本算法通过平均分配时分复用的方式进行跳波束的切换操作,在本次实验中,小区的数量为19个,共有4个波束,按照每5个时隙为周期,每个波束按照固定的顺序点亮特定的小区。同时为了提高系统的频谱效率并且抑制同频干扰,每个波束频率复用因子为2。
|
||
\item 随机算法:每个时隙随机选择点亮的波束,并且随机选择每个波束所需要的信道模式。
|
||
\item 贪心算法:每个时隙选择吞吐量需求最大的$K$个小区点亮,同样频谱复用因子为2。
|
||
\item 遗传算法\parencite{angeletti2006beam}:通过遗传算法这一启发式算法进行小区的点亮,在本次实现中种群数量选择为200,迭代次数为60次。
|
||
\end{enumerate}
|
||
|
||
在实验中,为了比较算法的长期表现,本文通过进行500次独立的实验,取平均值的操作进行。在每次实验中,通过控制小区不同的流量需求在\SI{50}{Mbps}到\SI{300}{Mbps}之间分布模拟流量需求的空间不均匀特性,通过控制流量的分布得到总的平均流量需求,每次实验包含200个决策时隙。图\ref{fig:allth}展示了不同算法在此场景下的比较结果,其中计算的吞吐量按照实际数据包数量计算,即如果卫星提供的吞吐量超过实际数据量,以实际数据为准。从实验结果不难看出,在较低的流量需求下如图低于\SI{2000}{Mbps}时,所有算法都能够基本满足用户的流量需求,在这种情况下所有波束的容量都要比流量需求大。而随着系统需求的增加,随机算法最早出现了瓶颈,周期算法、贪心算法则在\SI{2200}{Mbps}左右达到吞吐量的饱和值,这是由频率复用方案所决定的。而本文算法与遗传算法则可以在流量需求达到\SI{3000}{Mbps}才接近饱和。
|
||
|
||
\begin{figure}[hbpt]
|
||
\centering
|
||
\includegraphics[width=0.75\textwidth]{chap/figures/allth.png}
|
||
\caption{吞吐量随需求变化图}
|
||
\label{fig:allth}
|
||
\end{figure}
|
||
|
||
\textbf{(3)在不同吞吐量需求下的时延公平性的表现}
|
||
|
||
|
||
在时延的公平性上,与吞吐量情况不同,各种算法的表现具有较大的差异(图\ref{fig:alldl})。随机算法在各种带宽需求上表现都比较差。周期算法在低业务需求时表现较好,随着业务需求的增加迅速升高。贪心算法总体表现较好,在业务需求区间内公平性都保持着低于\SI{25}{ms}的水平。本章的算法总体上呈现出随着业务量增大而上升的状况,在中低业务需求的情况下,在保证时延的公平性上,具有较好的性能,在\SI{2300}{Mbps}的业务需求下,能够比贪心算法的公平性低25\%左右,而在较大吞吐量需求时,为了保证吞吐量,仍然能够控制时延公平性在\SI{30}{ms}以内的水平,考虑到本仿真中星上缓存为40个时隙,本算法在较高业务流量时仍然能够保证大部分业务的正常传输。遗传算法总体与本章的算法在时延公平性上表现接近。
|
||
|
||
\begin{figure}[hbpt]
|
||
\centering
|
||
\includegraphics[width=0.75\textwidth]{chap/figures/dlall.png}
|
||
\caption{时延公平性随需求变化图}
|
||
\label{fig:alldl}
|
||
\end{figure}
|
||
|
||
\subsubsection{复杂度分析}
|
||
|
||
本文使用的DQN算法每一层算法复杂度为
|
||
\begin{equation}
|
||
\mathcal{O}(M_{in}\cdot M_{out})
|
||
\label{eq:OMM}
|
||
\end{equation}
|
||
而在本文共使用了$L$层隐藏层全连接神经网络,输出层为分叉输出所以算法复杂度为式\ref{eq:allC},其中$M$为信道的数量:
|
||
\begin{equation}
|
||
\mathcal{O} (\sum^L M_{in}\cdot M_{out} + M_{L,out}K^2\cdot(M^2+N))
|
||
\label{eq:allC}
|
||
\end{equation}
|
||
|
||
为了作为比较,表\ref{tab:complexity}给出本文使用到的其他方法的时间复杂度和仿真实验中决策的平均时间:
|
||
|
||
\begin{table}[hbpt]
|
||
\centering
|
||
\caption{各算法的平均复杂度}
|
||
\label{tab:complexity}
|
||
\begin{tabular}{ccc}
|
||
\toprule
|
||
算法名称 & 时间复杂度 & 平均决策用时 \\
|
||
\midrule
|
||
周期算法 & $\mathcal{O}(1)$&{3.75}$\mu$s\\
|
||
随机算法 & $\mathcal{O}(1)$&{3.54}$\mu$s \\
|
||
贪心算法 & $\mathcal{O}({NT_{ttl}+N\cdot\log_2NK})$ & 98.76$\mu$s\\
|
||
本文算法 & $\mathcal{O} (\sum^L M_{in}\cdot M_{out} + M_{L,out}K^2\cdot(M^2+N)) $ & 1288$\mu$s \\
|
||
遗传算法 & $\mathcal{O}({PG(K^2+NT_{ttl})})$\supercite{lin2022dynamic} & \SI{311}{ms}\\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
经过之前的实验结果分析可以得知,在各种方法中,遗传算法和本章设计的算法在满足流量不均匀的情况时都能够表现较好,但是在实际的决策中,由于遗传算法每次决策初始化种群并计算适应性函数进行迭代,其算法复杂度非常高,反映到实际的决策时间上, 遗传算法相比其他算法是数量级的差异并不合适面对流量变化迅速的实时决策。而本章的算法在满足流量需求时表现很好,时延公平性方面相比随机等算法也有较大的提升,在实际决策上,决策时间平均在\SI{1}{ms}左右,仍然能够都满足最小的时隙要求,换句话说,本章实现的算法在表现上能够解决遗传算法等启发式算法,但在决策时间上只是遗传算法的$0.3\%$。
|
||
\subsection{本章小结}
|
||
|
||
本章针对卫星通信跳波束资源分配问题中动作空间过大、吞吐量需求与公平性无法兼顾的问题,改进实现了一种多目标双智能体跳波束与信道联合分配方法,该方法结合了多目标优化与多智能体合作训练的方法,在复杂度与目标指标优化之间实现了兼顾。本章设计了适用于此场景的资源分配策略,并详细阐述了DQN算法的原理及实现细节。通过仿真实验,验证了该算法在保持较低的算法时间复杂度的同时,保障了多波束卫星在面对空间流量不均匀场景下的性能表现。 |