## 3 Problem Solution Using Adaptive Learning Artificial Neural Network  
Artificial neural networks (ANNs) are constructed using computational functions known as neurons (Figure 3). ANNs' architectures include feedforward neural networks and feed-backward or recurrent neural networks. In feedforward-based artificial neural network (FANN), the neurons are arranged in layers with non-cycled connections between the layers [14] (see Figure 3). The first-layer neurons and the last-layer neurons in FANN represent the input and output variables of the function that we are going to approximate. Also, between the first layer and the last layer neurons in the network (i.e., the input and the output layer), there exist a number of hidden layers with weighted connections, which determine how the FANN performs. The output of the neuron in the hidden layer and the last layer are often fed into an activation function (e.g., sigmoid, linear and stepwise functions, etc.) to restrict the output value of the neurons to a certain finite value. Figure 3: Feedforward artificial neural network. FANN employs function approximation by learning from the input and output variables (or the training examples), which describe how the function works. Then it adjusts its internal network architecture and the connection weights to produce the same output given in the training examples so that, when FANN is given new examples or input variables, it will produce a correct output for them. However, FANN has the limitation that it can only learn the input-output mapping of the function, which does not change with time [15]. In the C-RAN architecture depicted in Figure 1, the function we are trying to approximate does change over time. This is due to the fact that mobile front-haul traffic transmits via XGS-PON system exhibits a high degree of temporal variation [8]. In order to make our FANN network capable of approximating the changing behavior of this function, we introduce an adaptive learning approach to train the FANN network. In this approach, we update the learning set (i.e., the set containing the training and testing examples) periodically with a new set after receiving the last report within the BBU processing cycle (note: we assume the length of the learning set to be less than one BBU processing time cycle with one report time i.e., \(R_{T-1}=~{}R_{12}\), when \(T=13\) reports). To generate the new set, we update the existing set by adding the newest report received at the end of the BBU processing cycle and removing the oldest report received form it as illustrated in Figure 4. By doing this, we guarantee that after every BBU processing cycle, the overall learning set will be completely updated with a new instance of training examples of ONU reports. The goal behind using this adaptive learning method is to allow the FANN module to adjust its parameters during the learning process to capture the long-term information regarding the input traffic. This also allows the module to ignore the oldest training examples since they are irrelevant to the current actual ONU input traffic load. This minimizes the processing time and saves OLT system memory. To solve the report estimation problem mentioned in Section 2, we first train the FANN module to learn the input-output mapping of the function \(f(R_{T-1}^{j}\), \(R_{T-2}^{j}\), \(R_{T-3}^{j}\)\(\ldots\)\(\ldots\)\(\ldots\)\(R_{0}^{j})\) to an appropriate degree of accuracy or desired training error we want (note: in this paper we set a higher degree of accuracy by letting the desired training error to be equal to \(10^{-7}\) to guarantee that the prediction process will not introduce additional packet loss rate in the front-haul network). After successfully learning the function mapping, we run the trained FANN model with the set of \(R_{T}^{j}\) (\(T\): total number of reports during the training) as inputs to predict the upcoming report \(\hat{R}_{T+1}^{j}\) for each ONU after training. Then we use the predicted value of these ONU reports to calculate and assign the final grants for the network.