## 3 Fast Channel Information Prediction Based Random Forest
### CC Allocation Algorithm for Energy-Efficient Optimization  
The premise of executing the RB and power allocation algorithm ERPA in Section 4.1 is to assume that the user's CC allocation is known and the allocation scheme \(a\) of the CCs in the original energy-efficient optimization problem \(P_{2}\) still needs to be further determined. To this end, the CC allocation algorithm combining iterative pruning and avoiding frequent handover of narrowband users is proposed and this CC allocation algorithm is defined as a DDJBNBC algorithm. The CC set \(\mathbb{C}_{k}\) allocated to each user is randomly generated in the interval [1; 5]. In order to ensure that the CCs used by the users can satisfy the constraints of their carrier aggregation capabilities and energy efficiency requirements, each iteration will search for CCs that do not satisfy the requirements and remove them. The criterion for deleting CC is that when \(|\mathbb{C}_{k}|>C_{k}\), and Formula (26) is satisfied, then delete the corresponding CC:  
\[n^{\prime},\ k^{\prime}=argmax\left\{E_{n,k}=\frac{R_{k}}{\sum_{n\in\mathbb{C} _{k}-\ n^{\prime\prime}}\sum_{m}\sum_{j}P_{n,m}},\forall n\in\mathbb{C}_{k}-\ n^{ \prime\prime},k\in K_{del}\right\} \tag{26}\]  
where \(K_{del}=\left\{\ k|\ \sum_{n=1}^{N}\eta_{n}^{k}>C_{k}\right\}\) represents the set of users that do not satisfy the limit conditions of carrier aggregation capability; \(E_{n,k}\) indicates that the component carrier assigned to user \(k\) does not contain the energy efficiency of \(n^{\prime\prime}\) and \(n^{\prime\prime}\) is component carrier to be deleted. The component carrier and user pair \(n^{\prime},\ k^{\prime}\) are obtained according to Equation (26), from the CC set \(\mathbb{C}_{k}\) delete the carrier \(n^{\prime}\) and update \(\mathbb{C}_{k}\),\(\mathbb{C}_{k}=\mathbb{C}_{k}-\ n^{\prime}\). Repeat the iteration until all the constraints are satisfied. After all the users are allocated CCs that satisfy their carrier aggregation capabilities, in the next scheduling time slot, as broadband users can use all CCs that meet their aggregation capabilities, while narrowband users can only be allocated one CC, when broadband users need to aggregate narrowband users' CC that the CC is using, the CC on the narrowband user may need to be switched to other CCs, so the frequent CC switching of the narrowband user will cause a lot of signal overhead and energy consumption, resulting in reduced system energy efficiency. In order to balance the signal overhead and energy consumption, in the next scheduling time slot, firstly keep the original CC allocation scheme unchanged, evaluate whether the CC needs to be switched for each narrowband user, and calculate the energy efficiency obtained by each narrowband user in the previous scheduling time slot; if the obtained energy efficiency is less than or equal to the energy efficiency threshold (EE\({}_{th}\)) set in advance, switch the working CC of the narrowband user, otherwise the narrowband user keeps the original working CC unchanged. The switching criteria are as follows:  
\[\left\{ \begin{aligned} &\mathrm{EE}_{k}^{t}\leq\mathrm{EE}_{th}\\ &\mathrm{EE}_{k}^{t}=\frac{B_{\mathrm{RB}}\log_{2}\left(1+\eta_{n }^{k,j}(t-1)\gamma_{n,m}^{k,j}(t-1)\right)}{P_{n,m}^{k,j}(t-1)}\ \mathrm{k}\in K_{1}=\left\{\ k|\ \sum_{n\in\mathbb{C}_{k}}\sum_{j=1}^{J}\chi_{n}^{k,j}=1\right\}\end{aligned} \right. \tag{27}\]  
where \(K_{1}\) is the set of narrowband users and \(\mathrm{EE}_{k}^{t}\) is the energy efficiency in time slot t-1 of narrowband user \(k\) calculated at time slot t. First, determine the CC set of narrowband users as \(\left\{m(k)_{pre},\forall k\in K_{1}\right\}\). If \(\mathrm{EE}_{k}^{t}\leq\mathrm{EE}_{th}\), the narrowband user switches CC, the CC set of narrowband users is updated to \(m(k)_{update}\), then the narrowband user set in time slot t is \(m(k)_{new}\leftarrow m(k)_{update}\); otherwise, the narrowband user keeps the working CC in the last scheduled time slot unchanged, \(m(k)_{new}\leftarrow m(k)_{pre}\).