<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Application of Machine Learning Techniques for Forecasting Electricity Generation and Consumption in Ukraine</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Anatoliy Doroshenko</string-name>
          <email>doroshenkoanatoliy2@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Dmitry Zhora</string-name>
          <email>dmitry.zhora@gmx.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Olena Savchuk</string-name>
          <email>savchuk_l1@ukr.net</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Olena Yatsenko</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute of Software Systems of the National Academy of Sciences of Ukraine</institution>
          ,
          <addr-line>Glushkov Ave. 40, build. 5, Kyiv, 03187</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>National Technical University of Ukraine “Igor Sikorsky Kyiv Polytechnic Institute”</institution>
          ,
          <addr-line>Peremohy Ave. 37, Kyiv, 03056</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <fpage>136</fpage>
      <lpage>146</lpage>
      <abstract>
        <p>To achieve successful business operations and optimize business processes, it is necessary to incorporate the request for forecasting as a key component in electricity markets. In the paper, based on the model developed at the Institute for Modeling in Energy Engineering of the National Academy of Sciences, the utilization of machine learning methods to predict the generation and consumption of electricity in Ukraine is proposed. The experiments were carried out involving the use of regression techniques to reconstruct a dataset from bilateral contracts to predict electricity generation and consumption. The results of employing machine learning algorithms on hourly peacetime data revealed the feasibility of accurately forecasting market volumes and thus electricity consumption one hour ahead, extending the predictive capability beyond a one-day planning horizon.</p>
      </abstract>
      <kwd-group>
        <kwd>1 Algorithm</kwd>
        <kwd>balancing market</kwd>
        <kwd>bilateral contracts market</kwd>
        <kwd>day-ahead market</kwd>
        <kwd>electrical energy</kwd>
        <kwd>forecasting</kwd>
        <kwd>intraday market</kwd>
        <kwd>machine learning</kwd>
        <kwd>regression</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        It is important to understand the market situation and the structure of supply and demand [
        <xref ref-type="bibr" rid="ref2 ref3 ref4">2–4</xref>
        ] to
implement a trade strategy and conduct business successfully, to maximize economic results in the
specified market segment. Trading on DAM takes place according to the principle of margin
pricing — sellers submit orders at the minimum price at which they are ready to sell, and buyers — at
the maximum price at which they are ready to buy. According to the results of auctions on DAM,
sellers sell at a price not lower than their ask, and buyers buy at a price not higher than their bid.
      </p>
      <p>
        The hourly demand for DAM is the hourly amount of electricity that customers declare and want
to buy from DAM at the respective hourly prices. This amount directly affects both the marginal price
that will be created and the amount of electricity that will be bought and sold. According to the law of
supply and demand, the lower the demand for a product, the lower the price; the higher the demand,
the higher the price will be. This directly affects the volumes that will be accepted for sale for sellers
on DAM. There is a need to forecast the demand for DAM. But now in Ukraine, there are no
mechanisms, algorithms, or mathematical models that would allow forecasting with a low forecasting
error. The demand for DAM depends on a large number of factors [
        <xref ref-type="bibr" rid="ref5 ref6 ref7">5–7</xref>
        ], in particular:
 volumes of concluded bilateral agreements;
 seasonality;
 blackout due to the destruction of critical energy infrastructure facilities;
 day of the week.
      </p>
      <p>
        To obtain forecast results as close as possible to real data, the scientists of the G. E. Pukhov
Institute for Modeling in Energy Engineering proposed the following [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>1. Using trading results for the last available day;
2. Using the change in demand between the day on which the actual results are available and the
day on which the forecast is made;</p>
      <p>3. Taking into account the change in demand, for example, for the previous four weeks between
the same days of the week.</p>
      <p>
        A specialized algorithm for short-term hourly-based forecasting of the amount of electrical energy
that will be traded on DAM was proposed in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The basis of the developed algorithm is the
possibility to formulate the problem in a parametric form, where the forecast and real data of the
hourly demand on the DAM were used as indicators. The mathematical specification of the most
accurate algorithm is given in terms of a weighted average value for positive and negative changes in
demand. The deviation from the arithmetic mean of the absolute values of changes in demand was
taken into account to determine atypical days (or outliers in machine learning terminology). The
forecast was using statistical data with the amount of electricity purchased on the DAM, using the
principle of multi-iteration analysis of changes in demand for previous similar days of previous
months (with the possibility of increasing the sampling depth to quarters or years) [
        <xref ref-type="bibr" rid="ref10 ref11 ref9">9–11</xref>
        ]. At the same
time, it should be noted that all calculations were performed in Microsoft Excel package. This
approach provides availability of all data and calculations, simplicity, and low cost of implementation
of such an algorithm.
      </p>
      <p>
        In previous works [
        <xref ref-type="bibr" rid="ref12 ref13 ref14">12–14</xref>
        ], we’ve been developing formal and adaptive methods and tools for
designing parallel programs that apply artificial intelligence techniques (in particular, genetic
algorithms and neuro-evolution methods). In this paper, software facilities for forecasting the market
volume one day ahead using machine learning methods are proposed.
      </p>
    </sec>
    <sec id="sec-2">
      <title>Machine learning techniques used</title>
      <p>
        Machine learning [
        <xref ref-type="bibr" rid="ref15 ref16">15, 16</xref>
        ] is a set of artificial intelligence methods and is based on analyzing data
and identifying patterns within it. The Scikit-learn library [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] is the most common choice for solving
classic machine-learning problems. This library provides a diverse set of supervised and unsupervised
learning techniques. Supervised learning assumes the presence of a labeled dataset in which the value
of the target feature is known. While unsupervised learning does not require the presence of markup
in the dataset, it requires learning to extract useful information from arbitrary data. One of the main
advantages of this library is that it reuses several common mathematical libraries, and easily
integrates them. Another advantage is the wide community and detailed documentation. Scikit-learn is
widely used for industrial systems that use classic machine learning algorithms, for research, as well
as for beginners who are just taking their first steps in the field of machine learning.
      </p>
      <p>
        For its work, Scikit-learn uses the following popular libraries:
 NumPy [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]: mathematical operations and operations on tensors;
 Pandas [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]: data processing, manipulation, and analysis;
 SciPy [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]: scientific and engineering computing;
 Matplotlib [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]: data visualization;
 IPython [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]: interactive console for Python;
 SymPy [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]: symbolic mathematics.
      </p>
      <p>
        Scikit-learn specializes in machine learning algorithms for solving supervised learning problems:
classification (predicting a category with a limited set of valid values) and regression (predicting a
feature with real values) [
        <xref ref-type="bibr" rid="ref24 ref25">24, 25</xref>
        ], as well as for unsupervised learning problems: clustering
(partitioning data into classes, which the model will determine itself), dimensionality reduction
(representation of data in a lower-dimensional space with minimal loss of useful information) and
anomaly detection.
      </p>
      <p>
        Regression algorithms [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] are used in this paper and are intended to model the relation between
input and output data and make predictions based on that relation. Regression can be used for both
continuous and categorical input variables. In general, the goal of regression is to build a model that
can accurately predict an outcome based on input characteristics and to understand the underlying
relation between the input characteristics and the result. Regression analysis is used in various fields,
including economics, finance, marketing, and psychology, to understand and predict the relations
between various variables. It is a fundamental data analysis and machine learning tool used to make
predictions, identify trends, and understand the mechanisms behind data. Regression algorithms are
available in many forms, and the use of each algorithm depends on some parameters, such as the type
of attribute value, the trendline model, and the number of independent variables. Linear regression is
used to predict a value using linear dependency that is based on a set of features and to model the
relation between features and a target variable by fitting a line to the data.
      </p>
      <p>The Scikit-learn library implements the following main methods:
 linear: models whose task is to construct a separating (for classification) or approximating (for
regression) hyperplane;</p>
      <p> metric: models that calculate the distance using one of the metrics between sample objects, and
make decisions depending on this distance (k-nearest neighbors);</p>
      <p> decision trees: training models based on a set of conditions optimally selected to solve a
problem;</p>
      <p> ensemble methods: methods based on decision trees that combine the power of many trees, and
thus improve their performance, and also allow for feature selection (boosting, bagging, random
forest, majority voting);
 neural networks: a comprehensive nonlinear method for regression and classification problems;
 SVM: a nonlinear method that learns to identify decision boundaries;
 Naive Bayes: forward probabilistic modeling for classification problems;
 PCA: linear method for dimensionality reduction and feature selection;
 t-SNE: a nonlinear dimensionality reduction method;
 k-means: the most common method for clustering, requiring as input the number of clusters into
which the data should be distributed;</p>
      <p> cross-validation: a method in which the entire dataset is used for training (as opposed to
splitting into train/test samples), but training occurs multiple times, and different parts of the dataset
act as a validation sample at each step. The final result is the averaging of the results obtained;
 grid search: a method for finding the optimal hyperparameters of a model by constructing a grid
of hyperparameter values and sequentially training models with all possible combinations of
hyperparameters from the grid.</p>
      <p>
        In particular, the k-nearest neighbors algorithm [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] is a metric algorithm for automatic object
classification or regression. When using the method for classification, an object is assigned to the
class that is the most common among the k neighbors of a given element, the classes of which are
already known. When using the method for regression, an object is assigned an average value over the
k closest objects, the values of which are already known. The algorithm can be applied to samples
with a large number of attributes (multidimensional). To do this, the distance function must be
determined before use. The classic version of such a function is the Euclidean metric [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ], other
options are the Manhattan distance [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ], cosine measure, and Pearson correlation criterion.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Forecasting problems for available data</title>
      <p>
        Currently, experiments have been conducted on the application of machine learning methods for
forecasting the generation and consumption of electricity using the Scikit-learn open-source
software [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>The volume of each of the four markets mentioned in the introduction is calculated for each hour
of the day in megawatts per hour. The example shown in Figure 1 aggregates all data on electricity
markets in Ukraine. For comparison, in Europe, market volumes are recorded every 15 minutes.</p>
      <p>We can highlight the following tasks for which it is appropriate to use machine learning methods:
 reproduction of missing values in the database;
 hourly forecasting of the market for 24 hours in advance using previous data for several hours
and the sliding window method for their sampling;</p>
      <p> market forecasting with additional use of data for the previous year.
3.1.</p>
    </sec>
    <sec id="sec-4">
      <title>Restoring the column with data on bilateral agreements</title>
      <p>Data from July 2020 to December 2021 were used to form the training and test datasets. The
k-nearest neighbors method was used to populate the Bilateral column. Optimal hyperparameters are
the following: the number of neighbors is 14, the metric is Manhattan, and the algorithm takes into
account the distance to each neighbor. In the case of the four input parameters mentioned above, it
was experimentally proven that reducing this set worsens the results.</p>
      <p>Finding the optimal set of input parameters. The next step is to try using more parameters, in
particular from the Bilateral column. The optimal number of input parameters for a machine learning
algorithm is always limited. The fact is that when the number of input parameters increases, the
algorithm begins to correlate random fluctuations in the input data with the output value. This effect is
usually called the curse of dimensionality.</p>
      <p>The set of input parameters obtained empirically is shown in Figure 2 and highlighted in black.
The values Bilateral1 and Bilateral2 were used at the input of the machine learning model more than
once. The optimal value of the hyperparameter in relation to the optimal number of neighbors has
changed, now the value is 4. The results of data prediction for various algorithms are shown in Table
2. Figure 3 shows the deviations of the predicted values from the real ones for the test dataset. As can
be seen from the graph, the probability distribution of the forecasting error is close to normal.</p>
      <p>The intermediate prediction results when increasing the number of cells in the Bilateral column are
shown in Figure 4. This research proves that it is optimal to use about 10–11 values from the available
historical data for forecasting the bilateral contract market.</p>
      <p>Data from July 2020 to December 2021 were used to form the training and test datasets. The
k-nearest neighbors method was used to populate the Bilateral column. Optimal hyperparameters are
the following: the number of neighbors is 14, the metric is Manhattan, and the algorithm takes into
account the distance to each neighbor. In the case of the four input parameters mentioned above, it
was experimentally proven that reducing this set worsens the results.</p>
      <p>Finding the optimal set of input parameters. The next step is to try using more parameters, in
particular from the Bilateral column. The optimal number of input parameters for a machine learning
algorithm is always limited. The fact is that when the number of input parameters increases, the
algorithm begins to correlate random fluctuations in the input data with the output value. This effect is
usually called the curse of dimensionality. The set of input parameters obtained empirically is shown
in Figure 2 and highlighted in black. The values Bilateral1 and Bilateral2 were used at the input of the
machine learning model more than once. The optimal value of the hyperparameter in relation to the
optimal number of neighbors has changed, now the value is 4.</p>
      <p>The results of data prediction for various algorithms are shown in Table 2.</p>
      <p>Figure 3 shows the deviations of the predicted values from the real ones for the test dataset. As can
be seen from the graph, the probability distribution of the forecasting error is close to normal.</p>
      <p>The intermediate prediction results when increasing the number of cells in the Bilateral column are
shown in Figure 4. This research proves that it is optimal to use about 10–11 values from the available
historical data for forecasting the bilateral contract market.
3.2.</p>
      <p>The previous section analyses the prediction of bilateral market volume just one hour back. With
an available and trained machine learning model, the iterative algorithm was used to restore the
bilateral column for one year range. The results are shown below in Figure 5. The two lines displayed
correspond to configurations of input parameters considered earlier.</p>
      <p>The chart allows us to conclude that the process is globally sustainable, but eventually, it falls into
loops and attractors. Unfortunately, these restored data cannot be reused to train subsequent machine
learning models. The left side of the chart is quite different from the real data shown in Figure 6.</p>
      <p>Several issues should be clarified within the framework of the study. First, what is the optimal
depth of historical data (in hours) to use for forecasting. This depth may vary for different electricity
markets. Another dilemma concerns the iterative approach. It is possible to forecast data 24 times one
hour ahead, but it is also possible to forecast for all 24 hours at once, with a fixed state of the input
window.
3.4.</p>
    </sec>
    <sec id="sec-5">
      <title>Taking into account time data for the previous year</title>
      <p>Using data from the previous year in forecasting can be useful from several points of view. For
example, the capacity of solar, wind, and hydro-generating stations depends significantly on the
season. The capabilities of solar stations depend even on the time of day. Burning coal for
environmental reasons is possible only when other energy sources are already working at full
capacity. Data for the previous year already take into account flows of electricity from one market to
another. However, the usefulness of last year’s data must be determined experimentally.
2
1.9
1.8
1.7
1.6
1.5
1.4
1.3
1.2
1.1
1
0.99
0.98
0.97
0.96
0.95
0.94</p>
    </sec>
    <sec id="sec-6">
      <title>4. Acknowledgements</title>
      <p>We would like to thank the scientists of the G. E. Pukhov Institute for Modeling in Energy
Engineering of the National Academy of Sciences of Ukraine for providing the data on electricity
markets in Ukraine.</p>
    </sec>
    <sec id="sec-7">
      <title>5. Conclusion</title>
    </sec>
    <sec id="sec-8">
      <title>6. Reference</title>
      <p>Effective business operations and the optimization of business processes necessitate the
implementation of demand forecasting in electricity markets as a crucial component. We proposed the
application of machine learning techniques for forecasting electricity generation and consumption in
Ukraine. The experiments were carried out to apply regression methods in reconstructing a column
using data from bilateral contracts, specifically to predict electricity generation and consumption.
Results from employing machine learning algorithms on hourly peacetime data indicate the potential
to forecast market volumes and thus electricity consumption one hour ahead with approximately 1%
accuracy. The level of accuracy achieved should enable planning beyond a single day in the future.
Appendix A. Fragment of the machine learning algorithm
output_names = ['Bilateral']
feature_names = ['Bilateral11', 'Bilateral10',
'Bilateral9', 'Bilateral8', 'Bilateral7', 'Bilateral6',
'Bilateral5', 'Bilateral4', 'Bilateral3', 'Bilateral2',
'Bilateral2', 'Bilateral1', 'Bilateral1', 'Bilateral1',
'Bilateral1', 'Bilateral1', 'Bilateral1', 'Bilateral1',
'Bilateral1', 'DayAhead1', 'Intraday1', 'DayAhead', 'Intraday']
print(F"Reading the datasets for bilateral column forecasting")
bilateral_dataset = pandas.read_csv('datasets/bilateral-available-dataset.csv')
bilateral_training = pandas.read_csv('datasets/bilateral-available-training.csv')
bilateral_testing = pandas.read_csv('datasets/bilateral-available-testing.csv')
training_inputs = bilateral_training[feature_names]
training_outputs = bilateral_training[output_names]
testing_inputs = bilateral_testing[feature_names]
testing_outputs = bilateral_testing[output_names]
print("Training the evaluation nearest neighbors regression model")
evaluation_regressor = KNeighborsRegressor(n_neighbors = 4, weights = 'distance',
algorithm = 'auto', p = 1, metric = 'minkowski', n_jobs = 8)
evaluation_regressor.fit(training_inputs, training_outputs)
predicted_training_outputs = evaluation_regressor.predict(training_inputs)
predicted_testing_outputs = evaluation_regressor.predict(testing_inputs)
print_evaluation_metrics(training_outputs, testing_outputs, \</p>
      <p>predicted_training_outputs, predicted_testing_outputs)
Appendix B. Fragment of the sliding window algorithm
print("Populating the missing bilateral market data")
forecast_source_path = 'datasets/bilateral-forecast-source.csv'
print(F"Reading the dataset from file {forecast_source_path}")
forecast_data_frame = pandas.read_csv(forecast_source_path)
forecast_data_frame_length = forecast_data_frame.shape[0]
for i in reversed(range(forecast_data_frame_length)):
if (i % 100 == 0): print(i)
if (i == forecast_data_frame_length - 1):
bilateral11 = forecast_data_frame.iloc[i]["Bilateral11"]
bilateral10 = forecast_data_frame.iloc[i]["Bilateral10"]
bilateral9 = forecast_data_frame.iloc[i]["Bilateral9"]
bilateral8 = forecast_data_frame.iloc[i]["Bilateral8"]
bilateral7 = forecast_data_frame.iloc[i]["Bilateral7"]
bilateral6 = forecast_data_frame.iloc[i]["Bilateral6"]
bilateral5 = forecast_data_frame.iloc[i]["Bilateral5"]
bilateral4 = forecast_data_frame.iloc[i]["Bilateral4"]
bilateral3 = forecast_data_frame.iloc[i]["Bilateral3"]
bilateral2 = forecast_data_frame.iloc[i]["Bilateral2"]
bilateral1 = forecast_data_frame.iloc[i]["Bilateral1"]
else:
bilateral11 = bilateral10
bilateral10 = bilateral9
bilateral9 = bilateral8
bilateral8 = bilateral7
bilateral7 = bilateral6
bilateral6 = bilateral5
bilateral5 = bilateral4
forecast_data_frame.loc[i, "Bilateral11"] = bilateral11
forecast_data_frame.loc[i, "Bilateral10"] = bilateral10
forecast_data_frame.loc[i, "Bilateral9"] = bilateral9
forecast_data_frame.loc[i, "Bilateral8"] = bilateral8
forecast_data_frame.loc[i, "Bilateral7"] = bilateral7
forecast_data_frame.loc[i, "Bilateral6"] = bilateral6
forecast_data_frame.loc[i, "Bilateral5"] = bilateral5
forecast_data_frame.loc[i, "Bilateral4"] = bilateral4
forecast_data_frame.loc[i, "Bilateral3"] = bilateral3
forecast_data_frame.loc[i, "Bilateral2"] = bilateral2
forecast_data_frame.loc[i, "Bilateral1"] = bilateral1
day_ahead1 = forecast_data_frame.iloc[i]["DayAhead1"]
intraday1 = forecast_data_frame.iloc[i]["Intraday1"]
day_ahead = forecast_data_frame.iloc[i]["DayAhead"]
intraday = forecast_data_frame.iloc[i]["Intraday"]
forecast_data_frame.loc[i, "Bilateral"] = bilateral
forecast_target_path = 'datasets/bilateral-forecast-target.csv'
print(F"Writing the dataset to file {forecast_target_path}")
forecast_data_frame.to_csv(forecast_target_path, index = False)</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>[1] Competition market study of Ukraine's electricity sector</article-title>
          ,
          <source>OECD</source>
          , Paris,
          <year>2023</year>
          . URL: https://read.oecd.
          <source>org/10</source>
          .1787/f28f98ed-en?format=pdf
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>G.</given-names>
            <surname>Klaeboe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Braathen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.L.</given-names>
            <surname>Eriksrud</surname>
          </string-name>
          , S.-E. Fleten,
          <article-title>Day-ahead market bidding taking the balancing power market into account</article-title>
          ,
          <source>TOP</source>
          <volume>30</volume>
          (
          <year>2022</year>
          )
          <fpage>683</fpage>
          -
          <lpage>703</lpage>
          . doi:
          <volume>10</volume>
          .1007/s11750-022- 00645-1
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>X.</given-names>
            <surname>Ge</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Wang</surname>
          </string-name>
          and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Mi</surname>
          </string-name>
          ,
          <article-title>Day-ahead market optimal bidding strategy of load aggregator engaging demand response program considering price uncertainty</article-title>
          ,
          <source>in: Proceedings of the 2019 IEEE Power &amp; Energy Society General Meeting (PESGM)</source>
          , IEEE, Ney York, NY,
          <year>2019</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          . doi:
          <volume>10</volume>
          .1109/PESGM40551.
          <year>2019</year>
          .
          <volume>8973535</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>R.</given-names>
            <surname>Qussous</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Harder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Weidlich</surname>
          </string-name>
          ,
          <article-title>Understanding power market dynamics by reflecting market interrelations and flexibility-oriented bidding strategies</article-title>
          ,
          <source>Energies</source>
          <volume>15</volume>
          (
          <year>2022</year>
          )
          <fpage>1</fpage>
          -
          <lpage>24</lpage>
          . doi:
          <volume>10</volume>
          .3390/en15020494.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M.</given-names>
            <surname>Sharma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Mittal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mishra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Gupta</surname>
          </string-name>
          ,
          <article-title>Survey of electricity demand forecasting and demand side management techniques in different sectors to identify scope for improvement</article-title>
          .
          <source>Smart Grids and Energy</source>
          <volume>8</volume>
          (
          <year>2023</year>
          )
          <fpage>1</fpage>
          -
          <lpage>22</lpage>
          . doi:
          <volume>10</volume>
          .1007/s40866-023-00168-z
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>N.</given-names>
            <surname>Phuangpornpitak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Prommee</surname>
          </string-name>
          ,
          <article-title>A study of load demand forecasting models in electric power system operation and planning</article-title>
          ,
          <source>GMSARN International Journal</source>
          <volume>10</volume>
          (
          <year>2016</year>
          )
          <fpage>19</fpage>
          -
          <lpage>24</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Guo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Luo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>He</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>He</surname>
          </string-name>
          ,
          <article-title>Real-time deep learning-based market demand forecasting and monitoring</article-title>
          ,
          <source>Computers and Electrical Engineering</source>
          <volume>100</volume>
          (
          <year>2022</year>
          )
          <article-title>107878</article-title>
          . doi:
          <volume>10</volume>
          .1016/j.compeleceng.
          <year>2022</year>
          .
          <volume>107878</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A.</given-names>
            <surname>Polukhin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Evdokimov</surname>
          </string-name>
          ,
          <article-title>Conceptual principles of forecasting demand on the day-ahead market using changes in hourly bidded demand between previous similar days</article-title>
          ,
          <source>in: Proceedings of the 4th International Conference on Sustainable Futures: Environmental</source>
          , Technological, Social And Economic Matters, Sustainable Energy Workshop (SEnW-2023),
          <source>IOP Conference Series: Earth Environment and Science</source>
          <volume>1254</volume>
          (
          <year>2023</year>
          )
          <fpage>1</fpage>
          -
          <lpage>9</lpage>
          . doi:
          <volume>10</volume>
          .1088/
          <fpage>1755</fpage>
          - 1315/1254/1/012035.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <article-title>Day-ahead electricity demand forecasting using a hybrid method</article-title>
          ,
          <source>in: Proceedings of the 4th International Conference on Computer Engineering and Networks, Lecture Notes in Electrical Engineering</source>
          <volume>355</volume>
          (
          <year>2015</year>
          )
          <fpage>349</fpage>
          -
          <lpage>356</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -11104- 9_
          <fpage>41</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Pavićević</surname>
          </string-name>
          , T. Popović,
          <article-title>Forecasting day-ahead electricity metrics with artificial neural networks</article-title>
          ,
          <source>Sensors</source>
          <volume>22</volume>
          (
          <year>2022</year>
          )
          <fpage>1</fpage>
          -
          <lpage>19</lpage>
          . doi:
          <volume>10</volume>
          .3390/s22031051.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>O.</given-names>
            <surname>Trull</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. C.</given-names>
            <surname>García-Díaz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Troncoso</surname>
          </string-name>
          ,
          <article-title>One-day-ahead electricity demand forecasting in holidays using discrete-interval moving seasonalities</article-title>
          ,
          <source>Energy</source>
          <volume>231</volume>
          (
          <year>2021</year>
          )
          <article-title>120966</article-title>
          . doi:
          <volume>10</volume>
          .1016/j.energy.
          <year>2021</year>
          .
          <volume>120966</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Doroshenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Yatsenko</surname>
          </string-name>
          ,
          <article-title>Formal and adaptive methods for automation of parallel programs construction: Emerging research and opportunities</article-title>
          , IGI Global, Hershey, PA,
          <year>2021</year>
          . doi:
          <volume>10</volume>
          .4018/978-1-
          <fpage>5225</fpage>
          -9384-3
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>A.</given-names>
            <surname>Doroshenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Shymkovych</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Yatsenko</surname>
          </string-name>
          , T. Mamedov,
          <article-title>Automated software design for FPGAs on an example of developing a genetic algorithm</article-title>
          ,
          <source>in: Proceedings of the 17th Int. Conf. “ICT in Education, Research and Industrial Applications. Integration, Harmonization and Knowledge Transfer” (ICTERI</source>
          <year>2021</year>
          ),
          <year>2021</year>
          , pp.
          <fpage>74</fpage>
          -
          <lpage>85</lpage>
          . URL: https://ceur-ws.org/Vol3013/20210074.pdf
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>A. Y.</given-names>
            <surname>Doroshenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. Z.</given-names>
            <surname>Achour</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O. A.</given-names>
            <surname>Yatsenko</surname>
          </string-name>
          ,
          <article-title>Parameter-driven generation of evaluation program for a neuroevolution algorithm on a binary multiplexer example, Radio Electronics</article-title>
          , Computer Science, Control,
          <volume>1</volume>
          (
          <year>2023</year>
          )
          <fpage>80</fpage>
          -
          <lpage>88</lpage>
          . doi:
          <volume>10</volume>
          .15588/
          <fpage>1607</fpage>
          -3274-2023-1-8.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>E.</given-names>
            <surname>Alpaydin</surname>
          </string-name>
          , Machine Learning, The MIT Press, Cambridge, MA,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>C.</given-names>
            <surname>Shah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A</given-names>
            <surname>Hands-On Introduction</surname>
          </string-name>
          to Machine Learning, 1st. ed., Cambridge University Press, Cambridge,
          <year>2023</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <article-title>Scikit-learn 1.3.2</article-title>
          . URL: https://github.com/scikit-learn/scikit-learn/releases/tag/1.3.2.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <article-title>NumPy</article-title>
          . ULR: http://www.numpy.org/
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Pandas</surname>
          </string-name>
          . URL: https://pandas.pydata.org/
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <article-title>SciPy</article-title>
          . URL: https://www.scipy.org/
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Matplotlib</surname>
          </string-name>
          . URL: https://matplotlib.org/
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <article-title>IPython</article-title>
          . URL: https://ipython.org/
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <article-title>SymPy</article-title>
          . URL: https://www.sympy.org/en/index.html
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>I. McGrath</surname>
          </string-name>
          ,
          <article-title>Machine Learning - Regression and Classification (math Inc.): A complete Beginner to Advance level guide to Machine Learning</article-title>
          .
          <source>Hands-on Learning approach with indepth math concepts</source>
          ,
          <source>Kindle edition</source>
          ,
          <year>2023</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>S.</given-names>
            <surname>Liu</surname>
          </string-name>
          , Regression: Book One,
          <article-title>Series of Machine Learning with Scikit-Learn, Independently published</article-title>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>J.</given-names>
            <surname>Frost</surname>
          </string-name>
          ,
          <article-title>Regression Analysis: An Intuitive Guide for Using and Interpreting Linear Models</article-title>
          , Statistics By Jim Publishing,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>T.</given-names>
            <surname>Srivastava</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A Complete</given-names>
            <surname>Guide to K-Nearest Neighbors</surname>
          </string-name>
          (
          <year>Updated 2023</year>
          ). URL: https://www.analyticsvidhya.com/blog/2018/03/introduction
          <article-title>-k-neighbours-algorithm-clustering/</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>M. M. Deza</surname>
          </string-name>
          , E. Deza, Encyclopedia of Distances, 4th. ed., Springer, Cham,
          <year>2016</year>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>662</fpage>
          -52844-0.
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>R.</given-names>
            <surname>Suwanda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Syahputra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. M.</given-names>
            <surname>Zamzami</surname>
          </string-name>
          ,
          <article-title>Analysis of Euclidean distance and Manhattan distance in the K-means algorithm for variations number of centroid K</article-title>
          ,
          <source>Journal of Physics Conference Series</source>
          <volume>1566</volume>
          (
          <year>2020</year>
          )
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          . doi:
          <volume>10</volume>
          .1088/
          <fpage>1742</fpage>
          -6596/1566/1/012058
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>