<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article">
 <front>
  <journal-meta>
   <journal-id journal-id-type="publisher-id">
    jpee
   </journal-id>
   <journal-title-group>
    <journal-title>
     Journal of Power and Energy Engineering
    </journal-title>
   </journal-title-group>
   <issn pub-type="epub">
    2327-588X
   </issn>
   <issn publication-format="print">
    2327-5901
   </issn>
   <publisher>
    <publisher-name>
     Scientific Research Publishing
    </publisher-name>
   </publisher>
  </journal-meta>
  <article-meta>
   <article-id pub-id-type="doi">
    10.4236/jpee.2024.1212001
   </article-id>
   <article-id pub-id-type="publisher-id">
    jpee-138230
   </article-id>
   <article-categories>
    <subj-group subj-group-type="heading">
     <subject>
      Articles
     </subject>
    </subj-group>
    <subj-group subj-group-type="Discipline-v2">
     <subject>
      Engineering
     </subject>
    </subj-group>
   </article-categories>
   <title-group>
    Wind Power Forecasting Using Grey Wolf Optimized Long Short-Term Memory Based on Numerical Weather Prediction
   </title-group>
   <contrib-group>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Mohamed
      </surname>
      <given-names>
       El-Dosuky
      </given-names>
     </name> 
     <xref ref-type="aff" rid="aff1"> 
      <sup>1</sup>
     </xref> 
     <xref ref-type="aff" rid="aff2"> 
      <sup>2</sup>
     </xref>
    </contrib>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Reema
      </surname>
      <given-names>
       Alowaydan
      </given-names>
     </name> 
     <xref ref-type="aff" rid="aff1"> 
      <sup>1</sup>
     </xref>
    </contrib>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Bashayer
      </surname>
      <given-names>
       Alqarni
      </given-names>
     </name> 
     <xref ref-type="aff" rid="aff1"> 
      <sup>1</sup>
     </xref>
    </contrib>
   </contrib-group> 
   <aff id="aff1">
    <addr-line>
     aDepartment of Computer Science, Arab East Colleges, Riyadh, KSA
    </addr-line> 
   </aff> 
   <aff id="aff2">
    <addr-line>
     aFaculty of Computers and Information Sciences, Mansoura University, Mansoura, Egypt
    </addr-line> 
   </aff> 
   <pub-date pub-type="epub">
    <day>
     18
    </day> 
    <month>
     12
    </month>
    <year>
     2024
    </year>
   </pub-date> 
   <volume>
    12
   </volume> 
   <issue>
    12
   </issue>
   <fpage>
    1
   </fpage>
   <lpage>
    16
   </lpage>
   <history>
    <date date-type="received">
     <day>
      13,
     </day>
     <month>
      November
     </month>
     <year>
      2024
     </year>
    </date>
    <date date-type="published">
     <day>
      15,
     </day>
     <month>
      November
     </month>
     <year>
      2024
     </year> 
    </date> 
    <date date-type="accepted">
     <day>
      15,
     </day>
     <month>
      December
     </month>
     <year>
      2024
     </year> 
    </date>
   </history>
   <permissions>
    <copyright-statement>
     © Copyright 2014 by authors and Scientific Research Publishing Inc. 
    </copyright-statement>
    <copyright-year>
     2014
    </copyright-year>
    <license>
     <license-p>
      This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/
     </license-p>
    </license>
   </permissions>
   <abstract>
    Wind power generation is among the most promising and eco-friendly energy sources today. Wind Power Forecasting (WPF) is essential for boosting energy efficiency and maintaining the operational stability of power grids. However, predicting wind power comes with significant challenges, such as weather uncertainties, wind variability, complex terrain, limited data, insufficient measurement infrastructure, intricate interdependencies, and short lead times. These factors make it difficult to accurately forecast wind behavior and respond to sudden power output changes. This study aims to precisely forecast electricity generation from wind turbines, minimize grid operation uncertainties, and enhance grid reliability. It leverages historical wind farm data and Numerical Weather Prediction data, using k-Nearest Neighbors for pre-processing, K-means clustering for categorization, and Long Short-Term Memory (LSTM) networks for training and testing, with model performance evaluated across multiple metrics. The Grey Wolf Optimized (GWO) LSTM classification technique, a deep learning model suited to time series analysis, effectively handles temporal dependencies in input data through memory cells and gradient-based optimization. Inspired by grey wolves’ hunting strategies, GWO is a population-based metaheuristic optimization algorithm known for its strong performance across diverse optimization tasks. The proposed Grey Wolf Optimized Deep Learning model achieves an R-squared value of 0.97279, demonstrating that it explains 97.28% of the variance in wind power data. This model surpasses a reference study that achieved an R-squared value of 0.92 with a hybrid deep learning approach but did not account for outliers or anomalous data.
   </abstract>
   <kwd-group> 
    <kwd>
     Wind Power Forecasting
    </kwd> 
    <kwd>
      Long Short-Term Memory
    </kwd> 
    <kwd>
      Numerical Weather Prediction
    </kwd> 
    <kwd>
      Grey Wolf Optimization
    </kwd>
   </kwd-group>
  </article-meta>
 </front>
 <body>
  <sec id="s1">
   <title>1. Introduction</title>
   <p>Decarbonized economy aims at producing low levels of carbon emissions to lower global warming which poses a threat to humans <xref ref-type="bibr" rid="scirp.138230-1">
     [1]
    </xref>. Recently, new energy sources based on solar and wind energy have developed at a great rate. Generating wind power is among the most promising and ecological energy sources <xref ref-type="bibr" rid="scirp.138230-2">
     [2]
    </xref>. But wind power massive integration poses challenges in economic and safe power grid operation <xref ref-type="bibr" rid="scirp.138230-3">
     [3]
    </xref>. Wind Power Forecasting (WPF) is a vital task to improve efficiency of energy and operation safety of power grids <xref ref-type="bibr" rid="scirp.138230-4">
     [4]
    </xref>.</p>
   <p>Based on the time scales, WPF can be classified into very-short-term <xref ref-type="bibr" rid="scirp.138230-5">
     [5]
    </xref>, short-term <xref ref-type="bibr" rid="scirp.138230-6">
     [6]
    </xref>, medium-term, and long-term prediction <xref ref-type="bibr" rid="scirp.138230-7">
     [7]
    </xref> <xref ref-type="bibr" rid="scirp.138230-8">
     [8]
    </xref>.</p>
   <p>The rest of this paper is organized as follows. In Section 2, a gentle review of Wind Power Forecasting is provided before presenting the related work. In Section 3, the methodology and implementation details are provided, while Section 4 provides the results and discussions. Section 5 contains the conclusion and future work.</p>
  </sec><sec id="s2">
   <title>2. Related Work</title>
   <p>Zhang et al. developed a wind power forecasting model using Numerical Weather Prediction data and actual wind farm data. They used a multivariate time series clustering algorithm and deep learning network, enhancing efficiency and accuracy. The Seq2Seq model outperformed other methods, with clustering significantly improving forecast accuracy <xref ref-type="bibr" rid="scirp.138230-9">
     [9]
    </xref>. This model faces numerous issues, including parameter tuning for Seq2Seq, which significantly affects forecasting performance due to its impact on layers, units, learning rate, momentum, and periods.</p>
   <p>A study uses a Long Short-Term Memory (LSTM) deep learning network for wind power forecasting and the Gaussian Mixture Model (GMM) for error distribution analysis. The LSTM model outperforms other models in accuracy and convergence speed, while GMM offers superior evaluation performance, making it valuable for practical wind turbine power dispatching applications <xref ref-type="bibr" rid="scirp.138230-10">
     [10]
    </xref>.</p>
   <p>Shabbir et al. studied Estonia’s short-term wind energy forecasting using real-time data. They applied three models: Support Vector Machine, Non-linear Autoregressive Neural Networks, and Recurrent Neural Network-Long Short-Term Memory. Results showed ML and deep learning models outperformed Transmission System Operator’s forecasting algorithm <xref ref-type="bibr" rid="scirp.138230-11">
     [11]
    </xref>. Li et al. developed a hybrid prediction model for short-term wind power forecasting, combining support vector machine and an improved dragonfly algorithm. The model improved traditional dragonfly performance and was compared to other models <xref ref-type="bibr" rid="scirp.138230-12">
     [12]
    </xref>.</p>
   <p>Tang and Chien developed a short-term wind power prediction model using time convolution neural network and variational mode decomposition <xref ref-type="bibr" rid="scirp.138230-13">
     [13]
    </xref>. They extracted modal components with rich feature information and trained the model using preferred components and historical power data. The model achieved higher prediction accuracy with MAPE and R<sup>2</sup> of 2.79% and 0.9985, respectively. Hong and Rioflorido developed a hybrid deep learning neural network for 24 h-ahead wind power generation forecasting, using a Convolutional Neural Network and a Radial Basis Function Neural Network <xref ref-type="bibr" rid="scirp.138230-14">
     [14]
    </xref>.</p>
   <p>A study provided a deep learning model for short-term wind turbine power forecasts using Temporal Convolutional Networks (TCN) <xref ref-type="bibr" rid="scirp.138230-15">
     [15]
    </xref>, while another study proposed a transformer-based WPF model, based on attention mechanisms <xref ref-type="bibr" rid="scirp.138230-16">
     [16]
    </xref>. Finally, Chen proposed an ultra-short-term prediction model using a multilayer Bi-GRU and Fully Connected layer, using real-world wind farm data <xref ref-type="bibr" rid="scirp.138230-17">
     [17]
    </xref>.</p>
   <p>A recent study performs wind power prediction based on various machine learning and deep learning models <xref ref-type="bibr" rid="scirp.138230-18">
     [18]
    </xref>.</p>
  </sec><sec id="s3">
   <title>3. Methodology</title>
   <p>This work proposes a framework, as shown in <xref ref-type="fig" rid="fig1">
     Figure 1
    </xref>. Initially, the wind farm historical data and data from Numerical Weather Prediction (NWP) are joined. Then preprocessing is performed to impute data for completing missing values using k-Nearest Neighbors (KNN). K-means-Clustering is used to prepare data for classification. The dataset is dichotomized into training and testing parts. Training constructs a model using Long Short-Term Memory (LSTM) which is then verified. Certain metrics are calculated to assess the accuracy of the model.</p>
   <fig id="fig1" position="float">
    <label>Figure 1</label>
    <caption>
     <title>Figure 1. Proposed framework.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId16.jpeg?20241218023547" />
   </fig>
   <p>The Grey Wolf Optimizer (GWO) enhances Long Short-Term Memory (LSTM) performance for wind power data by optimizing the model’s hyperparameters and addressing the inherent complexity of wind data, which is highly non-linear and volatile. GWO, inspired by the hunting strategies of grey wolves, balances exploration and exploitation to efficiently tune parameters like learning rate, layer depth, and neuron count, enabling LSTMs to better capture temporal patterns and adapt to wind power’s intermittent behaviour. It also aids in selecting relevant features and initializing weights, reducing noise and improving model focus. By helping LSTMs navigate uncertainties and avoid local minima during training, GWO significantly boosts forecasting accuracy, as shown by lower error metrics in results compared to standalone LSTM or traditional optimization techniques.</p>
   <sec id="s3_1">
    <title>3.1. Data Imputation Using K-Nearest Neighbors (KNN)</title>
    <p>Missing data can be handled in different ways. The entire observation can be removed or replaced with the average, median or mode. These ways may reduce dataset variability. On the contrary, KNN imputation keeps dataset value and variability. <xref ref-type="fig" rid="fig2">
      Figure 2
     </xref> shows an example of 3-nearest neighbors.</p>
    <fig id="fig2" position="float">
     <label>Figure 2</label>
     <caption>
      <title>Figure 2. Three-nearest neighbors.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId17.jpeg?20241218023548" />
    </fig>
    <fig id="fig3" position="float">
     <label>Figure 3</label>
     <caption>
      <title>Figure 3. Euclidean distances.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId18.jpeg?20241218023548" />
    </fig>
    <p>As shown in <xref ref-type="fig" rid="fig3">
      Figure 3
     </xref>, Euclidean distances can be calculated for the data. The nearest neighbors are those having the shortest distance. At k = 1, A is the nearest neighbor to B.</p>
   </sec>
   <sec id="s3_2">
    <title>3.2. K-Means-Clustering</title>
    <p>
     <xref ref-type="fig" rid="fig4">
      Figure 4
     </xref> shows how K-means-Clustering works. K-means clustering is an unsupervised machine learning algorithm used to group data points into distinct clusters. It aims to minimize the sum of squared distances between data points and their respective clusters. The algorithm involves initialization, assignment, update, and iteration until convergence. The algorithm assigns each data point to a cluster based on the nearest centroid, with the centroids representing the center points. However, the algorithm is sensitive to the initial placement of centroids, so it is often run multiple times with different initializations.</p>
    <fig id="fig4" position="float">
     <label>Figure 4</label>
     <caption>
      <title>Figure 4. How K-means-Clustering works.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId19.jpeg?20241218023549" />
    </fig>
   </sec>
   <sec id="s3_3">
    <title>3.3. Long Short-Term Memory (LSTM)</title>
    <p>Recurrent Neural Networks (RNNs) have feedback connections and can process input sequences of arbitrary length. However, training RNNs can be challenging due to gradient-based weight update algorithms <xref ref-type="bibr" rid="scirp.138230-19">
      [19]
     </xref>. Long Short-Term Memory (LSTM) is a type of RNN that can work with sequential data, making it effective for time series forecasting in various fields <xref ref-type="bibr" rid="scirp.138230-20">
      [20]
     </xref> <xref ref-type="bibr" rid="scirp.138230-21">
      [21]
     </xref>.</p>
    <p>The LSTM architecture, consisting of three logistic sigmoid gates and one tanh layer, is commonly used with a forget gate to limit information flow, with output typically ranging from 0 - 1. An LSTM cell has 3 inputs 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          h 
        </mi> 
        <mrow> 
         <mi>
           t 
         </mi> 
         <mo>
           − 
         </mo> 
         <mn>
           1 
         </mn> 
        </mrow> 
       </msub> 
      </mrow> 
     </math>, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          x 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
      </mrow> 
     </math> and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          C 
        </mi> 
        <mrow> 
         <mi>
           t 
         </mi> 
         <mo>
           − 
         </mo> 
         <mn>
           1 
         </mn> 
        </mrow> 
       </msub> 
      </mrow> 
     </math> and 2 outputs 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          h 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
      </mrow> 
     </math> and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          C 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
      </mrow> 
     </math>. For a given time t, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          h 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
      </mrow> 
     </math> is the hidden state, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          C 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
      </mrow> 
     </math> is the cell state or memory, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          x 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
      </mrow> 
     </math> is the current data point or input. The first sigmoid layer has two inputs 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          h 
        </mi> 
        <mrow> 
         <mi>
           t 
         </mi> 
         <mo>
           − 
         </mo> 
         <mn>
           1 
         </mn> 
        </mrow> 
       </msub> 
      </mrow> 
     </math> and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          x 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
      </mrow> 
     </math> where 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          h 
        </mi> 
        <mrow> 
         <mi>
           t 
         </mi> 
         <mo>
           − 
         </mo> 
         <mn>
           1 
         </mn> 
        </mrow> 
       </msub> 
      </mrow> 
     </math> is the hidden state of the previous cell <xref ref-type="bibr" rid="scirp.138230-22">
      [22]
     </xref>.</p>
    <p>In an LSTM network, the forget gate decides how much of the previous cell state to retain, while the input gate determines what new information to add. A candidate layer generates values to update the cell state, which combines these inputs with the retained information from the forget gate. For output, a sigmoid layer selects relevant parts of the cell state, which is scaled by a tanh layer to produce the final cell output. Together, these gates and layers enable the LSTM to effectively manage information flow and maintain long-term dependencies <xref ref-type="bibr" rid="scirp.138230-23">
      [23]
     </xref>.</p>
    <p>An LSTM network computes the output by mapping an input sequence 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         x 
       </mi> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msub> 
          <mi>
            x 
          </mi> 
          <mn>
            1 
          </mn> 
         </msub> 
         <mo>
           , 
         </mo> 
         <mo>
           ⋯ 
         </mo> 
         <mo>
           , 
         </mo> 
         <msub> 
          <mi>
            x 
          </mi> 
          <mi>
            T 
          </mi> 
         </msub> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> to an output sequence 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         y 
       </mi> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msub> 
          <mi>
            y 
          </mi> 
          <mn>
            1 
          </mn> 
         </msub> 
         <mo>
           , 
         </mo> 
         <mo>
           ⋯ 
         </mo> 
         <mo>
           , 
         </mo> 
         <msub> 
          <mi>
            y 
          </mi> 
          <mi>
            T 
          </mi> 
         </msub> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> and calculating the network unit activations using the following equations iteratively from t = 1 to T <xref ref-type="bibr" rid="scirp.138230-24">
      [24]
     </xref>:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          i 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mi>
         σ 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mi>
             x 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            x 
          </mi> 
          <mi>
            t 
          </mi> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mi>
             m 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            m 
          </mi> 
          <mrow> 
           <mi>
             t 
           </mi> 
           <mo>
             − 
           </mo> 
           <mn>
             1 
           </mn> 
          </mrow> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mi>
             c 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            c 
          </mi> 
          <mrow> 
           <mi>
             t 
           </mi> 
           <mo>
             − 
           </mo> 
           <mn>
             1 
           </mn> 
          </mrow> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            b 
          </mi> 
          <mi>
            i 
          </mi> 
         </msub> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>(1)</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mi>
         σ 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             f 
           </mi> 
           <mi>
             x 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            x 
          </mi> 
          <mi>
            t 
          </mi> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             f 
           </mi> 
           <mi>
             m 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            m 
          </mi> 
          <mrow> 
           <mi>
             t 
           </mi> 
           <mo>
             − 
           </mo> 
           <mn>
             1 
           </mn> 
          </mrow> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             f 
           </mi> 
           <mi>
             c 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            c 
          </mi> 
          <mrow> 
           <mi>
             t 
           </mi> 
           <mo>
             − 
           </mo> 
           <mn>
             1 
           </mn> 
          </mrow> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            b 
          </mi> 
          <mi>
            f 
          </mi> 
         </msub> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>(2)</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          c 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
       <mo>
         ⊙ 
       </mo> 
       <msub> 
        <mi>
          c 
        </mi> 
        <mrow> 
         <mi>
           t 
         </mi> 
         <mo>
           − 
         </mo> 
         <mn>
           1 
         </mn> 
        </mrow> 
       </msub> 
       <mo>
         + 
       </mo> 
       <msub> 
        <mi>
          i 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
       <mo>
         ⊙ 
       </mo> 
       <mi>
         g 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             c 
           </mi> 
           <mi>
             x 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            x 
          </mi> 
          <mi>
            t 
          </mi> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             c 
           </mi> 
           <mi>
             m 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            m 
          </mi> 
          <mrow> 
           <mi>
             t 
           </mi> 
           <mo>
             − 
           </mo> 
           <mn>
             1 
           </mn> 
          </mrow> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            b 
          </mi> 
          <mi>
            c 
          </mi> 
         </msub> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> (3)</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          o 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mi>
         σ 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             o 
           </mi> 
           <mi>
             x 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            x 
          </mi> 
          <mi>
            t 
          </mi> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             o 
           </mi> 
           <mi>
             m 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            m 
          </mi> 
          <mrow> 
           <mi>
             t 
           </mi> 
           <mo>
             − 
           </mo> 
           <mn>
             1 
           </mn> 
          </mrow> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             o 
           </mi> 
           <mi>
             c 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            c 
          </mi> 
          <mi>
            t 
          </mi> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            b 
          </mi> 
          <mi>
            o 
          </mi> 
         </msub> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>(4)</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          m 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          o 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
       <mo>
         ⊙ 
       </mo> 
       <mi>
         h 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msub> 
          <mi>
            c 
          </mi> 
          <mi>
            t 
          </mi> 
         </msub> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>(5)</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          y 
        </mi> 
        <mi>
          t 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mi>
         ϕ 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msub> 
          <mi>
            W 
          </mi> 
          <mrow> 
           <mi>
             y 
           </mi> 
           <mi>
             m 
           </mi> 
          </mrow> 
         </msub> 
         <msub> 
          <mi>
            m 
          </mi> 
          <mi>
            t 
          </mi> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mi>
            b 
          </mi> 
          <mi>
            y 
          </mi> 
         </msub> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>(6)</p>
    <p>where W represents weights, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          W 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           c 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math>, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          W 
        </mi> 
        <mrow> 
         <mi>
           f 
         </mi> 
         <mi>
           c 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math>, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          W 
        </mi> 
        <mrow> 
         <mi>
           o 
         </mi> 
         <mi>
           c 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math> are diagonal weights for peephole connections, the b represents bias, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        σ 
      </mi> 
     </math> is the logistic sigmoid function, and i, f and o are the input, forget, output gates. Also, c is cell activation, while 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mo>
        ⊙ 
      </mo> 
     </math> is element-wise multiplication of vectors. Finally, φ is the network output activation function.</p>
    <p>Multi-variate time series forecasting is a challenging task due to complex factors in real-life sequential data, such as dependencies, randomness, and noise. Hyperparameters and learning properties also affect performance. Traditional manual fine-tuning can lead to sub-optimal model representations and ill-performed learning parameters. To address these challenges, a new approach incorporates automatic feature extraction and optimal network configuration identification into the vanilla LSTM structure. Convolutional Neural Networks (CNNs) are hybridized with LSTM to extract fundamental features and construct more accurate feature representations.</p>
   </sec>
   <sec id="s3_4">
    <title>3.4. Grey Wolf Optimizer (GWO)</title>
    <p>The GWO is an optimization algorithm inspired by nature, modelled after grey wolves’ social hierarchy and hunting mechanisms. It uses a four-class pack of wolves, alpha, beta, delta, and omega, with the best-fitting wolf being the alpha wolf. The algorithm updates the hierarchy each iteration, adjusting solutions based on the wolves’ fitness function. The algorithm further explains grey wolf hunting mechanisms mathematically <xref ref-type="bibr" rid="scirp.138230-25">
      [25]
     </xref>.</p>
    <p>The search process uses random positions of α, β, and δ, with coefficient vectors A and C assigned random values to facilitate a global search for prey.</p>
    <p>Once a prey is found, the wolves encircle it; as shown in <xref ref-type="fig" rid="fig1">
      Figure 1
     </xref>. For i iteration, equations that represent the positions are:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mstyle mathvariant="bold" mathsize="normal"> 
        <mi>
          D 
        </mi> 
       </mstyle> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          | 
        </mo> 
        <mrow> 
         <mstyle mathvariant="bold" mathsize="normal"> 
          <mi>
            C 
          </mi> 
         </mstyle> 
         <mo>
           ⋅ 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             V 
           </mi> 
          </mstyle> 
          <mrow> 
           <mi>
             p 
           </mi> 
           <mrow> 
            <mo>
              ( 
            </mo> 
            <mi>
              i 
            </mi> 
            <mo>
              ) 
            </mo> 
           </mrow> 
          </mrow> 
         </msub> 
         <mo>
           − 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             V 
           </mi> 
          </mstyle> 
          <mrow> 
           <mrow> 
            <mo>
              ( 
            </mo> 
            <mi>
              i 
            </mi> 
            <mo>
              ) 
            </mo> 
           </mrow> 
          </mrow> 
         </msub> 
        </mrow> 
        <mo>
          | 
        </mo> 
       </mrow> 
      </mrow> 
     </math>(7)</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mstyle mathvariant="bold" mathsize="normal"> 
         <mi>
           V 
         </mi> 
        </mstyle> 
        <mrow> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mo>
             + 
           </mo> 
           <mn>
             1 
           </mn> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
        </mrow> 
       </msub> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mstyle mathvariant="bold" mathsize="normal"> 
         <mi>
           V 
         </mi> 
        </mstyle> 
        <mrow> 
         <mi>
           p 
         </mi> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mi>
            i 
          </mi> 
          <mo>
            ) 
          </mo> 
         </mrow> 
        </mrow> 
       </msub> 
       <mo>
         − 
       </mo> 
       <mstyle mathvariant="bold" mathsize="normal"> 
        <mi>
          A 
        </mi> 
       </mstyle> 
       <mo>
         ⋅ 
       </mo> 
       <mstyle mathvariant="bold" mathsize="normal"> 
        <mi>
          D 
        </mi> 
       </mstyle> 
      </mrow> 
     </math>(8)</p>
    <p>where 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mstyle mathvariant="bold" mathsize="normal"> 
         <mi>
           V 
         </mi> 
        </mstyle> 
        <mi>
          p 
        </mi> 
       </msub> 
      </mrow> 
     </math> is vector of prey position, i is the current iteration, and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mstyle mathvariant="bold" mathsize="normal"> 
       <mi>
         V 
       </mi> 
      </mstyle> 
     </math> denotes grey wolf position of a. 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mstyle mathvariant="bold" mathsize="normal"> 
       <mi>
         A 
       </mi> 
      </mstyle> 
     </math> and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mstyle mathvariant="bold" mathsize="normal"> 
       <mi>
         C 
       </mi> 
      </mstyle> 
     </math> are computed as the following equations:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mstyle mathvariant="bold" mathsize="normal"> 
        <mi>
          A 
        </mi> 
       </mstyle> 
       <mo>
         = 
       </mo> 
       <mn>
         2 
       </mn> 
       <mstyle mathvariant="bold" mathsize="normal"> 
        <mi>
          a 
        </mi> 
       </mstyle> 
       <mo>
         ⋅ 
       </mo> 
       <msub> 
        <mstyle mathvariant="bold" mathsize="normal"> 
         <mi>
           r 
         </mi> 
        </mstyle> 
        <mn>
          1 
        </mn> 
       </msub> 
       <mo>
         − 
       </mo> 
       <mstyle mathvariant="bold" mathsize="normal"> 
        <mi>
          a 
        </mi> 
       </mstyle> 
      </mrow> 
     </math>(9)</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mstyle mathvariant="bold" mathsize="normal"> 
        <mi>
          C 
        </mi> 
       </mstyle> 
       <mo>
         = 
       </mo> 
       <mn>
         2 
       </mn> 
       <msub> 
        <mstyle mathvariant="bold" mathsize="normal"> 
         <mi>
           r 
         </mi> 
        </mstyle> 
        <mn>
          2 
        </mn> 
       </msub> 
      </mrow> 
     </math>(10)</p>
    <p>Assuming that a grey wolf’s location is (X, Y) and that of its prey is (X’, Y’), the wolves can then adjust their positions in response to the prey’s location, as shown in <xref ref-type="fig" rid="fig5">
      Figure 5
     </xref>.</p>
    <fig id="fig5" position="float">
     <label>Figure 5</label>
     <caption>
      <title>Figure 5. Grey wolves encircling the prey.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId84.jpeg?20241218023552" />
    </fig>
    <p>The alpha wolf, typically the pack leader, detects prey locations. The Alpha, Beta, and Delta wolves provide mathematical solutions for optimum prey location <xref ref-type="bibr" rid="scirp.138230-26">
      [26]
     </xref>:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mtable columnalign="left"> 
       <mtr> 
        <mtd> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             D 
           </mi> 
          </mstyle> 
          <mi>
            α 
          </mi> 
         </msub> 
         <mo>
           = 
         </mo> 
         <mrow> 
          <mo>
            | 
          </mo> 
          <mrow> 
           <msub> 
            <mstyle mathvariant="bold" mathsize="normal"> 
             <mi>
               C 
             </mi> 
            </mstyle> 
            <mn>
              1 
            </mn> 
           </msub> 
           <mo>
             ⋅ 
           </mo> 
           <msub> 
            <mstyle mathvariant="bold" mathsize="normal"> 
             <mi>
               V 
             </mi> 
            </mstyle> 
            <mi>
              α 
            </mi> 
           </msub> 
           <mo>
             − 
           </mo> 
           <mstyle mathvariant="bold" mathsize="normal"> 
            <mi>
              X 
            </mi> 
           </mstyle> 
          </mrow> 
          <mo>
            | 
          </mo> 
         </mrow> 
        </mtd> 
       </mtr> 
       <mtr> 
        <mtd> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             D 
           </mi> 
          </mstyle> 
          <mi>
            β 
          </mi> 
         </msub> 
         <mo>
           = 
         </mo> 
         <mrow> 
          <mo>
            | 
          </mo> 
          <mrow> 
           <msub> 
            <mstyle mathvariant="bold" mathsize="normal"> 
             <mi>
               C 
             </mi> 
            </mstyle> 
            <mn>
              2 
            </mn> 
           </msub> 
           <mo>
             ⋅ 
           </mo> 
           <msub> 
            <mstyle mathvariant="bold" mathsize="normal"> 
             <mi>
               V 
             </mi> 
            </mstyle> 
            <mi>
              β 
            </mi> 
           </msub> 
           <mo>
             − 
           </mo> 
           <mstyle mathvariant="bold" mathsize="normal"> 
            <mi>
              X 
            </mi> 
           </mstyle> 
          </mrow> 
          <mo>
            | 
          </mo> 
         </mrow> 
        </mtd> 
       </mtr> 
       <mtr> 
        <mtd> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             D 
           </mi> 
          </mstyle> 
          <mi>
            δ 
          </mi> 
         </msub> 
         <mo>
           = 
         </mo> 
         <mrow> 
          <mo>
            | 
          </mo> 
          <mrow> 
           <msub> 
            <mstyle mathvariant="bold" mathsize="normal"> 
             <mi>
               C 
             </mi> 
            </mstyle> 
            <mn>
              3 
            </mn> 
           </msub> 
           <mo>
             ⋅ 
           </mo> 
           <msub> 
            <mstyle mathvariant="bold" mathsize="normal"> 
             <mi>
               V 
             </mi> 
            </mstyle> 
            <mi>
              δ 
            </mi> 
           </msub> 
           <mo>
             − 
           </mo> 
           <mstyle mathvariant="bold" mathsize="normal"> 
            <mi>
              X 
            </mi> 
           </mstyle> 
          </mrow> 
          <mo>
            | 
          </mo> 
         </mrow> 
        </mtd> 
       </mtr> 
      </mtable> 
     </math>(11)</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mtable columnalign="left"> 
       <mtr> 
        <mtd> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             V 
           </mi> 
          </mstyle> 
          <mn>
            1 
          </mn> 
         </msub> 
         <mo>
           = 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             V 
           </mi> 
          </mstyle> 
          <mi>
            α 
          </mi> 
         </msub> 
         <mo>
           − 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             A 
           </mi> 
          </mstyle> 
          <mn>
            1 
          </mn> 
         </msub> 
         <mo>
           ⋅ 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             D 
           </mi> 
          </mstyle> 
          <mi>
            α 
          </mi> 
         </msub> 
        </mtd> 
       </mtr> 
       <mtr> 
        <mtd> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             V 
           </mi> 
          </mstyle> 
          <mn>
            2 
          </mn> 
         </msub> 
         <mo>
           = 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             V 
           </mi> 
          </mstyle> 
          <mi>
            β 
          </mi> 
         </msub> 
         <mo>
           − 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             A 
           </mi> 
          </mstyle> 
          <mn>
            2 
          </mn> 
         </msub> 
         <mo>
           ⋅ 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             D 
           </mi> 
          </mstyle> 
          <mi>
            β 
          </mi> 
         </msub> 
        </mtd> 
       </mtr> 
       <mtr> 
        <mtd> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             V 
           </mi> 
          </mstyle> 
          <mn>
            3 
          </mn> 
         </msub> 
         <mo>
           = 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             V 
           </mi> 
          </mstyle> 
          <mi>
            δ 
          </mi> 
         </msub> 
         <mo>
           − 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             A 
           </mi> 
          </mstyle> 
          <mn>
            3 
          </mn> 
         </msub> 
         <mo>
           ⋅ 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             D 
           </mi> 
          </mstyle> 
          <mi>
            δ 
          </mi> 
         </msub> 
        </mtd> 
       </mtr> 
      </mtable> 
     </math>(12)</p>
    <p>Next, as indicated by the following equation, the other wolves have to adjust their locations in accordance with the positions of the top three search agents (α, β, and δ):</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mstyle mathvariant="bold" mathsize="normal"> 
         <mi>
           V 
         </mi> 
        </mstyle> 
        <mrow> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mo>
             + 
           </mo> 
           <mn>
             1 
           </mn> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
        </mrow> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mfrac> 
        <mrow> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             V 
           </mi> 
          </mstyle> 
          <mn>
            1 
          </mn> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             V 
           </mi> 
          </mstyle> 
          <mn>
            2 
          </mn> 
         </msub> 
         <mo>
           + 
         </mo> 
         <msub> 
          <mstyle mathvariant="bold" mathsize="normal"> 
           <mi>
             V 
           </mi> 
          </mstyle> 
          <mn>
            3 
          </mn> 
         </msub> 
        </mrow> 
        <mn>
          3 
        </mn> 
       </mfrac> 
      </mrow> 
     </math>(13)</p>
    <p>The grey wolves surround a prey, stop moving, and attack it. The value of A decreases, resulting in a decrease in the prey’s position. The next grey wolf position is between its current and prey location.</p>
   </sec>
   <sec id="s3_5">
    <title>3.5. Implementation</title>
    <p>
     <xref ref-type="fig" rid="fig6">
      Figure 6
     </xref> shows class diagram of the implementation. The class diagram, which shows properties like training_data, test_data, lstm_model, and gwo_optimizer for the main WPF class. Wind energy training and testing data are included in the dataset. The GWO technique is utilized for hyperparameter tuning, and the LSTM model is used for forecasting. Be aware that composition, also known as aggregation, is the relationship between classes. The composition relationship, shown by the diamond shape at the end of the association line, denotes a strong “whole-part” relationship between classes.</p>
    <fig id="fig6" position="float">
     <label>Figure 6</label>
     <caption>
      <title>Figure 6. Class diagram.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId91.jpeg?20241218023553" />
    </fig>
    <p>For downloading the Python source code and full-merged dataset, go to the repository <xref ref-type="bibr" rid="scirp.138230-https://github.com/dr-dos-ok/Wind-Power-Forecasting-onGithub.com">
      https://github.com/dr-dos-ok/Wind-Power-Forecasting-onGithub.com
     </xref>.</p>
    <p>
     <xref ref-type="fig" rid="fig7">
      Figure 7
     </xref> shows components of the project. The file C1.csv is the merged data. WPF usually merges NWP with historical data for providing accurate weather prediction. GWO.py is the implementation of GWO algorithm, while model.py provides the implementation of LSTM.</p>
    <fig id="fig7" position="float">
     <label>Figure 7</label>
     <caption>
      <title>Figure 7. Project components.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId93.jpeg?20241218023553" />
    </fig>
   </sec>
  </sec><sec id="s4">
   <title>4. Results and Discussion</title>
   <p>KDE, or Kernel Density Estimation, is a non-parametric technique for estimating the probability density function of a random variable based on a sample of data points. KDE is particularly useful for visualizing the distribution of data in a continuous and smooth way, which is helpful when trying to understand the underlying distribution or when data points are sparse. <xref ref-type="fig" rid="fig8">
     Figure 8
    </xref> shows KDE for mod, dir, temp, and rh.</p>
   <fig id="fig8" position="float">
    <label>Figure 8</label>
    <caption>
     <title>Figure 8. KDE for mod, dir, temp, and rh.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId94.jpeg?20241218023554" />
   </fig>
   <p>
    <xref ref-type="fig" rid="fig9">
     Figure 9
    </xref> shows heatmap for all the features. The highest correlation is between speed and energy (0.9). Then the next higher correlation is between mod and energy (0.79). Direction and dir are moderately correlated (0.74). The same is said about speed and mod (0.77).</p>
   <p>
    <xref ref-type="fig" rid="fig10">
     Figure 10
    </xref> shows Windrose Axis for Wind Speed vs Wind Direction, while <xref ref-type="fig" rid="fig11">
     Figure 11
    </xref> shows Wind Speed vs Wind Energy.</p>
   <fig id="fig9" position="float">
    <label>Figure 9</label>
    <caption>
     <title>Figure 9. Heatmap for all the features.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId95.jpeg?20241218023554" />
   </fig>
   <fig id="fig10" position="float">
    <label>Figure 10</label>
    <caption>
     <title>Figure 10. Wind speed vs wind direction.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId96.jpeg?20241218023553" />
   </fig>
   <fig id="fig11" position="float">
    <label>Figure 11</label>
    <caption>
     <title>Figure 11. Wind speed vs wind energy.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId97.jpeg?20241218023553" />
   </fig>
   <p>
    <xref ref-type="fig" rid="fig12">
     Figure 12
    </xref> depicts prediction plot. It is shifted for better comparing the actual and predicted values.</p>
   <fig id="fig12" position="float">
    <label>Figure 12</label>
    <caption>
     <title>Figure 12. Prediction plot.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId98.jpeg?20241218023553" />
   </fig>
   <p>As shown in <xref ref-type="fig" rid="fig13">
     Figure 13
    </xref>, this time, it plots the first 20 values of the actual and predicted values. This plot is showing clearly the relation between predicted and actual values.</p>
   <fig id="fig13" position="float">
    <label>Figure 13</label>
    <caption>
     <title>Figure 13. Plotting first 20 values of predicted vs actual values.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId99.jpeg?20241218023554" />
   </fig>
   <p>The authors use Mean Absolute Error (MAE), R-squared (R²), and Mean absolute percentage error (MAPE) to measure the accuracy of their proposed regression model, focusing on average errors between predicted and actual values.</p>
   <p>
    <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mtext>
        MAE 
      </mtext> 
      <mo>
        = 
      </mo> 
      <mfrac> 
       <mn>
         1 
       </mn> 
       <mi>
         n 
       </mi> 
      </mfrac> 
      <mstyle displaystyle="true"> 
       <munderover> 
        <mo>
          ∑ 
        </mo> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           = 
         </mo> 
         <mn>
           1 
         </mn> 
        </mrow> 
        <mi>
          n 
        </mi> 
       </munderover> 
       <mrow> 
        <mrow> 
         <mo>
           | 
         </mo> 
         <mrow> 
          <msub> 
           <mover accent="true"> 
            <mi>
              y 
            </mi> 
            <mo>
              ^ 
            </mo> 
           </mover> 
           <mi>
             i 
           </mi> 
          </msub> 
          <mo>
            − 
          </mo> 
          <msub> 
           <mi>
             y 
           </mi> 
           <mi>
             i 
           </mi> 
          </msub> 
         </mrow> 
         <mo>
           | 
         </mo> 
        </mrow> 
       </mrow> 
      </mstyle> 
     </mrow> 
    </math> (14)</p>
   <p>MAE is a reliable error metric, less sensitive to outliers, and is expressed in the same units as predicted and actual values, making it easier to understand errors.</p>
   <p>R² is a statistical metric assessing the goodness of fit of a regression model, determining the proportion of variance in the dependent variable explained by independent variables.</p>
   <p>
    <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <msup> 
       <mtext>
         R 
       </mtext> 
       <mn>
         2 
       </mn> 
      </msup> 
      <mo>
        = 
      </mo> 
      <mn>
        1 
      </mn> 
      <mo>
        − 
      </mo> 
      <mfrac> 
       <mrow> 
        <msubsup> 
         <mstyle displaystyle="true" mathsize="140%"> 
          <mo>
            ∑ 
          </mo> 
         </mstyle> 
         <mrow> 
          <mi>
            i 
          </mi> 
          <mo>
            = 
          </mo> 
          <mn>
            1 
          </mn> 
         </mrow> 
         <mi>
           n 
         </mi> 
        </msubsup> 
        <msup> 
         <mrow> 
          <mrow> 
           <mo>
             ( 
           </mo> 
           <mrow> 
            <msub> 
             <mi>
               y 
             </mi> 
             <mi>
               i 
             </mi> 
            </msub> 
            <mo>
              − 
            </mo> 
            <msub> 
             <mover accent="true"> 
              <mi>
                y 
              </mi> 
              <mo>
                ^ 
              </mo> 
             </mover> 
             <mi>
               i 
             </mi> 
            </msub> 
           </mrow> 
           <mo>
             ) 
           </mo> 
          </mrow> 
         </mrow> 
         <mn>
           2 
         </mn> 
        </msup> 
       </mrow> 
       <mrow> 
        <msubsup> 
         <mstyle displaystyle="true" mathsize="140%"> 
          <mo>
            ∑ 
          </mo> 
         </mstyle> 
         <mrow> 
          <mi>
            i 
          </mi> 
          <mo>
            = 
          </mo> 
          <mn>
            1 
          </mn> 
         </mrow> 
         <mi>
           n 
         </mi> 
        </msubsup> 
        <msup> 
         <mrow> 
          <mrow> 
           <mo>
             ( 
           </mo> 
           <mrow> 
            <msub> 
             <mi>
               y 
             </mi> 
             <mi>
               i 
             </mi> 
            </msub> 
            <mo>
              − 
            </mo> 
            <msub> 
             <mover accent="true"> 
              <mi>
                y 
              </mi> 
              <mo>
                ¯ 
              </mo> 
             </mover> 
             <mi>
               i 
             </mi> 
            </msub> 
           </mrow> 
           <mo>
             ) 
           </mo> 
          </mrow> 
         </mrow> 
         <mn>
           2 
         </mn> 
        </msup> 
       </mrow> 
      </mfrac> 
     </mrow> 
    </math>(15)</p>
   <p>It is also known as coefficient of determination with values ranging from 0 to 1, with 0 indicating no model explanation and 1 indicating all model explanation. A higher R-squared value indicates better model fit.</p>
   <p>The coefficient of determination is a crucial metric in predicting electricity generation, as it measures how accurately a machine’s predictions match the actual electricity generated. R-squared is a widely used evaluation metric for regression models, indicating a better fit. However, R-squared has limitations, such as being sensitive to predictors and not providing statistical significance or predictive power information.</p>
   <p>MAPE is a statistical measure of prediction accuracy, expressed as a ratio using the following equation:</p>
   <p>
    <xref ref-type="bibr" rid="scirp.138230-"></xref> 
    <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mtext>
        MAPE 
      </mtext> 
      <mo>
        = 
      </mo> 
      <mn>
        100 
      </mn> 
      <mfrac> 
       <mn>
         1 
       </mn> 
       <mi>
         n 
       </mi> 
      </mfrac> 
      <mstyle displaystyle="true"> 
       <msubsup> 
        <mo>
          ∑ 
        </mo> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           = 
         </mo> 
         <mn>
           1 
         </mn> 
        </mrow> 
        <mi>
          n 
        </mi> 
       </msubsup> 
       <mrow> 
        <mrow> 
         <mo>
           | 
         </mo> 
         <mrow> 
          <mfrac> 
           <mrow> 
            <msub> 
             <mi>
               F 
             </mi> 
             <mi>
               t 
             </mi> 
            </msub> 
            <mo>
              − 
            </mo> 
            <msub> 
             <mi>
               A 
             </mi> 
             <mi>
               t 
             </mi> 
            </msub> 
           </mrow> 
           <mrow> 
            <msub> 
             <mi>
               A 
             </mi> 
             <mi>
               t 
             </mi> 
            </msub> 
           </mrow> 
          </mfrac> 
         </mrow> 
         <mo>
           | 
         </mo> 
        </mrow> 
       </mrow> 
      </mstyle> 
     </mrow> 
    </math>(16)</p>
   <p>where A<sub>t</sub> is the actual value at time t, and F<sub>t</sub> is forecast value at the same time.</p>
   <p>When MAPE is stated as a percentage, a lower number denotes superior performance or accuracy. It is frequently used to assess the accuracy of forecasts in demand planning and forecasting. It is sensitive to extreme numbers and becomes undefined when the actual values are 0, among other drawbacks.</p>
   <p>The loss vs. epochs graph for the first 100 epochs is displayed in <xref ref-type="fig" rid="fig14">
     Figure 14
    </xref>. As can be observed, the curve exhibits a steep decline followed by oscillations as it slides below the 0.02 threshold, indicating an acceptable total loss.</p>
   <fig id="fig14" position="float">
    <label>Figure 14</label>
    <caption>
     <title>Figure 14. Loss vs. epochs.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId106.jpeg?20241218023553" />
   </fig>
   <p>As shown in <xref ref-type="fig" rid="fig15">
     Figure 15
    </xref>, the loss vs. MAPE curve is depicted for the first 100 epochs. As noticed, the curve has a sharp drop then it oscillates while sliding down to beneath a certain value which means that the overall value is acceptable.</p>
   <p>This paper calculates the MAE giving 64.37996572 value. Also, this paper calculates the R<sup>2</sup> score giving 0.97279005691.</p>
   <p>This outcome surpasses the study reported in <xref ref-type="bibr" rid="scirp.138230-14">
     [14]
    </xref>, which had an R-squared value of 0.92. With data spanning four seasons and a 24-hour period, this earlier study used hybrid deep learning CNN, Radial Basis Function Neural Network (RBFNN), and double Gaussian function (DGF). There are two issues with this earlier work. First of all, it doesn’t explain how to get rid of outliers and lessen their detrimental impact. Second, the outcome of forecasting performance when false data is present is not mentioned.</p>
   <fig id="fig15" position="float">
    <label>Figure 15</label>
    <caption>
     <title>Figure 15. MAPE vs. epochs.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1771173-rId107.jpeg?20241218023553" />
   </fig>
   <p>Not all datasets and models are comparable to the one used in this paper for various reasons. This paper focused on short-term wind power forecasting which is generally easier than long-term forecasting due to the higher predictability of wind patterns over shorter periods and the reduced complexity of influencing factors. Short-term predictions rely primarily on recent meteorological data, such as wind speed, direction, and air pressure, which are accurately captured by modern sensors and forecasting tools. This allows models like Grey Wolf Optimized LSTMs to effectively learn temporal patterns and produce precise forecasts. In contrast, long-term forecasting involves additional uncertainties, such as seasonal variations, climate dynamics, and land-use changes, which introduce greater complexity and reduce accuracy. Furthermore, long-term predictions are more prone to error accumulation and require broader modeling approaches, making them less precise. As a result, short-term forecasting is better suited for operational decisions like grid balancing, while long-term forecasting is typically used for strategic planning with a higher tolerance for uncertainty.</p>
  </sec><sec id="s5">
   <title>5. Conclusions and Future Work</title>
   <p>The paper aims to improve wind power forecasting by accurately predicting electricity generation from wind turbines, reducing uncertainty in grid operations, and enhancing grid reliability. It integrates wind farm historical data, Numerical Weather Prediction data, k-Nearest Neighbors, K-means-Clustering, and LSTM for training and testing. The Grey Wolf Optimized Deep Learning model can explain 97.28% of wind power data variance, outperforming a reference study.</p>
   <p>Future advancements include considering long-term wind power forecasting which is more prone to error accumulation and requires broader modeling approaches.</p>
  </sec>
 </body><back>
  <ref-list>
   <title>References</title>
   <ref id="scirp.138230-ref1">
    <label>1</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Wang, Y., Hu, Q., Li, L., Foley, A.M. and Srinivasan, D. (2019) Approaches to Wind Power Curve Modeling: A Review and Discussion. Renewable and Sustainable Energy Reviews, 116, Article ID: 109422. &gt;https://doi.org/10.1016/j.rser.2019.109422
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref2">
    <label>2</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Okumus, I. and Dinler, A. (2016) Current Status of Wind Energy Forecasting and a Hybrid Method for Hourly Predictions. Energy Conversion and Management, 123, 362-371. &gt;https://doi.org/10.1016/j.enconman.2016.06.053
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref3">
    <label>3</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Zhang, L., Xie, Y., Ye, J., Xue, T., Cheng, J., Li, Z., et al. (2021) Intelligent Frequency Control Strategy Based on Reinforcement Learning of Multi-Objective Collaborative Reward Function. Frontiers in Energy Research, 9, Article ID: 760525. &gt;https://doi.org/10.3389/fenrg.2021.760525
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref4">
    <label>4</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Yan, J., Liu, Y., Han, S., Wang, Y. and Feng, S. (2015) Reviews on Uncertainty Analysis of Wind Power Forecasting. Renewable and Sustainable Energy Reviews, 52, 1322-1330. &gt;https://doi.org/10.1016/j.rser.2015.07.197 
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref5">
    <label>5</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Zhao, Y., Ye, L., Wang, Z., Wu, L., Zhai, B., Lan, H., et al. (2019) Spatio‐Temporal Markov Chain Model for Very-Short-Term Wind Power Forecasting. The Journal of Engineering, 2019, 5018-5022. &gt;https://doi.org/10.1049/joe.2018.9294
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref6">
    <label>6</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Yang, N., Huang, Y., Hou, D., Liu, S., Ye, D., Dong, B., et al. (2019) Adaptive Nonparametric Kernel Density Estimation Approach for Joint Probability Density Function Modeling of Multiple Wind Farms. Energies, 12, Article No. 1356. &gt;https://doi.org/10.3390/en12071356
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref7">
    <label>7</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Liu, H. and Chen, C. (2019) Data Processing Strategies in Wind Energy Forecasting Models and Applications: A Comprehensive Review. Applied Energy, 249, 392-408. &gt;https://doi.org/10.1016/j.apenergy.2019.04.188
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref8">
    <label>8</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Zhou, D., Zuo, X. and Zhao, Z. (2022) Constructing a Large-Scale Urban Land Subsidence Prediction Method Based on Neural Network Algorithm from the Perspective of Multiple Factors. Remote Sensing, 14, Article No. 1803. &gt;https://doi.org/10.3390/rs14081803
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref9">
    <label>9</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Zhang, Y., Li, Y. and Zhang, G. (2020) Short-Term Wind Power Forecasting Approach Based on Seq2Seq Model Using NWP Data. Energy, 213, Article ID: 118371. &gt;https://doi.org/10.1016/j.energy.2020.118371
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref10">
    <label>10</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Zhang, J., Yan, J., Infield, D., Liu, Y. and Lien, F. (2019) Short-Term Forecasting and Uncertainty Analysis of Wind Turbine Power Based on Long Short-Term Memory Network and Gaussian Mixture Model. Applied Energy, 241, 229-244. &gt;https://doi.org/10.1016/j.apenergy.2019.03.044
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref11">
    <label>11</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Shabbir, N., Jawad, M., Husev, O., Ur Rehman, A., Abid Gardezi, A., et al. (2022) Short-Term Wind Energy Forecasting Using Deep Learning-Based Predictive Analytics. Computers, Materials&amp;Continua, 72, 1017-1033. &gt;https://doi.org/10.32604/cmc.2022.024576
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref12">
    <label>12</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Li, L., Zhao, X., Tseng, M. and Tan, R.R. (2020) Short-Term Wind Power Forecasting Based on Support Vector Machine with Improved Dragonfly Algorithm. Journal of Cleaner Production, 242, Article ID: 118447. &gt;https://doi.org/10.1016/j.jclepro.2019.118447
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref13">
    <label>13</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Tang, J. and Chien, Y. (2022) Research on Wind Power Short-Term Forecasting Method Based on Temporal Convolutional Neural Network and Variational Modal Decomposition. Sensors, 22, Article No. 7414. &gt;https://doi.org/10.3390/s22197414
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref14">
    <label>14</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Hong, Y. and Rioflorido, C.L.P.P. (2019) A Hybrid Deep Learning-Based Neural Network for 24-H Ahead Wind Power Forecasting. Applied Energy, 250, 530-539. &gt;https://doi.org/10.1016/j.apenergy.2019.05.044
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref15">
    <label>15</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Meka, R., Alaeddini, A. and Bhaganagar, K. (2021) A Robust Deep Learning Framework for Short-Term Wind Power Forecast of a Full-Scale Wind Farm Using Atmospheric Variables. Energy, 221, Article ID: 119759. &gt;https://doi.org/10.1016/j.energy.2021.119759
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref16">
    <label>16</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Huang, S., Yan, C. and Qu, Y. (2023) Deep Learning Model-Transformer Based Wind Power Forecasting Approach. Frontiers in Energy Research, 10, Article ID: 1055683. &gt;https://doi.org/10.3389/fenrg.2022.1055683
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref17">
    <label>17</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Chen, W., Qi, W., Li, Y., Zhang, J., Zhu, F., Xie, D., et al. (2021) Ultra-Short-Term Wind Power Prediction Based on Bidirectional Gated Recurrent Unit and Transfer Learning. Frontiers in Energy Research, 9, Article ID: 808116. &gt;https://doi.org/10.3389/fenrg.2021.808116
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref18">
    <label>18</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Tarek, Z., Y. Shams, M., M. Elshewey, A., M. El-kenawy, E., Ibrahim, A., A. Abdelhamid, A., et al. (2023) Wind Power Prediction Based on Machine Learning and Deep Learning Models. Computers, Materials&amp;Continua, 74, 715-732. &gt;https://doi.org/10.32604/cmc.2023.032533
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref19">
    <label>19</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Yadav, A., Jha, C.K. and Sharan, A. (2020) Optimizing LSTM for Time Series Prediction in Indian Stock Market. Procedia Computer Science, 167, 2091-2100. &gt;https://doi.org/10.1016/j.procs.2020.03.257
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref20">
    <label>20</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Xie, H., Zhang, L. and Lim, C.P. (2020) Evolving CNN-LSTM Models for Time Series Prediction Using Enhanced Grey Wolf Optimizer. IEEE Access, 8, 161519-161541. &gt;https://doi.org/10.1109/access.2020.3021527
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref21">
    <label>21</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Smagulova, K. and James, A.P. (2019) A Survey on LSTM Memristive Neural Network Architectures and Applications. The European Physical Journal Special Topics, 228, 2313-2324. &gt;https://doi.org/10.1140/epjst/e2019-900046-x
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref22">
    <label>22</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Serrano-Pérez, J.d.J., Fernández-Anaya, G., Carrillo-Moreno, S. and Yu, W. (2021) New Results for Prediction of Chaotic Systems Using Deep Recurrent Neural Networks. Neural Processing Letters, 53, 1579-1596. &gt;https://doi.org/10.1007/s11063-021-10466-1
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref23">
    <label>23</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Fan, C., Zhang, Y., Pan, Y., Li, X., Zhang, C., Yuan, R., et al. (2019) Multi-Horizon Time Series Forecasting with Temporal Attention Learning. Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery&amp;Data Mining, Anchorage, 4-8 August 2019, 2527-2535. &gt;https://doi.org/10.1145/3292500.3330662
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref24">
    <label>24</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Sak, H., Senior, A. and Beaufays, F. (2014) Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling. Interspeech 2014, Singapore, 14-18 September 2014, 338-342. &gt;https://doi.org/10.21437/interspeech.2014-80
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref25">
    <label>25</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Mirjalili, S., Mirjalili, S.M. and Lewis, A. (2014) Grey Wolf Optimizer. Advances in Engineering Software, 69, 46-61. &gt;https://doi.org/10.1016/j.advengsoft.2013.12.007
    </mixed-citation>
   </ref>
   <ref id="scirp.138230-ref26">
    <label>26</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Muro, C., Escobedo, R., Spector, L. and Coppinger, R.P. (2011) Wolf-Pack (Canis lupus) Hunting Strategies Emerge from Simple Rules in Computational Simulations. Behavioural Processes, 88, 192-197. &gt;https://doi.org/10.1016/j.beproc.2011.09.006
    </mixed-citation>
   </ref>
  </ref-list>
 </back>
</article>