# Applications of Artificial Intelligence to Photovoltaic Systems: A Review
## 3 Artificial Intelligence Applied to PV Systems
### Forecasting
These networks are capable of representing complex functions more efficiently than RNNs. The input data are composed of high-resolution time series, which are preprocessed and normalized to obtain a high-resolution time-series dataset of four different days. The architecture used was a DRNN with Long Short-Term Memory (LSMT) [92] units with two hidden layers of 35 neurons. Other models showed lower accuracies and more bias error than the proposed method that obtained an RMSE of 0.086. The experiments were implemented using MATLAB and the Keras library (now on tensorflow) in Python. Another RNN method is found in [93]. The authors compared 5 different architectures of RNN: A basic LSTM, an LSTM with the window technique, an LSTM with time steps, an LSTM with memory between batches and stacked LSTMs with memory between batches. Two datasets of different cities were used to test the 3 models. The results show the third proposal with an RMSE of 82.15 in the first dataset and an RMSE of 136.87 in the second, which uses prior time steps in the PV series as inputs, is the most accurate and reliable, even compared with other methods such as ANN. The experiments were implemented using Keras. The authors of [94] present an interesting modification of RNN. This work used the networks know as Echo State Network [95]. ESN presented a dynamical reservoir instead of the traditional hidden layers of RNN. Their main advantage is that only the output weights need to be trained since the reservoir and input ones are random. These networks can obtain better results than typical RNN. A restricted Boltzmann machine (RBM) [96] and principal component analysis (PCA) [97] are used in order to determine the number of reservoirs and inputs. The network parameters are found by a DFP Quasi-Newton algorithm [98]. Compared with other PV forecasting methods, the results show that the proposed model could outperform other forecasting systems with a MAPE of 0.00195%. A complex hybrid is found in [99]. This system uses NN aided by different algorithms trained on data obtained during a year. Random Forest (RF) [100] is used to rank the different factors that affect PV in order to eliminate the less important ones. This importance degree, computed by RF, is transferred to Improved Gray Ideal Value Approximation (IGIVA) [101] as weights to determine the similar days of different climates type. The objective of this is to improve the quality of datasets. After that, the original sequence is decomposed by Complementary Ensemble Empirical Mode Decomposition (CEEMD) [102] to reduce the fluctuation of the original data. Finally, the neural network is optimized by a modification of PSO known as dynamic inertial factor particle swarm optimization (DIFPSO) [103; 104]. The proposed model reduced training time and improved the forecasting accuracy with an MAE of 2.84 on sunny days, 10.12 on cloudy days and 13.01 on rainy or snowy days. Another interesting approach is the Neuro-Fuzzy hybrid found in [105]. Fuzzy Logic is applied as a filter to the input data obtained in the energy production and weather forecast for 12 months (day, irradiance, temperature, humidity, pressure, wind speed and cloud clover) in order to speed up the system. The neural structure is composed of 7 inputs, 2 hidden layers of 9 and 5 nodes, respectively, and input. The network is trained by BP aided by a combination of PSO and GA, known as Genetic Swarm Optimization [106]. This method improved convergence speed and the predictive performance over other hourly forecast methods. The experimentswere implemented using MATLAB Convolutional Neural Networks have also been applied to time-series data since they are able to learn filters that represent repeated patterns in the data without needing any prior knowledge. They also work well with noisy data. In [107], CNNs are applied for forecasting PV power using Solar Data and Electricity Data as inputs. The CNNs used the ReLu activation function, Adam optimizer and dropout to avoid overfitting.