Wind Turbine Power Curves Based on the Weibull Cumulative Distribution Function

: The representation of a wind turbine power curve by means of the cumulative distribution function of a Weibull distribution is investigated in this paper, after having observed the similarity between such a function and real WT power curves. The behavior of wind speed is generally accepted to be described by means of Weibull distributions, and this fact allows researchers to know the frequency of the different wind speeds. However, the proposal of this work consists of using these functions in a different way. The goal is to use Weibull functions for representing wind speed against wind power, and due to this, it must be clear that the interpretation is quite different. This way, the resulting functions cannot be considered as Weibull distributions, but only as Weibull functions used for the modeling of WT power curves. A comparison with simulations carried out by assuming logistic functions as power curves is presented. The reason for using logistic functions for this validation is that they are very good approximations, while the reasons for proposing the use of Weibull functions are that they are continuous, simpler than logistic functions and offer similar results. Additionally, an explanation about a software package has been discussed, which makes it easy to obtain Weibull functions for ﬁtting WT power curves.


Introduction
The development of wind energy has been increasing all over the world during the last few decades, and mainly since the end of last century. Countries like Germany, Denmark, the United States and Spain, first, and others such as India or China, some years later, began to promote wind energy power plants as a part of their electrical power systems. The use of such a clean energy resource can be an incentive for multiple countries to get a high level of energy independence. Additionally, the reduction of greenhouse gas emissions encourages many of them to use renewables and, in particular, wind [1] and solar (photovoltaic) [2] energy. This is especially relevant because of its undoubted ecological aspect.
This development goes hand in hand with its corresponding research, and a part of this research is the adequate use of wind turbine (WT) power curves, i.e., curves relating wind speed at hub height and wind power delivered by the WT. The WT power curves are generally provided by WT manufacturers as graphs where their points can be identified by pairs of the mentioned values. They are calibrated under certain requirements given by the International Electrotechnical Commission [3]. Figure 1 presented in [3] allows researchers to check the variability and uncertainty of such curves.
In most calculation procedures, it is not easy to deal with such a degree of uncertainty, and more deterministic functions are needed. The WT power curves are used in different calculation algorithms, especially when the users have a certain knowledge about wind speed, and the corresponding power value is needed. An example of this is load flow analysis in those electrical power systems where wind farms (WF) account for an important part of the load. More specifically, in probabilistic load flow (PLF) analysis, with the help of Monte Carlo (MC) simulations, such operations must be done repeatedly.
In the literature, there are several proposals for WT power curve models. They have frequently been represented by means of different groups of functions, either piece-wise or continuous [4,5]. Among continuous ones, logistic functions [6][7][8] have been very popular. Continuous representations of power curves seem to be advantageous when they must be included in algorithms with a very high number of operations, where power values have to be deduced from wind speeds. For instance, when MC simulations are needed in PLF analysis, the use of continuous functions can simplify operations [9,10]. Logistic functions have proven to be very accurate according to simulations validated with the help of power curves given by several manufacturers [7].
Weibull distributions have often been used for representing the behavior of wind speed in a cumulative way. So far, the Weibull distribution is used in applications such as synthetic generation of wind speed time series [11] and prediction of wind power/speed time series [12]. The fact that wind speed in a given location can be cumulatively modeled by means of such a distribution has been generally accepted. The shape of those curves is of interest in this work due to its similarity with WT power curves. This observation induces researchers to think about the possibility of fitting Weibull functions, by means of finding their appropriate parameters, to WT power curves. To the best of the authors' knowledge, this is the first attempt to accommodate the power curve feature into a form of Weibull CDF expressions.
Summarizing, it can be said that logistic approaches achieve a high degree of accuracy, although they require several parameters and a certain degree of complexity during the fitting process. A further step consists of simplifying such a process, i.e., of achieving functions that provide a similar degree of accuracy, but easier to deal with. This is the case of functions such as Weibull ones, simpler than the logistic functions, continuous and very accurate, as well. As logistic functions offer very good results, they have been used for the validation process.
Finally, there is another reason for using Weibull functions when modeling WT power curves, and that has to do with WF power curves. The consideration that a WF power curve consist of the sum of its WT power curves is very simple. In general, due to some aerodynamic processes such as the wake effect, obtaining a WF power curve from their WT power curves generally requires more complex operations [13,14]. However, these operations can be simplified by using Weibull functions, as will be explained.
In the rest of the paper, the procedure is explained for obtaining WT power curves based on the Weibull CDF. The symbols used in the following sections are shown in Table 1.

Weibull CDF Model
The CDF of the Weibull distribution [15,16] is expressed as: where F(v) represents the CDF of the wind speed series, k is the shape parameter and C is the scale parameter. Following the proposed analogy, the power generated by a WT, P, as a function of the wind speed at hub height, v, can be expressed as: where P max is the maximum WT power.
The parameters of the Weibull distribution can be obtained from the data given by the manufacturer, by interpreting the power values as frequencies. The procedure for wind speed series against frequencies can be read in [17] and is briefly explained in the following lines.
With the double logarithmic action on both sides of Equation (2), it can be operated to be written as: In order to simplify the process, the values of power, P, can be normalized, i.e., the process is presented in per unit values (p.u.).
The range of values of P, [P min , P max ], can be transformed into the interval [0, 1], according to Equation (4).
In the case of wind power curves, P min can be assumed to equal zero, because it is the minimum value for the wind, since dealing with negative values does not make any sense.
Equation (5) can be represented in the form of a straight line, as illustrated in Figure 1: where y = log(− log(1 − p)), x = log(v), m = k and b = −k · log(C). By solving Equation (5), the parameters k and C can be calculated. With the known values of k and C, the relationship between p and v is given by Equation (7).
which is equal to Equation (1) with the only difference that F(v) has been changed to p.
Finally, the wind power values can be reconstructed within their actual range with the denormalization process shown in Equation (2), and this constitutes the final proposal for the power curve expression.

Wake Analysis
The procedure presented in Section 2 allows researchers to get a very good approximation for representing WT power curves. It is simple, and it is a given by a continuous function; this means it is easy to implement in algorithms that require operating with such data. However, the most common case of calculations consists of having to operate with WF power curves instead of WT power curves.
A well-known model for calculation of WF power curves is proposed in [13], based on the Jensen model. In [18,19], it is discussed how this model is useful in wake effect simulations in WF power curves. Li et al. [13] proposed a model for a WF power curve by accumulating all WTs in the farm. This WF power is equivalent to the total power generated by m rows, n column layout and d spacing of WTs between rows and columns in the WF, although the wind direction parameter is not considered in the model. Assuming these conditions and considering WT thrust coefficient C T , the Wale decay constant K w , the distance between WTs d and the rotor diameter of WTs D, the wake coefficient (ξ) can be calculated with: (8) as discussed in [18].
In the mentioned paper [13], Li et al. proposed a model in which this wake coefficient is used to estimate the total power generated in the WF. A similar operation to that given by (2) permits calculating the total wind power produced in the WF with (9). where: ξ w is the mean value of the coefficient of mWTs in a column, and the mean values of the sequence are 1, ξ, ξ 2 , ξ 3 , ..., ξ m−1 , as shown in Equation (10). Similar to the [13] and [20] models, the power generated by any of the WTs can be calculated with Equation (2), when v is replaced by ξ w v, where ξ w is the wake effect coefficient experienced by corresponding WT.
According to the information given in this section and in Section 2, a case study is presented in Section 4.

Case Study
The same WTs as in [21] have been simulated with the proposed Weibull CDF model. The performance of 4P-OP, 4P-DP, 4P-DS and 3P-DPalong with other piecewise models was already presented in [7]. In the case study proposed here, shape and scale parameters have been deduced for all WTs, with the constraint that they must satisfy Equation (5). The values obtained have been tabulated in Table 2. Furthermore, a comparison of errors made by means of the proposed model with those made by using the other models is expressed in terms of root mean square error (RMSE) and mean absolute error (MAE) in Tables 3 and 4, respectively. These error measures are defined in Equations (11) and (12): where N is the number of calculated values, P i the calculated power according to the Weibull CDF proposed function and P s i the specified power, i.e., the value given by the manufacturer. Figures 2-7 show the curves fitted with the proposed and 4P-OP models for all power curves discussed in the case study.

Future Scope
The proposed approach consists of using the known Weibull CDF expression to fit a WT power curve, but keeping in mind that the fitted WT power curve expression is not a CDF equation.
The methodology proposed in the article is based on a graphical method to estimate the 'k' and 'C' values of a Weibull distribution. A sound comparison of such methods can be found in [22][23][24], containing various methodologies including the maximum likelihood estimation (MLE), the method of moments (MOM) and the least squares method (LSM). These methods have been derived and simplified for Weibull distribution parameter estimations. Though these derivations cannot be directly applicable for fitting the WT power curves, a few modifications the in methodologies can make it applicable. In order to understand the scope for improvements, a trial and error method is used to estimate the optimum values of the 'k' and 'C' parameters for the mentioned WTs. Consider the example of the Vestas V80 WT. With the proposed methodology, the obtained 'k' and 'C' values are 4.6256 and 9.3890, respectively. Considering these values as a reference, all values of 'k' in the range from 3-5 and those of 'C' in the range from 8-10 at an interval of 0.01 are used to fit the WT power curves on a trail and error basis with Equation (7). The optimum parameter values for all WTs for which the minimum error arises are noted in Table 5, and the corresponding error values are shown in Table 6. These best case values of 'k' and 'C' ensure the possibility of the improvement in the proposed methodology.

Conclusions
The proposal of this paper consists of fitting WT power curves to Weibull CDF expressions. Shape and scale parameters have been deduced for a given group of WTs, and results have been compared with those obtained by means of several logistic functions proposed in the literature. This article concludes that the proposed function can be used in achieving accuracy in the wind power curve fitting process with a comparatively less complex approach. The proposed function shows comparable accuracy with three and four parameter logistic functions. Further investigation into Weibull CDFs, parameter estimation techniques and corresponding improvement in curve fitting accuracy can motivate the use of the proposed function. Further, a software package has been included in Appendix A, which makes it easy to obtain Weibull functions for fitting WT power curves.

Conflicts of Interest:
The authors declare no conflict of interest.

Abbreviations
The following abbreviations are used in this manuscript: In this Appendix, a software package is presented that makes it easy to obtain Weibull functions for fitting WT power curves.
One of the advantages of the package is that it allows using the graph obtained by the manufacturer's data as an input, while the output is the continuous function that fits that curve. In such a study, R users will have a software tool that makes it easier for the use of power curves. The only thing a researcher will need is to have a set of pairs of points (wind speed, generated power), and the package will do its work and will provide a continuous function, based either on a logistic approximation [7] or a Weibull cumulative distribution function (CDF).

Appendix A.2. Overview of WindCurves
WindCurves [25] is used as a tool to fit WT power curves. As mentioned in the previous section, it can be useful for researchers, data analysts/scientists, practitioners, statisticians and students working on WT power curves. The most salient features of WindCurves are the following:

1.
It facilitates fitting the WT power curve with the Weibull CDF, the logistic function [7] and user-defined techniques. The user-defined techniques include a power curve fitting technique that has to be compared with the performance of the above-mentioned default methods. In other words, this tool can be utilized as a test bench on a similar principle as 'imputetTestbench' [26,27] to compare the performance of distinct WT power curve fitting techniques.

2.
It provides the visualization, information in the form of parametric equations and a comparison of fitted WT power curves in term of various error measures including RMSE, MAE and MAPE. Other user-defined error measures can be added in the comparison.

3.
Datasets [21] on the power curves of the WT from four major manufacturers are available in the package: Siemens, Vestas, REpower and Nordex. The use of such datasets ensures the comparison study within an industry standard. These datasets represent wind WT power output in 'kW' against wind speed in 'm/s'.

4.
It provides a feature to extract/capture wind speed versus generated wind power discrete points from power curve images. It works on a similar principle as the 'digitize' package [28], but in updated form, more precisely for wind power curves along with a few additional features.
The primary function is 'fitcurve()', which is used to fit the power curve with various curve fitting techniques. The 'validatecurve()' function is used to compare the performance of curve fitting techniques operated in the 'fitcurve()' function, and 'fitcurve_plot()' (an S3method function) provides a plotting option to demonstrate how accurately the power curves are fitted. The above-mentioned sample dataset [21] of the WT power curve is in the 'pcurves()' function. The remaining function, 'img2points()', is used to extract discrete values of wind speed (in m/s) and corresponding generated wind power (in kW) from a power curve image. The dependencies include additional packages for graphing (grid [29], grDevices [29], graphics [29] and readbitmap [30]), statistical analysis (stats [29]) and the standard tool (methods [29]). The details of these functions are described below.
The 'fitcurve()' function fits the power curves for given discrete values of wind speed and corresponding generated power. These values are accepted in the form of the data frame object having two columns, wind speed and generated power, respectively. The default methods of wind curve fitting included in 'fitcurve()' are the Weibull CDF and logistic function [7] methods. These methods have shown better accuracy in fitting the power curves in comparison to various piece-wise and other contemporary methods. The shape of a WT power curve is very similar to the shape of some CDFs. When using the Weibull CDF, a good approach is obtained by estimating two of the three parameters of a Weibull distribution, i.e., shape and scale parameters, to fit a WT power curve by means of such a function; whereas, in the logistic function, a three-parameter function obtained with the 'stats' [29] package is used. Although only two methods are used in the function, these default methods are very efficient in fitting WT power curves. As noted below, the additional method can be added as needed. The 'fitcurve()' function has the following arguments: fitcurve(data, MethodPath, MethodName) data : A data frame object that will be evaluated. The input object is a dataset in the form of data frame having two columns, wind speed and its corresponding generated power. The example in the documentation uses the wind speed and wind power generated by the 'Nordex N90' WT [21], which is also available in 'WindCurves' in the 'pcurves' dataset. MethodPath : A character string for the sourced path of the user-defined function that includes a function passed to methods. This path can be absolute or relative within the working directory for the current R session. The 'fitcurve()' function uses the sourced path and adds the user-defined curve fitting function to the global environment. MethodName : A character string that represents the name for the user-defined function, which is added in the 'fitcurve()' function through the 'MethodPath' argument.
Considering the default values of the above arguments, the 'fitcurve()' function returns the fitted model of the Weibull CDF and logistic functions with the corresponding calculated parameters and the fitted WT power curve values. library(WindCurves) data(pcurves) s <-pcurves$Speed p <-pcurves$'Nordex N90' da <-data.frame(s,p)  Apart from this, the 'validatecurve()' function presents the accuracy of curve fitting methods compared to the object generated by the 'fitcurve()' function. This function returns the comparison of different curve fitting methods with various error metrics. The default error metrics available in the 'validatecurve()' function are root-mean-squared error (RMSE), mean absolute error (MAE), mean absolute percent error (MAPE), R squared values (R2) and correlation coefficients (COR). Apart from these, the additional error metrics can be added in the 'validatecurve()' analysis as user-supplied functions using the 'MethodPath' and 'MethodName' arguments. These arguments are similar to the 'MethodPath' and 'MethodName' arguments used in the 'fitcurve()' function, except for their intention to include new error metrics in the analysis. Considering the default values for the input arguments, the 'validatecurve()' function returns the comparison of the fitted wind curve in terms of distinct error metrics as follows. Generally, WT manufacturers provide the power curves in the form of graphs, and manual ruler-based approach has been used to extract the wind speed and corresponding power values from the curve. A similar approach is exercised while replicating the power curves from research articles, books or digital manuals. In order to minimize these efforts, 'WindCurves' provides the 'img2points()' function, which eases the process of extracting discrete WT power curve points from a power curve image. The 'img2points()' function works on a similar principal of the 'digitize' package [28], but designed more specifically for WT power curves fitting with additional features. The 'img2points()' function has the following arguments: imagePath' : A character string for the path of an image of a power curve from which discrete values have to be extracted. This path can be absolute or relative within the working directory for the current R session. The 'img2points()' function uses this path and allows the user to select the desired points on the curve image. n : An integer that represents the number of points to be captured on the curve image. The default value of the argument is fixed to 15.
The procedure to use the 'img2points()' function is as follows: This function will import the desired image in the viewer panel and ask the user to locate two points on the X-axis and Y-axis of each of power curve image. Furthermore, it will ask the user to provide the actual values of the located four points on the image. The selection of any two points on each axis will work, but it is desired to select the extreme endpoints (with known values) of the curve image.
With these values, the 'img2points()' function maps the curve image and asks the user to point to 'n' points on the mapped image. Eventually, this function returns a data frame with two columns, wind speed, and generated power, that can be directly processed with the 'fitcurve()' function.
The 'img2points()' function operates similarly and as accurately as the 'digitize' package [28]. As discussed in [28], the performance of the 'digitize' package gets deflected for the inclined input images. For such an inclined image, the points extracted from the curve are found to be deflected from its expected positions. The 'img2points()' function tackles such situations internally and retains the image with zero inclination in the X-and Y-axes. Eventually, this provides higher accuracy in extracting the discrete power curve points. Furthermore, in several cases, when the image is highly inclined and after relocating it to zero inclination of axes, the initial mapping of extreme ends of axes varies slightly and may produce a minute error in the system. Hence, in such cases, the 'img2points()' function asks the user to make the decision whether to map the extreme ends of axes again. The user can observe the deviation in mapping and accordingly decide whether to map the axes' points again.

Appendix A.3. Demonstration of 'WindCurves'
This example demonstrates how 'WindCurves' can be used as a useful tool for analyzing and fitting the WT power curves. The objective of this demonstration is to become aware of the procedures to be followed when using the 'WindCurves' package to fit the WT power curves. In an earlier section, the 'Nordex N90' dataset was fitted, whereas in this section, the discrete values of the power curve were extracted from the curve image shown in Figure A1.  In this example, the following addition sample error metric 'error()' (which returns the RSME values) is added in the study, and corresponding fitted curves can be plotted as shown in Figure A4.   The R package 'WindCurves' aims to enhance and speed up the research activities in the field of wind energy. The proposed package is quick and requires very little effort while working on WT power curves. This preliminary form of the package has included the Weibull CDF and logistic function methods, showing very promising results. Furthermore, it provides the provision to compare user-defined methods. The authors are looking positively towards encouraging researchers to contribute to this package for the betterment of our ecology systems.