<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.4 20241031//EN" "JATS-journalpublishing1-4.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article" dtd-version="1.4" xml:lang="en">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">ojop</journal-id>
      <journal-title-group>
        <journal-title>Open Journal of Optimization</journal-title>
      </journal-title-group>
      <issn pub-type="epub">2325-7091</issn>
      <issn pub-type="ppub">2325-7105</issn>
      <publisher>
        <publisher-name>Scientific Research Publishing</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.4236/ojop.2026.152002</article-id>
      <article-id pub-id-type="publisher-id">ojop-151148</article-id>
      <article-categories>
        <subj-group>
          <subject>Article</subject>
        </subj-group>
        <subj-group>
          <subject>Computer Science</subject>
          <subject>Communications</subject>
          <subject>Engineering</subject>
          <subject>Physics</subject>
          <subject>Mathematics</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>Regression Neural Networks for Emulating Evolutionary Algorithm Predictions in Optimal Control</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <contrib-id contrib-id-type="orcid">0000-0002-6207-0886</contrib-id>
          <name name-style="western">
            <surname>Arama</surname>
            <given-names>Iulian</given-names>
          </name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author" corresp="yes">
          <contrib-id contrib-id-type="orcid">0000-0003-2619-8169</contrib-id>
          <name name-style="western">
            <surname>Mînzu</surname>
            <given-names>Viorel</given-names>
          </name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
      </contrib-group>
      <aff id="aff1"><label>1</label> Informatics Department, “Danubius” University, Galati, Romania </aff>
      <aff id="aff2"><label>2</label> Automation Department, “Dunarea de Jos” University, Galati, Romania </aff>
      <author-notes>
        <fn fn-type="conflict" id="fn-conflict">
          <p>The authors declare no conflicts of interest.</p>
        </fn>
      </author-notes>
      <pub-date pub-type="epub">
        <day>03</day>
        <month>06</month>
        <year>2026</year>
      </pub-date>
      <pub-date pub-type="collection">
        <month>06</month>
        <year>2026</year>
      </pub-date>
      <volume>15</volume>
      <issue>02</issue>
      <fpage>23</fpage>
      <lpage>49</lpage>
      <history>
        <date date-type="received">
          <day>22</day>
          <month>03</month>
          <year>2026</year>
        </date>
        <date date-type="accepted">
          <day>04</day>
          <month>05</month>
          <year>2026</year>
        </date>
        <date date-type="published">
          <day>07</day>
          <month>05</month>
          <year>2026</year>
        </date>
      </history>
      <permissions>
        <copyright-statement>© 2026 by the authors and Scientific Research Publishing Inc.</copyright-statement>
        <copyright-year>2026</copyright-year>
        <license license-type="open-access">
          <license-p> This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license ( <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link> ). </license-p>
        </license>
      </permissions>
      <self-uri content-type="doi" xlink:href="https://doi.org/10.4236/ojop.2026.152002">https://doi.org/10.4236/ojop.2026.152002</self-uri>
      <abstract>
        <p>Many controlled processes, such as biochemical ones, are repetitive, similar to batch-organized processes. They generate Optimal Control Problems (OCPs) solved by optimal controllers, which often predict the best control values over a prediction horizon using a process model (PM). The latter can encompass imprecise, incomplete, and uncertain knowledge, nonlinearities, or may represent a distributed-parameter system, among other features. Using metaheuristics like the Evolutionary Algorithm (EA) within control structures is a practical approach for specific OCPs. The main drawback of this solution is its high computational demands, which can exceed the sampling period. Previously, the authors explored a new topic: whether a machine learning (ML) algorithm could “learn” the optimal behavior of the couple (EA and PM). Multilinear regression functions were trained and utilized within the ML controller, leading to a significant reduction in its execution time. This article extends the research and proposes using Regressive Neural Networks (RNNs) instead of regression functions, because they have limited capacity to capture nonlinearities. RNNs are more complex regression models, with a greater capacity to model EA-PM couples. The article meticulously describes how the training data is obtained. Algorithms for constructing the RNNs, developing the RNN predictor, and simulating the closed-loop are also proposed. The results are convincing: a) the control-loop dynamic was practically identical with that using the EA predictor; b) the performance indices were practically the same; c) the controller’s execution time decreased remarkably. Using MATLAB for the Park Ramirez Problem, this time was 38 seconds, with the multilinear regression functions, it was 0. 08 seconds, and now with the RNN predictor, it is 0.0549 seconds. This outstanding reduction in prediction time opens the possibility to apply Receding Horizon Control (RHC) not only to slow processes but also to fast ones, which have small time constants.</p>
      </abstract>
      <kwd-group kwd-group-type="author-generated" xml:lang="en">
        <kwd>Evolutionary Algorithm</kwd>
        <kwd>Machine Learning</kwd>
        <kwd>Optimal Control</kwd>
        <kwd>Simulation</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec1">
      <title>1. Introduction</title>
      <p>Many controlled processes, such as biochemical ones, are repetitive, similar to batch-organized processes. They generate Optimal Control Problems (OCPs) solved by optimal controllers, which often predict the best control values over a prediction horizon using a Process Model (PM).</p>
      <p>A control structure that can implement closed-loop optimal solutions for OCPs is Receding Horizon Control (RHC). The essential characteristics of this control structure are:</p>
      <p>It includes a predictor for estimating the future optimal control values required to complete the optimization task.It also encompasses a Process Model that the predictor harnesses to generate its predictions.</p>
      <p>The predictor implicitly implements a specific method to solve the optimization problem. That is why a metaheuristic algorithm [<xref ref-type="bibr" rid="B1">1</xref>]-[<xref ref-type="bibr" rid="B3">3</xref>] can be a practical choice, such as the EA, Particle Swarm Optimization, etc. Many articles highlight the ability of metaheuristic algorithms to solve complex problems in the field of dynamic optimization [<xref ref-type="bibr" rid="B4">4</xref>]-[<xref ref-type="bibr" rid="B9">9</xref>]. A systematic way to use metaheuristics in solving OCPs is presented in [<xref ref-type="bibr" rid="B10">10</xref>][<xref ref-type="bibr" rid="B11">11</xref>].</p>
      <p>The EA predictor has some characteristics:</p>
      <p>The main strength is that the EA can solve difficult optimization problems with imprecise, incomplete, and uncertain knowledge, nonlinearities, or in a distributed-parameter system [<xref ref-type="bibr" rid="B12">12</xref>].The main drawback is its computational complexity. The EA is called at each single sampling period to find a partial solution and perform many numerical integrations.The execution time is significant; sometimes it can be slightly less than the sampling period. That is why the EA predictor is typically used in control structures for slow processes.In this context, there are possibilities to reduce its execution time [<xref ref-type="bibr" rid="B13">13</xref>]-[<xref ref-type="bibr" rid="B15">15</xref>], but unfortunately, they diminish the solutions’ accuracy.</p>
      <p>Another way to address the main possible drawback of the EA predictor is to look for Machine Learning-based solutions [<xref ref-type="bibr" rid="B16">16</xref>]-[<xref ref-type="bibr" rid="B19">19</xref>].</p>
      <p>In a previous study [<xref ref-type="bibr" rid="B20">20</xref>], the authors explored a new topic: whether a machine learning algorithm could “learn” the optimal behavior of the EA-PM pair. Multilinear regression functions [<xref ref-type="bibr" rid="B21">21</xref>]-[<xref ref-type="bibr" rid="B23">23</xref>] were trained and utilized within the so-called ML controller, leading to an outstanding reduction in its execution time.</p>
      <p>In this paper, we extended the research in line with [<xref ref-type="bibr" rid="B20">20</xref>] and proposed replacing the regression functions with Regressive Neural Networks. What would be the benefit of using RNNs instead of multilinear regression functions? The regression functions proposed in the previous article have limited ability to capture nonlinearities, for example. RNNs are more complex regression models, with a greater capacity to model EA-PM couples. The price to pay will be the model size, but not always.</p>
      <p>The novelty of our approach, to the best of our knowledge, is that ML can learn even the EA’s behavior within the control structure.</p>
      <p>The control structure used in this work is known as Receding Horizon Control (RHC) [<xref ref-type="bibr" rid="B10">10</xref>][<xref ref-type="bibr" rid="B24">24</xref>]-[<xref ref-type="bibr" rid="B26">26</xref>], a type of Model Predictive Control [<xref ref-type="bibr" rid="B27">27</xref>][<xref ref-type="bibr" rid="B28">28</xref>]. This time, its prediction module uses an EA. It predicts, at each sampling moment, the optimal control sequence until the final time of the control horizon, using the process model. Then, the controller sends the first element of this sequence to the process and discards the other elements. After a sampling period, the controller picks up the process’s next state and resumes the control action. The EA employs a PM and other blocks for numerical integration and different computations.</p>
      <p>We shall consider RHC structures with two types of predictors: (a) one using an EA and (b) one employing Regression Neural Networks. The two structures control the same process to solve the same optimization problem. The controller (b), which will be called the RNN-controller in the sequel, is designed in a specific way that assumes the EA-controller (a) has already been implemented (at least to the simulation level).</p>
      <p><italic>The main objective of our work</italic>, <italic>presented in this article</italic>, <italic>is to develop the RNN</italic><italic>-</italic><italic>controller such that it emulates the EA</italic><italic>-</italic><italic>controller in optimizing the process modeled by the PM.</italic></p>
      <p>In article [<xref ref-type="bibr" rid="B20">20</xref>], the authors developed a controller called ML-controller that also emulates the EA-controller but uses a set of multilinear regression functions. The results were very good because the process’s evolutions were practically identical; moreover, the ML-controller’s execution time decreased significantly.</p>
      <p>Briefly, the training data for the RNNs is collected from simulations of the closed-loop system equipped with the EA-controller. The optimal behavior of the EA-PM couple is “learned” by the RNNs, which are then used in the new controller.</p>
      <p><italic>The main contribution of this work is the complete design process of the RNN</italic><italic>-</italic><italic>controller</italic>, <italic>from data collection to closed</italic><italic>-</italic><italic>loop simulation</italic>.</p>
      <p>Several algorithms were also proposed, and their corresponding programs were used to yield the results presented here<italic>.</italic> To write programs and to initially train and analyze the RNNs, we used the MATLAB system.</p>
      <p>To exemplify our presentation, we needed a case study, which is a well-known Optimal Control Problem called the Park-Ramirez problem (PRP) (<bold>Appendix A, A.1.4</bold>). This serves as a benchmark problem [<xref ref-type="bibr" rid="B29">29</xref>][<xref ref-type="bibr" rid="B30">30</xref>] that can illustrate a final cost OCP. We need to specify the following aspects:</p>
      <p>This research does not specifically aim to solve this problem.Solving this benchmark problem enables a comparison between previous work using regression functions and current work using RNNs.The PRP has a simple structure that does not complicate the presentation.</p>
      <p>As in [<xref ref-type="bibr" rid="B20">20</xref>], replacing thousands of PM’s numerical integrations with a single RNN call, during the current sampling period, leads to a significantly shorter execution time than the EA predictor. Section 2 discusses some aspects of using EAs in optimal control systems. It also connects this article to our previous work by referencing appendices that review important theoretical elements and make the presentation self-contained. The concepts of optimal control profile and optimal trajectories are defined within the context of a discrete-time solution of PRP; the latter employs a version of EA. A general overview, Algorithm 1, of the RHC Controller is also included.</p>
      <p>The sequence of activities needed to conduct the research is presented at the beginning of section 3, Materials and Methods. Subsection 3.1 is devoted to the collection of data needed for training, harnessing the programs already developed in the previous research. Then the data is split into datasets for each sampling period in Subsection 3.2; the training using these datasets will generate just as many RNNs. Construction sessions using an application of the MATLAB system will generate, as described in Subsection 3.3, RNN models, which are adequate for each sampling period.</p>
      <p>The algorithm for constructing the RNNs-Algorithm 2 is described in Subsection 3.4. Algorithm 3 in Subsection 3.5 describes the simulation of the closed-loop over the control horizon using the new controller with an RNN predictor.</p>
      <p>The results obtained in this work and the related discussions are the subject of Section 4, including the possible improvements. The overall conclusion is that the results are convincing:</p>
      <p>The dynamics of the control loop were practically the same as those generated by the EA predictor, including the state trajectory and the optimal control profile.The performance indices were practically the same.The controller’s execution time decreased remarkably; it is even smaller than that of the controller using regression functions.</p>
      <p>The RNN predictor succeeded in emulating the EA-PM couple. This fact shows that RHC can extend its applicability.</p>
    </sec>
    <sec id="sec2">
      <title>2. Optimal Control Using Evolutionary Algorithms</title>
      <p>Since it is essential for our approach, the control structure is recalled in <xref ref-type="fig" rid="fig1">Figure 1</xref>; at the same time, this also helps us to define the main objective and contribution of our work more clearly. In short, the goal is to define the structure in <xref ref-type="fig" rid="fig1">Figure 1(b)</xref> capable of emulating the one in <xref ref-type="fig" rid="fig1">Figure 1(a)</xref>.</p>
      <p>The objective of this work and the description of our method require many theoretical elements and notations that are used in our presentation. To reduce references to other works and make the presentation self-contained, the annexes of this article provide the necessary information to make it easier to follow the presentation.</p>
      <fig id="fig1">
        <label>Figure 1</label>
        <graphic xlink:href="https://html.scirp.org/file/2730404-rId16.jpeg?20260507020750" />
      </fig>
      <p>(a)</p>
      <fig id="fig2">
        <label>Figure 2</label>
        <graphic xlink:href="https://html.scirp.org/file/2730404-rId17.jpeg?20260507020750" />
      </fig>
      <p>(b)</p>
      <p><bold>Figure 1.</bold>The Receding Horizon Control structure using (a) EA and (b) Regression Neural Networks.</p>
      <p><bold>Appendix A</bold> provides a short OCPs formulation, which is adequate for our presentation but is not a contribution of this work. This annex also presents the case study, the Park-Ramirez problem (PRP), which is a benchmark problem.</p>
      <p>Regarding the PRP, <bold>Appendix B</bold> shows a discrete-time solution using a version of EA; this solution was also presented in [<xref ref-type="bibr" rid="B20">20</xref>]. At each sampling period <italic>k</italic>, the EA calculates the optimal sequence of control outputs, <italic>V</italic>(<italic>k</italic>), for the remaining control horizon [<italic>k</italic>,<italic>H</italic>]. Finally, the first value of the sequence <italic>V</italic>(<italic>k</italic>), becomes the controller’s best output, denoted <inline-formula><mml:math display="inline"><mml:mrow><mml:msup><mml:mi> U </mml:mi><mml:mo> * </mml:mo></mml:msup><mml:mrow><mml:mo> ( </mml:mo><mml:mi> k </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> , sent toward the process:</p>
      <disp-formula id="FD1">
        <mml:math display="inline">
          <mml:mrow>
            <mml:msup>
              <mml:mi>U</mml:mi>
              <mml:mo>*</mml:mo>
            </mml:msup>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mi>k</mml:mi>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>≜</mml:mo>
            <mml:mi>V</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mi>k</mml:mi>
              <mml:mo>)</mml:mo>
            </mml:mrow>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>The optimal control <inline-formula><mml:math display="inline"><mml:mrow><mml:msup><mml:mi> U </mml:mi><mml:mo> * </mml:mo></mml:msup><mml:mrow><mml:mo> ( </mml:mo><mml:mi> k </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> is also a function of the current state <inline-formula><mml:math><mml:mrow><mml:mi> X </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mi> k </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> , which does not appear above as a distinct argument, to keep the notation simple and easy to follow. Nevertheless, this dependence is essential for the machine learning models as well.</p>
      <p>We name a “control profile” (CP) a complete sequence of <italic>H</italic> control vectors,<inline-formula><mml:math><mml:mrow><mml:mi> U </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mn> 0 </mml:mn><mml:mo> ) </mml:mo></mml:mrow><mml:mo> , </mml:mo><mml:mi> U </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ) </mml:mo></mml:mrow><mml:mo> , </mml:mo><mml:mo> ⋯ </mml:mo><mml:mo> , </mml:mo><mml:mi> U </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> H </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> . It will generate the transfer diagram drawn in <xref ref-type="fig" rid="fig2">Figure 2</xref>.</p>
      <fig id="fig3">
        <label>Figure 3</label>
        <graphic xlink:href="https://html.scirp.org/file/2730404-rId28.jpeg?20260507020750" />
      </fig>
      <p><bold>Figure 2.</bold>The state trajectory yielded by a control profile.</p>
      <p>The controller, based on the EA, constructs the quasi-optimal CP for the initial state <italic>X</italic><sub>0</sub><italic>= X</italic>(0) and the considered control horizon by concatenating the optimal controls (<inline-formula><mml:math display="inline"><mml:mrow><mml:msup><mml:mi> U </mml:mi><mml:mo> * </mml:mo></mml:msup><mml:mrow><mml:mo> ( </mml:mo><mml:mi> k </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> , <inline-formula><mml:math><mml:mrow><mml:mi> k </mml:mi><mml:mo> = </mml:mo><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mo> ⋯ </mml:mo><mml:mo> , </mml:mo><mml:mi> H </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:math></inline-formula> ). It forces the process to go through a sequence of “optimal states” known as the optimal trajectory, <inline-formula><mml:math><mml:mrow><mml:mi> Γ </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:msub><mml:mi> X </mml:mi><mml:mn> 0 </mml:mn></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> :</p>
      <disp-formula id="FD2">
        <label>(1)</label>
        <mml:math display="inline">
          <mml:mtable columnalign="left">
            <mml:mtr>
              <mml:mtd>
                <mml:mi>Ω</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>X</mml:mi>
                      <mml:mn>0</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>≜</mml:mo>
                <mml:mrow>
                  <mml:mo>〈</mml:mo>
                  <mml:mrow>
                    <mml:msup>
                      <mml:mi>U</mml:mi>
                      <mml:mo>*</mml:mo>
                    </mml:msup>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mn>0</mml:mn>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:msup>
                      <mml:mi>U</mml:mi>
                      <mml:mo>*</mml:mo>
                    </mml:msup>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mn>1</mml:mn>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:mo>⋯</mml:mo>
                    <mml:mo>,</mml:mo>
                    <mml:msup>
                      <mml:mi>U</mml:mi>
                      <mml:mo>*</mml:mo>
                    </mml:msup>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mrow>
                        <mml:mi>H</mml:mi>
                        <mml:mo>−</mml:mo>
                        <mml:mn>1</mml:mn>
                      </mml:mrow>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mo>〉</mml:mo>
                </mml:mrow>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:mi>Γ</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>X</mml:mi>
                      <mml:mn>0</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>≜</mml:mo>
                <mml:mrow>
                  <mml:mo>〈</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>X</mml:mi>
                      <mml:mn>0</mml:mn>
                    </mml:msub>
                    <mml:mo>,</mml:mo>
                    <mml:msup>
                      <mml:mi>X</mml:mi>
                      <mml:mo>*</mml:mo>
                    </mml:msup>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mn>1</mml:mn>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:mo>⋯</mml:mo>
                    <mml:mo>,</mml:mo>
                    <mml:msup>
                      <mml:mi>X</mml:mi>
                      <mml:mo>*</mml:mo>
                    </mml:msup>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mi>H</mml:mi>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mo>〉</mml:mo>
                </mml:mrow>
              </mml:mtd>
            </mml:mtr>
          </mml:mtable>
        </mml:math>
      </disp-formula>
      <p>These two sequences fully define the optimal evolution of the closed loop throughout the control horizon. Ideally, the optimal cost function will reach the value <italic>J</italic><sub>0</sub> if the process and its model are identical. In practice, this value will be very close to <italic>J</italic><sub>0</sub>, making Ω(<italic>X</italic><sub>0</sub>) a quasi-optimal solution of our OCP.</p>
      <p><bold>Algorithm 1</bold> provides the pseudocode for the RHC Controller, which is structured as shown in <xref ref-type="fig" rid="fig1">Figure 1</xref>. Regardless of the prediction type, the optimal control profile is found step-by-step using the following predictions:</p>
      <disp-formula id="FD3">
        <label>(2)</label>
        <mml:math display="inline">
          <mml:mtable columnalign="left">
            <mml:mtr>
              <mml:mtd>
                <mml:msup>
                  <mml:mi>U</mml:mi>
                  <mml:mo>*</mml:mo>
                </mml:msup>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mn>0</mml:mn>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>=</mml:mo>
                <mml:mi>p</mml:mi>
                <mml:mi>r</mml:mi>
                <mml:mi>e</mml:mi>
                <mml:mi>d</mml:mi>
                <mml:mi>i</mml:mi>
                <mml:mi>c</mml:mi>
                <mml:mi>t</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:mn>0</mml:mn>
                    <mml:mo>,</mml:mo>
                    <mml:msub>
                      <mml:mi>X</mml:mi>
                      <mml:mn>0</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>;</mml:mo>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:msup>
                  <mml:mi>U</mml:mi>
                  <mml:mo>*</mml:mo>
                </mml:msup>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mn>1</mml:mn>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>=</mml:mo>
                <mml:mi>p</mml:mi>
                <mml:mi>r</mml:mi>
                <mml:mi>e</mml:mi>
                <mml:mi>d</mml:mi>
                <mml:mi>i</mml:mi>
                <mml:mi>c</mml:mi>
                <mml:mi>t</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:mn>1</mml:mn>
                    <mml:mo>,</mml:mo>
                    <mml:mi>X</mml:mi>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mn>1</mml:mn>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>;</mml:mo>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mo>⋯</mml:mo>
                <mml:mo>;</mml:mo>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:msup>
                  <mml:mi>U</mml:mi>
                  <mml:mo>*</mml:mo>
                </mml:msup>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:mi>H</mml:mi>
                    <mml:mo>−</mml:mo>
                    <mml:mn>1</mml:mn>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>=</mml:mo>
                <mml:mi>p</mml:mi>
                <mml:mi>r</mml:mi>
                <mml:mi>e</mml:mi>
                <mml:mi>d</mml:mi>
                <mml:mi>i</mml:mi>
                <mml:mi>c</mml:mi>
                <mml:mi>t</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:mi>H</mml:mi>
                    <mml:mo>−</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>,</mml:mo>
                    <mml:mi>X</mml:mi>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mrow>
                        <mml:mi>H</mml:mi>
                        <mml:mo>−</mml:mo>
                        <mml:mn>1</mml:mn>
                      </mml:mrow>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mtd>
            </mml:mtr>
          </mml:mtable>
        </mml:math>
      </disp-formula>
      <p>We considered the predictor to be modeled by a function <italic>predict</italic>(<italic>k, X</italic>), where <italic>k</italic> is the index of the sampling period, and <italic>X</italic> is the current state vector of the process.</p>
      <p><bold>Algorithm 1</bold><bold>.</bold> General implementation of the RHC Controller.</p>
      <fig id="fig4">
        <label>Figure 4</label>
        <graphic xlink:href="https://html.scirp.org/file/2730404-rId39.jpeg?20260507020750" />
      </fig>
      <p>We need to make a decision. When the controller is simulated, as in this work, instruction #1a is considered, while instruction #1b only applies to a real-time implemented controller.</p>
      <p>The implementation of the <italic>predict</italic> function depends on the choice made. We can use an EA like in <bold>Appendix C</bold>, a set of multilinear regression functions as in [<xref ref-type="bibr" rid="B20">20</xref>], or a set of RNNs as shown in this work.</p>
    </sec>
    <sec id="sec3">
      <title>3. Materials and Methods</title>
      <p>It is important to emphasize the main goal of our work: to implement the predictor of the RHC structure using RNNs that emulate the optimal behavior of an EA operating within this framework. We expect the new controller to operate the same but more quickly.</p>
      <p>The research activities will adopt the same approach as described in [<xref ref-type="bibr" rid="B20">20</xref>]. <bold>Table 1</bold>provides the sequence of activities for conducting the research in this work. The activities are numbered from 1 to 6. The blue lines display the results from performing the activities. These results may be structured data, objects as RNNs, functions and programs.</p>
      <p>The first two activities are already addressed in the previous work [<xref ref-type="bibr" rid="B20">20</xref>], from which we can utilize the algorithms and programs already developed. Therefore, these algorithms and programs, together with the MATLAB system and its applications, can be regarded as the materials used in this work.</p>
      <p><bold>Table 1</bold>presents a list of general activities guiding our research, which are further explained in the sequel to specify the methods developed in this work.</p>
      <p><bold>Table 1.</bold>Sequence of activities for conducting the research.</p>
      <fig id="fig5">
        <label>Figure 5</label>
        <graphic xlink:href="https://html.scirp.org/file/2730404-rId40.jpeg?20260507020751" />
      </fig>
      <fig id="fig6">
        <label>Figure 6</label>
        <graphic xlink:href="https://html.scirp.org/file/2730404-rId41.jpeg?20260507020751" />
      </fig>
      <sec id="sec3dot1">
        <title>3.1. Step 1—Collection of Data</title>
        <p>We need data describing the quasi-optimal behavior of the RHC structure functioning with the EA-PM couple. RNNs will use this to learn this behavior.</p>
        <p>The main idea is to simultaneously record the optimal control outputs that the controller provides and the optimal PM’s trajectories, which this one is forced to follow.</p>
        <p>Remark 1: The RHC controller calculates the optimal control outputs using the PM; it does not depend on the actual process. That’s why we are allowed to simulate the control loop’s evolution over a control horizon and collect the control and state values for each sampling period.</p>
        <p>In other words, to collect more data for training, we might simulate the closed-loop functioning over multiple control horizons and record the trajectories and the CPs.</p>
        <p><underline> Simulation of the closed-loop evolution </underline></p>
        <p><bold>Appendix C</bold>recalls the prediction algorithm based on the EA, and an algorithm that simulates the closed-loop operation over the control horizon; both algorithms are detailed in [<xref ref-type="bibr" rid="B20">20</xref>], but are recalled here to make this presentation easier to follow.</p>
        <p><bold>Figure A1</bold>in<bold>Appendix C</bold> shows the flowchart of the prediction function called Predictor_EA, which uses an EA for the control horizon [<italic>k</italic>, <italic>H</italic>]. Its inputs are <italic>k</italic>and the current state during this sampling period, denoted as <italic>X</italic><sub>0</sub>. The function returns a quasi-optimal predicted sequence that maximizes the performance index <italic>J</italic><sub>0</sub>.</p>
        <p>To control the actual process in real-time throughout the entire control horizon [0, <italic>H</italic>], we can use the algorithm described by <bold>Figure A2</bold> in <bold>Appendix C</bold>. The ControlLoop_EA algorithm is the version used for simulations when the real process matches the process model. It calls, for each sampling period, the functions Predictor_EA and RHC_RealProcessStep. The latter function is used to simulate the PM for a single step; this way, the next process state is determined by numerical integration, and the simulation can continue. Finally, the simulation program will store the two sequences, <inline-formula><mml:math display="inline"><mml:mrow><mml:mi> Ω </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:msub><mml:mi> X </mml:mi><mml:mn> 0 </mml:mn></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math display="inline"><mml:mrow><mml:mi> Γ </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:msub><mml:mi> X </mml:mi><mml:mn> 0 </mml:mn></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> , in the vector <italic>uRHC</italic> and the matrix <italic>state</italic>, as well as the value of the performance index <italic>J</italic>.</p>
        <p>As in our previous work, we have executed <italic>M</italic> times the ControlLoop_EA program to collect the sequences shown in equation (1). The Predictor_EA function has a stochastic character because the EA is so. Consequently, the ControlLoop_EA program inherits the stochastic character. Therefore, the <italic>M</italic> executions give different results, even if the process starts in the same state <italic>X</italic><sub>0</sub>. Practically, the control profiles and the quasi-optimal trajectories are different at each run but are very close to each other.</p>
      </sec>
      <sec id="sec3dot2">
        <title>3.2. Step 2—Extraction of Datasets Characterizing Each Sampling Period</title>
        <p>The <italic>M</italic> matrices, such as <italic>state</italic><sub>1</sub> (<italic>H</italic> × <italic>n</italic>), <italic>state</italic><sub>2</sub> (<italic>H</italic> × <italic>n</italic>), …, <italic>state</italic><italic><sub>M</sub></italic> (<italic>H</italic> × <italic>n</italic>), are stored in a cell array called STATE{1, <italic>M</italic>}, and the vectors of type uRHC are stored in a matrix UstarRHC(<italic>M</italic>, <italic>H</italic>).</p>
        <p>Considering <italic>k</italic>, <inline-formula><mml:math><mml:mrow><mml:mn> 0 </mml:mn><mml:mo> ≤ </mml:mo><mml:mi> k </mml:mi><mml:mo> ≤ </mml:mo><mml:mi> H </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:math></inline-formula> , which is already fixed, we create a matrix <inline-formula><mml:math><mml:mrow><mml:mi> S </mml:mi><mml:mi> O </mml:mi><mml:mi> C </mml:mi><mml:mi> S </mml:mi><mml:mi> K </mml:mi><mml:mo> ∈ </mml:mo><mml:msup><mml:mi> R </mml:mi><mml:mrow><mml:mi> M </mml:mi><mml:mo> × </mml:mo><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> n </mml:mi><mml:mo> + </mml:mo><mml:mi> m </mml:mi></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> that collects the States and Optimal Control values concerning step <italic>k</italic> from all the <italic>M</italic> experiences. Line <italic>i</italic>, <inline-formula><mml:math><mml:mrow><mml:mn> 1 </mml:mn><mml:mo> ≤ </mml:mo><mml:mi> i </mml:mi><mml:mo> ≤ </mml:mo><mml:mi> M </mml:mi></mml:mrow></mml:math></inline-formula> , concatenates data from experience <italic>i</italic>:</p>
        <disp-formula id="FD4">
          <mml:math display="inline">
            <mml:mrow>
              <mml:mi>S</mml:mi>
              <mml:mi>O</mml:mi>
              <mml:mi>C</mml:mi>
              <mml:mi>S</mml:mi>
              <mml:msub>
                <mml:mi>K</mml:mi>
                <mml:mi>i</mml:mi>
              </mml:msub>
              <mml:mo>←</mml:mo>
              <mml:mrow>
                <mml:mo>[</mml:mo>
                <mml:mrow>
                  <mml:msup>
                    <mml:mrow>
                      <mml:mrow>
                        <mml:mo>(</mml:mo>
                        <mml:mrow>
                          <mml:msubsup>
                            <mml:mi>X</mml:mi>
                            <mml:mi>i</mml:mi>
                            <mml:mo>*</mml:mo>
                          </mml:msubsup>
                          <mml:mrow>
                            <mml:mo>(</mml:mo>
                            <mml:mi>k</mml:mi>
                            <mml:mo>)</mml:mo>
                          </mml:mrow>
                        </mml:mrow>
                        <mml:mo>)</mml:mo>
                      </mml:mrow>
                    </mml:mrow>
                    <mml:mtext>T</mml:mtext>
                  </mml:msup>
                  <mml:msup>
                    <mml:mrow>
                      <mml:mrow>
                        <mml:mo>(</mml:mo>
                        <mml:mrow>
                          <mml:msubsup>
                            <mml:mi>U</mml:mi>
                            <mml:mi>i</mml:mi>
                            <mml:mo>*</mml:mo>
                          </mml:msubsup>
                          <mml:mrow>
                            <mml:mo>(</mml:mo>
                            <mml:mi>k</mml:mi>
                            <mml:mo>)</mml:mo>
                          </mml:mrow>
                        </mml:mrow>
                        <mml:mo>)</mml:mo>
                      </mml:mrow>
                    </mml:mrow>
                    <mml:mtext>T</mml:mtext>
                  </mml:msup>
                </mml:mrow>
                <mml:mo>]</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Considering the data defined before, it holds:</p>
        <disp-formula id="FD5">
          <mml:math display="inline">
            <mml:mrow>
              <mml:mi>S</mml:mi>
              <mml:mi>O</mml:mi>
              <mml:mi>C</mml:mi>
              <mml:mi>S</mml:mi>
              <mml:msub>
                <mml:mi>K</mml:mi>
                <mml:mi>i</mml:mi>
              </mml:msub>
              <mml:mo>←</mml:mo>
              <mml:mrow>
                <mml:mo>[</mml:mo>
                <mml:mrow>
                  <mml:mi>S</mml:mi>
                  <mml:mi>T</mml:mi>
                  <mml:mi>A</mml:mi>
                  <mml:mi>T</mml:mi>
                  <mml:msub>
                    <mml:mi>E</mml:mi>
                    <mml:mi>i</mml:mi>
                  </mml:msub>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mrow>
                      <mml:mi>k</mml:mi>
                      <mml:mo>,</mml:mo>
                      <mml:mn>1</mml:mn>
                      <mml:mo>:</mml:mo>
                      <mml:mi>n</mml:mi>
                    </mml:mrow>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                  <mml:mtext>
                  </mml:mtext>
                  <mml:mi>U</mml:mi>
                  <mml:mi>s</mml:mi>
                  <mml:mi>t</mml:mi>
                  <mml:mi>a</mml:mi>
                  <mml:mi>r</mml:mi>
                  <mml:mi>R</mml:mi>
                  <mml:mi>H</mml:mi>
                  <mml:mi>C</mml:mi>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mrow>
                      <mml:mi>i</mml:mi>
                      <mml:mo>,</mml:mo>
                      <mml:mi>k</mml:mi>
                    </mml:mrow>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mo>]</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p><italic>STATE</italic><italic><sub>i</sub></italic> is the ith element of the cell array<italic>STATE.</italic>In the PRP case, we obtained the matrix <italic>SOCSK</italic> presented as a result of activity <bold>2</bold> in <bold>Table 1</bold>.</p>
      </sec>
      <sec id="sec3dot3">
        <title>3.3. Step 3—Construction Sessions for RNN Models</title>
        <p>Using the Regression Learner application in MATLAB, we have conducted multiple sessions called Construction Sessions for each <italic>k</italic>, with two related objectives.</p>
        <p>Determining the dataset size for each <inline-formula><mml:math display="inline"><mml:mrow><mml:mi> k </mml:mi><mml:mo> = </mml:mo><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mo> ⋯ </mml:mo><mml:mo> , </mml:mo><mml:mi> H </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:math></inline-formula> . From the available <italic>M</italic> data points collected in step 1, we chose the number of data points that yielded the best accuracy for RNN<italic><sub>k</sub></italic>.Determining the best RNN model for the dataset chosen at this step <italic>k</italic>. Usually, the optimal model was the “optimizable” RNNs, which provided the best accuracy.</p>
        <p>After a thorough analysis of the results, the best RNN was identified, and the training function was saved. The size of the training dataset was also stored in a vector called dimdata(1 × <italic>H</italic>).</p>
        <p>As a general rule, for each k, the first 60 values of column <italic>k</italic> from the matrix SOCSK were used for the testing set, and the values from 61 to 60 + dimdata(<italic>k</italic>) were assigned to the training set.</p>
      </sec>
      <sec id="sec3dot4">
        <title>
          3.4. Step 4: Algorithm to Build the RNN for Each
          <italic>k</italic>
        </title>
        <p>The pseudocode below mainly describes the <bold>Algorithm 2</bold> that generates the RNNs associated with each of the <italic>H</italic> sampling periods.</p>
        <p><bold>Algorit</bold><bold>hm 2</bold><bold>.</bold> Models_Construction.</p>
        <fig id="fig7">
          <label>Figure 7</label>
          <graphic xlink:href="https://html.scirp.org/file/2730404-rId58.jpeg?20260507020755" />
        </fig>
        <p>The RNN models are stored in a cell array {<italic>H</italic>,1} similar to their training and testing data. The dimdata array is determined at step 3, within the Construction Sessions.</p>
        <p>The trainRNN function from instruction 10 takes the value of <italic>k</italic> as an input argument; it selects from the <italic>H</italic> training functions.</p>
        <p><italic>RMSEtest</italic> and <italic>vrmse</italic> represent the Root Mean Squared Error values for testing and validation phases. Instruction #12 stores the models in a file for further utilization.</p>
      </sec>
      <sec id="sec3dot5">
        <title>3.5. Step 5-Simulation of the Closed-Loop with RNN Predictor</title>
        <p>This section proposes the ControlLoop_RNN algorithm, which simulates Receding Horizon Control with a predictor that employs RNNs; the latter emulates the behavior of the EA-PM couple. This simulation over the control horizon is carried out by a program unit, which is a function described in <bold>Algorithm 3</bold>. Calling this function repeatedly allows us to generate statistics.</p>
        <p><bold>A</bold><bold>lgorit</bold><bold>hm 3</bold><bold>.</bold> ControlLoop_RNN.</p>
        <fig id="fig8">
          <label>Figure 8</label>
          <graphic xlink:href="https://html.scirp.org/file/2730404-rId59.jpeg?20260507020756" />
        </fig>
        <p>The vector uRNN(1, H) is gradually filled with the optimal control values calculated by the predictor and sent to the process. Before the return instruction, this vector indicates an optimal control profile. The matrix “state” records the states through which the process passes, ultimately resulting in an optimal trajectory.</p>
        <p>Mainly, the simulation is accomplished through an interaction in the loop between the RNN_Controller and the PM.</p>
        <p>Remark 2: The RNN_Controller is realized through instructions #6–#8; the mdlRNN loads based on the value of <italic>kk</italic> and predicts the optimal control value according to the current state of the process, X0.</p>
        <p>Instruction #9 determines the next state of the process by using the function step_PP_RH. The latter calculates the next state of the process through numerical integration based on the current state and the previous control value.</p>
        <p>Instruction #13 calculates the performance index Jf. In our case, Jf corresponds to PRP.</p>
      </sec>
    </sec>
    <sec id="sec4">
      <title>4. Results and Discussion</title>
      <p>The first two activities from <bold>Table 1</bold>, which make up step 1 and step 2 of our work were covered in the previous article [<xref ref-type="bibr" rid="B20">20</xref>]. Their programs and results were carried over in this work as available materials. The simulations of the closed-loop evolutions over the entire control horizon [0, <italic>H</italic>] produced <italic>M</italic> = 400 optimal CPs and their state trajectories. Therefore, for each sampling period, the corresponding RNN could be trained with datasets having a maximum of 400 data points.</p>
      <sec id="sec4dot1">
        <title>4.1. Results of Constructing Regression Neural Networks</title>
        <p>In step 3, we conducted multiple Construction Sessions using the Regression Learner application from MATLAB, aiming to develop a Regression Neural Network for each of the <italic>H</italic> sampling periods (<inline-formula><mml:math display="inline"><mml:mrow><mml:mi> k </mml:mi><mml:mo> = </mml:mo><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mo> ⋯ </mml:mo><mml:mo> , </mml:mo><mml:mi> H </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:math></inline-formula> ). The total number of RNNs trained exceeded 200. For each of them, we pursued two main objectives:</p>
        <p>to determine the dataset size for the training phaseto identify the most suitable RNN model.</p>
        <p>For each <italic>k</italic>, we decided by comparison what is the best RNN that can be further used in our work to develop an RHC controller.</p>
        <p><bold>Table 2</bold> specifies for each <italic>k</italic> the size of the training data.</p>
        <p><bold>Table 2.</bold>The size of the training data for the best RNNs.</p>
        <table-wrap id="tbl1">
          <label>Table 1</label>
          <table>
            <tbody>
              <tr>
                <td>
                  <italic>
                    <bold>k</bold>
                  </italic>
                </td>
                <td>0</td>
                <td>1</td>
                <td>2</td>
                <td>3</td>
                <td>4</td>
                <td>5</td>
                <td>6</td>
                <td>7</td>
                <td>8</td>
                <td>9</td>
                <td>10</td>
                <td>11</td>
                <td>12</td>
                <td>13</td>
                <td>14</td>
              </tr>
              <tr>
                <td>
                  <bold>dimdata</bold>
                </td>
                <td>140</td>
                <td>190</td>
                <td>290</td>
                <td>290</td>
                <td>290</td>
                <td>240</td>
                <td>290</td>
                <td>190</td>
                <td>290</td>
                <td>190</td>
                <td>190</td>
                <td>190</td>
                <td>190</td>
                <td>290</td>
                <td>290</td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
        <p>After several Construction Sessions, we have identified the key characteristics of the models—things we need to leverage in our Construction Sessions. <bold>Table 3</bold> summarizes these characteristics.</p>
        <p><bold>Table 3.</bold>Characteristics of the Construction Sessions used to identify and train the RNNs.</p>
        <table-wrap id="tbl2">
          <label>Table 2</label>
          <table>
            <tbody>
              <tr>
                <td>
                  <bold>Significant training data sizes</bold>
                </td>
                <td>140, 190, 240, and 290 data points;</td>
              </tr>
              <tr>
                <td>
                  <bold>The testing data size</bold>
                </td>
                <td>60 unseen data points established at the beginning</td>
              </tr>
              <tr>
                <td>
                  <bold>The most used RNN model</bold>
                </td>
                <td>Optimizable Neural Network</td>
              </tr>
              <tr>
                <td>
                  <bold>Optimization method</bold>
                </td>
                <td>Bayesian optimization</td>
              </tr>
              <tr>
                <td>
                  <bold>The first quality criterion used to rank the RNNs</bold>
                </td>
                <td>Root Mean Square Error in training</td>
              </tr>
              <tr>
                <td>
                  <bold>The second quality criterion taken into account.</bold>
                </td>
                <td>R-Squared</td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
        <p>For example, for <italic>k</italic> = 10, the RNN that gives the best accuracy is the “optimizable Neural Network” trained with 190 data points, and tested with 60 unseen data points. The chosen optimizer was Bayesian optimization. The resulting optimizable hyperparameters and the training results are given in <bold>Table 4</bold>.</p>
        <p><bold>Table 4.</bold>The optimized hyperparameters and the training results for <italic>k</italic> = 10.</p>
        <table-wrap id="tbl3">
          <label>Table 3</label>
          <table>
            <tbody>
              <tr>
                <td colspan="2">
                  <bold>Optimized hyperparameters</bold>
                </td>
                <td colspan="2">
                  <bold>Training results</bold>
                </td>
              </tr>
              <tr>
                <td>LayerSizes</td>
                <td>1</td>
                <td>RMSE</td>
                <td>0.0874</td>
              </tr>
              <tr>
                <td>Activations</td>
                <td>tanh</td>
                <td>R -Squared</td>
                <td>0.84</td>
              </tr>
              <tr>
                <td>Lambda</td>
                <td>0.00167</td>
                <td>MSE</td>
                <td>0.007655</td>
              </tr>
              <tr>
                <td>Iteration Limit</td>
                <td>200</td>
                <td>MAE</td>
                <td>0.069985</td>
              </tr>
              <tr>
                <td>Standardize</td>
                <td>false</td>
                <td>MAPE</td>
                <td>104.2%</td>
              </tr>
              <tr>
                <td colspan="2" rowspan="2">
                </td>
                <td>Training time</td>
                <td>44.09 sec</td>
              </tr>
              <tr>
                <td>Model size (Compact):</td>
                <td>5 kB</td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
        <p>The accuracy performance of each RNN, across the sampling periods, is given in <bold>Table 5</bold>, considering the 60 data points of the testing set.</p>
        <p><bold>Table 5.</bold>The accuracy metrics across sampling periods.</p>
        <table-wrap id="tbl4">
          <label>Table 4</label>
          <table>
            <tbody>
              <tr>
                <td>
                  <bold>k</bold>
                </td>
                <td>
                  <bold>Median test error</bold>
                </td>
                <td>
                  <bold>Mean Absolute Error</bold>
                </td>
                <td>
                  <bold>RMSE</bold>
                </td>
              </tr>
              <tr>
                <td>0</td>
                <td>0.0543</td>
                <td>0.0783</td>
                <td>0.1035</td>
              </tr>
              <tr>
                <td>1</td>
                <td>0.1529</td>
                <td>0.1784</td>
                <td>0.1025</td>
              </tr>
              <tr>
                <td>2</td>
                <td>0.1609</td>
                <td>0.1656</td>
                <td>0.1198</td>
              </tr>
              <tr>
                <td>3</td>
                <td>0.2562</td>
                <td>0.3079</td>
                <td>0.1835</td>
              </tr>
              <tr>
                <td>4</td>
                <td>0.4181</td>
                <td>0.3996</td>
                <td>0.3039</td>
              </tr>
              <tr>
                <td>5</td>
                <td>0.5753</td>
                <td>0.5396</td>
                <td>0.3280</td>
              </tr>
              <tr>
                <td>6</td>
                <td>1.1669</td>
                <td>1.0580</td>
                <td>0.3821</td>
              </tr>
              <tr>
                <td>7</td>
                <td>1.2750</td>
                <td>1.2664</td>
                <td>0.3455</td>
              </tr>
              <tr>
                <td>8</td>
                <td>1.4489</td>
                <td>1.4223</td>
                <td>0.3705</td>
              </tr>
              <tr>
                <td>9</td>
                <td>1.3357</td>
                <td>1.2762</td>
                <td>0.5578</td>
              </tr>
              <tr>
                <td>10</td>
                <td>0.2001</td>
                <td>0.2326</td>
                <td>0.0936</td>
              </tr>
              <tr>
                <td>11</td>
                <td>0.6639</td>
                <td>0.6435</td>
                <td>0.0828</td>
              </tr>
              <tr>
                <td>12</td>
                <td>0.6733</td>
                <td>0.6550</td>
                <td>0.0731</td>
              </tr>
              <tr>
                <td>13</td>
                <td>0.6884</td>
                <td>0.6743</td>
                <td>0.0556</td>
              </tr>
              <tr>
                <td>14</td>
                <td>1.0103</td>
                <td>1.0036</td>
                <td>0.0061</td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
        <p>For each k, we have also obtained a training function that was called in step 4 to create the RNN object. This action was accomplished by running the program Models_Construction, which implements <bold>Algorithm 2</bold>.</p>
      </sec>
      <sec id="sec4dot2">
        <title>4.2. Optimal Control Profiles and State Trajectories-Comparison with Previous Results</title>
        <p>To see the new RNN controller in action, we have run the ControlLoop_RNN simulation program multiple times. Of interest were the shape of the control profiles and of the state trajectories, as well as the performance index achieved in the final state.</p>
        <p>We made the comparison among the three evolutions of the closed-loop system, using the three controllers:</p>
        <p>EA_controller: RHC with predictions made by EA.ML_controller: the control laws are actually the multilinear regression functions developed in the previous article [<xref ref-type="bibr" rid="B20">20</xref>]; each function is associated with a specific sampling period of the control horizon.RNN_controller: the RNNs predict the optimal control values; each RNN is associated with a specific sampling period of the control horizon.</p>
        <p>The comparison among the CPs developed using machine learning is given in <xref ref-type="fig" rid="fig3">Figure 3</xref>. <xref ref-type="fig" rid="fig3">Figure 3(a)</xref> is taken from our article [<xref ref-type="bibr" rid="B20">20</xref>].</p>
        <fig id="fig9">
          <label>Figure 9</label>
          <graphic xlink:href="https://html.scirp.org/file/2730404-rId62.jpeg?20260507020759" />
        </fig>
        <fig id="fig10">
          <label>Figure 10</label>
          <graphic xlink:href="https://html.scirp.org/file/2730404-rId63.jpeg?20260507020759" />
        </fig>
        <p> (a) (b)</p>
        <p><bold>Figure 3.</bold>The CP achieved by (a) the ML_controller, linear regression version; (b) the RNN_controller.</p>
        <p>The CPs are very similar, which explains why the two performance indices are almost equal. The three state evolutions associated with the three controllers are shown in <xref ref-type="fig" rid="fig4">Figure 4</xref>. <xref ref-type="fig" rid="fig4">Figure 4(a)</xref> and <xref ref-type="fig" rid="fig4">Figure 4(b)</xref> are recalled here for comparison from our article [<xref ref-type="bibr" rid="B20">20</xref>].</p>
        <p>The resemblance between the three processes’ responses is very high and proves that</p>
        <p>The set of functions <italic>f</italic><italic><sub>k</sub></italic> successfully replicated the optimal behavior of the pair EA PM couple, as previously shown in [<xref ref-type="bibr" rid="B20">20</xref>].The set of RNNs also succeeded in emulating the optimal behavior of the EA-PM couple, which was our goal to demonstrate.</p>
        <p>Furthermore, the performance index value (<inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> J </mml:mi><mml:mrow><mml:mn> 01 </mml:mn></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:mtext> 32 </mml:mtext><mml:mtext> .0986 </mml:mtext></mml:mrow></mml:math></inline-formula> ) achieved by the CP in <xref ref-type="fig" rid="fig4">Figure 4(b)</xref> is very good because it matches the maximum value (<inline-formula><mml:math display="inline"><mml:mrow><mml:msub><mml:mi> J </mml:mi><mml:mn> 0 </mml:mn></mml:msub><mml:mo> = </mml:mo><mml:mn> 32.0936 </mml:mn></mml:mrow></mml:math></inline-formula> ) recorded in the <italic>M</italic> data points generated by the EA. Therefore, the PRP’s solution identified by the ML model is also nearly optimal. The performance index’s value achieved by the CP in <xref ref-type="fig" rid="fig4">Figure 4(c)</xref> is also very good <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> J </mml:mi><mml:mn> 0 </mml:mn></mml:msub><mml:msub><mml:mrow></mml:mrow><mml:mn> 2 </mml:mn></mml:msub><mml:mo> = </mml:mo><mml:mtext> 32 </mml:mtext><mml:mtext> .106 </mml:mtext></mml:mrow></mml:math></inline-formula> , and very close to <italic>J</italic><sub>0</sub>.</p>
        <fig id="fig11">
          <label>Figure 11</label>
          <graphic xlink:href="https://html.scirp.org/file/2730404-rId70.jpeg?20260507020759" />
        </fig>
        <fig id="fig12">
          <label>Figure 12</label>
          <graphic xlink:href="https://html.scirp.org/file/2730404-rId71.jpeg?20260507020759" />
        </fig>
        <p>(a) (b)</p>
        <fig id="fig13">
          <label>Figure 13</label>
          <graphic xlink:href="https://html.scirp.org/file/2730404-rId72.jpeg?20260507020759" />
        </fig>
        <p>(c)</p>
        <p><bold>Figure 4.</bold>State evolution comparison: (a) Prediction with EA using RHC, (b) Machine learning prediction with a set of linear regression functions, (c) Machine learning prediction with a set of RNNs<bold>.</bold></p>
        <p>To evaluate the execution time of the closed-loop evolution over the control horizon, we ran the ControlLoop_RNN simulation program 50 times—due to its stochastic nature—under the same conditions as in our previous works. <bold>Table 6</bold> compares these results with those obtained using the other two controllers.</p>
        <p>The typical value is the execution time of a specific simulation out of the 50, which is closest to the average. We also note that, from this perspective, the predictor with RNN is faster even than the predictor with regression functions.</p>
        <p><bold>Table 6.</bold>Duration of the controller action during the evolution of the closed loop.</p>
        <table-wrap id="tbl5">
          <label>Table 5</label>
          <table>
            <tbody>
              <tr>
                <td>
                  <bold>Execution time</bold>
                  <bold>-</bold>
                  <bold>RNN controller</bold>
                </td>
                <td>
                </td>
              </tr>
              <tr>
                <td>Minimum value</td>
                <td>0.0342 sec</td>
              </tr>
              <tr>
                <td>Average value</td>
                <td>0.0548 sec</td>
              </tr>
              <tr>
                <td>Maximum value</td>
                <td>0.1143 sec</td>
              </tr>
              <tr>
                <td>Typical value</td>
                <td>
                  <bold>0.0549</bold>
                  sec
                </td>
              </tr>
              <tr>
                <td>Standard Deviation</td>
                <td>0.0150</td>
              </tr>
              <tr>
                <td>
                  <bold>Execution time</bold>
                  <bold>-</bold>
                  <bold>controller with multilinear regression functions</bold>
                </td>
                <td>0.08 sec</td>
              </tr>
              <tr>
                <td>
                  <bold>Execution time</bold>
                  <bold>-</bold>
                  <bold>EA controller</bold>
                </td>
                <td>38.0 sec</td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
      </sec>
      <sec id="sec4dot3">
        <title>4.3. Aspects of Designing and Validating the RNN Controller</title>
        <p>There are a few aspects that we need to emphasize in the sequel.</p>
        <p>4.3.1. The Design Procedure of the RNN Controller Is Carried out Offline</p>
        <p>In this subsection, our perspective is that the design procedure develops an RNN controller that will be used in real-time.</p>
        <p>1) An important aspect of the design procedure is that the data used for training is collected offline through simulation of the closed-loop over multiple control horizons (see Remark 1). We want to emphasize that this is not due to the fact that our work, presented in this paper, is a simulated study.</p>
        <p>Remark 3: Even if the RNN controller will physically control a real process, the data will be collected through simulation. The latter is achieved by a program like ControlLoop_EA.</p>
        <p>2) When it is used within the RHC structure, the EA predictor makes its predictions using only the PM.</p>
        <p>Remark 4: The RNNs involved in this work must “learn” the behavior of the EA–PM couple. The actual process is not involved in collecting data.</p>
        <p>The Construction Sessions, the selection of the RNNs, and the preliminary simulations are also carried out offline.</p>
        <p>4.3.2. The Predictions Rely on the States of the Actual Process</p>
        <p>The RNN controller, in its control action, will predict the control output according to the actual process’s state. What is the process involved in? Either the PM or the real process, like in <bold>Algorithm 1</bold>, which provides for both possibilities (instructions #1a or #1b).</p>
        <p>Remark 5. The state vectors presented to the RNNs to make predictions are not the same as those used in training. In particular, the states “read” from the current process have nothing to do with the training data because the PM is at least a little different from the real process. The process model can never perfectly model the real process.</p>
        <p>In this paper, we used the RNN controller in simulations where the process model is identical to the PM, a situation called the simulated regime. Even in a simulated regime, the state vectors can be different from those of collected data, due to numerical perturbations and inherent numerical integrations (to calculate the next state).</p>
        <p>In what measure can the misfit between the PM and the actual process’s characterization impact the quasi-optimality of the control loop?</p>
        <p>4.3.3. Simulation of the Misfit between the PM and the Actual Process at the Level of State Variables</p>
        <p>In our simulations, the difference between the PM and the actual process’s characterization will be perceived only at the level of state variables. We used a very simple method to characterize this mismatch: the state variables are modified as if they are affected by noise. We consider the actual process’s characterization to be symbolically represented at the level of state variables by this expression:</p>
        <p>actual process’s characterization = PM + an additive perturbation.</p>
        <p>More specifically, each state variable <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> x </mml:mi><mml:mi> i </mml:mi></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> k </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> was perturbed by the value <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> z </mml:mi><mml:mi> i </mml:mi></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> k </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> to produce the perturbed state variable <inline-formula><mml:math><mml:mrow><mml:mi> x </mml:mi><mml:msub><mml:mi> p </mml:mi><mml:mi> i </mml:mi></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> k </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula></p>
        <disp-formula id="FD6">
          <mml:math>
            <mml:mrow>
              <mml:mi>x</mml:mi>
              <mml:msub>
                <mml:mi>p</mml:mi>
                <mml:mi>i</mml:mi>
              </mml:msub>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mi>k</mml:mi>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>←</mml:mo>
              <mml:msub>
                <mml:mi>x</mml:mi>
                <mml:mi>i</mml:mi>
              </mml:msub>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mi>k</mml:mi>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>+</mml:mo>
              <mml:msub>
                <mml:mi>z</mml:mi>
                <mml:mi>i</mml:mi>
              </mml:msub>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mi>k</mml:mi>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>;</mml:mo>
              <mml:mtext>
              </mml:mtext>
              <mml:mi>i</mml:mi>
              <mml:mo>=</mml:mo>
              <mml:mn>1</mml:mn>
              <mml:mo>,</mml:mo>
              <mml:mo>⋯</mml:mo>
              <mml:mo>,</mml:mo>
              <mml:mn>5</mml:mn>
              <mml:mo>;</mml:mo>
              <mml:mtext>
              </mml:mtext>
              <mml:mi>k</mml:mi>
              <mml:mo>=</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>,</mml:mo>
              <mml:mo>⋯</mml:mo>
              <mml:mo>,</mml:mo>
              <mml:mi>H</mml:mi>
              <mml:mo>−</mml:mo>
              <mml:mn>1</mml:mn>
              <mml:mo>;</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>The value <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> z </mml:mi><mml:mi> i </mml:mi></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> k </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> is a kind of additive noise uniformly distributed in the range [−<italic>L</italic>, <italic>L</italic>], where it holds:</p>
        <disp-formula id="FD7">
          <mml:math>
            <mml:mrow>
              <mml:mi>L</mml:mi>
              <mml:mo>=</mml:mo>
              <mml:mi>p</mml:mi>
              <mml:mo>⋅</mml:mo>
              <mml:mrow>
                <mml:mo>|</mml:mo>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>x</mml:mi>
                    <mml:mi>i</mml:mi>
                  </mml:msub>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mi>k</mml:mi>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mo>|</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>The value of <italic>p</italic> gives the amplitude of the perturbation, for example, <italic>p</italic> = 0.5%. The resulting range of the noise will be 1% of the absolute value of the state variable at hand. We modified the simulation program ControlLoop_RNN to perturb the PM and analyzed the effects on the control action.</p>
        <p><xref ref-type="fig" rid="fig5">Figure 5</xref> illustrates the two optimal CPs when the controller commands the PM or the actual process. </p>
        <fig id="fig14">
          <label>Figure 14</label>
          <graphic xlink:href="https://html.scirp.org/file/2730404-rId85.jpeg?20260507020802" />
        </fig>
        <p><bold>Figure 5.</bold>Comparison: CP when the controller works with the PM versus the actual process.</p>
        <p>For the state trajectories, the comparison between the two situations is presented in <xref ref-type="fig" rid="fig6">Figure 6</xref>.</p>
        <fig id="fig15">
          <label>Figure 15</label>
          <graphic xlink:href="https://html.scirp.org/file/2730404-rId86.jpeg?20260507020802" />
        </fig>
        <p><bold>Figure 6.</bold>Comparison: CP when the RNN controller works with the PM versus the actual process.</p>
        <p>The performance indexes are <italic>J</italic><sub>1</sub> = 31.7701 and <italic>J</italic><sub>2</sub> = 31.5394, respectively. We observe that the control loop has remained effective even with this deviation from the PM, and the CPs and state trajectories are slightly different. Both evolutions keep the quasi-optimal character.</p>
        <p>Certainly, the deviation from the loop’s behavior when operating with PM increases as the noise amplitude <italic>z</italic> grows larger. Beyond a certain value of <italic>L</italic>, the control loop will have a degraded behavior far away from a quasi-optimal character.</p>
      </sec>
      <sec id="sec4dot4">
        <title>4.4. Possible Improvements of the RNNs’ Generation</title>
        <p>For each sampling period (#<italic>k</italic>), the RNN<italic><sub>k</sub></italic> is stored in a workspace and used. This situation is justified by the fact that each sampling period has its own training data, and the RNN<italic><sub>k</sub></italic> is relevant when using this data.</p>
        <p>For <italic>H</italic> = 15, this situation is acceptable, even though the number of RNNs analyzed during the Construction Session is substantial. But how do we manage when the number of sampling periods is much larger (e.g., 100)?</p>
        <p>There are two possible solutions:</p>
        <p>A single RNN model that will be used for all sampling periods. The training to obtain RNN<sub>k</sub><italic>is achieved during the current sampling period</italic>. Then it is used to predict according to the state vector.A single RNN for all sampling periods. This RNN will be trained offline with the global collected data. Variable #<italic>k</italic> could be added to the predictor variables. The validation and testing sets will be selected in a more complex way. The unique RNN will be used to generate predictions during each sampling period.</p>
        <p>In this regard, further work remains.</p>
      </sec>
      <sec id="sec4dot5">
        <title>4.5. The Relationship between the Controllers Using EA or RNN</title>
        <p>If we need to modify the PM, even slightly, we have to redo the entire design process, including the simulation of the M control horizons, to generate the new training data. This happens even though the EA did not suffer any change. From the beginning, it was mentioned that the RNNs emulate the EA-PM couple.</p>
        <p>Therefore, this paper does not suggest entirely abandoning the EA predictor.</p>
        <p>Remark 6. If we choose to solve an optimization problem with an EA, the starting point would be the EA predictor. The faster RNN predictor will be developed once the EA-controller is designed and simulated to generate the training data. The RNN-controller is only a fast implementation variant for the EA-controller.</p>
      </sec>
    </sec>
    <sec id="sec5">
      <title>5. Conclusions</title>
      <p>The work presented in this paper showed that a set of Regression Neural Networks can also be used to emulate (“learn”) the optimal behavior of the couple EA-PM. Consequently, they can implement the predictor of the optimal controller. In comparison with the EA control loop, the simulated new control loop proved to have very good features: </p>
      <p>Similar state trajectory and optimal control profile.Quasi-equal performance index, which means keeping the solution’s optimality.The controller’s execution time is even shorter than that of the controller using regression functions. </p>
      <p>Besides the qualitative features mentioned above, there are also positive and non-negligible characteristics of the presented approach for constructing the RNN-controller:</p>
      <p>The training data are obtained by simulations of the EA control loop working only with the PM. Data from the actual process is not needed because only the EA-PM couple is “learned”.The entire design process of the RNN controller is performed online.If the control loop works in real-time, the state vectors provided to RNNs for predictions are those “read” from the actual process, not from the PM.Compared to linear regression functions, the main advantage of using RNNs is their greater <italic>capacity</italic> to capture the behavior of the EA-PM couple, especially when the PM has essential nonlinearities.</p>
      <p>RNNs have a greater capacity to model complex systems than multilinear regressions. We have solved other OCPs whose process has essential nonlinearities. The price to pay for this greater capacity to model complex systems is additional training effort, especially when each sampling period has its own RNN. The main drawback of the proposed approach is the number of sampling periods in the control horizon, which can be much larger than in our case study. This situation involves a huge number of RNNs that must be analyzed and trained. Therefore, we can now consider the proposed approach as one that shows the feasibility of implementation with RNNs. Managing a large value for H can be done through <italic>possible improvements of the current version, within future research</italic>. There are two possibilities to consider:</p>
      <p>A single RNN model will be utilized across all sampling periods, with the training to obtain RNNk conducted during the current sampling period.A single RNN will be used for all sampling periods. This model will be trained offline using the globally collected data. The unique RNN will generate predictions during each sampling period.</p>
      <p>Remark 6 highlights that the RNN-controller is merely a more efficient way to implement the EA-controller. Therefore, the use of EAs in optimal control will remain relevant.</p>
    </sec>
    <sec id="sec6">
      <title>Appendix A</title>
      <p><bold>Formulatio</bold><bold>n of Optimal Control Problems</bold></p>
      <p>This section reviews the formulation of OCPs used to state the Park–Ramirez problem, the case study discussed in this paper. It can be used for many practical OCPs. </p>
      <p><bold>A.1. Optimal Control Problems with Final Cost</bold></p>
      <p>Since the structure of an OCP is well-known, we focus only on the key elements relevant to the problem used as an example in this section. Rigorous mathematical details will be omitted to keep the presentation simple.</p>
      <p><bold>A.1.1. Process Model</bold></p>
      <p>Our approach involves a controller with a process model made up of algebraic and ordinary differential equations.</p>
      <p><inline-formula><mml:math><mml:mrow><mml:mi> X </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow><mml:mo> = </mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:msub><mml:mi> x </mml:mi><mml:mn> 1 </mml:mn></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow><mml:mo> ⋯ </mml:mo><mml:msub><mml:mi> x </mml:mi><mml:mi> n </mml:mi></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mtext> T </mml:mtext></mml:msup></mml:mrow></mml:math></inline-formula> —a vector with <italic>n</italic> state variables; </p>
      <p><inline-formula><mml:math><mml:mrow><mml:mi> U </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow><mml:mo> = </mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:msub><mml:mi> u </mml:mi><mml:mn> 1 </mml:mn></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow><mml:mo> ⋯ </mml:mo><mml:msub><mml:mi> u </mml:mi><mml:mi> m </mml:mi></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mtext> T </mml:mtext></mml:msup></mml:mrow></mml:math></inline-formula> —a vector with <italic>m</italic> control variables.</p>
      <p>The set of equations (A1) below exemplifies a process model.</p>
      <p><bold>A.1.2. Constraints</bold></p>
      <p>Although there are many constraint types, we mention only those used in this paper.</p>
      <p><italic>Control horizon</italic>: <inline-formula><mml:math><mml:mrow><mml:mi> t </mml:mi><mml:mo> ∈ </mml:mo><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:msub><mml:mi> t </mml:mi><mml:mn> 0 </mml:mn></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> t </mml:mi><mml:mrow><mml:mi> f </mml:mi><mml:mi> i </mml:mi><mml:mi> n </mml:mi><mml:mi> a </mml:mi><mml:mi> l </mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo> ] </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula><inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> t </mml:mi><mml:mn> 0 </mml:mn></mml:msub><mml:mo> = </mml:mo><mml:mn> 0 </mml:mn></mml:mrow></mml:math></inline-formula></p>
      <p><italic>Initial state</italic>: <inline-formula><mml:math><mml:mrow><mml:mi> X </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mn> 0 </mml:mn><mml:mo> ) </mml:mo></mml:mrow><mml:mo> = </mml:mo><mml:msub><mml:mi> X </mml:mi><mml:mn> 0 </mml:mn></mml:msub><mml:mo> ∈ </mml:mo><mml:msup><mml:mi> R </mml:mi><mml:mi> n </mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p>
      <p><italic>Bound constraints</italic>: The values <inline-formula><mml:math><mml:mrow><mml:msubsup><mml:mi> u </mml:mi><mml:mrow><mml:mi> min </mml:mi></mml:mrow><mml:mi> j </mml:mi></mml:msubsup><mml:mo> , </mml:mo><mml:mtext>   </mml:mtext><mml:msubsup><mml:mi> u </mml:mi><mml:mrow><mml:mi> max </mml:mi></mml:mrow><mml:mi> j </mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> are the limits of the variable <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> u </mml:mi><mml:mi> j </mml:mi></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> .</p>
      <p>If <italic>T</italic> represents the sampling period of the control system, then the control horizon can be divided into <italic>H</italic> sampling periods:</p>
      <disp-formula id="FD8">
        <mml:math>
          <mml:mrow>
            <mml:msub>
              <mml:mi>t</mml:mi>
              <mml:mrow>
                <mml:mi>f</mml:mi>
                <mml:mi>i</mml:mi>
                <mml:mi>n</mml:mi>
                <mml:mi>a</mml:mi>
                <mml:mi>l</mml:mi>
              </mml:mrow>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:mi>H</mml:mi>
            <mml:mo>×</mml:mo>
            <mml:mi>T</mml:mi>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p><bold>A.1.3. Cost Function</bold></p>
      <p>The problem is to identify the control function, <inline-formula><mml:math><mml:mrow><mml:mi> U </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mo> · </mml:mo><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> , that optimizes (maximizes or minimizes) a specific cost (objective) function J, whose general form is shown below.</p>
      <disp-formula id="FD9">
        <mml:math>
          <mml:mrow>
            <mml:mi>J</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mi>U</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mo>·</mml:mo>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:msub>
                  <mml:mi>X</mml:mi>
                  <mml:mn>0</mml:mn>
                </mml:msub>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:mstyle displaystyle="true">
              <mml:mrow>
                <mml:msubsup>
                  <mml:mo>∫</mml:mo>
                  <mml:mn>0</mml:mn>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>t</mml:mi>
                      <mml:mrow>
                        <mml:mi>f</mml:mi>
                        <mml:mi>i</mml:mi>
                        <mml:mi>n</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>l</mml:mi>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                </mml:msubsup>
                <mml:mrow>
                  <mml:mi>L</mml:mi>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mrow>
                      <mml:mi>X</mml:mi>
                      <mml:mrow>
                        <mml:mo>(</mml:mo>
                        <mml:mi>τ</mml:mi>
                        <mml:mo>)</mml:mo>
                      </mml:mrow>
                      <mml:mo>,</mml:mo>
                      <mml:mi>U</mml:mi>
                      <mml:mrow>
                        <mml:mo>(</mml:mo>
                        <mml:mi>τ</mml:mi>
                        <mml:mo>)</mml:mo>
                      </mml:mrow>
                    </mml:mrow>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                  <mml:mtext>d</mml:mtext>
                  <mml:mi>τ</mml:mi>
                </mml:mrow>
              </mml:mrow>
            </mml:mstyle>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mi>J</mml:mi>
              <mml:mrow>
                <mml:mi>f</mml:mi>
                <mml:mi>i</mml:mi>
                <mml:mi>n</mml:mi>
                <mml:mi>a</mml:mi>
                <mml:mi>l</mml:mi>
              </mml:mrow>
            </mml:msub>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>The function <italic>L</italic> determines the integral component (Lagrange term) of the function <italic>J</italic>, while <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> J </mml:mi><mml:mrow><mml:mi> f </mml:mi><mml:mi> i </mml:mi><mml:mi> n </mml:mi><mml:mi> a </mml:mi><mml:mi> l </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> (Mayer term) rewards (or penalizes) the final state (in most cases).</p>
      <p>Remark A1. <italic>When the final cost is present, whether or not there is an integral term, the prediction horizon must end at the final time, which involves the greatest computational complexity.</italic></p>
      <p>Given Remark A1, we focus solely on the final cost, as it aligns with our OCP.</p>
      <disp-formula id="FD10">
        <mml:math>
          <mml:mrow>
            <mml:mi>J</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mi>U</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mo>·</mml:mo>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:msub>
                  <mml:mi>X</mml:mi>
                  <mml:mn>0</mml:mn>
                </mml:msub>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>≜</mml:mo>
            <mml:msub>
              <mml:mi>J</mml:mi>
              <mml:mrow>
                <mml:mi>f</mml:mi>
                <mml:mi>i</mml:mi>
                <mml:mi>n</mml:mi>
                <mml:mi>a</mml:mi>
                <mml:mi>l</mml:mi>
              </mml:mrow>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:mi>J</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mi>X</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>t</mml:mi>
                      <mml:mrow>
                        <mml:mi>f</mml:mi>
                        <mml:mi>i</mml:mi>
                        <mml:mi>n</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>l</mml:mi>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>The solution to the problem is the function <inline-formula><mml:math><mml:mrow><mml:mi> U </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mo> · </mml:mo><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> , which generates the optimal value of the cost function known as the performance index.</p>
      <disp-formula id="FD11">
        <mml:math>
          <mml:mrow>
            <mml:msub>
              <mml:mi>J</mml:mi>
              <mml:mn>0</mml:mn>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:munder>
              <mml:mrow>
                <mml:mi>max</mml:mi>
              </mml:mrow>
              <mml:mrow>
                <mml:mi>U</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mo>⋅</mml:mo>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
            </mml:munder>
            <mml:mi>J</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mi>X</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>t</mml:mi>
                      <mml:mrow>
                        <mml:mi>f</mml:mi>
                        <mml:mi>i</mml:mi>
                        <mml:mi>n</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>l</mml:mi>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>≜</mml:mo>
            <mml:munder>
              <mml:mrow>
                <mml:mi>max</mml:mi>
              </mml:mrow>
              <mml:mrow>
                <mml:mi>U</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mo>⋅</mml:mo>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
            </mml:munder>
            <mml:mi>J</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mi>U</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mo>⋅</mml:mo>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:msub>
                  <mml:mi>X</mml:mi>
                  <mml:mn>0</mml:mn>
                </mml:msub>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p><bold>A.1.4. An Example of OCP with a Final Cost</bold></p>
      <p>The Park–Ramirez problem (PRP) is a benchmark problem [<xref ref-type="bibr" rid="B26">26</xref>][<xref ref-type="bibr" rid="B27">27</xref>] that can illustrate a final cost OCP. The nonlinear model represents a fed-batch reactor that produces secreted protein. PRP has been explored in many studies to analyze integration methods.</p>
      <p>(PM):</p>
      <disp-formula id="FD12">
        <label>(A1)</label>
        <mml:math display="inline">
          <mml:mtable columnalign="left">
            <mml:mtr>
              <mml:mtd>
                <mml:msub>
                  <mml:mover accent="true">
                    <mml:mi>x</mml:mi>
                    <mml:mo>˙</mml:mo>
                  </mml:mover>
                  <mml:mn>1</mml:mn>
                </mml:msub>
                <mml:mo>=</mml:mo>
                <mml:mtext>
                </mml:mtext>
                <mml:msub>
                  <mml:mi>g</mml:mi>
                  <mml:mn>1</mml:mn>
                </mml:msub>
                <mml:mo>⋅</mml:mo>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>x</mml:mi>
                      <mml:mn>2</mml:mn>
                    </mml:msub>
                    <mml:mo>−</mml:mo>
                    <mml:msub>
                      <mml:mi>x</mml:mi>
                      <mml:mn>1</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>−</mml:mo>
                <mml:mfrac>
                  <mml:mi>u</mml:mi>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>x</mml:mi>
                      <mml:mn>5</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                </mml:mfrac>
                <mml:mo>⋅</mml:mo>
                <mml:msub>
                  <mml:mi>x</mml:mi>
                  <mml:mn>1</mml:mn>
                </mml:msub>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:msub>
                  <mml:mover accent="true">
                    <mml:mi>x</mml:mi>
                    <mml:mo>˙</mml:mo>
                  </mml:mover>
                  <mml:mn>2</mml:mn>
                </mml:msub>
                <mml:mo>=</mml:mo>
                <mml:msub>
                  <mml:mi>g</mml:mi>
                  <mml:mn>2</mml:mn>
                </mml:msub>
                <mml:mo>⋅</mml:mo>
                <mml:msub>
                  <mml:mi>x</mml:mi>
                  <mml:mn>3</mml:mn>
                </mml:msub>
                <mml:mo>−</mml:mo>
                <mml:mfrac>
                  <mml:mi>u</mml:mi>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>x</mml:mi>
                      <mml:mn>5</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                </mml:mfrac>
                <mml:mo>⋅</mml:mo>
                <mml:msub>
                  <mml:mi>x</mml:mi>
                  <mml:mn>2</mml:mn>
                </mml:msub>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:msub>
                  <mml:mover accent="true">
                    <mml:mi>x</mml:mi>
                    <mml:mo>˙</mml:mo>
                  </mml:mover>
                  <mml:mn>3</mml:mn>
                </mml:msub>
                <mml:mo>=</mml:mo>
                <mml:msub>
                  <mml:mi>g</mml:mi>
                  <mml:mn>3</mml:mn>
                </mml:msub>
                <mml:mo>⋅</mml:mo>
                <mml:msub>
                  <mml:mi>x</mml:mi>
                  <mml:mn>3</mml:mn>
                </mml:msub>
                <mml:mo>−</mml:mo>
                <mml:mfrac>
                  <mml:mi>u</mml:mi>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>x</mml:mi>
                      <mml:mn>5</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                </mml:mfrac>
                <mml:mo>⋅</mml:mo>
                <mml:msub>
                  <mml:mi>x</mml:mi>
                  <mml:mn>3</mml:mn>
                </mml:msub>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:msub>
                  <mml:mover accent="true">
                    <mml:mi>x</mml:mi>
                    <mml:mo>˙</mml:mo>
                  </mml:mover>
                  <mml:mn>4</mml:mn>
                </mml:msub>
                <mml:mo>=</mml:mo>
                <mml:mo>−</mml:mo>
                <mml:mn>7.3</mml:mn>
                <mml:mo>⋅</mml:mo>
                <mml:msub>
                  <mml:mi>g</mml:mi>
                  <mml:mn>3</mml:mn>
                </mml:msub>
                <mml:mo>⋅</mml:mo>
                <mml:msub>
                  <mml:mi>x</mml:mi>
                  <mml:mn>3</mml:mn>
                </mml:msub>
                <mml:mo>+</mml:mo>
                <mml:mfrac>
                  <mml:mi>u</mml:mi>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>x</mml:mi>
                      <mml:mn>5</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                </mml:mfrac>
                <mml:mo>⋅</mml:mo>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:mn>20</mml:mn>
                    <mml:mo>−</mml:mo>
                    <mml:msub>
                      <mml:mi>x</mml:mi>
                      <mml:mn>4</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:msub>
                  <mml:mover accent="true">
                    <mml:mi>x</mml:mi>
                    <mml:mo>˙</mml:mo>
                  </mml:mover>
                  <mml:mn>5</mml:mn>
                </mml:msub>
                <mml:mo>=</mml:mo>
                <mml:mi>u</mml:mi>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:msub>
                  <mml:mi>g</mml:mi>
                  <mml:mn>1</mml:mn>
                </mml:msub>
                <mml:mo>=</mml:mo>
                <mml:mfrac>
                  <mml:mrow>
                    <mml:mn>4.75</mml:mn>
                    <mml:mo>⋅</mml:mo>
                    <mml:msub>
                      <mml:mi>g</mml:mi>
                      <mml:mn>3</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mrow>
                    <mml:mn>0.12</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:msub>
                      <mml:mi>g</mml:mi>
                      <mml:mn>3</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                </mml:mfrac>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:msub>
                  <mml:mi>g</mml:mi>
                  <mml:mn>2</mml:mn>
                </mml:msub>
                <mml:mo>=</mml:mo>
                <mml:mfrac>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>x</mml:mi>
                      <mml:mn>4</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mrow>
                    <mml:mn>0.1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:msub>
                      <mml:mi>x</mml:mi>
                      <mml:mn>4</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                </mml:mfrac>
                <mml:mo>⋅</mml:mo>
                <mml:msup>
                  <mml:mtext>e</mml:mtext>
                  <mml:mrow>
                    <mml:mo>−</mml:mo>
                    <mml:mn>5.0</mml:mn>
                    <mml:mo>⋅</mml:mo>
                    <mml:msub>
                      <mml:mi>x</mml:mi>
                      <mml:mn>4</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                </mml:msup>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:msub>
                  <mml:mi>g</mml:mi>
                  <mml:mn>3</mml:mn>
                </mml:msub>
                <mml:mo>=</mml:mo>
                <mml:mfrac>
                  <mml:mrow>
                    <mml:mn>21.87</mml:mn>
                    <mml:mo>⋅</mml:mo>
                    <mml:msub>
                      <mml:mi>x</mml:mi>
                      <mml:mn>4</mml:mn>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mrow>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mrow>
                        <mml:msub>
                          <mml:mi>x</mml:mi>
                          <mml:mn>4</mml:mn>
                        </mml:msub>
                        <mml:mo>+</mml:mo>
                        <mml:mn>0.4</mml:mn>
                      </mml:mrow>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mrow>
                        <mml:msub>
                          <mml:mi>x</mml:mi>
                          <mml:mn>4</mml:mn>
                        </mml:msub>
                        <mml:mo>+</mml:mo>
                        <mml:mn>62.5</mml:mn>
                      </mml:mrow>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                </mml:mfrac>
              </mml:mtd>
            </mml:mtr>
          </mml:mtable>
        </mml:math>
      </disp-formula>
      <p>The state variables have the following significance: <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> x </mml:mi><mml:mn> 1 </mml:mn></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> —concentration of secreted protein, <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> x </mml:mi><mml:mn> 2 </mml:mn></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> —concentration of total protein, <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> x </mml:mi><mml:mn> 3 </mml:mn></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> —density of culture cell, <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> x </mml:mi><mml:mn> 4 </mml:mn></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> —concentration of substrate, and <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> x </mml:mi><mml:mn> 5 </mml:mn></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> —holdup volume.</p>
      <p>It holds <italic>n</italic>= 5; <italic>m</italic>= 1; <inline-formula><mml:math><mml:mrow><mml:mi> U </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow><mml:mo> = </mml:mo><mml:mi> u </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow><mml:mo> ∈ </mml:mo><mml:mi> R </mml:mi></mml:mrow></mml:math></inline-formula> .</p>
      <p><underline> Constraints </underline>:</p>
      <p><italic>Control horizon</italic>: <inline-formula><mml:math><mml:mrow><mml:mi> t </mml:mi><mml:mo> ∈ </mml:mo><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:msub><mml:mi> t </mml:mi><mml:mn> 0 </mml:mn></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> t </mml:mi><mml:mrow><mml:mi> f </mml:mi><mml:mi> i </mml:mi><mml:mi> n </mml:mi><mml:mi> a </mml:mi><mml:mi> l </mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo> ] </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> ; <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> t </mml:mi><mml:mn> 0 </mml:mn></mml:msub><mml:mo> = </mml:mo><mml:mn> 0 </mml:mn></mml:mrow></mml:math></inline-formula> , <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> t </mml:mi><mml:mrow><mml:mi> f </mml:mi><mml:mi> i </mml:mi><mml:mi> n </mml:mi><mml:mi> a </mml:mi><mml:mi> l </mml:mi></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:mn> 15 </mml:mn><mml:mtext>   </mml:mtext><mml:mtext> h </mml:mtext></mml:mrow></mml:math></inline-formula> .</p>
      <p><italic>Initial state</italic>: <inline-formula><mml:math><mml:mrow><mml:mi> X </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mn> 0 </mml:mn><mml:mo> ) </mml:mo></mml:mrow><mml:mo> = </mml:mo><mml:msub><mml:mi> X </mml:mi><mml:mn> 0 </mml:mn></mml:msub><mml:mo> = </mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mtext></mml:mtext><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mtext></mml:mtext><mml:mn> 1 </mml:mn><mml:mo> , </mml:mo><mml:mtext></mml:mtext><mml:mn> 5 </mml:mn><mml:mo> , </mml:mo><mml:mtext></mml:mtext><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mtext> T </mml:mtext></mml:msup><mml:mo> ∈ </mml:mo><mml:msup><mml:mi> R </mml:mi><mml:mn> 5 </mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> .</p>
      <p><italic>Bound constraints:</italic><inline-formula><mml:math><mml:mrow><mml:mi> u </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow><mml:mo> ∈ </mml:mo><mml:mi> Ω </mml:mi><mml:mo> ≜ </mml:mo><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mtext></mml:mtext><mml:mn> 2 </mml:mn></mml:mrow><mml:mo> ] </mml:mo></mml:mrow><mml:mtext> ; </mml:mtext><mml:mtext>   </mml:mtext><mml:mn> 0 </mml:mn><mml:mo> &lt; </mml:mo><mml:mi> t </mml:mi><mml:mo> &lt; </mml:mo><mml:msub><mml:mi> t </mml:mi><mml:mrow><mml:mi> f </mml:mi><mml:mi> i </mml:mi><mml:mi> n </mml:mi><mml:mi> a </mml:mi><mml:mi> l </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></p>
      <p><underline> Performance index </underline>:</p>
      <disp-formula id="FD13">
        <mml:math>
          <mml:mrow>
            <mml:msub>
              <mml:mi>J</mml:mi>
              <mml:mn>0</mml:mn>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:munder>
              <mml:mrow>
                <mml:mi>max</mml:mi>
              </mml:mrow>
              <mml:mrow>
                <mml:mi>u</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
            </mml:munder>
            <mml:mi>J</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mi>x</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>t</mml:mi>
                      <mml:mrow>
                        <mml:mi>f</mml:mi>
                        <mml:mi>i</mml:mi>
                        <mml:mi>n</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>l</mml:mi>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:munder>
              <mml:mrow>
                <mml:mi>max</mml:mi>
              </mml:mrow>
              <mml:mrow>
                <mml:mi>u</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
            </mml:munder>
            <mml:msub>
              <mml:mi>X</mml:mi>
              <mml:mn>1</mml:mn>
            </mml:msub>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:msub>
                  <mml:mi>t</mml:mi>
                  <mml:mrow>
                    <mml:mi>f</mml:mi>
                    <mml:mi>i</mml:mi>
                    <mml:mi>n</mml:mi>
                    <mml:mi>a</mml:mi>
                    <mml:mi>l</mml:mi>
                  </mml:mrow>
                </mml:msub>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>⋅</mml:mo>
            <mml:msub>
              <mml:mi>X</mml:mi>
              <mml:mn>5</mml:mn>
            </mml:msub>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:msub>
                  <mml:mi>t</mml:mi>
                  <mml:mrow>
                    <mml:mi>f</mml:mi>
                    <mml:mi>i</mml:mi>
                    <mml:mi>n</mml:mi>
                    <mml:mi>a</mml:mi>
                    <mml:mi>l</mml:mi>
                  </mml:mrow>
                </mml:msub>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>An open-loop solution cannot be used in real time because the real process and PM have different dynamics, even with small differences; this can lead to unpredictable efficiency. Our goal is to develop a controlled, optimal process (a closed-loop solution) starting from a given <italic>X</italic><sub>0</sub>, with the final cost being <italic>J</italic><sub>0</sub>.</p>
    </sec>
    <sec id="sec7">
      <title>Appendix B</title>
      <p><bold>A Discrete-Time</bold><bold>Solution</bold><bold>of an OCP using EA</bold></p>
      <p>To use an EA, we add the following constraint to our OCP:</p>
      <disp-formula id="FD14">
        <mml:math display="inline">
          <mml:mrow>
            <mml:mi>U</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mi>t</mml:mi>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:mi>U</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mi>k</mml:mi>
                <mml:mi>T</mml:mi>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>Therefore, the control variables are modeled as step functions. For simplicity, the time instant <italic>kT</italic> will be denoted as <italic>k</italic> in the following. For example, within the sampling period <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:mi> k </mml:mi><mml:mi> T </mml:mi><mml:mo> , </mml:mo><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> k </mml:mi><mml:mo> + </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow><mml:mi> T </mml:mi></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> , the control vector is</p>
      <disp-formula id="FD15">
        <mml:math display="inline">
          <mml:mrow>
            <mml:mi>U</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mi>k</mml:mi>
                <mml:mi>T</mml:mi>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>≡</mml:mo>
            <mml:mi>U</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mi>k</mml:mi>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>≜</mml:mo>
            <mml:msup>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>u</mml:mi>
                      <mml:mn>1</mml:mn>
                    </mml:msub>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mi>k</mml:mi>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:mo>⋯</mml:mo>
                    <mml:mo>,</mml:mo>
                    <mml:msub>
                      <mml:mi>u</mml:mi>
                      <mml:mi>m</mml:mi>
                    </mml:msub>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mi>k</mml:mi>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mtext>T</mml:mtext>
            </mml:msup>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>We will call a “control profile” (CP) a sequence <inline-formula><mml:math><mml:mrow><mml:mi> U </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mn> 0 </mml:mn><mml:mo> ) </mml:mo></mml:mrow><mml:mo> , </mml:mo><mml:mi> U </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ) </mml:mo></mml:mrow><mml:mo> , </mml:mo><mml:mo> ⋯ </mml:mo><mml:mo> , </mml:mo><mml:mi> U </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> H </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> that spans the control horizon. It will produce the transfer diagram shown in <xref ref-type="fig" rid="fig2">Figure 2</xref>.</p>
      <p>The EA produces candidate predictions over prediction horizons and evaluates the cost function <italic>J</italic>. For the sampling period [<italic>k</italic>, <italic>k</italic> + 1), a candidate prediction is a control sequence with the following structure:</p>
      <disp-formula id="FD16">
        <mml:math display="inline">
          <mml:mrow>
            <mml:mover accent="true">
              <mml:mi>U</mml:mi>
              <mml:mo>¯</mml:mo>
            </mml:mover>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mi>k</mml:mi>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:mrow>
              <mml:mo>〈</mml:mo>
              <mml:mrow>
                <mml:mi>U</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mi>k</mml:mi>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mo>⋯</mml:mo>
                <mml:mo>,</mml:mo>
                <mml:mi>U</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:mi>H</mml:mi>
                    <mml:mo>−</mml:mo>
                    <mml:mn>1</mml:mn>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mo>〉</mml:mo>
            </mml:mrow>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>The vector <italic>X</italic>(<italic>k</italic>) is the current state of the process. It is also the initial state for candidate prediction with <italic>H-k</italic> elements. This fact supports the name “Receding Horizon Control”. The EA also calculates the corresponding state sequence (with <italic>H</italic>−<italic>k</italic>+ 1 elements):</p>
      <disp-formula id="FD17">
        <mml:math display="inline">
          <mml:mrow>
            <mml:mover accent="true">
              <mml:mi>X</mml:mi>
              <mml:mo>¯</mml:mo>
            </mml:mover>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mi>k</mml:mi>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:mrow>
              <mml:mo>〈</mml:mo>
              <mml:mrow>
                <mml:mi>X</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mi>k</mml:mi>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mo>⋯</mml:mo>
                <mml:mo>,</mml:mo>
                <mml:mi>X</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mi>H</mml:mi>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mo>〉</mml:mo>
            </mml:mrow>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>When EA converges, it returns the optimal prediction sequence:</p>
      <disp-formula id="FD18">
        <mml:math display="inline">
          <mml:mrow>
            <mml:mover accent="true">
              <mml:mi>V</mml:mi>
              <mml:mo>¯</mml:mo>
            </mml:mover>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mi>k</mml:mi>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>≜</mml:mo>
            <mml:mi>arg</mml:mi>
            <mml:munder>
              <mml:mrow>
                <mml:mi>max</mml:mi>
              </mml:mrow>
              <mml:mrow>
                <mml:mover accent="true">
                  <mml:mi>U</mml:mi>
                  <mml:mo>¯</mml:mo>
                </mml:mover>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mi>k</mml:mi>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
            </mml:munder>
            <mml:mi>J</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mover accent="true">
                  <mml:mi>U</mml:mi>
                  <mml:mo>¯</mml:mo>
                </mml:mover>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mi>k</mml:mi>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mi>X</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mi>k</mml:mi>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:mrow>
              <mml:mo>〈</mml:mo>
              <mml:mrow>
                <mml:mi>V</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mi>k</mml:mi>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mo>⋯</mml:mo>
                <mml:mo>,</mml:mo>
                <mml:mi>V</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:mi>H</mml:mi>
                    <mml:mo>−</mml:mo>
                    <mml:mn>1</mml:mn>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mo>〉</mml:mo>
            </mml:mrow>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>The first value of the sequence, <italic>V</italic>(<italic>k</italic>), becomes the controller’s optimal output, denoted <inline-formula><mml:math display="inline"><mml:mrow><mml:msup><mml:mi> U </mml:mi><mml:mo> * </mml:mo></mml:msup><mml:mrow><mml:mo> ( </mml:mo><mml:mi> k </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> , which is sent to the process. The remaining values in <italic>V</italic>(<italic>k</italic>) are discarded. The controller will treat the next sampling period [<italic>k</italic> + 1<italic>, k</italic>+ 2).</p>
    </sec>
    <sec id="sec8">
      <title>Appendix C</title>
      <fig id="fig16">
        <label>Figure 16</label>
        <graphic xlink:href="https://html.scirp.org/file/2730404-rId181.jpeg?20260507020810" />
      </fig>
      <p><bold>Figure A1.</bold>The flowchart of the prediction function using an EA for the control horizon [<italic>k</italic>, <italic>H</italic>].</p>
      <fig id="fig17">
        <label>Figure 17</label>
        <graphic xlink:href="https://html.scirp.org/file/2730404-rId182.jpeg?20260507020809" />
      </fig>
      <p><bold>Figure A2.</bold> An algorithm using EA that provides an optimal state trajectory and a CP for the control horizon [0, <italic>H</italic>].</p>
      <p>If we consider that the PM matches the real process, this algorithm can be used to simulate the closed-loop functioning over an entire control horizon.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <title>References</title>
      <ref id="B1">
        <label>1.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Siarry, P. (2016) Metaheuristics. Springer.</mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Siarry, P.</string-name>
            </person-group>
            <year>2016</year>
            <article-title>Metaheuristics</article-title>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B2">
        <label>2.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Talbi, E. (2009) Metaheuristics. Wiley. https://doi.org/10.1002/9780470496916 <pub-id pub-id-type="doi">10.1002/9780470496916</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1002/9780470496916">https://doi.org/10.1002/9780470496916</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Talbi, E.</string-name>
            </person-group>
            <year>2009</year>
            <article-title>Metaheuristics</article-title>
            <pub-id pub-id-type="doi">10.1002/9780470496916</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B3">
        <label>3.</label>
        <citation-alternatives>
          <mixed-citation publication-type="book">Kruse, R., Borgelt, C., Braune, C., Mostaghim, S. and Steinbrecher, M. (2016) Computational Intelligence—A Methodological Introduction. 2nd Edition, Springer.</mixed-citation>
          <element-citation publication-type="book">
            <person-group person-group-type="author">
              <string-name>Kruse, R.</string-name>
              <string-name>Borgelt, C.</string-name>
              <string-name>Braune, C.</string-name>
              <string-name>Mostaghim, S.</string-name>
              <string-name>Steinbrecher, M.</string-name>
              <string-name>Edition, S</string-name>
            </person-group>
            <year>2016</year>
            <article-title>Computational Intelligence—A Methodological Introduction</article-title>
            <source>2nd Edition</source>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B4">
        <label>4.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Faber, R., Jockenhövel, T. and Tsatsaronis, G. (2005) Dynamic Optimization with Simulated Annealing. <italic>Computers</italic><italic>&amp;</italic><italic>Chemical</italic><italic>Engineering</italic>, 29, 273-290. https://doi.org/10.1016/j.compchemeng.2004.08.020 <pub-id pub-id-type="doi">10.1016/j.compchemeng.2004.08.020</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/j.compchemeng.2004.08.020">https://doi.org/10.1016/j.compchemeng.2004.08.020</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Faber, R.</string-name>
              <string-name>Tsatsaronis, G.</string-name>
            </person-group>
            <year>2005</year>
            <article-title>Dynamic Optimization with Simulated Annealing</article-title>
            <source>Computers &amp; Chemical Engineering</source>
            <volume>29</volume>
            <pub-id pub-id-type="doi">10.1016/j.compchemeng.2004.08.020</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B5">
        <label>5.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Onwubolu, G. and Babu, B.V. (2004) New Optimization Techniques in Engineering. Springer.</mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Onwubolu, G.</string-name>
              <string-name>Babu, B.V.</string-name>
            </person-group>
            <year>2004</year>
            <article-title>New Optimization Techniques in Engineering</article-title>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B6">
        <label>6.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Valadi, J. and Siarry, P. (2014) Applications of Metaheuristics in Process Engineering, Springer International Publishing, 1-39. https://doi.org/10.1007/978-3-319-06508-3 <pub-id pub-id-type="doi">10.1007/978-3-319-06508-3</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1007/978-3-319-06508-3">https://doi.org/10.1007/978-3-319-06508-3</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Valadi, J.</string-name>
              <string-name>Siarry, P.</string-name>
              <string-name>Engineering, S</string-name>
            </person-group>
            <year>2014</year>
            <article-title>Applications of Metaheuristics in Process Engineering, Springer International Publishing, 1-39</article-title>
            <pub-id pub-id-type="doi">10.1007/978-3-319-06508-3</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B7">
        <label>7.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Minzu, V., Riahi, S. and Rusu, E. (2021) Optimal Control of an Ultraviolet Water Disinfection System. <italic>Applied</italic><italic>Sciences</italic>, 11, Article 2638. https://doi.org/10.3390/app11062638 <pub-id pub-id-type="doi">10.3390/app11062638</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/app11062638">https://doi.org/10.3390/app11062638</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Minzu, V.</string-name>
              <string-name>Riahi, S.</string-name>
              <string-name>Rusu, E.</string-name>
            </person-group>
            <year>2021</year>
            <article-title>Optimal Control of an Ultraviolet Water Disinfection System</article-title>
            <source>Applied Sciences</source>
            <volume>11</volume>
            <elocation-id>2638</elocation-id>
            <pub-id pub-id-type="doi">10.3390/app11062638</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B8">
        <label>8.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Abraham, A., Jain, L. and Goldberg, R. (2005) Evolutionary Multiobjective Optimization—Theoretical Advances and Applications. Springer.</mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Abraham, A.</string-name>
              <string-name>Jain, L.</string-name>
              <string-name>Goldberg, R.</string-name>
            </person-group>
            <year>2005</year>
            <article-title>Evolutionary Multiobjective Optimization—Theoretical Advances and Applications</article-title>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B9">
        <label>9.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Mînzu, V., Rusu, E. and Arama, I. (2023) Execution Time Decrease for Controllers Based on Adaptive Particle Swarm Optimization. <italic>Inventions</italic>, 8, Article 9. https://doi.org/10.3390/inventions8010009 <pub-id pub-id-type="doi">10.3390/inventions8010009</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/inventions8010009">https://doi.org/10.3390/inventions8010009</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Rusu, E.</string-name>
              <string-name>Arama, I.</string-name>
            </person-group>
            <year>2023</year>
            <article-title>Execution Time Decrease for Controllers Based on Adaptive Particle Swarm Optimization</article-title>
            <source>Inventions</source>
            <volume>8</volume>
            <elocation-id>9</elocation-id>
            <pub-id pub-id-type="doi">10.3390/inventions8010009</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B10">
        <label>10.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Minzu, V. and Serbencu, A. (2020) Systematic Procedure for Optimal Controller Implementation Using Metaheuristic Algorithms. <italic>Intelligent</italic><italic>Automation</italic><italic>&amp;</italic><italic>Soft</italic><italic>Computing</italic>, 26, 663-677. https://doi.org/10.32604/iasc.2020.010101 <pub-id pub-id-type="doi">10.32604/iasc.2020.010101</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.32604/iasc.2020.010101">https://doi.org/10.32604/iasc.2020.010101</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Minzu, V.</string-name>
              <string-name>Serbencu, A.</string-name>
            </person-group>
            <year>2020</year>
            <article-title>Systematic Procedure for Optimal Controller Implementation Using Metaheuristic Algorithms</article-title>
            <source>Intelligent Automation &amp; Soft Computing</source>
            <volume>26</volume>
            <pub-id pub-id-type="doi">10.32604/iasc.2020.010101</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B11">
        <label>11.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Minzu, V. (2020) Optimal Control Implementation with Terminal Penalty Using Metaheuristic Algorithms. <italic>Automation</italic>, 1, 48-65. https://doi.org/10.3390/automation1010004 <pub-id pub-id-type="doi">10.3390/automation1010004</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/automation1010004">https://doi.org/10.3390/automation1010004</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Minzu, V.</string-name>
            </person-group>
            <year>2020</year>
            <article-title>Optimal Control Implementation with Terminal Penalty Using Metaheuristic Algorithms</article-title>
            <source>Automation</source>
            <volume>1</volume>
            <pub-id pub-id-type="doi">10.3390/automation1010004</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B12">
        <label>12.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Minzu, V., Ifrim, G. and Arama, I. (2021) Control of Microalgae Growth in Artificially Lighted Photobioreactors Using Metaheuristic-Based Predictions. <italic>Sensors</italic>, 21, 8065. https://doi.org/10.3390/s21238065 <pub-id pub-id-type="doi">10.3390/s21238065</pub-id><pub-id pub-id-type="pmid">34884070</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/s21238065">https://doi.org/10.3390/s21238065</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Minzu, V.</string-name>
              <string-name>Ifrim, G.</string-name>
              <string-name>Arama, I.</string-name>
            </person-group>
            <year>2021</year>
            <article-title>Control of Microalgae Growth in Artificially Lighted Photobioreactors Using Metaheuristic-Based Predictions</article-title>
            <source>Sensors</source>
            <volume>21</volume>
            <pub-id pub-id-type="doi">10.3390/s21238065</pub-id>
            <pub-id pub-id-type="pmid">34884070</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B13">
        <label>13.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Minzu, V., Riahi, S. and Rusu, E. (2021) Implementation Aspects Regarding Closed-Loop Control Systems Using Evolutionary Algorithms. <italic>Inventions</italic>, 6, Article 53. https://doi.org/10.3390/inventions6030053 <pub-id pub-id-type="doi">10.3390/inventions6030053</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/inventions6030053">https://doi.org/10.3390/inventions6030053</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Minzu, V.</string-name>
              <string-name>Riahi, S.</string-name>
              <string-name>Rusu, E.</string-name>
            </person-group>
            <year>2021</year>
            <article-title>Implementation Aspects Regarding Closed-Loop Control Systems Using Evolutionary Algorithms</article-title>
            <source>Inventions</source>
            <volume>6</volume>
            <elocation-id>53</elocation-id>
            <pub-id pub-id-type="doi">10.3390/inventions6030053</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B14">
        <label>14.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Mînzu, V. and Arama, I. (2022) Optimal Control Systems Using Evolutionary Algorithm-Control Input Range Estimation. <italic>Automation</italic>, 3, 95-115. https://doi.org/10.3390/automation3010005 <pub-id pub-id-type="doi">10.3390/automation3010005</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/automation3010005">https://doi.org/10.3390/automation3010005</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Arama, I.</string-name>
            </person-group>
            <year>2022</year>
            <article-title>Optimal Control Systems Using Evolutionary Algorithm-Control Input Range Estimation</article-title>
            <source>Automation</source>
            <volume>3</volume>
            <pub-id pub-id-type="doi">10.3390/automation3010005</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B15">
        <label>15.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Mînzu, V., Georgescu, L. and Rusu, E. (2022) Predictions Based on Evolutionary Algorithms Using Predefined Control Profiles. <italic>Electronics</italic>, 11, Article 1682. https://doi.org/10.3390/electronics11111682 <pub-id pub-id-type="doi">10.3390/electronics11111682</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/electronics11111682">https://doi.org/10.3390/electronics11111682</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Georgescu, L.</string-name>
              <string-name>Rusu, E.</string-name>
            </person-group>
            <year>2022</year>
            <article-title>Predictions Based on Evolutionary Algorithms Using Predefined Control Profiles</article-title>
            <source>Electronics</source>
            <volume>11</volume>
            <elocation-id>1682</elocation-id>
            <pub-id pub-id-type="doi">10.3390/electronics11111682</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B16">
        <label>16.</label>
        <citation-alternatives>
          <mixed-citation publication-type="book">Goodfellow, I., Bengio, Y. and Courville, A. (2016) Machine Learning Basics. In: Dietterich, T., Bishop, C., Heckerman, D., Jordan, M., and Kearns, M., Eds., <italic>Deep Learning</italic>, The MIT Press, 95-161.</mixed-citation>
          <element-citation publication-type="book">
            <person-group person-group-type="author">
              <string-name>Goodfellow, I.</string-name>
              <string-name>Bengio, Y.</string-name>
              <string-name>Courville, A.</string-name>
              <string-name>Dietterich, T.</string-name>
              <string-name>Bishop, C.</string-name>
              <string-name>Heckerman, D.</string-name>
              <string-name>Jordan, M.</string-name>
              <string-name>Kearns, M.</string-name>
              <string-name>Learning, T</string-name>
            </person-group>
            <year>2016</year>
            <article-title>Machine Learning Basics</article-title>
            <source>In: Dietterich</source>
            <volume>95</volume>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B17">
        <label>17.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Zou, S., Chu, C., Shen, N. and Ren, J. (2023) Healthcare Cost Prediction Based on Hybrid Machine Learning Algorithms. <italic>Mathematics</italic>, 11, Article 4778. https://doi.org/10.3390/math11234778 <pub-id pub-id-type="doi">10.3390/math11234778</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/math11234778">https://doi.org/10.3390/math11234778</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Zou, S.</string-name>
              <string-name>Chu, C.</string-name>
              <string-name>Shen, N.</string-name>
              <string-name>Ren, J.</string-name>
            </person-group>
            <year>2023</year>
            <article-title>Healthcare Cost Prediction Based on Hybrid Machine Learning Algorithms</article-title>
            <source>Mathematics</source>
            <volume>11</volume>
            <elocation-id>4778</elocation-id>
            <pub-id pub-id-type="doi">10.3390/math11234778</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B18">
        <label>18.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Cuadrado, D., Valls, A. and Riaño, D. (2023) Predicting Intensive Care Unit Patients’ Discharge Date with a Hybrid Machine Learning Model That Combines Length of Stay and Days to Discharge. <italic>Mathematics</italic>, 11, Article 4773. https://doi.org/10.3390/math11234773 <pub-id pub-id-type="doi">10.3390/math11234773</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/math11234773">https://doi.org/10.3390/math11234773</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Cuadrado, D.</string-name>
              <string-name>Valls, A.</string-name>
            </person-group>
            <year>2023</year>
            <article-title>Predicting Intensive Care Unit Patients’ Discharge Date with a Hybrid Machine Learning Model That Combines Length of Stay and Days to Discharge</article-title>
            <source>Mathematics</source>
            <volume>11</volume>
            <elocation-id>4773</elocation-id>
            <pub-id pub-id-type="doi">10.3390/math11234773</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B19">
        <label>19.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Albahli, S., Irtaza, A., Nazir, T., Mehmood, A., Alkhalifah, A. and Albattah, W. (2022) A Machine Learning Method for Prediction of Stock Market Using Real-Time Twitter Data. <italic>Electronics</italic>, 11, Article 3414. https://doi.org/10.3390/electronics11203414 <pub-id pub-id-type="doi">10.3390/electronics11203414</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/electronics11203414">https://doi.org/10.3390/electronics11203414</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Albahli, S.</string-name>
              <string-name>Irtaza, A.</string-name>
              <string-name>Nazir, T.</string-name>
              <string-name>Mehmood, A.</string-name>
              <string-name>Alkhalifah, A.</string-name>
              <string-name>Albattah, W.</string-name>
            </person-group>
            <year>2022</year>
            <article-title>A Machine Learning Method for Prediction of Stock Market Using Real-Time Twitter Data</article-title>
            <source>Electronics</source>
            <volume>11</volume>
            <elocation-id>3414</elocation-id>
            <pub-id pub-id-type="doi">10.3390/electronics11203414</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B20">
        <label>20.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Mînzu, V. and Arama, I. (2024) A Machine Learning Algorithm That Experiences the Evolutionary Algorithm’s Predictions—An Application to Optimal Control. <italic>Mathematics</italic>, 12, Article 187. https://doi.org/10.3390/math12020187 <pub-id pub-id-type="doi">10.3390/math12020187</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/math12020187">https://doi.org/10.3390/math12020187</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Arama, I.</string-name>
            </person-group>
            <year>2024</year>
            <article-title>A Machine Learning Algorithm That Experiences the Evolutionary Algorithm’s Predictions—An Application to Optimal Control</article-title>
            <source>Mathematics</source>
            <volume>12</volume>
            <elocation-id>187</elocation-id>
            <pub-id pub-id-type="doi">10.3390/math12020187</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B21">
        <label>21.</label>
        <citation-alternatives>
          <mixed-citation publication-type="book">Newbold, P., Carlson, W.L. and Thorne, B. (2007) Multiple Regression. In: Pfaltzgraff, M. and Bradley, A., Eds., <italic>Statistics</italic><italic>for</italic><italic>Business</italic><italic>and</italic><italic>Economics</italic>, 6th Edition, Pearson Education, Inc., 454-537.</mixed-citation>
          <element-citation publication-type="book">
            <person-group person-group-type="author">
              <string-name>Newbold, P.</string-name>
              <string-name>Carlson, W.L.</string-name>
              <string-name>Thorne, B.</string-name>
              <string-name>Pfaltzgraff, M.</string-name>
              <string-name>Bradley, A.</string-name>
              <string-name>Edition, P</string-name>
              <string-name>Education, I</string-name>
            </person-group>
            <year>2007</year>
            <article-title>Multiple Regression</article-title>
            <source>In: Pfaltzgraff</source>
            <volume>454</volume>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B22">
        <label>22.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Shi, H., Zhang, X., Gao, Y., Wang, S. and Ning, Y. (2023) Robust Total Least Squares Estimation Method for Uncertain Linear Regression Model. <italic>Mathematics</italic>, 11, Article 4354. https://doi.org/10.3390/math11204354 <pub-id pub-id-type="doi">10.3390/math11204354</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3390/math11204354">https://doi.org/10.3390/math11204354</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Shi, H.</string-name>
              <string-name>Zhang, X.</string-name>
              <string-name>Gao, Y.</string-name>
              <string-name>Wang, S.</string-name>
              <string-name>Ning, Y.</string-name>
            </person-group>
            <year>2023</year>
            <article-title>Robust Total Least Squares Estimation Method for Uncertain Linear Regression Model</article-title>
            <source>Mathematics</source>
            <volume>11</volume>
            <elocation-id>4354</elocation-id>
            <pub-id pub-id-type="doi">10.3390/math11204354</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B23">
        <label>23.</label>
        <citation-alternatives>
          <mixed-citation publication-type="book">Goodfellow, I., Bengio, Y. and Courville, A. (2016) Example: Linear Regression. In: Dietterich, T., Bishop, C., Heckerman, D., Jordan, M., and Kearns, M., Eds., <italic>Deep</italic><italic>Learning</italic>, The MIT Press, 104-113.</mixed-citation>
          <element-citation publication-type="book">
            <person-group person-group-type="author">
              <string-name>Goodfellow, I.</string-name>
              <string-name>Bengio, Y.</string-name>
              <string-name>Courville, A.</string-name>
              <string-name>Dietterich, T.</string-name>
              <string-name>Bishop, C.</string-name>
              <string-name>Heckerman, D.</string-name>
              <string-name>Jordan, M.</string-name>
              <string-name>Kearns, M.</string-name>
              <string-name>Learning, T</string-name>
            </person-group>
            <year>2016</year>
            <article-title>Example: Linear Regression</article-title>
            <source>In: Dietterich</source>
            <volume>104</volume>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B24">
        <label>24.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Hu, X. and Chen, W. (2005) Genetic Algorithm Based on Receding Horizon Control for Arrival Sequencing and Scheduling. <italic>Engineering</italic><italic>Applications</italic><italic>of</italic><italic>Artificial</italic><italic>Intelligence</italic>, 18, 633-642. https://doi.org/10.1016/j.engappai.2004.11.012 <pub-id pub-id-type="doi">10.1016/j.engappai.2004.11.012</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/j.engappai.2004.11.012">https://doi.org/10.1016/j.engappai.2004.11.012</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Hu, X.</string-name>
              <string-name>Chen, W.</string-name>
            </person-group>
            <year>2005</year>
            <article-title>Genetic Algorithm Based on Receding Horizon Control for Arrival Sequencing and Scheduling</article-title>
            <source>Engineering Applications of Artificial Intelligence</source>
            <volume>18</volume>
            <pub-id pub-id-type="doi">10.1016/j.engappai.2004.11.012</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B25">
        <label>25.</label>
        <citation-alternatives>
          <mixed-citation publication-type="confproc">Hu, X.B. and Chen, W.H. (2005) Genetic Algorithm Based on Receding Horizon Control for Real-Time Implementations in Dynamic Environments. <italic>Proceedings</italic><italic>of</italic><italic>the</italic> 16 <italic>th</italic><italic>Triennial</italic><italic>World</italic><italic>Congress</italic>, Prague, 4-8 July 2005, 156-161.</mixed-citation>
          <element-citation publication-type="confproc">
            <person-group person-group-type="author">
              <string-name>Hu, X.B.</string-name>
              <string-name>Chen, W.H.</string-name>
              <string-name>Congress, P</string-name>
            </person-group>
            <year>2005</year>
            <article-title>Genetic Algorithm Based on Receding Horizon Control for Real-Time Implementations in Dynamic Environments</article-title>
            <source>Proceedings of the 16th Triennial World Congress</source>
            <volume>4</volume>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B26">
        <label>26.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Mayne, D.Q. and Michalska, H. (1990) Receding Horizon Control of Nonlinear Systems. <italic>IEEE</italic><italic>Transactions</italic><italic>on</italic><italic>Automatic</italic><italic>Control</italic>, 35, 814-824. https://doi.org/10.1109/9.57020 <pub-id pub-id-type="doi">10.1109/9.57020</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/9.57020">https://doi.org/10.1109/9.57020</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Mayne, D.Q.</string-name>
              <string-name>Michalska, H.</string-name>
            </person-group>
            <year>1990</year>
            <article-title>Receding Horizon Control of Nonlinear Systems</article-title>
            <source>IEEE Transactions on Automatic Control</source>
            <volume>35</volume>
            <pub-id pub-id-type="doi">10.1109/9.57020</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B27">
        <label>27.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Goggos, V. and King, R.E. (1996) Evolutionary Predictive Control (EPC) <italic>Computers</italic><italic>&amp;</italic><italic>Chemical</italic><italic>Engineering</italic>, 20, S817-S822. https://doi.org/10.1016/0098-1354(96)00144-5 <pub-id pub-id-type="doi">10.1016/0098-1354(96)00144-5</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/0098-1354(96)00144-5">https://doi.org/10.1016/0098-1354(96)00144-5</ext-link></mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Goggos, V.</string-name>
              <string-name>King, R.E.</string-name>
            </person-group>
            <year>1996</year>
            <article-title>Evolutionary Predictive Control (EPC) Computers &amp; Chemical Engineering, 20, S817-S822</article-title>
            <volume>1354</volume>
            <issue>96</issue>
            <pub-id pub-id-type="doi">10.1016/0098-1354(96)00144-5</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B28">
        <label>28.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Chiang, P. and Willems, P. (2015) Combine Evolutionary Optimization with Model Predictive Control in Real-Time Flood Control of a River System. <italic>Water</italic><italic>Resources</italic><italic>Management</italic>, 29, 2527-2542. https://doi.org/10.1007/s11269-015-0955-5 <pub-id pub-id-type="doi">10.1007/s11269-015-0955-5</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1007/s11269-015-0955-5">https://doi.org/10.1007/s11269-015-0955-5</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Chiang, P.</string-name>
              <string-name>Willems, P.</string-name>
            </person-group>
            <year>2015</year>
            <article-title>Combine Evolutionary Optimization with Model Predictive Control in Real-Time Flood Control of a River System</article-title>
            <source>Water Resources Management</source>
            <volume>29</volume>
            <pub-id pub-id-type="doi">10.1007/s11269-015-0955-5</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B29">
        <label>29.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Banga, J.R., Balsa-Canto, E., Moles, C.G. and Alonso, A.A. (2005) Dynamic Optimization of Bioprocesses: Efficient and Robust Numerical Strategies. <italic>Journal</italic><italic>of</italic><italic>Biotechnology</italic>, 117, 407-419. https://doi.org/10.1016/j.jbiotec.2005.02.013 <pub-id pub-id-type="doi">10.1016/j.jbiotec.2005.02.013</pub-id><pub-id pub-id-type="pmid">15888349</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/j.jbiotec.2005.02.013">https://doi.org/10.1016/j.jbiotec.2005.02.013</ext-link></mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Banga, J.R.</string-name>
              <string-name>Balsa-Canto, E.</string-name>
              <string-name>Moles, C.G.</string-name>
              <string-name>Alonso, A.A.</string-name>
            </person-group>
            <year>2005</year>
            <article-title>Dynamic Optimization of Bioprocesses: Efficient and Robust Numerical Strategies</article-title>
            <source>Journal of Biotechnology</source>
            <volume>117</volume>
            <pub-id pub-id-type="doi">10.1016/j.jbiotec.2005.02.013</pub-id>
            <pub-id pub-id-type="pmid">15888349</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B30">
        <label>30.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Balsa-Canto, E., Banga, J.R., Alonso, A.A. and Vassiliadis, V.S. (2001) Dynamic Optimization of Chemical and Biochemical Processes Using Restricted Second-Order Information. <italic>Computers</italic><italic>&amp;</italic><italic>Chemical</italic><italic>Engineering</italic>, 25, 539-546. https://doi.org/10.1016/s0098-1354(01)00633-0 <pub-id pub-id-type="doi">10.1016/s0098-1354(01)00633-0</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/s0098-1354(01)00633-0">https://doi.org/10.1016/s0098-1354(01)00633-0</ext-link></mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Balsa-Canto, E.</string-name>
              <string-name>Banga, J.R.</string-name>
              <string-name>Alonso, A.A.</string-name>
              <string-name>Vassiliadis, V.S.</string-name>
            </person-group>
            <year>2001</year>
            <article-title>Dynamic Optimization of Chemical and Biochemical Processes Using Restricted Second-Order Information</article-title>
            <source>Computers &amp; Chemical Engineering</source>
            <volume>1354</volume>
            <issue>01</issue>
            <pub-id pub-id-type="doi">10.1016/s0098-1354(01)00633-0</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
    </ref-list>
  </back>
</article>