<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Energy Res.</journal-id>
<journal-title>Frontiers in Energy Research</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Energy Res.</abbrev-journal-title>
<issn pub-type="epub">2296-598X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1358468</article-id>
<article-id pub-id-type="doi">10.3389/fenrg.2024.1358468</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Energy Research</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Enhancing fuel cell performance through a dual MPC strategy for coordinated temperature management</article-title>
<alt-title alt-title-type="left-running-head">Liu et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fenrg.2024.1358468">10.3389/fenrg.2024.1358468</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Liu</surname>
<given-names>Lidong</given-names>
</name>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Zhang</surname>
<given-names>Mengli</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/2607234/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Gong</surname>
<given-names>Jianjun</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/2625047/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/investigation/"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
</contrib-group>
<aff>
<institution>College of Automobile and Traffic Engineering</institution>, <institution>Liaoning University of Technology</institution>, <addr-line>Jinzhou</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2337497/overview">Zhengmao Li</ext-link>, Aalto University, Finland</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1914289/overview">Suhan Zhang</ext-link>, Hong Kong Polytechnic University, Hong Kong SAR, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1994319/overview">Yunqi Wang</ext-link>, Monash University, Australia</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Lidong Liu, <email>452309294@qq.com</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>05</day>
<month>02</month>
<year>2024</year>
</pub-date>
<pub-date pub-type="collection">
<year>2024</year>
</pub-date>
<volume>12</volume>
<elocation-id>1358468</elocation-id>
<history>
<date date-type="received">
<day>19</day>
<month>12</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>18</day>
<month>01</month>
<year>2024</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2024 Liu, Zhang and Gong.</copyright-statement>
<copyright-year>2024</copyright-year>
<copyright-holder>Liu, Zhang and Gong</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>Ensuring the optimal operating temperature is imperative for achieving efficient performance in proton exchange membrane fuel cells. Consequently, this study introduces a dual-model predictive control strategy to regulate the water pump and cooling fan in a cooling system. Initially, we establish an electrochemical and thermal model for fuel cell stacks and validate the model&#x2019;s accuracy through experimental data. The system model is linearized, and the model predictive control (MPC) controller is formulated using the MATLAB/Simulink toolbox. Subsequently, it is collaboratively simulated with the electrochemical model of the fuel cell stack and the temperature model. To evaluate the effectiveness of the MPC controller, we conducted a comparative analysis with the traditional proportional&#x2013;integral&#x2013;derivative (PID) control and water pump MPC under step load, uniform load increase, and variable target scenarios. The findings indicate that in contrast to the PID control, the MPC controller significantly decreases the stack temperature difference fluctuation by more than 50%, maintaining the stack temperature within &#xb1;0.6&#xa0;K of the set value. Furthermore, we independently assessed the performance of the MPC controller under varying ambient temperatures. The findings illustrate that the dual MPC method proficiently adapts cooling parameters across different ambient temperature ranges (288.15&#xa0;K&#x2013;308.15&#xa0;K), ensuring the stable performance of the fuel cell. The model is linearized, and the simulation work is explained mainly on the MATLAB/Simulink platform. In order to compare the effectiveness of the MPC controller, the comparison with the MPC controller strategy of the water pump is added, which can better reflect the effectiveness of the proposed collaborative MPC controller strategy.</p>
</abstract>
<kwd-group>
<kwd>fuel cell</kwd>
<kwd>dual MPC strategy</kwd>
<kwd>temperature management</kwd>
<kwd>model predictive control</kwd>
<kwd>proportional&#x2013;integral&#x2013;derivative control</kwd>
<kwd>robustness</kwd>
</kwd-group>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Sustainable Energy Systems</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1 Introduction</title>
<p>The efficient fuel cell technology stands out as a crucial solution for addressing modern energy and environmental challenges. Its advantages, which include low emissions, high efficiency, and compatibility with various sustainable energy sources, have led to its widespread applications. These encompass the transportation, energy production, and backup power generation sectors (<xref ref-type="bibr" rid="B21">Sonia et al., 2023</xref>). However, to fully unlock the potential of fuel cells, the imperative consideration of temperature control arises for ensuring their optimal operation (<xref ref-type="bibr" rid="B2">Chao, 2020</xref>).</p>
<p>Within fuel cells, maintaining the stability of operational temperature is crucial for optimizing their performance, extending their lifespan, and ensuring safety. Deviations in temperature, whether excessively elevated or diminished, can lead to decreased efficiency, accelerated material degradation, and compromised system reliability (<xref ref-type="bibr" rid="B4">Chi-Young et al., 2012</xref>). Hence, attaining precise and effective temperature control is imperative for ensuring the sustainable operation of fuel cells.</p>
<p>In the exploration of temperature characteristics of the proton exchange membrane fuel cell (PEMFC), numerous researchers have introduced mathematical models to forecast the operational behaviors of these fuel cells (<xref ref-type="bibr" rid="B13">Mogorosi et al., 2020</xref>; <xref ref-type="bibr" rid="B15">Omran et al., 2021</xref>). <xref ref-type="bibr" rid="B11">Khan and Iqbal (2005)</xref> introduced a dynamic model for PEMFC in 2005, demonstrating its capacity to simulate voltage and temperature fluctuations amidst dynamic changes in load conditions. <xref ref-type="bibr" rid="B5">Dawn and Mark (2010)</xref> formulated an isothermal model for PEMFCs in 2010, encompassing considerations of both physical and chemical reactions. <xref ref-type="bibr" rid="B20">Shaker (2011)</xref> introduced the analytical model for characterizing the I-V (current&#x2013;voltage) curve of PEMFCs in 2011, while <xref ref-type="bibr" rid="B18">Salva et al. (2016)</xref> introduced a model for PEMFCs, emphasizing the analysis of temperature distribution within the PEMFC stack in 2016.</p>
<p>Consequently, to enhance the stability of the operational temperature within fuel cell stacks, a multitude of scholars have conducted comprehensive research in the domain of temperature control. <xref ref-type="bibr" rid="B19">Sedighizadeh and Fathian (2012)</xref> devised a PID control approach for multi-objective optimization of PEMFCs&#x27; system temperature. Through experiments utilizing a non-linear model and applying multi-objective optimization, a straightforward temperature control design (linear control structure) with commendable performance can be achieved (<xref ref-type="bibr" rid="B19">Sedighizadeh and Fathian, 2012</xref>). <xref ref-type="bibr" rid="B9">Han et al. (2015)</xref> developed a state-space controller using a linearized model. They took into account the parasitic power consumption of the cooling fan and cooling pump, and the simulation results indicated that the proposed state-space controller can stabilize the system temperature at the set value. However, experimental verification was not conducted. <xref ref-type="bibr" rid="B25">Zou and Kim (2019)</xref> conducted a comparative analysis of the simulation effects of the fuel cell temperature using fuzzy control, on/off control, state feedback control, and PID control. The data revealed that fuzzy control can maintain the temperature within a 2&#xa0;K range and proves to be more effective. <xref ref-type="bibr" rid="B10">Huang et al. (2018)</xref> implemented an adaptive control strategy in the PEMFCs&#x27; temperature control system to attain the desired control target. <xref ref-type="bibr" rid="B14">Oh et al. (2014)</xref> had developed the MPC and validated its effectiveness. The temperature control system was optimized through the MPC, and the combined simulation was carried out using the software Simulink and AMESim. The simulation results exhibit reduced power loss when compared with before the optimization. The drawbacks of frequent rotational speed changes caused by the switch control strategy were addressed by <xref ref-type="bibr" rid="B8">Guo (2020)</xref>.</p>
<p>The traditional temperature control methods, notably the proportional&#x2013;integral&#x2013;derivative (PID) control, have found widespread application in fuel cell systems. Nevertheless, these approaches often encounter difficulties in addressing non-linear dynamics and multivariable control, challenges that are frequently encountered in practical applications. Conversely, MPC strategies have demonstrated notable success in numerous industrial processes, showcasing their proficiency in managing complex system dynamics and multivariable control (<xref ref-type="bibr" rid="B24">Zhang and Yu, 2009</xref>; <xref ref-type="bibr" rid="B7">Fan et al., 2013</xref>; <xref ref-type="bibr" rid="B12">Lechartier et al., 2015</xref>; <xref ref-type="bibr" rid="B16">Robin et al., 2016</xref>; <xref ref-type="bibr" rid="B3">Chatrattanawet et al., 2017</xref>; <xref ref-type="bibr" rid="B6">Ebrahimi et al., 2017</xref>). Therefore, this study endeavors to investigate the implementation of dual MPC temperature control strategies in fuel cell systems, with the goal of optimizing their efficiency and performance.</p>
</sec>
<sec id="s2">
<title>2 System description and model building</title>
<sec id="s2-1">
<title>2.1 System description</title>
<p>
<xref ref-type="fig" rid="F1">Figure 1</xref> shows that within a PEMFC, a cell comprises essential components, encompassing bipolar plates, a proton exchange membrane (PEM), gas diffusion layers (GDLs), and catalyst layers. At the anode, the catalytic decomposition of hydrogen gas generates protons and electrons. Protons traverse the PEM to the cathode, where they combine with oxygen to form water and generate heat. Simultaneously, electrons liberated at the anode traverse an external circuit to the cathode, generating an electric current that powers the load.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Functioning mechanism of PEMFC.</p>
</caption>
<graphic xlink:href="fenrg-12-1358468-g001.tif"/>
</fig>
</sec>
<sec id="s2-2">
<title>2.2 Electrochemical model</title>
<p>The format of the formulas involved in the article has been completely modified.</p>
<p>The expression of voltage for an individual cell within a PEMFC is given as follows:<disp-formula id="e1">
<mml:math id="m1">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">V</mml:mi>
<mml:mtext>cell</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">E</mml:mi>
<mml:mtext>Nernet</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">V</mml:mi>
<mml:mtext>ohm</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">V</mml:mi>
<mml:mtext>con</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">V</mml:mi>
<mml:mtext>act</mml:mtext>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>where <inline-formula id="inf1">
<mml:math id="m2">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">E</mml:mi>
<mml:mtext>Nernet</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the reversible voltage drop, <inline-formula id="inf2">
<mml:math id="m3">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">V</mml:mi>
<mml:mtext>ohm</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the Ohmic voltage drop, <inline-formula id="inf3">
<mml:math id="m4">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">V</mml:mi>
<mml:mtext>con</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> indicates the concentration voltage drop, and <inline-formula id="inf4">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">V</mml:mi>
<mml:mtext>act</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> corresponds to the activation voltage drop. The term <inline-formula id="inf5">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">E</mml:mi>
<mml:mtext>Nernst</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> can be expressed by the following formula (<xref ref-type="bibr" rid="B22">Wang et al., 2017</xref>):<disp-formula id="e2">
<mml:math id="m7">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">E</mml:mi>
<mml:mtext>Nernst</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1.229</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">0.85</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:msup>
<mml:mn mathvariant="bold">10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">299</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">4.3085</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:msup>
<mml:mn mathvariant="bold">10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">5</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">ln</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">ln</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">O</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>where <inline-formula id="inf6">
<mml:math id="m8">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the temperature of the stack, <inline-formula id="inf7">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">H</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the partial pressure of hydrogen, and <inline-formula id="inf8">
<mml:math id="m10">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">O</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> indicates the partial pressure of oxygen. Protons and electrons produce <inline-formula id="inf9">
<mml:math id="m11">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">V</mml:mi>
<mml:mtext>ohm</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> when encountering electrical resistance, which can be described as (<xref ref-type="bibr" rid="B23">Wang et al., 2014</xref>)<disp-formula id="e3">
<mml:math id="m12">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">V</mml:mi>
<mml:mtext>ohm</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">R</mml:mi>
<mml:mi mathvariant="bold">M</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">R</mml:mi>
<mml:mi mathvariant="bold">C</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>where <inline-formula id="inf10">
<mml:math id="m13">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the stack current, <inline-formula id="inf11">
<mml:math id="m14">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">R</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> stands for the equivalent resistance associated with proton transport, and <inline-formula id="inf12">
<mml:math id="m15">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">R</mml:mi>
<mml:mi mathvariant="normal">C</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the equivalent resistance related to electron transport. The calculation procedure for determining <inline-formula id="inf13">
<mml:math id="m16">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">R</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is outlined as follows:<disp-formula id="e4">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">R</mml:mi>
<mml:mi mathvariant="bold">M</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">181.6</mml:mn>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">0.03</mml:mn>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">A</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">0.062</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">303</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">A</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn mathvariant="bold">2.5</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">&#x3bb;</mml:mi>
<mml:mi mathvariant="bold">m</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">0.634</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">3</mml:mn>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">A</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">exp</mml:mi>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">4.18</mml:mn>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">303</mml:mn>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">A</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>where A is the area of the membrane, <inline-formula id="inf14">
<mml:math id="m18">
<mml:mrow>
<mml:mi mathvariant="normal">l</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> stands for the water content of the membrane, and <inline-formula id="inf15">
<mml:math id="m19">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">&#x3bb;</mml:mi>
<mml:mi mathvariant="normal">m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the thickness of the membrane. The decrease in concentration is given as follows:<disp-formula id="e5">
<mml:math id="m20">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">V</mml:mi>
<mml:mtext>con</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold">F</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">ln</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mi mathvariant="bold">max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>where <inline-formula id="inf16">
<mml:math id="m21">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the maximum current, R denotes the gas constant, and F stands for the Faraday constant. The activation voltage drop is as follows:<disp-formula id="e6">
<mml:math id="m22">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">V</mml:mi>
<mml:mtext>act</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi mathvariant="bold">ln</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">C</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold">O</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
<mml:mn mathvariant="bold">4</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi mathvariant="bold">ln</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>where &#x3b1;<sub>1</sub>, &#x3b1;<sub>2</sub>, &#x3b1;<sub>3</sub>, and &#x3b1;<sub>4</sub> represent the parameters of the fuel cell, <inline-formula id="inf17">
<mml:math id="m23">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">C</mml:mi>
<mml:msub>
<mml:mi mathvariant="normal">O</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the concentration of oxygen and indicates that the concentration of oxygen can be determined by the temperature and partial pressure of oxygen, as is known from<disp-formula id="e7">
<mml:math id="m24">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">C</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold">O</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold">O</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">101325</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">5.08</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:msup>
<mml:mn mathvariant="bold">10</mml:mn>
<mml:mn mathvariant="bold">6</mml:mn>
</mml:msup>
<mml:mo>&#x2061;</mml:mo>
<mml:mi mathvariant="bold">exp</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">498</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
</sec>
<sec id="s2-3">
<title>2.3 Temperature model</title>
<p>To facilitate the construction and analysis of the model, the following assumptions are made:<list list-type="simple">
<list-item>
<p>(1) Assuming that the chemical energy of the gas involved in the fuel cell reaction is exclusively converted into electrical and thermodynamic energy without dissipation into other forms of energy.</p>
</list-item>
<list-item>
<p>(2) Assuming that the gas not involved in the reaction will not affect the temperature system.</p>
</list-item>
<list-item>
<p>(3) Supposing that the stack cooling water outlet temperature T<sub>out,st</sub> is approximately regarded as the stack temperature <inline-formula id="inf18">
<mml:math id="m25">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</list-item>
</list>
</p>
<p>As shown in the <xref ref-type="fig" rid="F2">Figure 2</xref>, the fuel cell temperature management model is established, mainly including the fuel cell, circulating water pump, cooling fan, water tank, and temperature sensor and controller.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>PEMFC temperature management system.</p>
</caption>
<graphic xlink:href="fenrg-12-1358468-g002.tif"/>
</fig>
<p>Based on the thermal balance equation <inline-formula id="inf19">
<mml:math id="m26">
<mml:mrow>
<mml:mi mathvariant="normal">Q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext>CM</mml:mtext>
<mml:mo>&#x394;</mml:mo>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, the heat equilibrium relationship of the fuel cell is as follows:<disp-formula id="e8">
<mml:math id="m27">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">C</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mtext>dT</mml:mtext>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mtext>dt</mml:mtext>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mtext>gen</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mtext>dis</mml:mtext>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>where <inline-formula id="inf20">
<mml:math id="m28">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">C</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the specific heat capacity of the reactor [kJ/(kg K)], <inline-formula id="inf21">
<mml:math id="m29">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the mass of the reactor (kg), <inline-formula id="inf22">
<mml:math id="m30">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> signifies the operating temperature of the reactor (K), <inline-formula id="inf23">
<mml:math id="m31">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Q</mml:mi>
<mml:mtext>gen</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the thermal power of the reactor (kW), and <inline-formula id="inf24">
<mml:math id="m32">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Q</mml:mi>
<mml:mtext>dis</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the stack dispersion of thermal power (kW). The formula for <inline-formula id="inf25">
<mml:math id="m33">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Q</mml:mi>
<mml:mtext>gen</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> can be expressed as follows:<disp-formula id="e9">
<mml:math id="m34">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mtext>gen</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mtext>tot</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>where <inline-formula id="inf26">
<mml:math id="m35">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Q</mml:mi>
<mml:mtext>tot</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is all chemical energy (kW) of the reactant itself per unit time, and <inline-formula id="inf27">
<mml:math id="m36">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the output power of the system.<disp-formula id="e10">
<mml:math id="m37">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mtext>tot</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:msubsup>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mtext>reacted</mml:mtext>
</mml:msubsup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
<disp-formula id="e11">
<mml:math id="m38">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mtext>reacted</mml:mtext>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">N</mml:mi>
<mml:mtext>cells</mml:mtext>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold">F</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>where <inline-formula id="inf28">
<mml:math id="m39">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:msub>
<mml:mi mathvariant="normal">H</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mtext>reacted</mml:mtext>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the molar rate (mol/s) of hydrogen, <inline-formula id="inf29">
<mml:math id="m40">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the actual output current of the stack, <inline-formula id="inf30">
<mml:math id="m41">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:mtext>cells</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the number of pieces of the cell, and F is the Avogadro constant.<disp-formula id="e12">
<mml:math id="m42">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">V</mml:mi>
<mml:mtext>stack</mml:mtext>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
<disp-formula id="e13">
<mml:math id="m43">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mtext>dis</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mtext>gas</mml:mtext>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mtext>cool</mml:mtext>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mtext>atm</mml:mtext>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>where <inline-formula id="inf31">
<mml:math id="m44">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Q</mml:mi>
<mml:mtext>gas</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is heat dissipation of gas in the system, <inline-formula id="inf32">
<mml:math id="m45">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Q</mml:mi>
<mml:mtext>cool</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is heat dissipation of the cooling water, and <inline-formula id="inf33">
<mml:math id="m46">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Q</mml:mi>
<mml:mtext>atm</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> signifies radiation heat dissipation power of the reactor.<disp-formula id="e14">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mtext>cool</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">W</mml:mi>
<mml:mtext>cl</mml:mtext>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold">C</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold">O</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold">I</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>st</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>st</mml:mtext>
<mml:mtext>in</mml:mtext>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>
<disp-formula id="e15">
<mml:math id="m48">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mtext>cool</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext mathvariant="bold">AK</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>rad</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>atm</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>where <inline-formula id="inf34">
<mml:math id="m49">
<mml:mrow>
<mml:mi mathvariant="normal">A</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the radiator heat exchange area (<inline-formula id="inf35">
<mml:math id="m50">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>), <inline-formula id="inf36">
<mml:math id="m51">
<mml:mrow>
<mml:mi mathvariant="normal">K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the radiator heat transfer coefficient (W&#x2044; <inline-formula id="inf37">
<mml:math id="m52">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> <inline-formula id="inf38">
<mml:math id="m53">
<mml:mrow>
<mml:mi mathvariant="normal">K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>), <inline-formula id="inf39">
<mml:math id="m54">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mtext>rad</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the radiator heat exchange temperature (K), and <inline-formula id="inf40">
<mml:math id="m55">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mtext>atm</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the ambient temperature (K). For the radiator, the heat transfer temperature of the radiator is the arithmetic mean of the inlet and outlet temperatures of the radiator.<disp-formula id="e16">
<mml:math id="m56">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>rad</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>rt</mml:mtext>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>rt</mml:mtext>
<mml:mtext>in</mml:mtext>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>where <inline-formula id="inf41">
<mml:math id="m57">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mtext>rt</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the radiator outlet temperature and <inline-formula id="inf42">
<mml:math id="m58">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mtext>rt</mml:mtext>
<mml:mtext>in</mml:mtext>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> indicates the radiator inlet temperature.</p>
</sec>
<sec id="s2-4">
<title>2.4 Model validation</title>
<p>To validate the precision of the electrochemical model, we selected two different working temperatures, 333&#xa0;K and 335&#xa0;K, with specific parameters as shown in <xref ref-type="table" rid="T1">Table 1</xref>. By contrasting the simulation results with the experimental data, as depicted in <xref ref-type="fig" rid="F3">Figure 3</xref>, it is evident that the simulation results align with the experimental data trend, confirming the reliability and effectiveness of the simulation model. Additionally, <xref ref-type="fig" rid="F4">Figures 4A,B</xref> display the validation curve for the PEMFC current and temperature model and illustrate that with a step change in current, the temperature promptly responds to the variation in current, showing a high degree of agreement between the simulation curve and experimental data. This observation underscores the reliability and effectiveness of the temperature model.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Model parameter.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Parameter</th>
<th align="center">Sign</th>
<th align="center">Value</th>
<th align="center">Unit</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">Working temperature</td>
<td align="center">
<inline-formula id="inf43">
<mml:math id="m59">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">353/333</td>
<td align="center">K</td>
</tr>
<tr>
<td align="center">Ambient temperature</td>
<td align="center">
<inline-formula id="inf44">
<mml:math id="m60">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">298.15</td>
<td align="center">K</td>
</tr>
<tr>
<td align="center">Oxygen partial pressure</td>
<td align="center">
<inline-formula id="inf45">
<mml:math id="m61">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>O</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">1.8</td>
<td align="center">atm</td>
</tr>
<tr>
<td align="center">Hydrogen partial pressure</td>
<td align="center">
<inline-formula id="inf46">
<mml:math id="m62">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>H</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">1.8</td>
<td align="center">atm</td>
</tr>
<tr>
<td align="center">Active area of fuel cell</td>
<td align="center">A</td>
<td align="center">280</td>
<td align="center">
<inline-formula id="inf47">
<mml:math id="m63">
<mml:mrow>
<mml:msup>
<mml:mtext>cm</mml:mtext>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">Membrane water content</td>
<td align="center">
<inline-formula id="inf48">
<mml:math id="m64">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">14</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="center">Thickness of the membrane</td>
<td align="center">
<inline-formula id="inf49">
<mml:math id="m65">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.016</td>
<td align="center">cm</td>
</tr>
<tr>
<td align="center">Limiting current density</td>
<td align="center">
<inline-formula id="inf50">
<mml:math id="m66">
<mml:mrow>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">1.5</td>
<td align="center">A/<inline-formula id="inf51">
<mml:math id="m67">
<mml:mrow>
<mml:msup>
<mml:mtext>cm</mml:mtext>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Verification of the PEMFC electrochemical model.</p>
</caption>
<graphic xlink:href="fenrg-12-1358468-g003.tif"/>
</fig>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Verification of the temperature model. <bold>(A)</bold> Load current and <bold>(B)</bold> temperature.</p>
</caption>
<graphic xlink:href="fenrg-12-1358468-g004.tif"/>
</fig>
</sec>
</sec>
<sec id="s3">
<title>3 Research on fuel cell MPC controller strategy</title>
<sec id="s3-1">
<title>3.1 Introduction to control strategy</title>
<p>Effective temperature control is imperative for optimizing fuel cell performance and ensuring long-term reliability. This study introduces a collaborative MPC strategy for managing fuel cell pumps and radiators and compares it with the traditional PID control and water pump MPC. <xref ref-type="table" rid="T2">Table 2</xref> outlines the three control strategies, and <xref ref-type="fig" rid="F5">Figure 5</xref> illustrates their application to the fuel cell thermal management system. <xref ref-type="fig" rid="F6">Figure 6A</xref> depicts PID control, a classic technique combining proportional, integral, and derivative components for temperature regulation. By contrast, <xref ref-type="fig" rid="F6">Figure 6B</xref> showcases MPC employing predictive models to optimize inputs while considering constraints and dynamic control (<xref ref-type="bibr" rid="B1">Bressel et al., 2020</xref>; <xref ref-type="bibr" rid="B17">Rui et al., 2020</xref>). Implementing MPC for the fuel cell&#x2019;s water pump and radiator allows a performance comparison against PID control. This analysis aims to identify the optimal temperature control strategy, enhancing fuel cell system efficiency and stability.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Different control strategies.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Control strategy</th>
<th align="center">Water pump controller</th>
<th align="center">Radiator controller</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">Double PID</td>
<td align="center">PID</td>
<td align="center">PID</td>
</tr>
<tr>
<td align="center">Water pump MPC</td>
<td align="center">MPC</td>
<td align="center">PID</td>
</tr>
<tr>
<td align="center">Double MPC</td>
<td align="center">MPC</td>
<td align="center">MPC</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Thermal management control.</p>
</caption>
<graphic xlink:href="fenrg-12-1358468-g005.tif"/>
</fig>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Control principle. <bold>(A)</bold> PID control principle; <bold>(B)</bold> MPC principle.</p>
</caption>
<graphic xlink:href="fenrg-12-1358468-g006.tif"/>
</fig>
</sec>
<sec id="s3-2">
<title>3.2 Linearization of the system model</title>
<p>In fuel cell system research, we linearized the model to understand its dynamic response at various operating points. Focusing on crucial input parameters, such as cooling fan flow rate and coolant flow rate, and outputs like reactor input temperature and temperature difference, we derived two transfer functions through linear approximation. These functions effectively depict how coolant and fan flow rates impact reactor temperature. Using the temperature and flow rate as operating points allows the precise capture of the system&#x2019;s dynamic behavior, which is a valuable tool for optimizing fuel cell performance. Linearizing the transfer function simplifies the complexity of non-linear systems, making system behavior more comprehensible. This aids in controller design, allowing the application of classical methods tailored for linear systems, ultimately optimizing system performance.</p>
</sec>
<sec id="s3-3">
<title>3.3 Introduction to the MPC algorithm</title>
<p>MPC excels over PID by offering predictive capability, handling constraints, and optimizing multivariable control. Its adaptability to system changes, optimal control approach, and effectiveness in handling non-linearities make it a superior choice for complex and dynamic systems. The pulse response model was utilized to forecast the output at future time points.<disp-formula id="e17">
<mml:math id="m68">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold">n</mml:mi>
</mml:munderover>
<mml:msub>
<mml:mi mathvariant="bold">h</mml:mi>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>where p is the prediction time domain (1 &#x3c; j &#x3c; p), <inline-formula id="inf52">
<mml:math id="m69">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">h</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> i<inline-formula id="inf53">
<mml:math id="m70">
<mml:mrow>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mtext>&#x2009;the&#x2009;finite&#x2009;impulse&#x2009;response</mml:mtext>
</mml:mrow>
</mml:math>
</inline-formula>, i represents the time step of the predicted time domain, and k is a certain point in the control process. The state of u(k &#x2b; j) remains constant when i &#x3e; (m &#x2212; 1).<disp-formula id="e18">
<mml:math id="m71">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">m</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>where m should be less than p, and m is the control time domain. The p-step forecasted values for the upcoming output values are<disp-formula id="e19">
<mml:math id="m72">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold">n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">h</mml:mi>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>where the value of j is taken from 1 to m &#x2212; 1.<disp-formula id="e20">
<mml:math id="m73">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">m</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">h</mml:mi>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">m</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">m</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold">n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">h</mml:mi>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>where the value of j in the above formula is the integer from m to p. The control effect can be categorized as either known or unknown.</p>
<p>The controlled effects when known are<disp-formula id="e21">
<mml:math id="m74">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x22ef;</mml:mo>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">n</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>
</p>
<p>The controlled effects when unknown are<disp-formula id="e22">
<mml:math id="m75">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x22ef;</mml:mo>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">m</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mi mathvariant="bold">m</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msubsup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(22)</label>
</disp-formula>
<disp-formula id="e23">
<mml:math id="m76">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">M</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(23)</label>
</disp-formula>
</p>
<p>Because there are various disturbances in the actual control process, the system is controlled at all times, and the actual output value y (k) will have a certain error with the output prediction value <inline-formula id="inf54">
<mml:math id="m77">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">y</mml:mi>
<mml:mi mathvariant="normal">m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>(k) of the system prediction model. The error between the actual output value and predicted output value is expressed by the following formula:<disp-formula id="e24">
<mml:math id="m78">
<mml:mrow>
<mml:mi mathvariant="bold">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(24)</label>
</disp-formula>
</p>
<p>Correction against the predicted value of the model yields the following formula:<disp-formula id="e25">
<mml:math id="m79">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(25)</label>
</disp-formula>
<disp-formula id="e26">
<mml:math id="m80">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold">N</mml:mi>
</mml:munderover>
<mml:msub>
<mml:mi mathvariant="bold">h</mml:mi>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(26)</label>
</disp-formula>
</p>
<p>Then, the P-step prediction value of the system can be expressed as follows:<disp-formula id="e27">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(27)</label>
</disp-formula>where <inline-formula id="inf55">
<mml:math id="m82">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3b2;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the output error correction gain.<disp-formula id="e28">
<mml:math id="m83">
<mml:mrow>
<mml:mi mathvariant="bold">&#x3b2;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">&#x3b2;</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mtext>&#x2003;</mml:mtext>
<mml:msub>
<mml:mi mathvariant="normal">&#x3b2;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mo>&#x22ef;</mml:mo>
<mml:mi mathvariant="bold">&#x3b2;</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(28)</label>
</disp-formula>
<disp-formula id="e29">
<mml:math id="m84">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(29)</label>
</disp-formula>
</p>
<p>The predictive control does not require rapid tracking of the setpoint, rather it prompts a gradual convergence of the output toward the setpoint along a specific trajectory. The reference track is calculated using both the setpoint and current measurements of the process output and is expressed as follows:<disp-formula id="e30">
<mml:math id="m85">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:msup>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">d</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(30)</label>
</disp-formula>
<disp-formula id="e31">
<mml:math id="m86">
<mml:mrow>
<mml:mi mathvariant="bold">&#x3b1;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold">e</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
<label>(31)</label>
</disp-formula>where <inline-formula id="inf56">
<mml:math id="m87">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the sampling time and T represents time constants governing the reference track.<disp-formula id="e32">
<mml:math id="m88">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi mathvariant="bold">y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(32)</label>
</disp-formula>
</p>
<p>The target functions for the optimization control are<disp-formula id="e33">
<mml:math id="m89">
<mml:mrow>
<mml:mi mathvariant="bold">min</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="bold">J</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2225;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2225;</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x2225;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2225;</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(33)</label>
</disp-formula>
<disp-formula id="e34">
<mml:math id="m90">
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msup>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(34)</label>
</disp-formula>
</p>
<p>In the <inline-formula id="inf57">
<mml:math id="m91">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Y</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>,<disp-formula id="e35">
<mml:math id="m92">
<mml:mrow>
<mml:mi mathvariant="bold">J</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msup>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(35)</label>
</disp-formula>
</p>
<p>Solving for the optimal control rate <inline-formula id="inf58">
<mml:math id="m93">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mi mathvariant="normal">J</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">U</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> gets the optimal control rate:<disp-formula id="e36">
<mml:math id="m94">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msubsup>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msubsup>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msubsup>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(36)</label>
</disp-formula>
<disp-formula id="e37">
<mml:math id="m95">
<mml:mrow>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext mathvariant="bold">diag</mml:mtext>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">q</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mtext>&#x2003;</mml:mtext>
<mml:msub>
<mml:mi mathvariant="bold">q</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mo>&#x22ef;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">q</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(37)</label>
</disp-formula>
<disp-formula id="e38">
<mml:math id="m96">
<mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext mathvariant="bold">diag</mml:mtext>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mtext>&#x2003;</mml:mtext>
<mml:msub>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mo>&#x22ef;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mi mathvariant="bold">M</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(38)</label>
</disp-formula>where Q is the output tracking weight, and R is the input move weight.</p>
<p>The optimal control of time K is<disp-formula id="e39">
<mml:math id="m97">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">Y</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold">U</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(39)</label>
</disp-formula>
<disp-formula id="e40">
<mml:math id="m98">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mn mathvariant="bold">0</mml:mn>
<mml:mo>&#x22ef;</mml:mo>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mi mathvariant="bold">M</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msubsup>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">R</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msubsup>
<mml:mi mathvariant="bold">H</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msubsup>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(40)</label>
</disp-formula>
</p>
</sec>
<sec id="s3-4">
<title>3.4 The MPC is implemented in the thermal management system</title>
<p>The MPC method is used for water pump control and radiator control. When applying the MPC control to the water pump:<disp-formula id="e41">
<mml:math id="m99">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>std</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mtext mathvariant="bold">std</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mtext mathvariant="bold">set</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(41)</label>
</disp-formula>where <inline-formula id="inf59">
<mml:math id="m100">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mtext>std</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the temperature difference between the inlet and outlet of the PEMFC during the operation, while <inline-formula id="inf60">
<mml:math id="m101">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mrow>
<mml:mtext>std</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mtext>set</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the designated value for this temperature difference.</p>
<p>The predicted temperature <inline-formula id="inf61">
<mml:math id="m102">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> expression is as follows:<disp-formula id="e42">
<mml:math id="m103">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>std</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(42)</label>
</disp-formula>
</p>
<p>The optimal control objective function for the water pump is given as follows:<disp-formula id="e43">
<mml:math id="m104">
<mml:mrow>
<mml:mi mathvariant="bold">min</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="bold">J</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2225;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2225;</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x2225;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">W</mml:mi>
<mml:mtext>cl</mml:mtext>
</mml:msub>
<mml:mo>&#x2225;</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(43)</label>
</disp-formula>where <inline-formula id="inf62">
<mml:math id="m105">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">W</mml:mi>
<mml:mtext>cl</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> means that the best control variable is the coolant flow.</p>
<p>When applied to radiator control:<disp-formula id="e44">
<mml:math id="m106">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext mathvariant="bold">in</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>in</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mtext mathvariant="bold">in</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mtext mathvariant="bold">set</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(44)</label>
</disp-formula>where <inline-formula id="inf63">
<mml:math id="m107">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mtext>in</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the inlet temperature of the PEMFC and <inline-formula id="inf64">
<mml:math id="m108">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mrow>
<mml:mtext>std</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mtext>set</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the designated set value for the inlet temperature. The predicted expression for the stack inlet temperature is as follows:<disp-formula id="e45">
<mml:math id="m109">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext mathvariant="bold">in</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext mathvariant="bold">in</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold">j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mtext>in</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext mathvariant="bold">in</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(45)</label>
</disp-formula>
</p>
<p>The optimal control objective function for the radiator is given as follows:<disp-formula id="e46">
<mml:math id="m110">
<mml:mrow>
<mml:mi mathvariant="bold">min</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="bold">J</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2225;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext mathvariant="bold">in</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">T</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext mathvariant="bold">in</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2225;</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold">Q</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x2225;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">W</mml:mi>
<mml:mtext>air</mml:mtext>
</mml:msub>
<mml:mo>&#x2225;</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold">R</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
<label>(46)</label>
</disp-formula>where <inline-formula id="inf65">
<mml:math id="m111">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">W</mml:mi>
<mml:mtext>air</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> means that the best control variable is the radiator air volume.</p>
</sec>
</sec>
<sec sec-type="results|discussion" id="s4">
<title>4 Results and discussion</title>
<sec id="s4-1">
<title>4.1 Comparison of temperature control effect under step load</title>
<p>
<xref ref-type="fig" rid="F7">Figure 7A</xref> illustrates a step current varying from 100 A to 220 A, showcasing step changes in current over time. <xref ref-type="fig" rid="F7">Figures 7B,E</xref> depict temperature variations in the stack and fluctuations in temperature difference between the stack&#x27;s inlet and outlet under different control strategies. It is evident that for both the stack inlet and outlet temperatures, the MPC collaborative control strategy exhibits superior performance. Comparative analysis with the traditional PID control and water pump MPC reveals significantly improved overshoot and stability time, as detailed in <xref ref-type="table" rid="T3">Table 3</xref>. The MPC strategy notably enhances control of the temperature difference between the reactor inlet and outlet, reducing fluctuation by over 50% and achieving a shorter settling time. This heightened control performance underscores the effectiveness of the MPC strategy in maintaining stability and precision.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Temperature control effect under step load. <bold>(A)</bold> Step load; <bold>(B)</bold> comparison of temperature control effect under step load; <bold>(C)</bold> comparison of radiator air volume; <bold>(D)</bold> comparison of coolant flow; and <bold>(E)</bold> comparison of temperature difference.</p>
</caption>
<graphic xlink:href="fenrg-12-1358468-g007.tif"/>
</fig>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Control effect comparison.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Controller</th>
<th align="center">Double PID</th>
<th align="center">Water pump MPC</th>
<th align="center">Double MPC</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">Overshoot in 1,000&#xa0;s (T<sub>st</sub>)</td>
<td align="center">1.2&#xa0;K</td>
<td align="center">1&#xa0;K</td>
<td align="center">0.6&#xa0;K</td>
</tr>
<tr>
<td align="center">Converge time in 1,000&#xa0;s (T<sub>st</sub>)</td>
<td align="center">500&#xa0;s</td>
<td align="center">330&#xa0;s</td>
<td align="center">100&#xa0;s</td>
</tr>
<tr>
<td align="center">Overshoot in 1,000&#xa0;s (T<sub>in</sub>)</td>
<td align="center">0.354&#xa0;K</td>
<td align="center">0.26&#xa0;K</td>
<td align="center">&#x3c;0.001&#xa0;K</td>
</tr>
<tr>
<td align="center">Converge time in 1,000&#xa0;s (T<sub>in</sub>)</td>
<td align="center">317&#xa0;s</td>
<td align="center">250&#xa0;s</td>
<td align="center">&#x3c;20&#xa0;s</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>In reactor thermal management, the controller directly regulates the coolant flow rate and cooling fan air volume as crucial control variables, ensuring rapid response for desired reactor inlet and outlet temperatures. <xref ref-type="fig" rid="F7">Figures 7C,D</xref> reveal that under MPC, the coolant flow and radiator air volume adeptly track current changes, optimizing heat dissipation and maintaining temperature balance. Compared to PID-controlled gradual flow changes, pump MPC and cooperative MPC show quicker responses, with the cooperative MPC demonstrating superior super-harmonic response and stabilization time.</p>
</sec>
<sec id="s4-2">
<title>4.2 Temperature control effect under constant-speed load</title>
<p>To comprehensively compare control strategies, an increasing load was chosen, and current variations are shown in <xref ref-type="fig" rid="F8">Figure 8A</xref>. Temperature control outcomes are presented in <xref ref-type="fig" rid="F8">Figures 8B,E</xref>. Under a constant speed load change, cooperative MPC exhibits minimal temperature fluctuation, effectively tracking current changes and maintaining temperature near the 0.15&#xa0;K target. By contrast, PID control shows a 0.78&#xa0;K temperature fluctuation, while water pump MPC surpasses PID by approximately 0.23&#xa0;K, highlighting MPC&#x2019;s superior stability. The temperature difference fluctuation under MPC is significantly better than in PID, emphasizing MPC&#x2019;s enhanced control performance.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Temperature control effect under ramp load. <bold>(A)</bold> Ramp load; <bold>(B)</bold> comparison of temperature control effect under ramp load; <bold>(C)</bold> comparison of radiator air volume; <bold>(D)</bold> comparison of coolant flow; and <bold>(E)</bold> comparison of temperature difference.</p>
</caption>
<graphic xlink:href="fenrg-12-1358468-g008.tif"/>
</fig>
<p>Data in <xref ref-type="fig" rid="F8">Figures 8C,D</xref> highlight MPC&#x2019;s ability to accurately track current changes for efficient heat dissipation and system temperature balance. The PID controlled flow following response is obviously slow, so the reactor outlet temperature under PID control fluctuates longer. This emphasizes MPC&#x2019;s advantages in achieving rapid and precise thermal management, contributing to improved system performance and stability.</p>
</sec>
<sec id="s4-3">
<title>4.3 Temperature control effect in a variable target situation</title>
<p>This subsection evaluates the MPC controller&#x2019;s ability to track targets under changed conditions, using the load current as shown in <xref ref-type="fig" rid="F9">Figure 9A</xref>. At 1,400&#xa0;s, the outlet control target increases from 343&#xa0;K to 348&#xa0;K, and the inlet control target increases from 338&#xa0;K to 343&#xa0;K. <xref ref-type="fig" rid="F9">Figure 9E</xref> highlights MPC&#x2019;s superior control effectiveness in the temperature difference analysis. Temperature control outcomes are presented in <xref ref-type="fig" rid="F9">Figure 9B</xref>.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Temperature control effect in a variable target situation. <bold>(A)</bold> Step load; <bold>(B)</bold> comparison of temperature control effect under variable target; <bold>(C)</bold> comparison of radiator air volume; <bold>(D)</bold> comparison of coolant flow; and <bold>(E)</bold> comparison of temperature difference.</p>
</caption>
<graphic xlink:href="fenrg-12-1358468-g009.tif"/>
</fig>
<p>In <xref ref-type="fig" rid="F9">Figures 9C,D</xref>, the coolant flow rate and heat dissipation air volume respond to the step change in the control target temperature. The initial rapid decline in the coolant flow rate reduces heat removal, leading to an increase in outlet coolant temperature. This results in decreased cooling air volume and an increase in inlet coolant temperature. As the temperature reaches the set value, the controller smoothly transitions into the operational mode. The pump flow surges, and the cooling fan flow increases for efficient heat dissipation. Under MPC, the flow stabilizes rapidly, while under PID control, it gradually decreases before reaching a steady state. After approximately 50&#xa0;s, the inlet coolant temperature approaches the new set point, and the outlet coolant temperature stabilizes after a brief fluctuation. In summary, MPC effectively controls variable targets.</p>
</sec>
<sec id="s4-4">
<title>4.4 Temperature control effect in a variable target situation</title>
<p>Considering the substantial impact of ambient temperature on PEMFC, we aimed to compare MPC&#x2019;s temperature regulation performance across varied ambient temperatures. <xref ref-type="fig" rid="F10">Figure 10A</xref> depicts stack temperature variations under different ambient temperatures. The curve indicates that higher ambient temperatures result in faster reactors reaching the target temperature. Significant differences were observed before 800&#xa0;s, as highlighted in <xref ref-type="fig" rid="F10">Figure 10B</xref>. The lower temperature curves exhibit smaller oscillations. Our study found a notable similarity between stack inlet temperature and stack temperature performance, which is shown in <xref ref-type="fig" rid="F10">Figures 10C,D</xref>.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Verification of the temperature model. <bold>(A)</bold> Reactor temperature change at different ambient temperatures; <bold>(B)</bold> local amplification of <bold>(A)</bold>; <bold>(C)</bold> change of reactor inlet temperature at different ambient temperatures; <bold>(D)</bold> local amplification of <bold>(C)</bold>; <bold>(E)</bold> comparison of the coolant flow at different ambient temperatures; and <bold>(F)</bold> comparison of radiator air volume at different ambient temperatures.</p>
</caption>
<graphic xlink:href="fenrg-12-1358468-g010.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F10">Figure 10E</xref> compares cooling air flow rate curves as ambient temperature increases from 288.15&#xa0;K to 308.15&#xa0;K. Higher ambient temperatures show increased cooling air flow, compensating for reduced heat exchange with the environment. The MPC controller consistently maintains stack inlet temperature within the target range under diverse ambient temperatures. <xref ref-type="fig" rid="F10">Figure 10F</xref> presents a comparison of coolant flow rate curves, where ambient temperature dictates the required coolant flow for the reactor.</p>
</sec>
</sec>
<sec sec-type="conclusion" id="s5">
<title>5 Conclusion</title>
<p>An elaboration of the research contributions of this study:</p>
<p>This study proposes the MPC cooperative control strategy and shows the comparison with PID and water pump MPC for the effectiveness of cooperative MPC.</p>
<p>It proposes a collaborative MPC controller strategy for regulating the temperature of PEMFC stacks and compares the impact of this strategy on PEMFC temperature control under various operational conditions with other control strategies.</p>
<p>The conclusion is as follows:<list list-type="simple">
<list-item>
<p>(1) MPC effectively regulates the PEMFC temperature, ensuring coordinated adjustments in coolant flow and cooling fan air volume in response to step load current. The PEMFC temperature promptly stabilizes at the target, with significant improvements in super-harmonic response and stability when compared to alternative controls.</p>
</list-item>
<list-item>
<p>(2) Under uniform load increase, MPC cooperatively controls the PEMFC temperature, showing reduced overshoot and stabilization time when compared to other controls. MPC ensures precise temperature control, limiting stack variations to 0.2 K.</p>
</list-item>
<list-item>
<p>(3) Implementing co-control in MPC for variable target PEMFC stack temperature. Despite stepped load current, effective adjustment of reactor temperature and accurate control of maximum stack temperature within 1.5&#xa0;K are achieved.</p>
</list-item>
<list-item>
<p>(4) MPC co-control consistently manages fuel cell stack temperature amidst varying ambient temperatures (288.15&#xa0;K&#x2013;308.15&#xa0;K). It adeptly adjusts cooling parameters, ensuring stability and demonstrating efficacy for optimal temperature management in diverse environmental conditions.</p>
</list-item>
</list>
</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/Supplementary Material; further inquiries can be directed to the corresponding author.</p>
</sec>
<sec id="s7">
<title>Author contributions</title>
<p>LL: Conceptualization, methodology, validation, and manuscript writing&#x2013;review and editing. MZ: Manuscript writing&#x2013;original draft. JG: Investigation, software, and manuscript writing&#x2013;review and editing.</p>
</sec>
<sec sec-type="funding-information" id="s8">
<title>Funding</title>
<p>The authors declare financial support was received for the research, authorship, and/or publication of this article. This research was funded by the Basic Science Research Project of Colleges and Universities of Education Department of Liaoning Province (Project No. LJKZ0608).</p>
</sec>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s10">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, editors, and reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bressel</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Hilairet</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>HisselHautes</surname>
<given-names>D. &#xc9;.</given-names>
</name>
<name>
<surname>Ing&#xe9;nieur</surname>
<given-names>D&#x27;.</given-names>
</name>
<name>
<surname>Belkacem</surname>
<given-names>O. B.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Model-based aging tolerant control with power loss prediction of Proton Exchange Membrane Fuel Cell</article-title>. <source>Int. J. Hydrogen Energy</source> <volume>19</volume>, <fpage>11242</fpage>&#x2013;<lpage>11254</lpage>. <pub-id pub-id-type="doi">10.1016/j.ijhydene.2018.11.219</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chao</surname>
<given-names>C. L.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Numerical simulation of multiphase flow on temperature effect for proton exchange membrane fuel cell</article-title>. <source>Solid State Phenom.</source> <volume>311</volume>, <fpage>56</fpage>&#x2013;<lpage>63</lpage>. <pub-id pub-id-type="doi">10.4028/www.scientific.net/SSP.311.56</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chatrattanawet</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Hakhen</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Kheawhom</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Arpornwichanop</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Control structure design and robust model predictive control for controlling a proton exchange membrane fuel cell</article-title>. <source>J. Clean. Production</source> <volume>947</volume>, <fpage>934</fpage>&#x2013;<lpage>947</lpage>. <pub-id pub-id-type="doi">10.1016/j.jclepro.2017.02.033</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chi-Young</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Hyo-Sub</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Sang-Man</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Sang-Hwan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yi</surname>
<given-names>S.-C.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>Investigations of the temperature distribution in proton exchange membrane fuel cells</article-title>. <source>Appl. Energy</source> <volume>741</volume>. <pub-id pub-id-type="doi">10.1016/j.apenergy.2011.08.035</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dawn</surname>
<given-names>M. B.</given-names>
</name>
<name>
<surname>Mark</surname>
<given-names>W. V.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Mathematical model of a gas diffusion electrode bonded to a polymer electrolyte</article-title>. <source>AIChE J.</source> <volume>37</volume>, <fpage>8</fpage>. <pub-id pub-id-type="doi">10.1002/aic.690370805</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ebrahimi</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>DeVaal</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Narimani</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Vijayaraghavan</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Transient model of oxygen-starved proton exchange membrane fuel cell for predicting voltages and hydrogen emissions</article-title>. <source>Int. J. Hydrogen Energy</source> <volume>42</volume> (<issue>33</issue>), <fpage>21177</fpage>&#x2013;<lpage>21190</lpage>. <pub-id pub-id-type="doi">10.1016/j.ijhydene.2017.05.209</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Model predictive control on constant voltage output of a proton exchange membrane fuel cell</article-title>. <source>J. Eng. Sci. Technol. Rev.</source> <volume>6</volume> (<issue>2</issue>), <fpage>115</fpage>&#x2013;<lpage>119</lpage>. <pub-id pub-id-type="doi">10.25103/jestr.062.24</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="thesis">
<person-group person-group-type="author">
<name>
<surname>Guo</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2020</year>). <source>Study on the thermal management system of proton exchange membrane fuel cell</source> (<publisher-loc>Hefei</publisher-loc>: <publisher-name>Hefei University of Technology</publisher-name>). <comment>MA thesis</comment>.</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Han</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Park</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Control strategy of cooling system for the optimization of parasitic power of automotive fuel cell system</article-title>. <source>Int. J. Hydrogen Energy</source> <volume>39</volume>, <fpage>13549</fpage>&#x2013;<lpage>13557</lpage>. <pub-id pub-id-type="doi">10.1016/j.ijhydene.2015.08.067</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Huang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Becherif</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Adaptive thermal control for PEMFC systems with guaranteed performance</article-title>. <source>Int. J. Hydrogen Energy</source> <volume>43</volume> (<issue>25</issue>), <fpage>11550</fpage>&#x2013;<lpage>11558</lpage>. <pub-id pub-id-type="doi">10.1016/j.ijhydene.2017.12.121</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Khan</surname>
<given-names>M. J.</given-names>
</name>
<name>
<surname>Iqbal</surname>
<given-names>M. T.</given-names>
</name>
</person-group> (<year>2005</year>). <article-title>Modeling and analysis of electrochemical, thermal, and reactant flow dynamics for a PEM fuel cell system</article-title>. <source>Fuel Cells</source> <volume>4</volume>, <fpage>463</fpage>&#x2013;<lpage>475</lpage>. <pub-id pub-id-type="doi">10.1002/fuce.200400072</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lechartier</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Laffly</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>P&#xe9;raGouriveau</surname>
<given-names>M. R.</given-names>
</name>
<name>
<surname>Hissel</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Zerhouni</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Proton exchange membrane fuel cell behavioral model suitable for prognostics</article-title>. <source>Int. J. Hydrogen Energy</source> <volume>40</volume> (<issue>26</issue>), <fpage>8384</fpage>&#x2013;<lpage>8397</lpage>. <pub-id pub-id-type="doi">10.1016/j.ijhydene.2015.04.099</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mogorosi</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Tunde</surname>
<given-names>O. M.</given-names>
</name>
<name>
<surname>Rakgati</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Mathematical modelling and experimental investigation of a low temperature proton exchange membrane fuel cell</article-title>. <source>Energy Power Eng.</source> <volume>11</volume>, <fpage>653</fpage>&#x2013;<lpage>670</lpage>. <pub-id pub-id-type="doi">10.4236/epe.2020.1211039</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Oh</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Dobbs</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>King</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Model predictive control for power and thermal management of an integrated solid oxide fuel cell and turbocharger system</article-title>. <source>IEEE Trans. control Syst. Technol. A Publ. IEEE Control Syst. Soc.</source> <volume>22</volume> (<issue>3</issue>), <fpage>911</fpage>&#x2013;<lpage>920</lpage>. <pub-id pub-id-type="doi">10.1109/tcst.2013.2271902</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Omran</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Lucchesi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Smith</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Alaswad</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Amiri</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Wilberforce</surname>
<given-names>T.</given-names>
</name>
<etal/>
</person-group> (<year>2021</year>). <article-title>Mathematical model of a proton-exchange membrane (PEM) fuel cell</article-title>. <source>Int. J. Thermofluids(prepublish)</source> <volume>11</volume>, <fpage>100110</fpage>&#x2013;<lpage>110</lpage>. <pub-id pub-id-type="doi">10.1016/J.IJFT.2021.100110</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Robin</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>G&#xe9;rard</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Quinaud</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Arbigny</surname>
<given-names>Y. B.</given-names>
</name>
<name>
<surname>Bultel</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Proton exchange membrane fuel cell model for aging predictions: simulated equivalent active surface area loss and comparisons with durability tests</article-title>. <source>J. Power Sources</source> <volume>427</volume>, <fpage>417</fpage>&#x2013;<lpage>427</lpage>. <pub-id pub-id-type="doi">10.1016/j.jpowsour.2016.07.018</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rui</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Ran</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>YiqinWenjuan</surname>
<given-names>D. Y.</given-names>
</name>
<name>
<surname>Yide</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Jia</surname>
<given-names>L.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>Designing AI-aided analysis and prediction models for nonprecious metal electrocatalyst-based proton exchange membrane fuel cells</article-title>. <source>Angewandte Chemie Int. ed. Engl.</source> <volume>59</volume> (<issue>43</issue>), <fpage>19175</fpage>&#x2013;<lpage>19183</lpage>. <pub-id pub-id-type="doi">10.1002/anie.202006928</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Salva</surname>
<given-names>A. J.</given-names>
</name>
<name>
<surname>Alfredo</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Felipe</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Elvira</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Experimental validation of the polarization curve and the temperature distribution in a PEMFC stack using a one dimensional analytical model</article-title>. <source>Int. J. Hydrogen Energy</source> <volume>45</volume>, <fpage>20615</fpage>&#x2013;<lpage>20632</lpage>. <pub-id pub-id-type="doi">10.1016/j.ijhydene.2016.09.152</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sedighizadeh</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Fathian</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>Dynamic modeling and adaptive control of voltage in proton exchange membrane fuel cell using water management</article-title>. <source>Int. J. Energy Res.</source> <volume>36</volume> (<issue>13</issue>), <fpage>1201</fpage>&#x2013;<lpage>1214</lpage>. <pub-id pub-id-type="doi">10.1002/er.1868</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shaker</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Analytical modeling of PEM fuel cell i&#x2014;V curve</article-title>. <source>Renew. energy</source> <volume>36</volume>(<issue>2</issue>), <fpage>451</fpage>&#x2013;<lpage>458</lpage>. <pub-id pub-id-type="doi">10.1016/j.renene.2010.07.007</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sonia</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Belinda</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Fred</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Applications and challenges of proton exchange membrane fuel cells</article-title>. <source>J. Energy Sci.</source> <volume>6</volume>. <pub-id pub-id-type="doi">10.53469/JES.2023.05(06).03</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Ou</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Power source protection method for hybrid polymer electrolyte membrane fuel cell/lithium-ion battery system</article-title>. <source>Renew. Energy</source> <volume>111</volume>, <fpage>381</fpage>&#x2013;<lpage>391</lpage>. <pub-id pub-id-type="doi">10.1016/j.renene.2017.03.088</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>ChenKim</surname>
<given-names>S. Y.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Robust DC/DC converter control for polymer electrolyte membrane fuel cell application</article-title>. <source>J. Power Sources</source> <volume>305</volume>, <fpage>292</fpage>&#x2013;<lpage>305</lpage>. <pub-id pub-id-type="doi">10.1016/j.jpowsour.2014.03.048</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>MPC control of the proton exchange membrane fuel cell temperature</article-title>. <source>J. Syst. Simul.</source> <volume>21</volume>, <fpage>1305</fpage>&#x2013;<lpage>1309</lpage>. <comment>&#x2b; 1313</comment>. <pub-id pub-id-type="doi">10.16182/j.cnki.joss.2009.05.004</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zou</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Temperature control for a 5 kW water-cooled PEM fuel cell system for a household application</article-title>. <source>IEEE Access</source> <volume>7</volume>, <fpage>144826</fpage>&#x2013;<lpage>144835</lpage>. <pub-id pub-id-type="doi">10.1109/access.2019.2945986</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>