*3.2. Maximum Power Point Tracking (MMPT)*

The tracking of the Maximum Power Point is vital to optimize the PV systems, and it is probably the most interesting problem for research. Different techniques have been used to solve this problem, as it can be seen in Figure 4. Some classical techniques include Incremental Conductance and Perturb and Observe. Recent trends show that AI techniques are also used to solve this problem. Metaheuristics and Neural Networks were found as the most used techniques after surveying the literature.

**Figure 4.** Taxonomy of most used IA method for MPPT.

#### 3.2.1. Fuzzy Logic

Traditional Logic [20] is limited to only two values of truth (True and False), this limits its versatility and makes it difficult to model some systems. Fuzzy Logic (FL) [21] is an extension of Traditional Logic. The main benefit of FL is that it can give a true value between 0 and 1. FL is specialized in addressing uncertainty in inputs and obtaining high performance under rapidly changing conditions, such as atmospheric ones. These kinds of techniques can also be used to aid other systems in order to improve their performance. In this section, the most important techniques related to FL are reviewed.

The first implementation focused on MPPT can be found in [22]. This system uses 7 membership functions for each variable with two input variables: error in the power and the change in error; the output inferred by the fuzzy system is the change in duty cycle that controls the pulse width generation block. The main benefit of FL control is that it does not require changes or variations in its membership functions.

In order to evolve these systems, it was necessary to find a method to modify the parameters of the fuzzy systems. In [23], a Fuzzy Controller that is able to perform online parameter autotuning is found. This system used 2 kinds of control. First, a traditional PID control to manage the small deviations and an Adaptive Fuzzy Controller to deal with the larger deviations, since this system is ideal for obtaining rapid responses. A switching function was set to determine the controller to be used. The initial fuzzy controller used triangular-shape functions as membership functions, changing the curve depending on the error. This system reduces the oscillation near the Maximum Power Point, reducing the loss of power.

Another implementation of the adaptive behavior can be found in [24]. This proposal combines Fuzzy Cognitive Networks (FCN) with Fuzzy Logic Control (FLC). FCN is constructed as an extension of another system called Fuzzy Cognitive Maps (FCM) [25]. FCMs are composed of nodes and weighted arcs. Nodes represent the concepts represented, and the arcs represent the causal relationships between them. FCN relies on the knowledge of experts for the description of the nodes and the construction of the graph but does not need an initial estimation of the weights of the arcs. The combination of FLC and FCN makes the system able to track and adapt to any kind of physical variation. A Fuzzy controller needed 12 iterations to reach the same MPP that this algorithm found with 5.

In order to further improve the tracking speed and accuracy of FLC, the classic Open-Circuit Technique [26] is used to find an initial estimation of the MPP voltage. The implemented system showed a good response even under variable atmospheric conditions.

The work in [27] used Type-2 Fuzzy Logic [28], an extension of classical FL [29]. The main feature of Type-2 FL is that membership functions are also fuzzy, and it is used in applications where determining the exact function of a set is difficult [30]. The Type-2 FL functions are threedimensional, they depend on three different parameters, allowing them to directly model and handle uncertainties. The changes in PV power and voltage are set as the input variables, each one using seven membership functions. The simulation showed that the system tracked MPPT even in irradiance and load variation. Oscillations around MPPT are greatly reduced and are useful for rapidly changing conditions. The overall output energy due to the proposed MPPT method was around 27.7%. The implementation and simulation were performed with MATLAB/Simulink simulation studies [31]. Type-2 Fuzzy Logic is also used for MPPT in [27,32–34].

Another important FL extension used in MPPT is the Takagi–Sugeno Fuzzy Model (T-S FM) [35–37], T-S FM [38] is usually used in approximating complex nonlinear systems [39] and is really important due to the fact that they enable a kind of control called parallel distributed control. The results of these systems present better settling time than classical FL, fewer oscillations and accurate output. The tracking is achieved even for abrupt insulation variations. The implementation and simulation are usually conducted with MATLAB.

One of the most popular trends is to use fuzzy logic as a complement of other techniques. In [40], it is used to tune the PID controller parameter. In [41], the fuzzy behavior of the PSO algorithms improves the system. Fuzzy Logic has also been used along with Neural Networks [42–45]. These works demonstrate that this combination improves the original algorithms, improving the results of the fuzzy systems but reducing the data and time needed to train neural networks.

A summary of the Fuzzy Logic methods applied to MPPT can be seen in Table 2.


**Table 2.** Fuzzy Methods for MPPT.

#### 3.2.2. Metaheuristics

Metaheuristics [47] are algorithmic approaches specialized in solving problems that are not possible to directly find the best solution in a feasible amount of time. They will search the solution space in order to identify the best solution that they can find. In this section, the most important metaheuristics applied to this problem are reviewed. These kinds of algorithms can be used alone or with the aid of other algorithms.

One of the most common classifications for metaheuristics [47] is the differentiation between the algorithms that try to imitate the behavior of animals or things of nature (ants, bees, particles, etc.) and the algorithms which are focused on imitating the basis of genetics.

Genetic Algorithms (GA) [48] are one of the most important genetic metaheuristics because of their capacity to find great solutions to many problems, commonly used as a way to improve the performance of other Artificial Intelligence techniques. In [49], GA are used to optimize the training data for an ANN of 5 hidden nodes. The objective of the GA was to produce a smaller and more effective input dataset. The GA is used to remove the unnecessary data, reducing the error at the end of the network training. This technique can be also used with other techniques, as it is independent of the model that is applied afterward. In [50], a GA is used to determine the number of neurons of an ANN. The number of hidden neurons is one of the key problems of optimizing an ANN since it can improve its performance but can also slow its training. Three different objective functions were tried on the GA. The best neural network was found with 5 hidden nodes. In [51], they are used to optimize the membership functions on an FLC system. The chromosomes decode the shape of these functions; the algorithm will try to minimize the quadratic function based on the error between the desired power and the maximum power delivered by the system. The results show faster convergence and a more stable tracking, which leads to reduced oscillations.

Behavior-oriented metaheuristics can also be used to solve MPPT. Particle Swarm Optimization (PSO) [52] is also used for this. Each particle is initialized with a value in the voltage search interval. Each particle is evaluated by the inverse of the PV power; after that, each particle will have its position and velocity updated. Finally, a new evaluation will be performed until all iterations have been carried out. Ref. [53] showed a better performance than other methods, being able to operate even on rapidly changing atmospheric conditions. The work by [54] proposed the use of an Accelerated PSO. This algorithm combines PSO and Permute and Observe to accelerate MPP searching. It also offers a higher convergence speed and better dynamic response compared with PSO.

Another important metaheuristic is the Firefly Algorithm (FA), developed by [55] for solving multimodal problems, and it has also been used to solve MPPT. The algorithm mimics how fireflies interact with each other using their lights. The attractiveness of the light will depend on its brightness and distance. For solving MPPT, the position of the firefly is related to the PV voltage [56]. This algorithm assures fast convergence, with almost zero steady-state oscillations, providing good tracking speed.

Artificial Bee Colony (ABC) [57] is focused on simulating the behavior of honey bees and was used for MPPT in [58,59]. ABC consists of three different kinds of agents: workers, onlookers and scouts. First of all, worker bees go to the food sources, estimate their utility value and dance back in the hive. Every onlooker observes the dances, chooses one of their sources and goes there. Abandoned food sources are located by scouts and are exchanged with the new food sources found by them. The fitness function is set as the generated power when this algorithm is used for MPPT. The algorithm will continue until the solutions do not change. The main advantage of ABC is that it does not need hyper-parameter tuning as in the case of other metaheuristics such as GA. In MPPT, this algorithm provides quick convergence and accuracy in tracking.

Ant Colony Optimization (ACO) [60] is used in [61] for optimizing neural networks in order to solve the MPPT problem more efficiently. The ACO method was adopted in the learning algorithms for adjusting the weights and biases of the neurons in the process of training. The final network had a single hidden layer with 20 nodes. The results show an improvement over the networks which are not optimized and over other traditional methods.

Other metaheuristics have been used for MPPT as can be seen in other reviews, such as [62,63]. A summary of the commented methods can be found in Table 3.

**Table 3.** Metaheuristic Algorithms for MPPT.


#### 3.2.3. Neural Networks

Neural Networks have shown excellent adequacy and high capabilities for complex learning problems and, thus, they are ideal for tracking the Max Power Point. They can be used alone or helped by other methods. The hybrid techniques are usually focused on improving the performance of the neural networks by optimizing the hyper-parameters of the networks since it is a really complex task. In [65], the proposed NN was composed of a single hidden layer of twenty nodes, two inputs and one or two outputs, all of them using tangent sigmoid. Two networks are built, one for approximating the voltage and current curves and the second for estimating the optimal voltage factors. The input of both networks is temperature modules and solar irradiation. The outputs for the first networks are the optimal PV voltage and optimal PV and optimal voltage factor for the second. This method improves the deficiency of traditional algorithms and improves its results.

The work in [49] presents an NN composed of 5 nodes on a single hidden layer but with the novelty of prepossessing of the data via genetic algorithms, using the same inputs (irradiance and temperature) but with only one output: the Voltage at V*MPP*. The model improves the transitional state and reduces the oscillations in the steady state compared with traditional methods.

The approach presented by [66] uses a hyperbolic activation function. The structure is defined by 4 inputs, 1 output and 3 hidden layers with 8,7,7 neurons, respectively. The inputs are composed of three irradiation levels and the temperature. The output is a prediction of the PV voltage corresponding to the MPP; this output goes to a calculation block where it is converted for the traditional P&O algorithm. The training was carried out with a Bayesian regulated back-propagation, which performed better than standard BP. The results provide better efficiency compared with classical methods, even under partial shading. The authors used MATLAB for the implementation and simulations.

The technique presented in [67] combines Fuzzy Logic and Neural Networks, building the system known as the Adaptive Neural Fuzzy System Interface (ANFIS). The ANFIS does not need any prior knowledge of the system like the other NN methods. The structure is composed of 5 layers: inputs (irradiance and temperature), output and three intermediate layers which maintain the fuzzy logic system and provide the output based on the rules. Each input has three membership functions that are generated by the ANFIS method. The results show that the system is efficient to track MPP even under varying weather conditions. The method was designed with MATLAB/Simulink.

The work in [40] provides a different approach using recurrent neural networks along with fuzzy logic. The structure of the networks is composed by a hidden layer, a context layer storing the results of the previous outputs of the hidden layers, the output layer (solar radiation intensity) and the input layer (voltage of PV cell and the current of PV cell at the operational point. With the solar radiation intensity and temperature, the V*MPP* is computed using the mathematical model. Another improvement found in this work is how a metaheuristic is used to optimize the structure and the weights/bias of the RNN. The results show an improvement over other competitive methods.

Another important hybrid is the method in [68], which combines ANN with Support Vector Machines (SVM) [69]. The Course Gaussian Support Vector Machine (CGSVM) is used to improve the dataset before sending the dataset to the neural network. The CGSVM is a type of nonlinear SVM and is usually used on optimization tasks. The NN was composed of 2 inputs (temperature and irradiance), 1 output (PV current) and a single hidden layer with 13 neurons. The results are slightly worse on power than the ANFIS, but the required time was significantly less than the ANFIS.

The work presented in [41] shows a new way of optimizing the ANN for MPPT. The ANN is composed of a 2-3-3-1 structure in order to make real-time applications and to avoid memorization events. The ANN takes input as irradiance and temperature and gives output as maximum voltage and is optimized with a metaheuristic called FPSOGSA. The method compares different activation functions in order to maximize performance. The results are compared with P&O and traditional NN; it is found that the method provides more stability and efficiency. A similar approach is presented in [70]. A PSO algorithm is used to find the best topology, find the best 20 hidden nodes and to optimize the initial weights of the neural network. Two inputs are used (G—level of irradiance and T—temperature), and a single output (predicting power of PV array at MPP). The model proved to be more effective under various weather conditions than other ANN or FLC techniques.

The work in [61] attempts to optimize an ANN using ACO. Using this algorithm for ANN training results in quicker training. Tangent sigmoid is chosen as the activation function. Six different topologies were evaluated in order to find the best structure, the best being a single hidden layer with 20 neurons. Two inputs are transmitted to the ANN, PV array voltage and current. The output is set as the duty cycle (d). The model tracks MPP efficiently even under irradiation changes.

The approach found in [71] uses the concept of Deep Reinforcement Learning (DRL), which tries to implement Reinforcement Learning (RL) through NN. The advantage of RL for MPPT is that RL techniques are model-free, they do not require knowing the behavior of the PV source or predefining its dynamics. A continuous state space is defined, corresponding to the current (I) values. The action space is also continuous, so it contains all the actions that can be applied to generate a change in the system. Finally, the reward function is computed directly proportional to the power, and no prior knowledge about the system is needed to define it. The system uses four networks, one for computing the policy, one for the critic and two called targets that are used to stabilize the learning procedure. The model can learn highly efficient policies from scratch, and the results show higher performance than other models.

With the aim of improving ANFIS, a new hybrid was proposed in [42]. The ANFIS is trained using the BAT algorithm [72]. The use of metaheuristic improves the training of metaheuristic compared with back-propagation; the BAT algorithm provides better convergence, simplicity and faster tracking speed than other techniques. The results show an improvement over standard ANFIS or ANFIS optimized with other metaheuristics such as PSO. Similar work is found in [73], where an ANFIS-CPHO is presented. The Crowded Plant Height Optimization [74] is in charge of training the ANFIS. The results are compared with standard ANFIS and show an increase in the speed and efficiency of the tracker.

A summary of the analyzed models in this section can be found in Table 4.


**Table 4.** Neural Network Models for MPPT.

#### *3.3. Forecasting*

Energy production forecasting has been an important problem, even in traditional systems, and it has been tackled with different techniques, as it can be seen in Figure 5.

In [75], we found a system that uses Support Vector Machines (SVM) [69]. SVM is mostly used for regression. The model uses two different inputs: solar irradiance and environmental temperature, with energy production as the output. This work included the use of a parameter to tune the number of support vectors during the training. The results show a low error, with a Mean Absolute Percentage Error (MAPE) of 0.1143, but it was really intolerant at errors in the input data. The method was implemented using MATLAB. Another approach related with SVM is found in [76]. The authors propose a multi-input support vector. Three different inputs were tested. Only solar power, solar power and solar irradiance combined and finally solar power, temperature and irradiance. The best predictions were made when the third vector was used to train the network with. The model showed better results than analytical methods with a MAPE of 36%, but it was found that it was weak against changes in the climate. The method was implemented using MATLAB.

In [77], a Neural Network was used for Short-Term Forecasting. The input data were composed of the the deviation of load power and temperature of 30 days before the forecast day and the same data of 60 days before and after the forecast day in the previous year. If the forecast day is changed, the neural network needs to be retrained. The network is composed of 9 inputs nodes, 20 hidden nodes and one output neuron. The results show a Mean Absolute Percentage Error (MAPE) of 1.63% on average.

**Figure 5.** Taxonomy of most used IA methods for forecasting.

The work of [78] tries to go further, presenting a neural network of 2 hidden layers, one of 6 nodes and the second with 4. This model has nine inputs (Day, Time, Cloud Cover Index, Air Temperature, Wind speed, Air Humidity, UV index, precipitation and air pressure) and is trained using a hybrid metaheuristic, which combines PSO and GA [79]. This hybrid is faster and more robust than back-propagation for this problem.

Neural Networks have been found to be sensitive to many factors, including the architecture or the initialization of weights. Combining different NNs in an ensemble has been found to be a strategy to reduce these problems. The work of [80] tested different combinations using temperature and solar irradiance as inputs. Every combination was found to be better than using only a single NN. The data were composed of 7300 data from 365 different days. The findings were that the best architecture for forecasting is the one which uses an iterative methodology to find the outputs, forecasting one at a time with a Mean Absolute Error (MAE) of 51.48% and Mean Relative Error (MRE) of 17.24%.

The work in [81] used a fixed methodology, changing activation functions, learning rules and architecture in order to find the best neural network for their dataset. The data were acquired along a period of 70 days, obtaining 11,200 examples. The best network had 1 hidden layer with a Linear Sigmoid Activation Function. The learning rule as Conjugate Gradient [82], which uses second derivatives to determinate the weight update, inputs temperature and photovoltaic power and outputs next-day forecasting of PV power output. The validation study indicates that this network is simple and versatile and can precisely forecast with a minimum MAPE of 0.8655. The experiments were implemented using the NeuroSolutions [83].

Another problem of NN is that training can be slow since back-propagation is highly demanding. For solving this problem, the work in [84] used the extreme learning machine (ELM) technique to train the network. ELM [85] has a faster learning speed while obtaining better generalization performance, and it also optimizes the number of hidden neurons. The system is composed of three networks, one for each kind of weather. The network is trained with the PV output history and the weather history data. Based on the weather report of the next day, the model is chosen to forecast the day-ahead PV. The results show that ELM networks outperformed BP networks with a MAPE of 2.78% in the best case. The experiments were implemented using MATLAB.

Another improvement can be found in [86]; the neural network is aided by a technique known as Wavelet Transform (WT) [87]. This algorithm is specialized in isolating the spikes produced by continuous fluctuations of the PV data. It has two stages: decomposition of the input signal, which is performed before the neural networks, and reconstruction, which is performed with the output of the NN. The model used is a Radial Basic Neural Networks (RBNN) [88], which needs less computation time and is more effective than Back-propagation Neural Networks and takes as input the PV, solar irradiance and temperature of the current hour, twelve hours before and twenty hours before in order to predict the one-hour-ahead power output. The results show that the proposed model outperformed RBNN without WT for hourly PV for the horizon of 12 hours with a MAPE of 2.38% in the best case.

WT is used along other architectures as in [89]. RNNs are probed to be useful in order to predict from time series and WT deals with the fluctuations on the data provided by the meteorological time series obtained from sampling at intervals of 10 min and stored as time series. This combination proved to be able to forecast 2 days ahead more accurately than other Neural Networks.

A recent use of WT is found in [90]. This work presents a hybrid algorithm composed of WT, PSO and RBFNN used to forecast from 1 to 6 hours ahead. The inputs that are used in the model are set as Actual PV, irradiance and temperature. The WT is used to perform an data filtering on the past 15 days before the forecast day. The RBFNN is optimized by the PSO algorithm. The network performed better than the compared methods, with an MAE of 4.22% on average for a 1-hour-ahead forecast, 7.04% for a 3-hour-ahead one and 9.13% for 6-hour- ahead one.

Recurrent Neural Networks are also used in [91]. Deep Recurrent Neural Networks (DRNN), RNNs with many hidden layers, are used to forecast. 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 experiments were 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. The parameters were selected by testing different architectures and choosing the most promising. The models were compared of an FFNN and an RNN of 128 hidden nodes. The results show that CNN performed similarly to LSTM and better than MLP with an MAE of 114.38.

An interesting approach mixing Big Data and Deep Learning is found in [108]. This method was used to next-day-ahead forecast in 30 min intervals. It used a multistep methodology that decomposes the forecasting problem in different subproblems. For the Big Data, Spark Apache was used. The neural Network parameters were searched using the grid search strategy. The best structure was found with 3 hidden layers with between 12 and 32 neurons. The method demonstrated that DL is suitable for big solar data since it has a linear increase in training time and performs better than other methods.

The work of [109] makes use of a new kind of Neural Network, the Dendritic Neuron Network [110], in order to forecast PV power. These kinds of neurons have 4 types of layers: synaptic layer, branch layer, membrane layer and cell-body layer. The input data (temperature and irradiance of the actual moment and the last) are transferred to the synaptic layers where they are converted by the sigmoid function and summarized to the branch layer. The results are transported to the cell-body layer for numerical judgment. This layer will transmit the data thought the axon to other neurons when the data exceed a given threshold. This new kind of network provides higher convergence speed and enhanced fitting ability. The network is also aided by WT. The results show that the model outperformed typical Feed-Forward models with an average MAPE of 10.9, with strong fluctuations and 4.55 on weak fluctuations. The experiments were run using MATLAB.

In Table 5, a summary of the reviewed models is presented.


**Table 5.** Models for forecasting.


#### **Table 5.** *Cont.*

#### *3.4. Parameter Estimation*

Finding the parameters of the PV models is vital to simulate their behavior and to optimize their production. This problem is simplified by finding the unknown parameters in order to optimize the output power. Different techniques, most of them metaheuristics, have been used to solve this problem, as can be seen in Figure 6.

Metaheuristics are the most used techniques to estimate PV parameters. Different kinds of algorithms have been evaluated in recent years. The work in [112] compares different evolutionary algorithms, comparing Genetic Algorithms [48], Particle Swarm Optimization [52] and differential evolution [113]. DE is an evolutionary algorithm similar to Genetic Algorithms but which uses real numbers to codify the problem, this solves the problem of GA when it comes to converging speed. The fitness function was computed as the sum of the absolute errors in current and voltage. The findings showed that the best results were given by DE and the worst ones by GA. The authors also implemented different hybrids: Tabu Search [114] assisted differential evolution to avoid falling in local minimums, PSO assisted DE in which PSO is activated after 5 generations of DE and DE assisted by Tabu Search where DE is used to search for the optimal solution in a subset of the whole search space, while TS is used to move the local search within the global space. These hybrids performed better than the originals and provided more stability. DE assisted TS and provided the best results, and it was the fastest.

In [18], an ABC-based approach is proposed. This method combines Extreme Optimization (EO) with 2 different versions of ABC. EO provides new insights into the optimization of metaheuristics due to the fact that only the worst variables in the suboptimal solutions are selected to be mutated, instead of favoring the good ones; this is provided by the strong localsearch capability of EO. The introduction of EO to ABC is applied when the global optimum is not becoming better for several iterations. The results show that the addition of EO to ABC outperformed other metaheuristics such as PSO on the single-diode model (mean RSME of 1.1678 × <sup>10</sup>−3) and on the double-diode model (mean RSME of 1.1479 × <sup>10</sup>−3). The major drawback is that EO has a higher computation cost than other methods. The experiments were run in MATLAB.

The authors of [115] presented a variant of the Covariance Matrix Adaptation Evolution Strategy. CMA-ES is an efficient derivative-free optimization algorithm. It operates using the 3 typical evolutionary operations (recombination, mutation and selection). The proposed variant combines CMA-ES with 2 strategies that can adjust the evolutionary directions and enrich the population diversity (Anisotropic Eigenvalue Adaptation and Local Search). The results show that the algorithm was competitive in terms of convergence efficiency and accuracy, with a mean RSME of 9.8603 × <sup>10</sup>−<sup>4</sup> and Standard Deviation of 1.6550 × <sup>10</sup>−<sup>17</sup> on the single-diode model and mean RSME of 9.8402 × <sup>10</sup>−<sup>4</sup> and Standard Deviation of 1.3398 × <sup>10</sup>−<sup>12</sup> on the double-diode model. It also had a good balance of exploration and exploitation. The simulation and experiments were implemented with MATLAB.

The Whale Optimization Algorithm is a recent metaheuristic that simulates the hunting behavior of humpback whales. The basic WOA is composed of three consecutive stages: encircling prey, bubble-net attacking and searching for prey. In [116], a variant of WOA is used to estimate the parameters of a PV system. The proposed method, RLWOA, adopts a modified conversion parameter update rule and relies on the Logistic Model to balance between exploration and exploitation. This algorithm mitigates the slow convergence and ease of being trapped in local optima of the original. The results show that RLWOA performed better or at least competitively with standard WOA, other WOA variants and other metaheuristics with a mean RSME of 9.8602 × <sup>10</sup>−<sup>4</sup> on single-diode. The experiments were run in MATLAB.

The work in [117] presents a new optimization method called backtracking search algorithm with competitive learning (CBSA). The principle basis of BSA is composed of 4 parts: the initialization of the population, selection, genetic operators such as mutation or crossover and second selection in order to select the best candidate. The main idea of CBSA is to increase the chance of the backtracking algorithm to jump out of the local optimum by the designed competitive learning machine. Each population is divided in two subgroups, then each subgroup has three different search operations in order to update its individuals. Unlike other metaheuristics, CSBA does not need any extra control parameters. The results show the superiority of CBSA for complex optimization problems with a mean RSME of 9.8602 × <sup>10</sup>−<sup>4</sup> on the single-diode model. The experimentation was performed in MATLAB.

Another interesting metaheuristic is found in [118]. The author presents an advanced version of the Gray Wolf Optimizer [119] applied to parameter estimation. GWO is motivated by gray wolf behavior. Wolves are divided into four categories: Alpha wolves, which are dominant, and beta wolves, which are used to assist alpha wolves in decision making or in other activities. The order given by alpha and beta is followed by the delta wolves. Finally, the omega wolves play the role of scapegoat. The presented method is known as the Intelligent Gray Wolf Optimizer, which incorporates sinusoidal truncated functions as a bridging mechanism and opposition-based learning. The results show that the algorithm was competitive with other optimizers, with a mean error of 4.65 × <sup>10</sup>−<sup>13</sup> on single-diode

mono-crystalline, a mean error of 1.07 × <sup>10</sup>−<sup>12</sup> on double-diode mono-crystalline, a mean error of 8.50 × <sup>10</sup>−<sup>12</sup> on single-diode poly-crystalline and a mean error of 1.95 × <sup>10</sup>−<sup>12</sup> on double-diode poly-crystalline. Additionally, execution time was not compromised.

A hybrid between PSO and GWO is found in [120]. The fundamental principle of this hybridization is to ingrate the social thing capability of PSO with the local search ability of GWO. After performing PSO, each particle position with a certain probability is updated using the average of the three best wolves. This method reduces the drawbacks of PSO, increasing the possibility of the running of local optimums and improving the balance between exploration and exploitation. The results confirm the superiority of PSO–GWO compared with other competitive methods, with an RMSE of 3.06 × <sup>10</sup>−<sup>3</sup> and an MAE of 2.43 × <sup>10</sup>−<sup>3</sup> on a PV module model.

In [121], a variant of the Chicken Swarm Optimization is used to solve this problem. CSO [122] is inspired by the foraging behavior and hierarchy of chicken flocks. In CSO, each chicken is considered a potential solution. The chicken flock is divided into the rooster subflock, hen subflock and chick subflock according to the fitness of each individual. Each group uses a different update mechanism to update its position. The algorithm is upgraded by using a Spiral Movement Strategy. The spiral movement allows each hen to bypass the rooster and explore a wider space instead of being limited to the search space between them. The experimental results show that the algorithm performs better in robustness and accuracy than other metaheuristics with a mean RSME of 9.8602 × <sup>10</sup>−<sup>4</sup> and standard deviation of 2.3517 × <sup>10</sup>−<sup>12</sup> on a single-diode model and a mean RSME of 9.8366 × <sup>10</sup>−<sup>4</sup> and standard deviation of 1.4171 × <sup>10</sup>−<sup>6</sup> on single-diode model.The experimentation was performed in MATLAB.

Another interesting proposal is found in [123]. An Enhanced JAYA (EJAYA) is presented. The basis of the original JAYA [124] algorithm is as follows: After initializing the solutions, the algorithm identifies the best and worst solutions and modifies all the solutions based on them. All of the solutions that have better performance than the originals are kept. This process is repeated until the stop criteria are achieved. EJAYA presents three improvements: A modified evolution operator to increase the probability of approaching the victory. A simple deterministic population resizing to control the convergence rate during the search and a generalized opposition-based learning mechanism to avoid being trapped on local optima. The results indicate that the algorithm can estimate the most accurate model parameters with a mean RSME of 9.8602 × <sup>10</sup>−<sup>4</sup> on a single-diode model and a mean RSME of 9.8248 × <sup>10</sup>−<sup>4</sup> on a double-diode model. It also provided a high computational efficiency among the compared methods.The method was implemented in MATLAB.

The work in [125] presents a Marine Predator Algorithm [126] applied to parameter estimation. The optimization process of MPA is divided into three main phases: The first is in high-velocity ratio or when prey is moving faster than the predator. The second is when both are moving at the same pace and the third is in a low-velocity ratio when the predator is faster than the prey. The algorithm extracted PV parameters in an accurate manner, fast speed, less time of computation and high reliability and robustness with a mean RSME of 7.73 × <sup>10</sup>−<sup>4</sup> on a single-diode for a France Solar cell and a mean RSME of 7.65 × <sup>10</sup>−<sup>4</sup> on double-diode for a France Solar cell. The examination and test occurred via MATLAB.

A novel approach is found in [127] presenting a variant of P system Optimization Algorithms (POAs). POAs are helpful and reliable search techniques that abstract the structure and function of living cells. The proposed Micro-change Field Effect P System is a deeper exploration of the standard POA. The experiments showed that the method can produce solutions of high quality and has great stability with a mean RSME of 9.8606 × <sup>10</sup>−<sup>4</sup> on the single-diode model and a mean RSME of 9.8256 × <sup>10</sup>−<sup>4</sup> on the double-diode model. The method was implemented in MATLAB.

In the Table 6, a summary of the reviewed models is presented.


**Table 6.** Models for parameter estimation. SD: single diode, DD: double diode, MC: monocrystalline, PC: polycrystalline.

#### *3.5. Defects Detection*

Finding defects on the surface of the PV cells is a problem completely related to computer vision. As observed in the bibliography, the most used technique for photographing the images is electroluminescence. The datasets are usually private, but there are some exceptions. We can see in Figure 7 the most used techniques for detecting defects.

**Figure 7.** Most used IA method for defect detection.

Classical approaches as found in [128], which tried to detect defects in the solar modules using image processing techniques. In order to segment the different modules, they used the first derivative of the statistic curve in order to find the division line between each chip. After that, they used another technique, the otsu method, to obtain a binary image. Finally, the algorithm tries to identify the state of the module using the geometry of the resulting image. This algorithm produced interesting results, with a recognition rate of 80% on cracked modules, 95% on fragmented and 99% on good state modules. The recognition was also quite fast. The algorithms were implemented and applied via MATLAB.

Another approach is found in [129]. This method combines the image processing techniques with Support Vector Machines. The dataset featured 13,392 samples of EL images of solar cells. The images are preprocessed in order to reduce spatial noises and to accurately highlight crack pixels in images. After that, binary processing is performed, and finally, the features are extracted from the image. These features are used by different SVMs in order to classify the cells. The results present that the SVM with penalty parameter weighting is the best SVM, with a correct detection rate of 91%, with specificity and accuracy of more than 97%. The experiments were run in MATLAB.

In [130], the author compare Convolutional Neural Networks with SVM. The SVM is trained with data from the ELPV dataset, composed of 2624 EL images of solar cells, obtained by finding the features of the images using different feature descriptors. The CNN used was a pretrained VGG19 with the upper layers changed and trained with the examples. The models were tested with both monocrystalline and polycrystalline modules. The results show that both classifiers were useful for visual inspection, both with an average accuracy of 82.4%. The algorithms were implemented in Python, using Keras for the Neural Network.

The work in [131] presented a similar approach using SVM and CNN. The CNN was composed of two convolutional layers with leaky-relu and max-pooling. The convolutional part was aided by two leaky-relu dense layers and the output layer. The SVM was trained with different features extracted from the images. The dataset was built with 90 images of full-sized commercial modules that were segmented afterward, obtaining 540 cells. The results show similar behavior in both methods, with an accuracy of 98%. The article also tackled unsupervised learning, trying to cluster the images by two features. This resulted in a model that was able to assign the correct label in 66% of cases.The algorithms were implemented in Python, using Tensorflow and OpenCV.

The work found in [132] presents a CNN with 13 convolutional layers, an adaptation of the VGG16 architecture. The dataset was obtained by photographing solar modules of 6 × 12 cells with an EL camera. The network was trained using oversampling and data augmentation in order to reduce the error. The results show that the network performed the best when both oversampling and data augmentation were presented with a Balance Error Rate of 7.73% on binary classification problems of quick convergence. The method was implemented with Keras. The preprocessing was performed with OpenCV.

The authors of [133] present new models that are trained not only with images with cracks but also with corrosion. The images were obtained by photographing modules with the EL technique and performing segmentation afterward, obtaining 5400 images. The models are SVM and CNN. The CNN is composed of two convolutional layers. The SVM parameters are optimized by a grid search. The results show a precision of 99%, an improvement over other methods. The experiments were conducted via Keras and Tensorflow.

A variation of convolutional networks is found in [134]. A multichannel CNN is presented. This network has different convolutional layers for each kind of input. This network also can use inputs of different sizes. After each convolutional layer, a dense layer is applied. Finally, a final dense layer combines all the previous data in order to classify the image. This multichannel CNN improves the feature extraction of single-channel CNNs. The dataset was made by 8301 different EL images of cells. The results show a 96.76% accuracy, much more than the 86% presented by single-channel CNNs. The algorithms were implemented in Python using Keras.

The model presented in [135] is composed of six convolutional layers using different regularization techniques such as batch optimization. The dataset used was the ELPV dataset, with 2624 images. The resulting network is a light architecture that achieved high performance using few parameters with an accuracy of 93%.The experiments were run on Tensorflow.

In order to further improve the results, a new approach is presented in [136]. The authors use Fully Convolutional Neural Networks. An FCNN is a CNN without any dense layer. The model used is the U-net, which has been used previously in biomedical image problems with low data. This dataset was composed of 542 EL images. It is composed of 21 convolutional layers of different sizes. The results show that it was better to accept a slight decrease in the performance in order to improve the speed of the system. The algorithms were implemented in python using Keras and Tensorflow.

Wavelet Transform is used in [137]. This method combines two kinds of WT: Discrete WT and Stationary WT in order to extract textural and edge features from solar cells that have been previously preprocessed. The dataset was composed of 2300 EL images. Finally, two different classifiers are used: An SVM and an FFNN. The best model was the FFNN with 93.6% accuracy, over the 92.6% presented by the SVM.

Another Neural Network used is the Complementary Attention Network in [138]. The CAN is composed of a channel-wise attention subnetwork connected with a spatial attention subnetwork. This CAN can be grouped with any CNN, Fast R CNN [139] being the one chosen by the authors. Two datasets were used, one composed of 2029 images and another of 2129 EL images. The network was used for classification and detection, obtaining an accuracy of 99.17% for classification and a mean average precision of 87.38%. The network was faster and had similar parameter numbers to other commercial methods. The algorithms were implemented using Python.

A very interesting approach is presented in [140]. This method is Deep-Feature-Based, extracting features through convolutional neural networks that are classified afterward for classification algorithms such as SVM, KNN or FNN. The particularity of this system is that it used features from different networks. These features are combined using minimum redundancy and maximum relevance for feature selection. The dataset used was the ELPV dataset, with 2624 images. The selected CNNs for feature extraction are Resnet-50, VGG-16, VGG-19 and DarkNet-19. The best method was found with SVM, selecting 2000 features with an accuracy of 94.52% in two-class classification and 89.63% in four-class classification.

In the Table 7, a summary of the reviewed models is presented.


**Table 7.** Models for detection of faults.

#### **4. Discussion**

In Section 3, the different IA techniques applied are reviewed for each problem by explaining various important works. In this section, a discussion about the state of the art is performed, summarizing the trends of research and some possible new approaches to consider.

The tracking of the Maximum Power Point has been considered in numerous ways, from traditional and simple methods to methods that use complex technology such as neural networks. The most simple methods still have importance, since a large amount of systems do not need complex MPPT algorithms in order to optimize production. The most complex algorithms are used only in the biggest power plants, where the configuration of the PV arrays, and the large amount of them, makes the process of tracking the Maximum Power Point more complex. Comparing the different techniques presented, it is clear that the most used technologies are the Feed-Forward Neural Networks and the FLC systems (Figure 8). Neural Networks perform better than Logic Systems, but they have some flaws. Neural Networks are highly demanding in terms of computational cost compared with FL systems. The need for large amounts of data is an intrinsic problem of Neural Networks, but it is not as important as it used to be thanks to the high availability of data. Another important problem is the complexity in the optimization of the hyper-parameters, since Neural Networks have a large amount of them. The solution has been found by using optimization algorithms, such as metaheuristics. These algorithms can be used to find the best combinations of parameters or even to find the optimal architecture. As we observed, the problem is still regarded nowadays, since there are ways to improve the efficiency and performance of the most complex systems. To fulfill this objective, more of the newest technologies applied in other sectors should be tried, since as it has been confirmed with the previous works that these kinds of algorithms perform really well on this problem. The FL methods and metaheuristics are usually implemented with MATLAB, but Neural Networks can be implemented with Python as well, using libraries such as Tensorflow [141].

**Figure 8.** Different algorithms for each of the problems. (**a**) MPPT; (**b**) forecasting; (**c**) parameter estimation; (**d**) defects detection.

Forecasting is a key problem in PV systems. The estimation of the energy produced by solar plants has been approached as a regression problem in the majority of papers. Due to the availability of data, neural models are highly suitable for solving this problem (Figure 8). The trend is to use the newest neural architectures while optimizing their parameters and their architectures using other methods such as metaheuristics. As observed, an increase in the complexity of the networks improves the results, but this is not the only way of increasing performance. The combination with other systems such as Wavelet Transform increases reliability. Alternative network systems such as Recurrent Networks or Dentritic Networks further improve the results of traditional Neural Networks. This area also has some room for improvement since forecasting is a tricky problem due to its dependence on a large amount of variables. For future research, it would be interesting to test a new combination of parameters, improve the datasets or even try the most innovative technologies that have been used in similar problems. Most of the works are run on MATLAB, but there is an increase in the presence of Python in the latest years due to the Deep Learning Libraries.

Estimating the parameters of the PV models has been conducted with a large number of different algorithms, most of them from the family of metaheuristics (Figure 8). The results are quite similar between them in terms of error (Figure 9); this fact shows that trying to further minimize error is not a worthy effort. The most promising works present a mixture of different metaheuristics, solving the problems or flaws of one metaheuristic by using others. The focus of research should be moved towards finding algorithms with lower computational cost while maintaining the same levels of error. The majority of the methods can be found implemented in MATLAB [141].

**Figure 9.** RMSE of the different models for parameter estimation. (**a**) Single-diode; (**b**) double-diode.

Analyzing the state of modules or cells has always been important for optimizing production since damaged modules are not as productive as they should be. As it seen, this problem has been applied mostly to the cell level, segmenting images previously taken of solar modules. Some author have even presented open datasets in order to test the models with a more regular amount of data. The main reason for this problem is related to its nature. The majority of models are trained with unbalanced datasets since the number of damaged modules is usually considerably smaller than good state modules. Another different way of improving the neural models is using pretrained neural networks such as VGG-19 in order to make use of the patterns found in other datasets. Even with their problems, in the bibliography, a considerable amount of models are presented, and they obtain good results (Figure 10); the Convolutional Neural Networks being the most used ones (Figure 8). However, there is a lot to do in this area, mostly, all of the models only use electroluminescence images; the utilization of other techniques such as thermography could bring more information and better results to the models. Another interesting new approach could be fixing the unbalance in the data. Some studies have tried to use simple methods such as flips or rotations, but it is necessary to implement more complex algorithms to generate images that can be used to better train the models. The deep learning methods are mostly implemented with Tensorflow, and OpenCV is usually used for preprocessing the images. MATLAB is used for traditional methods.

**Figure 10.** Accuracy of the different models for detection.

#### **5. Conclusions**

In this article, the relationship between Artificial Intelligence and Photovoltaic Systems is explained. Numerous problems in this sector can be solved with the use of AI techniques. These techniques present better performance than traditional methods.

Different techniques are applied to the MPPT problem, Neural Networks being the ones which provided better results, even considering their limitations such as high computational requirements or the need for large amounts of data, other approaches involve Fuzzy Logic and Metaheuristics. The forecasting problem is key for PV installations, different models have been created to solve this problem, most of them related to Artificial Neural Networks. These models are usually aided by other algorithms such as metaheuristics to optimize the architecture or the hyperparameters. The estimation of model parameters is also a really important problem, a large variety of metaheuristics have been used to solve this problem with notably good results in terms of error and efficiency. The detection of faults in PV modules has been proved to be vital for the maintenance of PV installations. This is mostly conducted at the cell level and usually only with electroluminescence images. Convolutional Neural Networks are the most used technology for the classification of images, but they need to be empowered with some techniques such as Data Augmentation or Knowledge Transfer.

Research in these areas is not finished, and it is still a hot topic nowadays as it can be seen from the number of publications in recent years; the ways of improving performance and efficiency are still being researched to adapt to every Photovoltaic System. It is observed that one of the most important issues is the quality and quantity of the data. Machine Learning methods need big amounts of data to be able to find patterns for predicting. This issue is even more critical in Deep Learning methods. This research group is addressing this issue for defect detection, creating synthetic EL images of photovoltaic cells to obtain more examples to train models. These images could even be used in other problems of PV systems.

**Author Contributions:** Conceptualization, H.F.M.R. and L.H.-C.; methodology, H.F.M.R., V.C.-P. and M.Á.G.R.; validation, H.F.M.R., V.A.G. and A.R.P.; writing—original draft preparation, H.F.M.R.; writing—review and editing, H.F.M.R. , L.H.-C., V.C.-P. and R.T.M.; project administration, L.H.-C. All authors have read and agreed to the published version of the manuscript.

**Funding:** This study was supported by the Universidad the Valladolid with the predoctoral contracts of 2020, cofunded by Santander Bank. It was also supported by Cátedra CeI Caja Rural de Soria.

**Institutional Review Board Statement:** Not applicable.

**Informed Consent Statement:** Not applicable.

**Data Availability Statement:** Not applicable.

**Acknowledgments:** This study was also supported by the Universidad de Valladolid with ERAS-MUS+ KA-107. We also appreciate the help of other members of our departments.

**Conflicts of Interest:** The funders had no role in the design of the study; in the collection, analyses, or interpretation of data; in the writing of the manuscript; or in the decision to publish the results.
