<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0" article-type="research-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">WES</journal-id><journal-title-group>
    <journal-title>Wind Energy Science</journal-title>
    <abbrev-journal-title abbrev-type="publisher">WES</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Wind Energ. Sci.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">2366-7451</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/wes-9-1577-2024</article-id><title-group><article-title>On the importance of wind predictions in wake steering optimization</article-title><alt-title>On the importance of wind predictions in wake steering optimization</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1 aff2">
          <name><surname>Kadoche</surname><given-names>Elie</given-names></name>
          <email>elie.kadoche@totalenergies.com</email>
        <ext-link>https://orcid.org/0000-0001-5693-9867</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Bianchi</surname><given-names>Pascal</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Carton</surname><given-names>Florence</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Ciblat</surname><given-names>Philippe</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2 aff3">
          <name><surname>Ernst</surname><given-names>Damien</given-names></name>
          
        </contrib>
        <aff id="aff1"><label>1</label><institution>TotalEnergies OneTech, 2 Place Jean Millier, 92400 Courbevoie, France</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Télécom Paris, 19 Place Marguerite Perey, 91120 Palaiseau, France</institution>
        </aff>
        <aff id="aff3"><label>3</label><institution>Montefiore Institute, University of Liège, 4000 Liège, Belgium</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Elie Kadoche (elie.kadoche@totalenergies.com)</corresp></author-notes><pub-date><day>24</day><month>July</month><year>2024</year></pub-date>
      
      <volume>9</volume>
      <issue>7</issue>
      <fpage>1577</fpage><lpage>1594</lpage>
      <history>
        <date date-type="received"><day>15</day><month>December</month><year>2023</year></date>
           <date date-type="rev-request"><day>4</day><month>January</month><year>2024</year></date>
           <date date-type="rev-recd"><day>10</day><month>May</month><year>2024</year></date>
           <date date-type="accepted"><day>23</day><month>May</month><year>2024</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2024 Elie Kadoche et al.</copyright-statement>
        <copyright-year>2024</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024.html">This article is available from https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024.html</self-uri><self-uri xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024.pdf">The full text article is available as a PDF file from https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d1e132">Wake steering is a technique that optimizes the energy production of a wind farm by employing yaw control to misalign upstream turbines with the incoming wind direction. This work highlights the important dependence between wind direction variations and wake steering optimization. The problem is formalized over time as the succession of multiple steady-state yaw control problems interconnected by the rotational constraints of the turbines and the evolution of the wind. Then, this work proposes a reformulation of the yaw optimization problem of each time step by augmenting the objective function by a new heuristic based on a wind prediction. The heuristic acts as a penalization for the optimization, encouraging solutions that will guarantee future energy production. Finally, a synthetic sensitivity analysis of the wind direction variations and wake steering optimization is conducted. Because of the rotational constraints of the turbines, as the magnitude of the wind direction fluctuations increases, the importance of considering wind prediction in a steady-state optimization is empirically demonstrated. The heuristic proposed in this work greatly improves the performance of controllers and significantly reduces the complexity of the original sequential decision problem by decreasing the number of decision variables.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d1e144">As global energy consumption increases, there is a strong willingness and necessity to decarbonize electricity production. Hence, renewable energies are becoming increasingly important <xref ref-type="bibr" rid="bib1.bibx3" id="paren.1"/>. Wind energy, particularly, is the focus of considerable research and development, with turbines becoming larger and more numerous within wind farms. Ensuring efficient control as wind turbines operate is necessary to maximize the benefits of wind energy.</p>
      <p id="d1e150">In the context of global warming, designing more efficient wind farms is essential. Wake steering is the subject of growing interest within the community to optimize the energy production of wind farms. However, most  research regarding wind farm control technologies disregards the relevance of the wind direction variation. This work is motivated by a central question: from what magnitude of wind direction fluctuations is it necessary to consider the wind evolution in a wake steering optimization? To answer this question, this work proposes a new controller based on wind predictions and conducts a synthetic sensitivity analysis of wake steering and wind evolution using steady-state models and artificial wind data.</p>
      <p id="d1e153">In wind farm optimization, the use of low-fidelity models (usually based on steady-state models) is favored over higher-fidelity models (usually based on computational fluid dynamics and real-time wake interaction) due to the complexity and computational load associated with solving dynamic equations for every turbine in the farm. Some recent works such as <xref ref-type="bibr" rid="bib1.bibx10" id="text.2"/> explore real-time optimal control of wind farms using large-eddy simulations (LESs). However, this research area is still in the early stages and for large-scale wind farm optimization, steady-state models are still widely used.</p>
      <p id="d1e159">In wind farm flow control (WFFC), developing effective closed-loop controllers is essential for scaling to larger wind farms and dealing with unpredictable wind conditions. These controllers dynamically adapt their strategies in real time using continuous sensor feedback to guide their decisions. Model-based, closed-loop controllers, in particular, rely on simulators of the environment to conduct continuous optimization while the farm is in operation. Fast and computationally efficient simulation is crucial for these controllers to quickly react to wind and turbines changes. This work focuses on the optimization process itself, adhering to community standards by using widely accepted, open-source, low-fidelity simulators.</p>
<sec id="Ch1.S1.SS1">
  <label>1.1</label><title>Wake effect</title>
      <p id="d1e170">A single wind turbine reaches its maximum power output when fully aligned with the wind. When the wind direction changes, a turbine uses its yaw to rotate its nacelle on a horizontal plane. By using active yaw control, a wind turbine can keep track of the changes in the wind direction  and ensure maximum energy production over time by minimizing its misalignment with the wind. It corresponds to greedy control, where a wind turbine solely tries to maximize its power output <xref ref-type="bibr" rid="bib1.bibx26" id="paren.3"/>.</p>
      <p id="d1e176">In the space immediately behind a turbine, the wind speed is slower and more turbulent. Such a phenomenon is called the “wake effect” and is the natural consequence of wind power extraction by the machine. When a wind turbine is located in the wake of another, its power output is reduced (because of a slower wind speed) and its fatigue increased (because of the turbulence). Within a wind farm, depending on the wind direction and the farm layout, most of the turbines can be affected by the wake of others.</p>
      <p id="d1e179">Because of wake effects, greedy control can be suboptimal within a farm. Therefore, instead of keeping every turbine aligned with the wind, yaw control can also be used to voluntarily misalign some turbines in relation to the direction of the wind <xref ref-type="bibr" rid="bib1.bibx2" id="paren.4"/>. When a turbine is misaligned with the wind, its wake effect is steered. By intelligently yawing the turbines and steering the wake effects, the wind flow across the turbines can be optimized. Such a method is known as WFFC <xref ref-type="bibr" rid="bib1.bibx16" id="paren.5"/>. A simple example of a two-turbine wind farm is given in Fig. <xref ref-type="fig" rid="Ch1.F1"/>.</p>

      <fig id="Ch1.F1"><label>Figure 1</label><caption><p id="d1e193">Example of WFFC on a two-turbine wind farm with the wind coming from the west. The first (upstream) turbine is misaligned and its wake effect is steered away from the second (downstream) turbine. By letting the wind flow more freely to the second turbine, the misalignment of the first turbine increases the total power output of the farm.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024-f01.png"/>

        </fig>

      <p id="d1e202">Current implemented wake steering strategies usually involve lookup tables (LUTs) <xref ref-type="bibr" rid="bib1.bibx6 bib1.bibx21" id="paren.6"/>. Wake steering strategies are computed for a finite set of different wind conditions prior to the farm operation. The yaw angles of each turbine are computed with steady-state models, regardless of the wind and turbine dynamics. Because a wake steering strategy creates misalignment with the wind, it is highly dependent on variations in the direction of the wind. The wind direction can change over time, and yaw control is constrained by the limited rotational speed of the nacelles. If the wind varies in directions and frequencies that the yaw actuators cannot easily track, computing adequate wake steering strategies over time can be a challenging task.</p>
</sec>
<sec id="Ch1.S1.SS2">
  <label>1.2</label><title>Wind direction dynamics</title>
      <p id="d1e216">The study of wind direction dynamics is gaining interest within the research community. Wind direction dynamics can be broken down into large-scale drifts and small-scale fluctuations <xref ref-type="bibr" rid="bib1.bibx24" id="paren.7"/> and can be observed on different scales: the synoptic scale describes long distances and extended time periods, the mesoscale depicts the farm level and time periods from days to weeks, and the microscale corresponds to the turbine level and variations from seconds to minutes. The wind direction is fundamentally nonstationary, and there is incomplete knowledge regarding the physical and statistical characteristics of wind direction fluctuations across specific length scales and timescales that are essential for effective WFFC <xref ref-type="bibr" rid="bib1.bibx5" id="paren.8"/>.</p>
      <p id="d1e225">As the farm operates, the wind direction varies in both time (at the farm level) and space (at the turbine level). The study by <xref ref-type="bibr" rid="bib1.bibx25" id="text.9"/> found that spatial wind direction changes relevant to the operation of wind farm clusters in the German Bight exceed 11° in 50 % of cases. In this present work, numerical simulations are run with steady-state wake models. Therefore, only variations in the wind at the farm level are studied. When the direction varies over time, this work considers  it to affect the whole wind farm.</p>
      <p id="d1e231">WFFC is most beneficial at low wind speeds because this is where small changes in the wind speeds can lead to important power output variations. The same wake steering strategy will lead to higher power gains at low speeds compared to higher wind speed. Because the wind direction variability is higher for low wind speeds <xref ref-type="bibr" rid="bib1.bibx25 bib1.bibx24 bib1.bibx5" id="paren.10"/>, the study of dependence between wind direction variations and yaw control is important. Also, because the impact of climate change on wind dynamics is unknown, designing robust controllers is necessary for long-term operation.</p>
</sec>
<sec id="Ch1.S1.SS3">
  <label>1.3</label><title>Related works</title>
      <p id="d1e246">As tracking wind direction is essential for wind turbines, the literature is rich in studies seeking better wind direction tracking mechanisms. <xref ref-type="bibr" rid="bib1.bibx23" id="text.11"/> developed a model predictive control (MPC)-based controller on a finite control set to track the wind directions. <xref ref-type="bibr" rid="bib1.bibx9" id="text.12"/> designed a yaw controller based on very short-term wind predictions. But performing WFFC and wake steering is a more complex optimization problem.</p>
      <p id="d1e255">LUTs can be adapted for dynamic control with different methods. Usually, a low-pass filter is used to apply control only for high variations of the direction. A sampling method can be used to adjust the yaw control frequency, and hysteresis mechanisms avoid unnecessary yaw control and restrict the yaw actuators <xref ref-type="bibr" rid="bib1.bibx12" id="paren.13"/>. <xref ref-type="bibr" rid="bib1.bibx22" id="text.14"/> improved a traditional LUT by anticipating the wind direction changes ahead of upstream turbines. <xref ref-type="bibr" rid="bib1.bibx13" id="text.15"/> performed WFFC with a receding horizon using gradient-based optimization and ran tests in large-eddy simulations under realistic variations in wind direction and speed. But the wake steering strategies of an LUT fundamentally do not consider the wind dynamics; only their implementation does.</p>
      <p id="d1e267">Regarding machine learning (ML) methods, and more particularly reinforcement learning (RL), which is becoming a source of great interest to the scientific community, wind direction variations are often overlooked. The importance of the wind direction dynamics is clearly pointed out by <xref ref-type="bibr" rid="bib1.bibx19" id="text.16"/> and <xref ref-type="bibr" rid="bib1.bibx20" id="text.17"/>, but most of the studies carried out later only consider static or quasi-static wind directions. Some recent works have started to consider time-varying wind directions in WFFC optimization <xref ref-type="bibr" rid="bib1.bibx11" id="paren.18"/>.</p>
</sec>
<sec id="Ch1.S1.SS4">
  <label>1.4</label><title>Contributions</title>
      <p id="d1e287">The remainder of this paper is structured to mirror the three main contributions. Each contribution forms the basis of an individual section, and Sect. <xref ref-type="sec" rid="Ch1.S5"/> concludes. The contributions and their corresponding sections are as follows.</p>
      <p id="d1e292"><list list-type="bullet">
            <list-item>

      <p id="d1e297">This work proposes a discretized formalization of the WFFC problem over time as the succession of multiple steady-state optimization problems interconnected by the rotational constraints of the turbines and the evolution of the wind. Due to the discretization hypothesis and the yaw actuation constraints, the important hypotheses regarding the transition between one steady state and the next are formulated. This formalization is conducted in Sect. <xref ref-type="sec" rid="Ch1.S2"/>.</p>
            </list-item>
            <list-item>

      <p id="d1e305">To develop a prediction-based controller, this work presents a reformulation of the instantaneous, steady-state original sequential decision problem over a future time window. The default objective function is augmented by a new heuristic, computed on a prediction of the wind. The proposed heuristic acts as a penalization for the optimization without increasing its dimension and encourages solutions that will guarantee future energy production. The heuristic and the other studied controllers are detailed in Sect. <xref ref-type="sec" rid="Ch1.S3"/>.</p>
            </list-item>
            <list-item>

      <p id="d1e313">This work conducts a sensitivity analysis of the wind direction variations and wake steering optimization. It empirically demonstrates the importance of a wind-prediction-based control when the magnitude of the wind direction fluctuations becomes large. The new proposed heuristic greatly improves the performance of a traditional steady-state wake steering optimization when the variations of the wind direction are important. Numerical simulations using synthetic wind data are conducted in Sect. <xref ref-type="sec" rid="Ch1.S4"/>.</p>
            </list-item>
          </list></p>
</sec>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Problem formalization</title>
      <p id="d1e329">The environment is composed of a wind farm and some exogenous variables related to the wind direction and the wind speed. The wind farm consists of <inline-formula><mml:math id="M1" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> interconnected wind turbines. Over time, each turbine is controlled via its yaw. An episode consists of a succession of <inline-formula><mml:math id="M2" display="inline"><mml:mi>H</mml:mi></mml:math></inline-formula> time steps during which the turbines are controlled, with <inline-formula><mml:math id="M3" display="inline"><mml:mi>H</mml:mi></mml:math></inline-formula> the horizon length. The transition from a time step <inline-formula><mml:math id="M4" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> to a time step <inline-formula><mml:math id="M5" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> corresponds to a specific time window of a constant length of <inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> minutes. The environment evolves from one time step <inline-formula><mml:math id="M7" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> to the next time step <inline-formula><mml:math id="M8" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> in <inline-formula><mml:math id="M9" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> minutes, with <inline-formula><mml:math id="M10" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Wind data</title>
      <p id="d1e452">At a time step <inline-formula><mml:math id="M11" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, the exogenous variables are a global incoming wind direction <inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">360</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> [°] and a global incoming wind speed <inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> [m s<inline-formula><mml:math id="M14" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>]. The wind data can be measured or predicted. Then, a controller does not have access to <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> directly but to <inline-formula><mml:math id="M17" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> [°] and <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:msubsup><mml:mi>V</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> [m s<inline-formula><mml:math id="M19" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>], with <inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> a noisy wind direction defined as <inline-formula><mml:math id="M21" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M22" display="inline"><mml:mrow><mml:msubsup><mml:mi>V</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> is a noisy wind speed defined as <inline-formula><mml:math id="M23" display="inline"><mml:mrow><mml:msubsup><mml:mi>V</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. The random noises <inline-formula><mml:math id="M24" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> can come from either measurement imprecisions or prediction errors.</p>
      <p id="d1e710">Because the turbines alter the wind flow inside the farm, the wind in front of a turbine can be different from the global incoming wind. Then, at a time step <inline-formula><mml:math id="M26" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, in front of a turbine <inline-formula><mml:math id="M27" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>, the local wind direction is denoted as <inline-formula><mml:math id="M28" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">κ</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> [°] and the local wind speed is denoted as <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> [m s<inline-formula><mml:math id="M30" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>]. The computation of the local velocities is based on complex fluid mechanics and is subject to numerous uncertainties. This work conducts numerical experiments where such computations are done using a low-fidelity, steady-state simulator: FLOw Redirection and Induction in Steady State (FLORIS) <xref ref-type="bibr" rid="bib1.bibx18" id="text.19"/>. The local wind directions stay equal to the global wind direction for any time step, i.e., <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">κ</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>∀</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>, as is common for low-fidelity, steady-state simulations.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Turbines</title>
      <p id="d1e829">At a time step <inline-formula><mml:math id="M32" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, a turbine <inline-formula><mml:math id="M33" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> is characterized by its absolute angular position <inline-formula><mml:math id="M34" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">360</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> [°] and its relative orientation or yaw (often used to compute the power output) <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">180</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">180</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> [°] such that
            <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M36" display="block"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>+</mml:mo><mml:mn mathvariant="normal">180</mml:mn><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">mod</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mn mathvariant="normal">360</mml:mn><mml:mo>-</mml:mo><mml:mn mathvariant="normal">180</mml:mn><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
          Adding and subtracting by 180 ensures that the yaw stays in the range <inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">180</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">180</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>. As illustrated in Fig. <xref ref-type="fig" rid="Ch1.F2"/>, the yaw corresponds to the rotational movement going from the absolute angular position <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> to the wind direction <inline-formula><mml:math id="M39" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> such that <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">mod</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mn mathvariant="normal">360</mml:mn><mml:mo>=</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Positive values of the yaw indicate that the turbine is rotated anticlockwise from the wind direction, and negative values of the yaw indicate that the turbine is rotated clockwise from the wind direction.</p>
      <p id="d1e1070">At a time step <inline-formula><mml:math id="M41" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, the yaw setting <inline-formula><mml:math id="M42" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> [°] of a turbine <inline-formula><mml:math id="M43" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> corresponds to the rotational movement of the turbine between time steps <inline-formula><mml:math id="M44" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. Because of mechanical constraints related to the yaw actuator of the nacelle, the yaw setting is bounded between two consecutive time steps. As illustrated in Fig. <xref ref-type="fig" rid="Ch1.F2"/>, the setting is used to update the orientation of the turbine <inline-formula><mml:math id="M46" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>control</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> such that
            <disp-formula id="Ch1.E2" content-type="numbered"><label>2</label><mml:math id="M47" display="block"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>control</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">mod</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mn mathvariant="normal">360</mml:mn><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>

      <fig id="Ch1.F2"><label>Figure 2</label><caption><p id="d1e1248">Example of a wind turbine <inline-formula><mml:math id="M48" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> seen from above at a time step <inline-formula><mml:math id="M49" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>. The variables are the wind direction <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, the absolute angular position <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> of the turbine, and the yaw <inline-formula><mml:math id="M52" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> of the turbine. The wind direction indicates where the wind is coming from; e.g., a wind direction of 270° indicates a wind coming from the west. Here, the nacelle is misaligned with the incoming wind direction: the turbine is rotated clockwise from the wind, so <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. The yaw setting <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> gives the next orientation of the turbine at time step <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024-f02.png"/>

        </fig>

</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Power</title>
      <p id="d1e1359">The power curve <inline-formula><mml:math id="M56" display="inline"><mml:mi mathvariant="normal">Φ</mml:mi></mml:math></inline-formula> of a turbine gives the theoretical power output (megawatts, MW; <inline-formula><mml:math id="M57" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> axis) of the machine as a function of the wind speed <inline-formula><mml:math id="M58" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula> [m s<inline-formula><mml:math id="M59" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>] (<inline-formula><mml:math id="M60" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> axis), considering no yaw misalignment, such that
            <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M61" display="block"><mml:mrow><mml:mi mathvariant="normal">Φ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>⋅</mml:mo><mml:mi>A</mml:mi><mml:mo>⋅</mml:mo><mml:msup><mml:mi mathvariant="italic">ν</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mo>⋅</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          with <inline-formula><mml:math id="M62" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> [kg <inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:msup><mml:mtext>m</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>] the air density, <inline-formula><mml:math id="M64" display="inline"><mml:mi>A</mml:mi></mml:math></inline-formula> [<inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:msup><mml:mtext>m</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>] the rotor blade area, and <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> the power coefficient of the turbine. The theoretical power output is strictly positive if the wind speed is within certain bounds <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> [m s<inline-formula><mml:math id="M68" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>].</p>
      <p id="d1e1541">At a time step <inline-formula><mml:math id="M69" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, the power output of a turbine <inline-formula><mml:math id="M70" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> considering yaw misalignment <inline-formula><mml:math id="M71" display="inline"><mml:mrow><mml:msubsup><mml:mi>P</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> [MW] is computed from the power curve and the yaw angle such that
            <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M72" display="block"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Φ</mml:mi><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:msup><mml:mi>cos⁡</mml:mi><mml:mi>p</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:msub><mml:mtext>𝟙</mml:mtext><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub><mml:mo>⩽</mml:mo><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>⩽</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          with <inline-formula><mml:math id="M73" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> a parameter accounting for power losses due to misalignment and <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> [°] a safety bound for the yaw taken into account by the indicator function. Because too much misalignment with the wind can damage the machine, if the yaw is too great, the turbine is shut down and its power output is null.</p>
</sec>
<sec id="Ch1.S2.SS4">
  <label>2.4</label><title>Policy</title>
      <p id="d1e1736">A policy <inline-formula><mml:math id="M75" display="inline"><mml:mi mathvariant="italic">π</mml:mi></mml:math></inline-formula> is a function returning the yaw settings <inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> of all the turbines at a time step <inline-formula><mml:math id="M77" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> given a state <inline-formula><mml:math id="M78" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Each wind farm controller is associated with a specific policy. In this work, the state <inline-formula><mml:math id="M79" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> may be composed of <list list-type="bullet"><list-item>
      <p id="d1e1822">the current orientations of the turbines <inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>,</p></list-item><list-item>
      <p id="d1e1872">an observation of the current wind <inline-formula><mml:math id="M81" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>,</p></list-item><list-item>
      <p id="d1e1902">a prediction of the wind at time step <inline-formula><mml:math id="M82" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M83" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>,</p></list-item><list-item>
      <p id="d1e1954">a prediction of the wind at time step <inline-formula><mml:math id="M84" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M85" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and</p></list-item><list-item>
      <p id="d1e2006">until time step <inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M87" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula> the prediction horizon.</p></list-item></list> Therefore, the general form of a state is <inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. States can be categorized based on two distinct properties: with perfect or imperfect information and with or without foresight knowledge. Depending on the possible combinations, there are four classes of states, listed in Table <xref ref-type="table" rid="Ch1.T1"/>.</p>

<table-wrap id="Ch1.T1" specific-use="star"><label>Table 1</label><caption><p id="d1e2170">Four different classes of states based on two distinct properties, with <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>L</mml:mi><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. With perfect information, the state comprises exact wind data (no noise). Without foresight, the state only comprises the current wind data (no predictions).</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Foresight</oasis:entry>
         <oasis:entry colname="col3">No foresight</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Perfect information</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>L</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Imperfect information</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>≠</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> or <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>≠</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>L</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>≠</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> or <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>≠</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>


</sec>
<sec id="Ch1.S2.SS5">
  <label>2.5</label><title>System evolution</title>
      <p id="d1e2512">An episode is defined by <inline-formula><mml:math id="M99" display="inline"><mml:mi>H</mml:mi></mml:math></inline-formula> time steps during which turbines are controlled via their yaw. An episode is characterized by time series for the wind directions and the wind speeds as well as initial positions for the nacelles. During an episode, it is assumed that all the states belong to the same class (defined in Table <xref ref-type="table" rid="Ch1.T1"/>) and the policy is presumed to be stationary (it does not change over time).</p>
      <p id="d1e2524">The full evolution of an episode is described in Algorithm (<xref ref-type="other" rid="Ch1.Prog1"/>). At each time step, the policy returns the yaw settings based on the current state, the system is updated, and the power output of the farm is computed. The yaw setting of a turbine <inline-formula><mml:math id="M100" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> at the end of time step <inline-formula><mml:math id="M101" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> is indexed <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> (because it has been updated) and it is the one used for the power computation of time step <inline-formula><mml:math id="M103" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>.</p><boxed-text content-type="algorithm" position="float" id="Ch1.Prog1" specific-use="star"><label>Algorithm 1</label><caption><p id="d1e2563">Full episode evolution over time.</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item>

      <p id="d1e2570" specific-use="STATE"><bold>Input:</bold> <inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> true wind data time series</p>
            </list-item>

    <list-item>

      <p id="d1e2633" specific-use="STATE"><inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> initial orientations</p>
            </list-item>

    <list-item>

      <p id="d1e2698" specific-use="STATE"><inline-formula><mml:math id="M106" display="inline"><mml:mi mathvariant="italic">π</mml:mi></mml:math></inline-formula> yaw control policy</p>
            </list-item>

    <list-item>

      <p id="d1e2711" specific-use="FOR"><bold>for</bold> <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> <bold>do</bold> <list>
    <list-item>
      <p id="d1e2755" specific-use="STATE"><inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M109" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>state</monospace></p></list-item>
    <list-item>
      <p id="d1e2905" specific-use="STATE"><inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M111" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>control policy</monospace></p></list-item>
    <list-item>
      <p id="d1e2977" specific-use="STATE"><inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>control</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>∀</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M113" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>angular positions update</monospace></p></list-item>
    <list-item>
      <p id="d1e3066" specific-use="STATE"><inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M115" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>yaw angles computation</monospace></p></list-item>
    <list-item>
      <p id="d1e3158" specific-use="STATE"><inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mtext>simulation</mml:mtext><mml:mi>i</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>j</mml:mi></mml:msubsup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M117" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>local velocities computation</monospace></p></list-item>
    <list-item>
      <p id="d1e3288" specific-use="STATE"><inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:msubsup><mml:mi>P</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>∀</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M119" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>power outputs computation</monospace></p></list-item></list></p>
            </list-item>

    <list-item>

      <p id="d1e3378" specific-use="ENDFOR"><bold>end</bold> <bold>for</bold></p>
            </list-item>

    <list-item>

      <p id="d1e3389" specific-use="STATE"><bold>Output:</bold> <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>H</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:msubsup><mml:mi>P</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> farm power output</p>
            </list-item>
          </list></disp-quote></boxed-text>
      <p id="d1e3443">At a time step <inline-formula><mml:math id="M121" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, to compute the power output of each turbine, local wind velocities are needed. Such computations rely on complex fluid mechanics, depending on the incoming wind and the updated yaw angles of each turbine. For optimization, performing such complex computations is computationally expensive. Therefore, in this work, these computations are carried out by a steady-state simulator <inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mtext>simulation</mml:mtext><mml:mi>i</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>j</mml:mi></mml:msubsup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, which is used as a substitute for real-life measurements.</p>
      <p id="d1e3540">The simulation is said to be steady-state because it only depends on the current global wind data and the updated yaw angles. It does not consider previous wind data, previous yaw angles, or time delays in the wake propagation. The evolution of an episode over time is constrained by the rotational bounds of the turbines and the variations of the wind.</p>
      <p id="d1e3543">At each time step, during the “control policy” operation, a controller knows the evolution mechanisms of the system; i.e., it can conduct any computations with the <inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>control</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mtext>simulation</mml:mtext><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> functions but based on the wind data provided by the state. Because such data can be noisy, all the computed values can be inexact. For example, at a time step <inline-formula><mml:math id="M125" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, if a controller computes the yaw of a turbine <inline-formula><mml:math id="M126" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> based on its updated orientation <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, it would be equal to <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Because the observed wind direction <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> can be different from the true wind direction <inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, the yaw <inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> estimated by a controller can be different from its true value <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>.</p>
</sec>
<sec id="Ch1.S2.SS6">
  <label>2.6</label><title>Transition regime</title>
      <p id="d1e3742">At a time step <inline-formula><mml:math id="M133" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, for a turbine <inline-formula><mml:math id="M134" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>, and due to the steady-state nature of the simulation, the WFFC problem thus formalized considers a single power output <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:msubsup><mml:mi>P</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>. In reality, during a time step, the wind is time-varying and a turbine takes time to rotate because of mechanical constraints. Therefore, the discretization of the continuous control problem results in the loss of some information and possibly less inaccurate power outputs. To ensure that the discretized power outputs are good approximations, from one time step to another, a turbine is assumed to rotate immediately and the wind is assumed to be quasi-constant.</p>
      <p id="d1e3772">The duration of a time step is always considered constant during an episode. At a time step <inline-formula><mml:math id="M136" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, when a setting <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> is applied to a turbine <inline-formula><mml:math id="M138" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>, the rotational time <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (minutes) for the turbine to go from its current orientation <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> to its next orientation <inline-formula><mml:math id="M141" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> is always considered largely inferior to the duration of the time step, i.e., <inline-formula><mml:math id="M142" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>≪</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> for all <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>. A turbine always rapidly reaches its target position before the end of the time step duration. But during a time step, no other control will be applied to the turbine. For this reason, the rotational constraints <inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> need to be consistent with the duration of a time step <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d1e3925">The coherence time <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (minutes) of a wind variable (either the direction or the speed) is the maximum duration during which the variable is quasi-constant. If the coherence time of the wind direction is strictly smaller than the time step duration, a discretized value <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> would stretch too far away from its corresponding continuous signal. The same goes for the speed. Therefore, in this work, the coherence time is always equal to the time step duration, i.e., <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>, for both the direction and the speed.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Controllers</title>
      <p id="d1e3976">At a time step <inline-formula><mml:math id="M149" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, the yaw settings <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are denoted as <inline-formula><mml:math id="M151" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. A controller is defined by its policy <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> with the state <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS4"/>. This work compares a naive control where each turbine is aligned as much as possible with the wind and three optimized wake steering control strategies. In an episode, at each time step <inline-formula><mml:math id="M154" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, during the control policy operation of Algorithm (<xref ref-type="other" rid="Ch1.Prog1"/>), each controller computes the yaw settings such that <inline-formula><mml:math id="M155" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> by maximizing a specific objective function <inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>obj</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> with regard to the turbine rotational constraints, as defined below.

              <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M157" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E5"><mml:mtd><mml:mtext>5</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="italic">π</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:munder><mml:mrow><mml:mi>arg⁡</mml:mi><mml:mo movablelimits="false">max⁡</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:munder><mml:mspace linebreak="nobreak" width="0.33em"/><mml:msub><mml:mi>f</mml:mi><mml:mtext>obj</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E6"><mml:mtd><mml:mtext>6</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mtext>subject to</mml:mtext><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>⩽</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>⩽</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>∀</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo><mml:mo>,</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Naive controller</title>
      <p id="d1e4320">The naive controller always tries to keep turbines aligned with the current wind direction as much as possible. It is a weak baseline as it does not conduct any wake steering optimization. It runs with no foresight (i.e., <inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>), as it is only concerned with the current observed wind direction <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>. Therefore, the state <inline-formula><mml:math id="M160" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is reduced to <inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. It consists of a greedy control (no wake steering) where the objective function at a time step <inline-formula><mml:math id="M162" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> minimizes the amplitude of the yaws, i.e.,

                <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M163" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E7"><mml:mtd><mml:mtext>7</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>f</mml:mi><mml:mtext>obj</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:mo>|</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>|</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E8"><mml:mtd><mml:mtext>8</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtext>with</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E9"><mml:mtd><mml:mtext>9</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtext>with</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>control</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            At a time step <inline-formula><mml:math id="M164" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, the rotational movement required for a turbine <inline-formula><mml:math id="M165" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> to stay aligned with the observed wind direction is equal to <inline-formula><mml:math id="M166" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Because of the rotational constraints, this movement is clipped such that it is always an acceptable setting with regards to the yaw actuator, giving a closed-form expression for the solution, defined as

                <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M167" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E10"><mml:mtd><mml:mtext>10</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">π</mml:mi><mml:mtext>naive</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E11"><mml:mtd><mml:mtext>11</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mtext>such that</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mtext>clip</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Wake steering</title>
      <p id="d1e4841">Compared to naive control, wake steering is used to optimize the power output of the farm. In this work, two distinct wake steering strategies are used. One is based only on the instantaneous wind data, and one is based on instantaneous and predicted wind data. The instantaneous controller searches for the yaw settings maximizing the instantaneous power output of the farm. The prediction-based controller maximizes the instantaneous and future power outputs. At each time step <inline-formula><mml:math id="M168" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, the same Gauss–Seidel (GS) method is used for both controllers, but with different objective functions. In this work, optimization is conducted with a GS method (described in Algorithm <xref ref-type="other" rid="App1.Ch1.S1.Prog1"/>). A similar approach was first proposed by <xref ref-type="bibr" rid="bib1.bibx7" id="text.20"/> with a serial-refine algorithm.</p>
      <p id="d1e4856">The GS method works as follows. A first solution is initialized from the naive controller, where each initial yaw setting keeps its turbine aligned as much as possible with the wind. Then, the GS method iterates over each turbine, from upstream to downstream ones. At each iteration, it solves the optimization problem for the current turbine, considering the yaw settings of all others fixed, by conducting a grid search over a discretized solution space <inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:mi>l</mml:mi><mml:mo>⋅</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> for all <inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M171" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> being a precision parameter. Once optimized, the setting of the current turbine is updated, and it goes to the next one.</p>
<sec id="Ch1.S3.SS2.SSS1">
  <label>3.2.1</label><title>Instantaneous controller</title>
      <p id="d1e4963">The instantaneous controller searches for the yaw settings maximizing the immediate power output of the farm. It always runs under no foresight (i.e., <inline-formula><mml:math id="M172" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>), as it performs wake steering for the current observed wind data only. Therefore, the state <inline-formula><mml:math id="M173" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is reduced to <inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. It is a steady-state optimization performed on one time step where the objective function at a time step <inline-formula><mml:math id="M175" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> is the immediate normalized power output, i.e.,

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M176" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E12"><mml:mtd><mml:mtext>12</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>f</mml:mi><mml:mtext>obj</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E13"><mml:mtd><mml:mtext>13</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtext>with</mml:mtext><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mtext>simulation</mml:mtext><mml:mi>i</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>j</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E14"><mml:mtd><mml:mtext>14</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtext>with</mml:mtext><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E15"><mml:mtd><mml:mtext>15</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtext>with</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>control</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
</sec>
<sec id="Ch1.S3.SS2.SSS2">
  <label>3.2.2</label><title>Prediction-based controller</title>
      <p id="d1e5388">A traditional prediction-based controller searches for the yaw settings of time steps <inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula> that maximize the power output over that horizon. It always runs with foresight (i.e., <inline-formula><mml:math id="M178" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>⩾</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>). The corresponding sequential decision problem over a future time window can be stated under a form usually exploited by the MPC community, defined as

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M179" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E16"><mml:mtd><mml:mtext>16</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:munder><mml:mo movablelimits="false">max⁡</mml:mo><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E17"><mml:mtd><mml:mtext>17</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mtext>subject to</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>⩽</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>⩽</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:mo>∀</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>∀</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>k</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>L</mml:mi><mml:mo mathvariant="italic">}</mml:mo><mml:mo>,</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E18"><mml:mtd><mml:mtext>18</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mtext>with</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mtext>simulation</mml:mtext><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>j</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E19"><mml:mtd><mml:mtext>19</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtext>with</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E20"><mml:mtd><mml:mtext>20</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtext>with</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>control</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d1e5993">The optimization problem thus described multiplies the number of decision variables by <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. Also, the computation of the local velocities at a given time step depends on all the previous yaw settings. Therefore, the prediction-based decision problem significantly increases the complexity, and because there is no simple solution, this work proposes a reformulation. The objective function given by Eq. (<xref ref-type="disp-formula" rid="Ch1.E16"/>) can be split between the current time step <inline-formula><mml:math id="M181" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> and the next ones, from <inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>, such that
              <disp-formula id="Ch1.E21" content-type="numbered"><label>21</label><mml:math id="M184" display="block"><mml:mrow><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:munder><mml:munder class="underbrace"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mtext>first term</mml:mtext></mml:munder></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>+</mml:mo><mml:munder><mml:munder class="underbrace"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mtext>second term</mml:mtext></mml:munder><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula></p>
      <p id="d1e6298">The first term of Eq. (<xref ref-type="disp-formula" rid="Ch1.E21"/>) is the normalized power output of the farm for the current time step. It corresponds to the objective function of the instantaneous controller defined in Sect. <xref ref-type="sec" rid="Ch1.S3.SS2.SSS1"/>. It only depends on the current yaw settings <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Now, focusing on the second term, the closed-form expression of the <inline-formula><mml:math id="M186" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is written, giving
              <disp-formula id="Ch1.E22" content-type="numbered"><label>22</label><mml:math id="M187" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:mi mathvariant="normal">Φ</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:msup><mml:mi>cos⁡</mml:mi><mml:mi>p</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>⋅</mml:mo><mml:msub><mml:mtext>𝟙</mml:mtext><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub><mml:mo>⩽</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>⩽</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d1e6584">The complexity brought by the prediction-based controller comes from the fact that Eq. (<xref ref-type="disp-formula" rid="Ch1.E22"/>) depends on the local velocities <inline-formula><mml:math id="M188" display="inline"><mml:mrow><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> and the updated yaw angles <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> corresponding to the optimized yaw settings of each future time step. To decrease the complexity, this work proposes  modifying Eq. (<xref ref-type="disp-formula" rid="Ch1.E22"/>) in the following way. <list list-type="bullet"><list-item>
      <p id="d1e6639">Each local velocity <inline-formula><mml:math id="M190" display="inline"><mml:mrow><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> is replaced by the corresponding predicted global wind speed <inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:msubsup><mml:mi>V</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>. It reduces the complexity coming from the steady-state simulation by removing the dependence on the updated yaw angles. While this simplification removes future local wind data, it retains some information regarding potential future energy production by relying on the predicted global wind data only.</p></list-item><list-item>
      <p id="d1e6682">Each updated yaw angle <inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> depending on the optimized yaw setting <inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> is replaced by the expected yaw angle <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="italic">α</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:msup><mml:mi/><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> if a naive controller was used instead. It reduces the complexity coming from the optimization, as there is a closed-from expression for the naive controller, as provided by Eq. (<xref ref-type="disp-formula" rid="Ch1.E10"/>). Replacing the wake steering optimization performed in the future with a naive wind tracking solution reduces the number of optimization variables of the original problem while keeping good solutions. Indeed, proper yaw settings are known to be close to the wind on average.</p></list-item><list-item>
      <p id="d1e6760">The cosine function at power <inline-formula><mml:math id="M195" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> of each yaw angle is replaced with a simpler penalization for yaw misalignment. The penalization chosen corresponds to 1 minus the normalized absolute value of that yaw angle. It provides linearity and better interpretability.</p></list-item><list-item>
      <p id="d1e6771">The indicator function is removed so that there is no discontinuity. Even if a yaw is too great, it can be of some interest for the optimization to know about the potential power output. The more a turbine is misaligned, the less likely it will be to produce energy and the more it will be penalized.</p></list-item><list-item>
      <p id="d1e6775">For each time step, the overall expression is multiplied by a discounted factor <inline-formula><mml:math id="M196" display="inline"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>. It gives more importance to immediate time steps. It is common practice for model-predictive-based optimization.</p></list-item></list> The only variables specific to each turbine are the yaw angles updated from a naive controller, which are already normalized. Therefore, it becomes unnecessary to normalize the overall expression by <inline-formula><mml:math id="M197" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula>. With such modifications, Eq. (<xref ref-type="disp-formula" rid="Ch1.E22"/>) becomes a new heuristic <inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">H</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> defined as

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M199" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E23"><mml:mtd><mml:mtext>23</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="script">H</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msup><mml:mi mathvariant="italic">γ</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">Φ</mml:mi><mml:mo>(</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>⋅</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">180</mml:mn></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:mo>|</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="italic">α</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:msup><mml:mi/><mml:mo>′</mml:mo></mml:msup><mml:mo>|</mml:mo></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E24"><mml:mtd><mml:mtext>24</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtext>with</mml:mtext><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="italic">α</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:msup><mml:mi/><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="italic">β</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E25"><mml:mtd><mml:mtext>25</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mtext>with</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="italic">β</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>control</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="italic">β</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msubsup><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mtext>computed with a naive controller</mml:mtext></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mtext>defined by Eq. (10)</mml:mtext><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E26"><mml:mtd><mml:mtext>26</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mtext>with</mml:mtext><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="italic">β</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>control</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mtext>computed from a wake</mml:mtext></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mtext>steering optimization</mml:mtext><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d1e7289">Because this new proposed heuristic depends on neither the future optimized yaw settings (naive control) nor the future local velocities (no simulation), it does not increase the number of optimization variables. The heuristic is a scalar acting as a penalization for the optimization. The final objective function of the prediction-based controller can finally be written as

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M200" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E27"><mml:mtd><mml:mtext>27</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>f</mml:mi><mml:mtext>obj</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="script">H</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E28"><mml:mtd><mml:mtext>28</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtext>with</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msup><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mtext>simulation</mml:mtext><mml:mi>i</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>j</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E29"><mml:mtd><mml:mtext>29</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtext>with</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msup><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E30"><mml:mtd><mml:mtext>30</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtext>with</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>control</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E31"><mml:mtd><mml:mtext>31</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtext>with</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="script">H</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mtext>defined by Eq. (23)</mml:mtext><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d1e7666">The heuristic is the discounted weighted sum of the future theoretical power outputs. By choosing certain optimized yaw settings <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for the current time step, the heuristic uses a naive controller over a future time horizon of <inline-formula><mml:math id="M202" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula> time steps to evaluate how well the turbines will manage to stay aligned with the predicted wind directions. The higher the potential future energy production, the more critical it becomes for the current yaw settings not to rotate the turbines too far away from the predicted wind direction.</p>
      <p id="d1e7687">For example, if the future expected power outputs are high, the heuristic will encourage yaw settings that will put the turbines in good orientations for the future. The heuristic will penalize the objective function for yaw settings that will prevent turbines from keeping track of the wind. An illustration of the heuristic is given in Fig. <xref ref-type="fig" rid="Ch1.F3"/>, describing the first term (wake steering optimization) and the second term (heuristic based on a wind tracking control) of Eq. (<xref ref-type="disp-formula" rid="Ch1.E27"/>).</p>

      <fig id="Ch1.F3" specific-use="star"><label>Figure 3</label><caption><p id="d1e7696">Illustration of the heuristic for a turbine <inline-formula><mml:math id="M203" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> at time step <inline-formula><mml:math id="M204" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> for two different cases. The horizon is <inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> and the wind data are the same for cases A and B. The rotation zone represents the range of possible orientations a turbine can take at a given time step after being controlled. First, wake steering optimization is performed to find the setting <inline-formula><mml:math id="M206" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, which yields a power output of <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">A</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> MW for case A and <inline-formula><mml:math id="M208" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> MW for case B at time step <inline-formula><mml:math id="M209" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>. By considering <inline-formula><mml:math id="M210" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">A</mml:mi></mml:msub><mml:mo>&gt;</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>,  case A would be preferred. But then the heuristic computes the future expected yaw angles if a naive wind tracking solution is used. From these expected yaw angles, the heuristic computes the expected power outputs based on the predicted wind speeds. Here, while the yaw setting of case A gives a better immediate solution than the one given by case B, it keeps the turbine further away (i.e., giving greater yaw angles) from the future wind. The solution of case B would then be preferable. The heuristic encourages the choice of yaw settings that may not be the best at the current time step but that ensures future power output.</p></caption>
            <graphic xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024-f03.png"/>

          </fig>

</sec>
</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Upper bound</title>
      <p id="d1e7801">To have an upper bound in terms of performance (power output) of a wake steering strategy, the rotational constraints are relaxed. It means that in Eq. (<xref ref-type="disp-formula" rid="Ch1.E6"/>), the variables <inline-formula><mml:math id="M211" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> are equal to <inline-formula><mml:math id="M213" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>180 and 180°, respectively. Between two consecutive time steps, each turbine is assumed to be capable of reaching any orientation.</p>
      <p id="d1e7835">From a different point of view, the upper bound corresponds to the wake steering instantaneous controller, but for a complete steady-state version of the system evolution presented in Algorithm (<xref ref-type="other" rid="Ch1.Prog1"/>). All time steps are entirely independent from each other, as there are no longer any rotational constraints for the turbines.</p>
      <p id="d1e7840">The same objective function of the instantaneous controller, presented in Sect. <xref ref-type="sec" rid="Ch1.S3.SS2.SSS1"/>, is used. It always runs under no foresight (i.e., <inline-formula><mml:math id="M214" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>), as it performs wake steering for the current wind data only. Therefore, the state <inline-formula><mml:math id="M215" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is reduced to <inline-formula><mml:math id="M216" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. The yaw settings computed by the upper bound would not be admissible in reality if the corresponding targeted orientations are too far away from the current ones.</p>
</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Simulations</title>
      <p id="d1e7945">In Sect. <xref ref-type="sec" rid="Ch1.S4.SS1"/> the process used to generate wind data is described, and in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2"/> the experiment setting is given. Finally, the results and the empirical conclusions that can be drawn are explained in Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/>.</p>
<sec id="Ch1.S4.SS1">
  <label>4.1</label><title>Wind data scenario</title>
      <p id="d1e7961">The wind data time series are artificially generated with custom Wiener processes. The wind directions <inline-formula><mml:math id="M217" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are computed with Algorithm (<xref ref-type="other" rid="Ch1.Prog2"/>). The wind speeds <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are computed with Algorithm (<xref ref-type="other" rid="Ch1.Prog3"/>). To generate the time series, an initial value is cumulatively incremented at each time step by variable <inline-formula><mml:math id="M219" display="inline"><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Each increment <inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is independently sampled from a normal distribution of mean 0 and standard deviation <inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> such that
            <disp-formula id="Ch1.E32" content-type="numbered"><label>32</label><mml:math id="M222" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>×</mml:mo><mml:msqrt><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>X</mml:mi></mml:msubsup></mml:mrow></mml:msqrt><mml:mo>,</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          with <inline-formula><mml:math id="M223" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula> a normalization variable with regard to the number and range of the generated values and <inline-formula><mml:math id="M224" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>X</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> a variation parameter for the wind variable <inline-formula><mml:math id="M225" display="inline"><mml:mi>X</mml:mi></mml:math></inline-formula> (either the direction or the speed).</p><boxed-text content-type="algorithm" position="float" id="Ch1.Prog2"><label>Algorithm 2</label><caption><p id="d1e8192">Wind direction generator.</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item>

      <p id="d1e8199" specific-use="STATE"><bold>Input:</bold> <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula> number of points</p>
            </list-item>

    <list-item>

      <p id="d1e8219" specific-use="STATE"><inline-formula><mml:math id="M227" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>init</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> initial wind direction</p>
            </list-item>

    <list-item>

      <p id="d1e8236" specific-use="STATE"><inline-formula><mml:math id="M228" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>K</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> bounds for the variation variable</p>
            </list-item>

    <list-item>

      <p id="d1e8264" specific-use="STATE"><inline-formula><mml:math id="M229" display="inline"><mml:mrow><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">360</mml:mn><mml:mo>/</mml:mo><mml:mo>(</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d1e8292" specific-use="FOR"><bold>for</bold> <inline-formula><mml:math id="M230" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> <bold>do</bold> <list>
    <list-item>
      <p id="d1e8340" specific-use="STATE"><inline-formula><mml:math id="M231" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>∼</mml:mo><mml:mi>U</mml:mi><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>K</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>K</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d1e8380" specific-use="STATE"><inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>×</mml:mo><mml:msqrt><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:msqrt></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d1e8409" specific-use="STATE"><inline-formula><mml:math id="M233" display="inline"><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>∼</mml:mo><mml:mi>N</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d1e8440" specific-use="STATE"><inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mtext>init</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>t</mml:mi></mml:msubsup><mml:msub><mml:mi>m</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">mod</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mn mathvariant="normal">360</mml:mn></mml:mrow></mml:math></inline-formula></p></list-item></list></p>
            </list-item>

    <list-item>

      <p id="d1e8494" specific-use="ENDFOR"><bold>end</bold> <bold>for</bold></p>
            </list-item>

    <list-item>

      <p id="d1e8504" specific-use="STATE"><bold>Output:</bold> <inline-formula><mml:math id="M235" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> wind direction time series</p>
            </list-item>
          </list></disp-quote></boxed-text><boxed-text content-type="algorithm" position="float" id="Ch1.Prog3"><label>Algorithm 3</label><caption><p id="d1e8560">Wind speed generator.</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item>

      <p id="d1e8567" specific-use="STATE"><bold>Input:</bold> <inline-formula><mml:math id="M236" display="inline"><mml:mrow><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula> number of points</p>
            </list-item>

    <list-item>

      <p id="d1e8587" specific-use="STATE"><inline-formula><mml:math id="M237" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mtext>init</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> initial wind speed</p>
            </list-item>

    <list-item>

      <p id="d1e8604" specific-use="STATE"><inline-formula><mml:math id="M238" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> bounds for the wind speed</p>
            </list-item>

    <list-item>

      <p id="d1e8628" specific-use="STATE"><inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>V</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>V</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> bounds for the variation variable</p>
            </list-item>

    <list-item>

      <p id="d1e8655" specific-use="STATE"><inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>)</mml:mo><mml:mo>/</mml:mo><mml:mo>(</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d1e8699" specific-use="FOR"><bold>for</bold> <inline-formula><mml:math id="M241" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> <bold>do</bold> <list>
    <list-item>
      <p id="d1e8747" specific-use="STATE"><inline-formula><mml:math id="M242" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>V</mml:mi></mml:msubsup><mml:mo>∼</mml:mo><mml:mi>U</mml:mi><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>V</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>V</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d1e8787" specific-use="STATE"><inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>×</mml:mo><mml:msqrt><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>V</mml:mi></mml:msubsup></mml:mrow></mml:msqrt></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d1e8816" specific-use="STATE"><inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>∼</mml:mo><mml:mi>N</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d1e8847" specific-use="STATE"><inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mtext>mirrored</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi>N</mml:mi><mml:mtext>init</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>t</mml:mi></mml:msubsup><mml:msub><mml:mi>m</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></p></list-item></list></p>
            </list-item>

    <list-item>

      <p id="d1e8894" specific-use="ENDFOR"><bold>end</bold> <bold>for</bold></p>
            </list-item>

    <list-item>

      <p id="d1e8904" specific-use="STATE"><bold>Output:</bold> <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> wind speed time series</p>
            </list-item>
          </list></disp-quote></boxed-text>
      <p id="d1e8959">To maintain the wind directions in the range of valid values, i.e., <inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">360</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> [°], the modulo operation is sufficient. To maintain the wind speeds in the range of valid values, i.e., <inline-formula><mml:math id="M248" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> [m s<inline-formula><mml:math id="M249" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>], a mirrored function as explained in Fig. <xref ref-type="fig" rid="Ch1.F4"/> is proposed. The generated values inside the wind speed bounds are not modified. The generated values outside the bounds are recursively mirrored inside the bounds.</p>

      <fig id="Ch1.F4"><label>Figure 4</label><caption><p id="d1e9017">Toy example of the mirrored function used to keep the generated wind speeds inside specific bounds. Raw data are generated thanks to a process described by Algorithm (<xref ref-type="other" rid="Ch1.Prog3"/>). Raw data points inside the wind speed bounds are not modified: the black and red curves overlap. Data points outside the wind speed bounds are recursively mirrored inside the bounds.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024-f04.png"/>

        </fig>

      <p id="d1e9028">The variable <inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>X</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> defines the level of variation of the wind variable <inline-formula><mml:math id="M251" display="inline"><mml:mi>X</mml:mi></mml:math></inline-formula> time series (either the direction or the speed). When equal to 0, the signal is constant. As <inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>X</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> increases, the absolute value of the increments increases on average. At each time step, <inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>X</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> is sampled from a uniform distribution defined between <inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>X</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>X</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>. When <inline-formula><mml:math id="M256" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>X</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>X</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> are equal, all increments <inline-formula><mml:math id="M258" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are independently sampled from the same distribution: the generated time series is stationary with regard to the increments. When <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>X</mml:mi></mml:msubsup><mml:mo>&lt;</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>X</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, increments are independently sampled from different distributions: the generated time series is nonstationary with regard to the increments. In Fig. <xref ref-type="fig" rid="Ch1.F5"/> the impact of the <inline-formula><mml:math id="M260" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> variable is shown for the wind direction.</p>

      <fig id="Ch1.F5" specific-use="star"><label>Figure 5</label><caption><p id="d1e9218"><bold>(a)</bold> Sine and cosine values for <inline-formula><mml:math id="M261" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. <bold>(b)</bold> Sine and cosine values for <inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula>. <bold>(c)</bold> Sine and cosine values for <inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:math></inline-formula>. Example of different wind direction signals generated with different <inline-formula><mml:math id="M264" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> values, considering that <inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> for all <inline-formula><mml:math id="M266" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">49</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>init</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">7</mml:mn></mml:mrow></mml:math></inline-formula>°. If <inline-formula><mml:math id="M268" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, all the generated points are equal to <inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>init</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. The sine and cosine values are plotted for illustration convenience (it avoids the discontinuity issue of degrees). Note that the behavior shown in this example is the same for the wind speed, but values are in the range <inline-formula><mml:math id="M270" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024-f05.png"/>

        </fig>

</sec>
<sec id="Ch1.S4.SS2">
  <label>4.2</label><title>Experimental setting</title>
      <p id="d1e9433">The function <inline-formula><mml:math id="M271" display="inline"><mml:mrow><mml:msubsup><mml:mi>f</mml:mi><mml:mtext>simulation</mml:mtext><mml:mi>i</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>j</mml:mi></mml:msubsup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> computes the local wind speed in front of a turbine <inline-formula><mml:math id="M272" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> at a time step <inline-formula><mml:math id="M273" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> given wind data <inline-formula><mml:math id="M274" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and the yaw of each turbine <inline-formula><mml:math id="M275" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>j</mml:mi></mml:msubsup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. This function, introduced in Sect. <xref ref-type="sec" rid="Ch1.S2.SS5"/>, is ensured by the low-fidelity, steady-state simulator FLORIS <xref ref-type="bibr" rid="bib1.bibx18" id="paren.21"/>. FLORIS is used with a Gauss curl hybrid wake model. The Gaussian velocity model is implemented based on <xref ref-type="bibr" rid="bib1.bibx1" id="text.22"/> and <xref ref-type="bibr" rid="bib1.bibx17" id="text.23"/>. To compute the deflection of the wakes depending on the yaws, the models described by <xref ref-type="bibr" rid="bib1.bibx1" id="text.24"/> and <xref ref-type="bibr" rid="bib1.bibx14" id="text.25"/> are used. The turbulence model described by <xref ref-type="bibr" rid="bib1.bibx4" id="text.26"/> is used. The optional wake modeling options “secondary steering”, “yaw added recovery”, and “transverse velocities”, provided by FLORIS and giving additional features to the <inline-formula><mml:math id="M276" display="inline"><mml:mrow><mml:msubsup><mml:mi>f</mml:mi><mml:mtext>simulation</mml:mtext><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> function, are enabled.</p>
      <p id="d1e9630">A wind farm of 34 International Energy Agency (IEA) identical 15 MW <xref ref-type="bibr" rid="bib1.bibx8" id="paren.27"/> wind turbines is used. It has cut-in and cut-out speeds of <inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> m s<inline-formula><mml:math id="M278" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula><mml:math id="M279" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">25</mml:mn></mml:mrow></mml:math></inline-formula> m s<inline-formula><mml:math id="M280" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, respectively. Each wind turbine has a rotor diameter of 242.24 m, i.e., a rotor area of 46 087 <inline-formula><mml:math id="M281" display="inline"><mml:mrow><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mtext>m</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. The air density is <inline-formula><mml:math id="M282" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.225</mml:mn></mml:mrow></mml:math></inline-formula> kg m<inline-formula><mml:math id="M283" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> and the tunable parameter accounting for the power losses due to misalignment is <inline-formula><mml:math id="M284" display="inline"><mml:mrow><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.88</mml:mn></mml:mrow></mml:math></inline-formula>. WFFC strategies are sensitive to the distances between turbines. To make the numerical simulations more robust to the distances between turbines, a diamond shape is used for the layout. With a diamond shape, there is an identical distance between each machine and its surrounding turbines. Using 34 machines creates a sufficiently large wind farm for wake steering to be impactful and is sufficiently small for optimization to converge quickly. A FLORIS illustration of the layout used is given in Fig. <xref ref-type="fig" rid="Ch1.F6"/>.</p>

      <fig id="Ch1.F6"><label>Figure 6</label><caption><p id="d1e9743">Layout in the form of a diamond shape. The farm comprises 34 identical IEA 15 MW wind turbines. There is an identical space equivalent to the diameter of four turbines between a machine and its adjacent turbines. A distance of four turbine diameters is sufficiently small to create detrimental wake effects for the farm, and therefore the optimization is pertinent and sufficiently large for the design to be realistic. Here the direction is 287.4°, the wind speed is 8.4 m s<inline-formula><mml:math id="M285" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, and yaws are computed with the instantaneous wake steering controller.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024-f06.png"/>

        </fig>

      <p id="d1e9765">The limits for the wind speed are <inline-formula><mml:math id="M286" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> m s<inline-formula><mml:math id="M287" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula><mml:math id="M288" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> m s<inline-formula><mml:math id="M289" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. The interval <inline-formula><mml:math id="M290" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> m s<inline-formula><mml:math id="M291" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> approximately corresponds to the ascending part of the power curve, where wake steering is the most beneficial for the farm. For wind speeds of <inline-formula><mml:math id="M292" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> m s<inline-formula><mml:math id="M293" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, the power output is constant; if the wind speed is reduced because of wake effects, there will be no power deficit. Because this work conducts a sensitivity analysis of yaw control, the wind speed is kept in the range of <inline-formula><mml:math id="M294" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> m s<inline-formula><mml:math id="M295" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>.</p>
      <p id="d1e9907">The horizon size is <inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:mi>H</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">144</mml:mn></mml:mrow></mml:math></inline-formula> and the length of the foresight for the prediction-based controller is <inline-formula><mml:math id="M297" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula>. The initial wind values are <inline-formula><mml:math id="M298" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>init</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">270</mml:mn></mml:mrow></mml:math></inline-formula>° and <inline-formula><mml:math id="M299" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mtext>init</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula> m s<inline-formula><mml:math id="M300" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. The discount factor used for the heuristic <inline-formula><mml:math id="M301" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">H</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is <inline-formula><mml:math id="M302" display="inline"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.99</mml:mn></mml:mrow></mml:math></inline-formula>. The precision parameter for the GS methods is <inline-formula><mml:math id="M303" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">120</mml:mn></mml:mrow></mml:math></inline-formula>, giving the grid search method good precision.</p>
      <p id="d1e10015">More technical details regarding the simulations and numerical instabilities are given in Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/>. The time step duration <inline-formula><mml:math id="M304" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> is intentionally undefined, as it will be explained in Sect. <xref ref-type="sec" rid="Ch1.S4.SS3.SSS1"/>. Depending on the time step duration value, different interpretations of the same results will be made. For example, if <inline-formula><mml:math id="M305" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> corresponds to 5 min, then the horizon <inline-formula><mml:math id="M306" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> means that the prediction-based controller has access to a prediction of the wind of 50 min. In Table <xref ref-type="table" rid="Ch1.T2"/>, a summary of the experimental setting used in this work is given.</p>

<table-wrap id="Ch1.T2"><label>Table 2</label><caption><p id="d1e10060">Detail of the variables and their values used across the simulations. This configuration is shared by all the numerical simulations. The foresight length is equal to 10 only for the prediction-based controller. Otherwise, it is equal to 0. The yaw rotational constraints will vary across the simulations, but <inline-formula><mml:math id="M307" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M308" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> are always equal to <inline-formula><mml:math id="M309" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M310" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, respectively.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Name</oasis:entry>
         <oasis:entry colname="col2">Variable</oasis:entry>
         <oasis:entry colname="col3">Value</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Number of turbines</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M311" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">34</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Rotor area</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M312" display="inline"><mml:mi>A</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">46 087 <inline-formula><mml:math id="M313" display="inline"><mml:mrow><mml:msup><mml:mtext>m</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Low-fidelity simulator</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M314" display="inline"><mml:mrow><mml:msubsup><mml:mi>f</mml:mi><mml:mtext>simulation</mml:mtext><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">FLORIS</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Air density</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M315" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">1.225 [kg m<inline-formula><mml:math id="M316" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>]</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Cosine loss exponent yaw</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M317" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">1.88</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Cut-in wind speed</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M318" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">3 m s<inline-formula><mml:math id="M319" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Cut-out wind speed</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M320" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">25 m s<inline-formula><mml:math id="M321" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wind speed limits</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M322" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">[4, 10] m s<inline-formula><mml:math id="M323" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Horizon</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M324" display="inline"><mml:mi>H</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">144</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Foresight length</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M325" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">10</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Initial global wind direction</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M326" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>init</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">270°</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Initial global wind speed</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M327" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mtext>init</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">8 m s<inline-formula><mml:math id="M328" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Discount factor</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M329" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.99</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Precision parameter</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M330" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">120</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

</sec>
<sec id="Ch1.S4.SS3">
  <label>4.3</label><title>Results</title>
      <p id="d1e10491">To empirically demonstrate the importance of optimizing yaw control over a long-term time horizon, numerical simulations are performed with perfect and imperfect (noisy) wind predictions. In the graphs, for each curve, the centerline corresponds to the mean and the colored (shaded) area corresponds to the standard deviation of the results obtained through 11 Monte Carlo trials.</p>
      <p id="d1e10494">For one episode, the total farm power output of a controller <inline-formula><mml:math id="M331" display="inline"><mml:mi>C</mml:mi></mml:math></inline-formula> given by Algorithm (<xref ref-type="other" rid="Ch1.Prog1"/>) is denoted as <inline-formula><mml:math id="M332" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>C</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>H</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:msubsup><mml:mi>P</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>. The metric to benchmark a controller <inline-formula><mml:math id="M333" display="inline"><mml:mi>C</mml:mi></mml:math></inline-formula> is the power gain [%] between the total farm power output of <inline-formula><mml:math id="M334" display="inline"><mml:mi>C</mml:mi></mml:math></inline-formula> and the total farm power output of the naive controller. The power gain is equal to <inline-formula><mml:math id="M335" display="inline"><mml:mrow><mml:mn mathvariant="normal">100</mml:mn><mml:mo>⋅</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>C</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>naive</mml:mtext></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>naive</mml:mtext></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>.</p>
<sec id="Ch1.S4.SS3.SSS1">
  <label>4.3.1</label><title>Perfect predictions</title>
      <p id="d1e10617">The first set of simulations explores the performance of each controller over increasing variations of wind directions using perfect predictions. Each state comprises perfect information, i.e., <inline-formula><mml:math id="M336" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M337" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> for all <inline-formula><mml:math id="M338" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">153</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. The performance of each controller presented in Sect. <xref ref-type="sec" rid="Ch1.S3"/> is tested for increasing values of <inline-formula><mml:math id="M339" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d1e10703">Numerical simulations are run on 21 different values of <inline-formula><mml:math id="M340" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M341" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">20</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. The wind speed is always generated with <inline-formula><mml:math id="M342" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>V</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. Because this work explores the impact of wind direction on wake steering, the magnitude of the wind speed fluctuations is kept small. The wind direction and wind speed increments are stationary: <inline-formula><mml:math id="M343" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and  <inline-formula><mml:math id="M344" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>V</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>V</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>V</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> for all <inline-formula><mml:math id="M345" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">153</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d1e10865">The objective here is to study the impact of the wind direction variations on yaw control. The greater the <inline-formula><mml:math id="M346" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> value, the stronger the variations. Because the nacelles have a limited rotational speed, the study of the wind direction fluctuations is crucial for yaw control. The standard deviations of the wind direction time series are related to the <inline-formula><mml:math id="M347" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> parameter in Eq. (<xref ref-type="disp-formula" rid="Ch1.E32"/>). To better illustrate the wind direction evolution, the time series <inline-formula><mml:math id="M348" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>K</mml:mi></mml:mrow></mml:math></inline-formula> defined as
              <disp-formula id="Ch1.E33" content-type="numbered"><label>33</label><mml:math id="M349" display="block"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">153</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></disp-formula>
            is used. Each value of <inline-formula><mml:math id="M350" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>K</mml:mi></mml:mrow></mml:math></inline-formula> lies in the range <inline-formula><mml:math id="M351" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">180</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> [°]. To study the magnitude of the variations, the absolute values are taken. Figure <xref ref-type="fig" rid="Ch1.F7"/> illustrates the influence of some <inline-formula><mml:math id="M352" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> time series on the magnitude of wind direction variations <inline-formula><mml:math id="M353" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>K</mml:mi></mml:mrow></mml:math></inline-formula>.</p>

      <fig id="Ch1.F7" specific-use="star"><label>Figure 7</label><caption><p id="d1e11032"><bold>(a)</bold> The mean value (and standard deviation) of wind direction variations is given as a function of <inline-formula><mml:math id="M354" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>. For example, for <inline-formula><mml:math id="M355" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula>, the mean absolute variation of the wind direction is around 6.11°. <bold>(b)</bold> Example of time series <inline-formula><mml:math id="M356" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>K</mml:mi></mml:mrow></mml:math></inline-formula> for different values of <inline-formula><mml:math id="M357" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">12</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">16</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">20</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. Again, as the <inline-formula><mml:math id="M358" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> parameter increases, the magnitude of the variations of the wind direction increases.</p></caption>
            <graphic xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024-f07.png"/>

          </fig>

      <p id="d1e11142">In Fig. <xref ref-type="fig" rid="Ch1.F8"/>, the power gains of each controller compared to a naive controller are plotted. The yaw limits <inline-formula><mml:math id="M359" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M360" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> are equal to <inline-formula><mml:math id="M361" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>15° (a) or <inline-formula><mml:math id="M362" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>30° (b). And <inline-formula><mml:math id="M363" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M364" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> are equal to 15° (a) or 30° (b). These yaw constraints offer enough liberty for a wind turbine to rotate between two consecutive time steps and are small enough to limit the induced fatigue. The detailed results are given in Appendix <xref ref-type="sec" rid="App1.Ch1.S3"/> in Tables <xref ref-type="table" rid="App1.Ch1.S3.T3"/> and <xref ref-type="table" rid="App1.Ch1.S3.T4"/>.</p>

      <fig id="Ch1.F8" specific-use="star"><label>Figure 8</label><caption><p id="d1e11214"><bold>(a)</bold> Yaw limits are <inline-formula><mml:math id="M365" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">15</mml:mn></mml:mrow></mml:math></inline-formula>° and <inline-formula><mml:math id="M366" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">15</mml:mn></mml:mrow></mml:math></inline-formula>°. At <inline-formula><mml:math id="M367" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:math></inline-formula>, the prediction-based controller increases the power output of a naive approach by 6.23 %. It corresponds to absolute variations of the wind direction of 7.34° as displayed in Fig. <xref ref-type="fig" rid="Ch1.F7"/>. <bold>(b)</bold> Yaw limits are <inline-formula><mml:math id="M368" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">30</mml:mn></mml:mrow></mml:math></inline-formula>° and <inline-formula><mml:math id="M369" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">30</mml:mn></mml:mrow></mml:math></inline-formula>°. At <inline-formula><mml:math id="M370" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula>, the prediction-based controller increases the power output of a naive approach by 8.93 %. It corresponds to absolute variations of the wind direction of 12.23° as displayed in Fig. <xref ref-type="fig" rid="Ch1.F7"/>. Considering future wind data in a steady-state yaw control optimization becomes mandatory when <inline-formula><mml:math id="M371" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mo>⩾</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:math></inline-formula> for yaw constraints <inline-formula><mml:math id="M372" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">15</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">15</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>° and <inline-formula><mml:math id="M373" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mo>⩾</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> for yaw constraints <inline-formula><mml:math id="M374" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>. From these points, the heuristic <inline-formula><mml:math id="M375" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">H</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> provided by the prediction-based controller greatly improves the performance of a classic instantaneous steady-state optimization.</p></caption>
            <graphic xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024-f08.png"/>

          </fig>

      <p id="d1e11441">As the variations of the wind direction increase, the performance of each controller diverges from the others. For small variations of the wind direction, both the instantaneous controller and the prediction-based controller give similar results. When the variations of the wind direction become large, the instantaneous controller struggles to maintain good performance. The heuristic of the prediction-based controller manages to find better yaw control strategies. The gap between the performance of the upper bound with the other controllers shows how strong wind direction variations, in relation to the rotational constraints of each machine, impact yaw control.</p>
      <p id="d1e11444">Based on the results given in Fig. <xref ref-type="fig" rid="Ch1.F8"/>, several general statements can be drawn. As previously said, the time step duration is intentionally imprecise. The reason is that different values of <inline-formula><mml:math id="M376" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> will lead to different interpretations. The following statement is true for any values of <inline-formula><mml:math id="M377" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>, with respect to the hypotheses of the transition regime, described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS6"/>. <list list-type="bullet"><list-item>
      <p id="d1e11473">For wind turbines that can rotate from <inline-formula><mml:math id="M378" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>15 to 15° every <inline-formula><mml:math id="M379" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> minutes, if the wind direction changes by more than 7.34° every <inline-formula><mml:math id="M380" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> minutes, it is important to consider future wind data in a steady-state yaw control optimization.</p></list-item><list-item>
      <p id="d1e11504">For wind turbines that can rotate from <inline-formula><mml:math id="M381" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>30 to 30° every <inline-formula><mml:math id="M382" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> minutes, if the wind direction changes by more than 12.23° every <inline-formula><mml:math id="M383" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> minutes, it is important to consider future wind data in a steady-state yaw control optimization.</p></list-item></list></p>
</sec>
<sec id="Ch1.S4.SS3.SSS2">
  <label>4.3.2</label><title>Noisy predictions</title>
      <p id="d1e11542">In the second set of simulations, the robustness to noisy predictions of each controller is tested. The yaw limits are <inline-formula><mml:math id="M384" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">15</mml:mn></mml:mrow></mml:math></inline-formula>° and <inline-formula><mml:math id="M385" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">15</mml:mn></mml:mrow></mml:math></inline-formula>°. The <inline-formula><mml:math id="M386" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">153</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> time series are computed with <inline-formula><mml:math id="M387" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M388" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula>. The time series <inline-formula><mml:math id="M389" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">153</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are always computed with <inline-formula><mml:math id="M390" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>V</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>V</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>V</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. Because <inline-formula><mml:math id="M391" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>K</mml:mi></mml:msubsup><mml:mo>≠</mml:mo><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, the increments are nonstationary for the wind direction. The corresponding <inline-formula><mml:math id="M392" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>K</mml:mi></mml:mrow></mml:math></inline-formula> time series is plotted in Fig. <xref ref-type="fig" rid="Ch1.F9"/>.</p>

      <fig id="Ch1.F9" specific-use="star"><label>Figure 9</label><caption><p id="d1e11775">Plot of the time series <inline-formula><mml:math id="M393" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>K</mml:mi></mml:mrow></mml:math></inline-formula> for the 11 different seeds. Wind directions are generated with <inline-formula><mml:math id="M394" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>min</mml:mtext><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M395" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mtext>max</mml:mtext><mml:mi>K</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula>. The mean is 12.53° and the standard deviation is 1.12. Here, the increments vary from one time step to another because they are nonstationary.</p></caption>
            <graphic xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024-f09.png"/>

          </fig>

      <p id="d1e11828">In Fig. 10, the noise for the wind direction is increasing, i.e., <inline-formula><mml:math id="M396" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>∼</mml:mo><mml:mi>U</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>K</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>K</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M397" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>K</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">15</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>, for each <inline-formula><mml:math id="M398" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">153</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. The noise for the wind speed is always sampled from the same distribution, i.e., <inline-formula><mml:math id="M399" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>∼</mml:mo><mml:mi>U</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. In Fig. <xref ref-type="fig" rid="Ch1.F10"/>, the noise for the wind speed is increasing, i.e., <inline-formula><mml:math id="M400" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>∼</mml:mo><mml:mi>u</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>V</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>V</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M401" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>V</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>, for each <inline-formula><mml:math id="M402" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">153</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. The noise for the wind direction is always sampled from the same distribution, i.e., <inline-formula><mml:math id="M403" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>∼</mml:mo><mml:mi>U</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>

      <fig id="Ch1.F10" specific-use="star"><label>Figure 10</label><caption><p id="d1e12095"><bold>(a)</bold> The noises for the wind directions are <inline-formula><mml:math id="M404" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>∼</mml:mo><mml:mi>U</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>K</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>K</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M405" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>K</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">15</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> for each <inline-formula><mml:math id="M406" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">153</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. The noise for the wind speeds is always sampled from a uniform distribution <inline-formula><mml:math id="M407" display="inline"><mml:mrow><mml:mi>U</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. <bold>(b)</bold> The noises for the wind speeds are <inline-formula><mml:math id="M408" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>∼</mml:mo><mml:mi>U</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>V</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>V</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M409" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>V</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> for each <inline-formula><mml:math id="M410" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">153</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. The noise for the wind directions is always sampled from a uniform distribution <inline-formula><mml:math id="M411" display="inline"><mml:mrow><mml:mi>U</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p></caption>
            <graphic xlink:href="https://wes.copernicus.org/articles/9/1577/2024/wes-9-1577-2024-f10.png"/>

          </fig>

      <p id="d1e12344">Only the noise applied to the wind directions strongly impacts the different policies. The prediction-based controller results in a poorer performance than a naive controller from a noise of 8°. The wind speed noise insignificantly affects the performance of the algorithms. This corroborates the fact that yaw control mainly depends on the wind directions. Because the prediction-based controller uses more wind data points, it is more robust than the instantaneous controller.</p>
</sec>
</sec>
</sec>
<sec id="Ch1.S5" sec-type="conclusions">
  <label>5</label><title>Conclusions</title>
      <p id="d1e12358">As WFFC is becoming more important to increase the energy production of wind farms, this work studies wake steering as a steady-state optimization problem over time. The yaw control problem is formalized as successive multiple steady-state optimization problems interconnected by the rotational constraints of the turbines and the evolution of the wind. Because the function computing the power outputs is steady-state, only the dynamics of a homogeneous global wind and the rotational constraints of the machines are captured. Low-fidelity, steady-state simulators are used because they are not time-consuming and they are suitable for optimization. But future works should perform the same studies with continuous and higher-fidelity simulators such as HAWC2Farm <xref ref-type="bibr" rid="bib1.bibx15" id="paren.28"/>, better capturing the dynamics of the wake effects from one time step to another. This becomes especially important when the variations of the wind direction become important.</p>
      <p id="d1e12364">Traditionally, yaw control is optimized in a steady-state manner. Yaw settings are computed so that they maximize the instantaneous power output of the farm. To optimize wake steering over a long-term time horizon, an MPC method is usually used. Such an approach increases the complexity of the optimization problem, making it harder to solve. To overcome such complexity, a reformulation of the steady-state optimization problem is proposed in this work to consider future wind data. The traditional objective function is augmented by a new heuristic estimating the future expected theoretical power outputs of the farm, weighted by how far the turbines will be from the wind if they are controlled by a naive approach. The new prediction-based controller proposed in this paper has the same number of decision variables as an instantaneous optimization.</p>
      <p id="d1e12367">Lastly, this work conducts a sensitivity analysis of yaw control and the variations of the wind direction. It demonstrates the importance of optimizing yaw control over future wind data when the variations of the wind directions become large. For strong wind variations, the new prediction-based controller greatly improves the performance without increasing complexity. This work shows, for example, that if deploying wind turbines that can rotate from <inline-formula><mml:math id="M412" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>15 to 15° every <inline-formula><mml:math id="M413" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> minutes, and if the wind direction changes by more than 7.34° every <inline-formula><mml:math id="M414" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> minutes, it is important to consider future wind data in a steady-state yaw control optimization. Experiments empirically show the effectiveness of the simplifications proposed in this work in a specific experimental setting, but future research could better justify and quantify their impact on the original prediction-based decision problem.</p>
      <p id="d1e12397">This study is conducted on synthetic wind data so future works should explore the same question of dependence between the wind variations and yaw control over real wind data. Because the hypotheses regarding the transition regime may be far from reality, the proposed heuristic could be combined with low-pass filters and hysteresis mechanisms for more realistic implementations. Future works should incorporate the fatigue in the optimization process, as WFFC can have a major impact on the lifetime of each turbine. For example, the objective function of the prediction-based controller could be augmented by a heuristic taking into account the magnitude of the yaw actuations. However, the results provided by this work also suggest that with wake steering strategies more robust to wind direction variations, it would be possible to reach the same level of performance with fewer yaw actuations.</p>
</sec>

      
      </body>
    <back><app-group>

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>Gauss–Seidel method</title><boxed-text content-type="algorithm" position="float" id="App1.Ch1.S1.Prog1" specific-use="star"><label>Algorithm A1</label><caption><p id="d1e12412">GS method.</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item>

      <p id="d1e12419" specific-use="STATE"><bold>Input:</bold> <inline-formula><mml:math id="M415" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> input state</p>
          </list-item>

    <list-item>

      <p id="d1e12438" specific-use="STATE"><inline-formula><mml:math id="M416" display="inline"><mml:mrow><mml:mi>c</mml:mi><mml:msubsup><mml:mi>x</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:msubsup><mml:mi>y</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi>c</mml:mi><mml:msup><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:msup><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msup><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:mo mathsize="1.1em">(</mml:mo><mml:mtable class="smallmatrix" columnalign="center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathsize="small">cos⁡</mml:mi><mml:mo mathsize="small">(</mml:mo><mml:mn mathvariant="normal" mathsize="small">270</mml:mn><mml:mo mathsize="small">-</mml:mo><mml:msubsup><mml:mi mathsize="small">K</mml:mi><mml:mi mathsize="small">t</mml:mi><mml:mo mathsize="small">′</mml:mo></mml:msubsup><mml:mo mathsize="small">)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo mathsize="small">-</mml:mo><mml:mi mathsize="small">sin⁡</mml:mi><mml:mo mathsize="small">(</mml:mo><mml:mn mathvariant="normal" mathsize="small">270</mml:mn><mml:mo mathsize="small">-</mml:mo><mml:msubsup><mml:mi mathsize="small">K</mml:mi><mml:mi mathsize="small">t</mml:mi><mml:mo mathsize="small">′</mml:mo></mml:msubsup><mml:mo mathsize="small">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathsize="small">sin⁡</mml:mi><mml:mo mathsize="small">(</mml:mo><mml:mn mathvariant="normal" mathsize="small">270</mml:mn><mml:mo mathsize="small">-</mml:mo><mml:msubsup><mml:mi mathsize="small">K</mml:mi><mml:mi mathsize="small">t</mml:mi><mml:mo mathsize="small">′</mml:mo></mml:msubsup><mml:mo mathsize="small">)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi mathsize="small">cos⁡</mml:mi><mml:mo mathsize="small">(</mml:mo><mml:mn mathvariant="normal" mathsize="small">270</mml:mn><mml:mo mathsize="small">-</mml:mo><mml:msubsup><mml:mi mathsize="small">K</mml:mi><mml:mi mathsize="small">t</mml:mi><mml:mo mathsize="small">′</mml:mo></mml:msubsup><mml:mo mathsize="small">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable><mml:mo mathsize="1.1em">)</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M417" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>rotate turbines</monospace></p>
          </list-item>

    <list-item>

      <p id="d1e12589" specific-use="STATE"><inline-formula><mml:math id="M418" display="inline"><mml:mrow><mml:mi>R</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>|</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>c</mml:mi><mml:msubsup><mml:mi>x</mml:mi><mml:mi>t</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:msubsup><mml:mo>⩽</mml:mo><mml:mi>c</mml:mi><mml:msubsup><mml:mi>x</mml:mi><mml:mi>t</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msubsup><mml:mo>⩽</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>⩽</mml:mo><mml:mi>c</mml:mi><mml:msubsup><mml:mi>x</mml:mi><mml:mi>t</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M419" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>order turbines</monospace></p>
          </list-item>

    <list-item>

      <p id="d1e12704" specific-use="STATE"><inline-formula><mml:math id="M420" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">π</mml:mi><mml:mtext>naive</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M421" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>initialize yaw settings</monospace></p>
          </list-item>

    <list-item>

      <p id="d1e12807" specific-use="FOR"><bold>for</bold> <inline-formula><mml:math id="M422" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mi>R</mml:mi></mml:mrow></mml:math></inline-formula> <bold>do</bold> <list>
    <list-item>
      <p id="d1e12830" specific-use="STATE"><inline-formula><mml:math id="M423" display="inline"><mml:mrow><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:mi>l</mml:mi><mml:mo>⋅</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathvariant="italic">}</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>∀</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M424" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>discretized solution space</monospace></p></list-item>
    <list-item>
      <p id="d1e12931" specific-use="STATE"><inline-formula><mml:math id="M425" display="inline"><mml:mrow><mml:mi>U</mml:mi><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M426" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>fix all other settings</monospace></p></list-item>
    <list-item>
      <p id="d1e13055" specific-use="STATE"><inline-formula><mml:math id="M427" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>i</mml:mi></mml:msubsup><mml:mo>∈</mml:mo><mml:munder><mml:mrow><mml:mi>arg⁡</mml:mi><mml:mo>max⁡</mml:mo></mml:mrow><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msup><mml:mo>∈</mml:mo><mml:mi>S</mml:mi></mml:mrow></mml:munder><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi>f</mml:mi><mml:mtext>obj</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>U</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>
<inline-formula><mml:math id="M428" display="inline"><mml:mo>▹</mml:mo></mml:math></inline-formula> <monospace>grid search optimization</monospace></p></list-item></list></p>
          </list-item>

    <list-item>

      <p id="d1e13126" specific-use="ENDFOR"><bold>end</bold> <bold>for</bold></p>
          </list-item>

    <list-item>

      <p id="d1e13136" specific-use="STATE"><bold>Output:</bold> <inline-formula><mml:math id="M429" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> yaw settings</p>
          </list-item>
        </list></disp-quote></boxed-text>
      <p id="d1e13214">The GS method iterates over each turbine in the direction of the wind, one by one, from upstream turbines to downstream ones. The turbines' default coordinates <inline-formula><mml:math id="M430" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:mi>c</mml:mi><mml:msup><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:msup><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msup><mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> [m] are rotated such that the wind is coming from the west. The initial yaw settings are computed with a naive controller. By doing so, the initial solution is already a good enough solution that keeps turbines as aligned with the wind as possible. At each iteration, it solves the optimization problem by varying the yaw setting of the current turbine, considering all the others fixed. To solve each optimization problem on one variable, a grid search approach over a discretized solution space <inline-formula><mml:math id="M431" display="inline"><mml:mi>S</mml:mi></mml:math></inline-formula> is used. Once solved, the setting for turbine <inline-formula><mml:math id="M432" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> is fixed and optimization is conducted again on turbine <inline-formula><mml:math id="M433" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. Such an approach gives good results because it exploits the sequential nature of the low-fidelity simulation.</p>
</app>

<app id="App1.Ch1.S2">
  <label>Appendix B</label><title>Numerical instabilities</title>
      <p id="d1e13306">First, some modifications have been made to FLORIS in order to shut down turbines misaligned too much with the wind during a simulation. At a time step <inline-formula><mml:math id="M434" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, for a given turbine <inline-formula><mml:math id="M435" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>, all the possible yaw settings can give a similar power output. In such cases, the best yaw setting is the one staying the closest to the wind direction in order to prevent future misalignment. To incorporate such behavior in the optimization process and to make the controllers robust to numerical instabilities, the following steps are taken. <list list-type="bullet"><list-item>
      <p id="d1e13325">Round out the power output computed by the simulator.</p></list-item><list-item>
      <p id="d1e13329">Take the yaw setting <inline-formula><mml:math id="M436" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> maximizing the objective function.</p></list-item><list-item>
      <p id="d1e13346">Find all the yaw settings giving a performance close to the maximum.</p></list-item><list-item>
      <p id="d1e13350">Among these selected settings, keep the one closest to the setting corresponding to the naive controller.</p></list-item></list></p>
      <p id="d1e13353">To compute the solutions of the upper-bound controller described in Sect. <xref ref-type="sec" rid="Ch1.S3.SS3"/>, a trick is used. Relaxing the rotational constraints of the turbines, i.e., making <inline-formula><mml:math id="M437" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M438" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> equal to <inline-formula><mml:math id="M439" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>180 and 180°, respectively, increases the solution space. With the same precision parameter <inline-formula><mml:math id="M440" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, it reduces the precision of the grid search method. To keep the solution space between <inline-formula><mml:math id="M441" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M442" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and therefore not to alter the precision of the grid search method, the evolution of the system described in Algorithm (<xref ref-type="other" rid="Ch1.Prog1"/>) is slightly modified. At the beginning of each time step, every turbine is realigned with the wind direction. Such a trick does not alter the solutions given by the upper-bound controller because good yaw settings are the ones keeping turbines close to the wind direction.</p>
</app>

<app id="App1.Ch1.S3">
  <label>Appendix C</label><title>Detailed results</title>

<table-wrap id="App1.Ch1.S3.T3"><label>Table C1</label><caption><p id="d1e13436">Detailed results of the simulations conducted on perfect predictions in Sect. <xref ref-type="sec" rid="Ch1.S4.SS3.SSS1"/>. Yaw limits are <inline-formula><mml:math id="M443" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">15</mml:mn></mml:mrow></mml:math></inline-formula>° and <inline-formula><mml:math id="M444" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">15</mml:mn></mml:mrow></mml:math></inline-formula>°. For each <inline-formula><mml:math id="M445" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> the total power output of the farm in <inline-formula><mml:math id="M446" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> MW is given for each controller.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="22">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="center"/>
     <oasis:colspec colnum="3" colname="col3" align="center"/>
     <oasis:colspec colnum="4" colname="col4" align="center"/>
     <oasis:colspec colnum="5" colname="col5" align="center"/>
     <oasis:colspec colnum="6" colname="col6" align="center"/>
     <oasis:colspec colnum="7" colname="col7" align="center"/>
     <oasis:colspec colnum="8" colname="col8" align="center"/>
     <oasis:colspec colnum="9" colname="col9" align="center"/>
     <oasis:colspec colnum="10" colname="col10" align="center"/>
     <oasis:colspec colnum="11" colname="col11" align="center"/>
     <oasis:colspec colnum="12" colname="col12" align="center"/>
     <oasis:colspec colnum="13" colname="col13" align="center"/>
     <oasis:colspec colnum="14" colname="col14" align="center"/>
     <oasis:colspec colnum="15" colname="col15" align="center"/>
     <oasis:colspec colnum="16" colname="col16" align="center"/>
     <oasis:colspec colnum="17" colname="col17" align="center"/>
     <oasis:colspec colnum="18" colname="col18" align="center"/>
     <oasis:colspec colnum="19" colname="col19" align="center"/>
     <oasis:colspec colnum="20" colname="col20" align="center"/>
     <oasis:colspec colnum="21" colname="col21" align="center"/>
     <oasis:colspec colnum="22" colname="col22" align="center"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><inline-formula><mml:math id="M447" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">00</oasis:entry>
         <oasis:entry colname="col3">01</oasis:entry>
         <oasis:entry colname="col4">02</oasis:entry>
         <oasis:entry colname="col5">03</oasis:entry>
         <oasis:entry colname="col6">04</oasis:entry>
         <oasis:entry colname="col7">05</oasis:entry>
         <oasis:entry colname="col8">06</oasis:entry>
         <oasis:entry colname="col9">07</oasis:entry>
         <oasis:entry colname="col10">08</oasis:entry>
         <oasis:entry colname="col11">09</oasis:entry>
         <oasis:entry colname="col12">10</oasis:entry>
         <oasis:entry colname="col13">11</oasis:entry>
         <oasis:entry colname="col14">12</oasis:entry>
         <oasis:entry colname="col15">13</oasis:entry>
         <oasis:entry colname="col16">14</oasis:entry>
         <oasis:entry colname="col17">15</oasis:entry>
         <oasis:entry colname="col18">16</oasis:entry>
         <oasis:entry colname="col19">17</oasis:entry>
         <oasis:entry colname="col20">18</oasis:entry>
         <oasis:entry colname="col21">19</oasis:entry>
         <oasis:entry colname="col22">20</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">naive</oasis:entry>
         <oasis:entry colname="col2">1.14</oasis:entry>
         <oasis:entry colname="col3">1.89</oasis:entry>
         <oasis:entry colname="col4">2.04</oasis:entry>
         <oasis:entry colname="col5">2.05</oasis:entry>
         <oasis:entry colname="col6">2.06</oasis:entry>
         <oasis:entry colname="col7">2.05</oasis:entry>
         <oasis:entry colname="col8">2.05</oasis:entry>
         <oasis:entry colname="col9">2.04</oasis:entry>
         <oasis:entry colname="col10">2.02</oasis:entry>
         <oasis:entry colname="col11">1.95</oasis:entry>
         <oasis:entry colname="col12">1.87</oasis:entry>
         <oasis:entry colname="col13">1.81</oasis:entry>
         <oasis:entry colname="col14">1.75</oasis:entry>
         <oasis:entry colname="col15">1.64</oasis:entry>
         <oasis:entry colname="col16">1.58</oasis:entry>
         <oasis:entry colname="col17">1.49</oasis:entry>
         <oasis:entry colname="col18">1.37</oasis:entry>
         <oasis:entry colname="col19">1.29</oasis:entry>
         <oasis:entry colname="col20">1.19</oasis:entry>
         <oasis:entry colname="col21">1.10</oasis:entry>
         <oasis:entry colname="col22">1.03</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">instantaneous</oasis:entry>
         <oasis:entry colname="col2">1.49</oasis:entry>
         <oasis:entry colname="col3">2.12</oasis:entry>
         <oasis:entry colname="col4">2.20</oasis:entry>
         <oasis:entry colname="col5">2.20</oasis:entry>
         <oasis:entry colname="col6">2.21</oasis:entry>
         <oasis:entry colname="col7">2.18</oasis:entry>
         <oasis:entry colname="col8">2.17</oasis:entry>
         <oasis:entry colname="col9">2.14</oasis:entry>
         <oasis:entry colname="col10">2.10</oasis:entry>
         <oasis:entry colname="col11">2.00</oasis:entry>
         <oasis:entry colname="col12">1.89</oasis:entry>
         <oasis:entry colname="col13">1.85</oasis:entry>
         <oasis:entry colname="col14">1.78</oasis:entry>
         <oasis:entry colname="col15">1.67</oasis:entry>
         <oasis:entry colname="col16">1.60</oasis:entry>
         <oasis:entry colname="col17">1.49</oasis:entry>
         <oasis:entry colname="col18">1.40</oasis:entry>
         <oasis:entry colname="col19">1.32</oasis:entry>
         <oasis:entry colname="col20">1.25</oasis:entry>
         <oasis:entry colname="col21">1.16</oasis:entry>
         <oasis:entry colname="col22">1.08</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">prediction_based</oasis:entry>
         <oasis:entry colname="col2">1.49</oasis:entry>
         <oasis:entry colname="col3">2.12</oasis:entry>
         <oasis:entry colname="col4">2.20</oasis:entry>
         <oasis:entry colname="col5">2.20</oasis:entry>
         <oasis:entry colname="col6">2.20</oasis:entry>
         <oasis:entry colname="col7">2.18</oasis:entry>
         <oasis:entry colname="col8">2.18</oasis:entry>
         <oasis:entry colname="col9">2.17</oasis:entry>
         <oasis:entry colname="col10">2.15</oasis:entry>
         <oasis:entry colname="col11">2.09</oasis:entry>
         <oasis:entry colname="col12">2.03</oasis:entry>
         <oasis:entry colname="col13">1.98</oasis:entry>
         <oasis:entry colname="col14">1.92</oasis:entry>
         <oasis:entry colname="col15">1.82</oasis:entry>
         <oasis:entry colname="col16">1.77</oasis:entry>
         <oasis:entry colname="col17">1.68</oasis:entry>
         <oasis:entry colname="col18">1.61</oasis:entry>
         <oasis:entry colname="col19">1.52</oasis:entry>
         <oasis:entry colname="col20">1.43</oasis:entry>
         <oasis:entry colname="col21">1.35</oasis:entry>
         <oasis:entry colname="col22">1.27</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">upper_bound</oasis:entry>
         <oasis:entry colname="col2">1.50</oasis:entry>
         <oasis:entry colname="col3">2.13</oasis:entry>
         <oasis:entry colname="col4">2.22</oasis:entry>
         <oasis:entry colname="col5">2.23</oasis:entry>
         <oasis:entry colname="col6">2.24</oasis:entry>
         <oasis:entry colname="col7">2.23</oasis:entry>
         <oasis:entry colname="col8">2.24</oasis:entry>
         <oasis:entry colname="col9">2.24</oasis:entry>
         <oasis:entry colname="col10">2.24</oasis:entry>
         <oasis:entry colname="col11">2.23</oasis:entry>
         <oasis:entry colname="col12">2.22</oasis:entry>
         <oasis:entry colname="col13">2.23</oasis:entry>
         <oasis:entry colname="col14">2.24</oasis:entry>
         <oasis:entry colname="col15">2.23</oasis:entry>
         <oasis:entry colname="col16">2.25</oasis:entry>
         <oasis:entry colname="col17">2.23</oasis:entry>
         <oasis:entry colname="col18">2.23</oasis:entry>
         <oasis:entry colname="col19">2.25</oasis:entry>
         <oasis:entry colname="col20">2.24</oasis:entry>
         <oasis:entry colname="col21">2.25</oasis:entry>
         <oasis:entry colname="col22">2.23</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<table-wrap id="App1.Ch1.S3.T4"><label>Table C2</label><caption><p id="d1e13945">Detailed results of the simulations conducted on perfect predictions in Sect. <xref ref-type="sec" rid="Ch1.S4.SS3.SSS1"/>. Yaw limits are <inline-formula><mml:math id="M448" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">30</mml:mn></mml:mrow></mml:math></inline-formula>° and <inline-formula><mml:math id="M449" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">30</mml:mn></mml:mrow></mml:math></inline-formula>°. For each <inline-formula><mml:math id="M450" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>  the total power output of the farm in <inline-formula><mml:math id="M451" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> MW is given for each controller.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="22">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="center"/>
     <oasis:colspec colnum="3" colname="col3" align="center"/>
     <oasis:colspec colnum="4" colname="col4" align="center"/>
     <oasis:colspec colnum="5" colname="col5" align="center"/>
     <oasis:colspec colnum="6" colname="col6" align="center"/>
     <oasis:colspec colnum="7" colname="col7" align="center"/>
     <oasis:colspec colnum="8" colname="col8" align="center"/>
     <oasis:colspec colnum="9" colname="col9" align="center"/>
     <oasis:colspec colnum="10" colname="col10" align="center"/>
     <oasis:colspec colnum="11" colname="col11" align="center"/>
     <oasis:colspec colnum="12" colname="col12" align="center"/>
     <oasis:colspec colnum="13" colname="col13" align="center"/>
     <oasis:colspec colnum="14" colname="col14" align="center"/>
     <oasis:colspec colnum="15" colname="col15" align="center"/>
     <oasis:colspec colnum="16" colname="col16" align="center"/>
     <oasis:colspec colnum="17" colname="col17" align="center"/>
     <oasis:colspec colnum="18" colname="col18" align="center"/>
     <oasis:colspec colnum="19" colname="col19" align="center"/>
     <oasis:colspec colnum="20" colname="col20" align="center"/>
     <oasis:colspec colnum="21" colname="col21" align="center"/>
     <oasis:colspec colnum="22" colname="col22" align="center"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><inline-formula><mml:math id="M452" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi><mml:mi>K</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">00</oasis:entry>
         <oasis:entry colname="col3">01</oasis:entry>
         <oasis:entry colname="col4">02</oasis:entry>
         <oasis:entry colname="col5">03</oasis:entry>
         <oasis:entry colname="col6">04</oasis:entry>
         <oasis:entry colname="col7">05</oasis:entry>
         <oasis:entry colname="col8">06</oasis:entry>
         <oasis:entry colname="col9">07</oasis:entry>
         <oasis:entry colname="col10">08</oasis:entry>
         <oasis:entry colname="col11">09</oasis:entry>
         <oasis:entry colname="col12">10</oasis:entry>
         <oasis:entry colname="col13">11</oasis:entry>
         <oasis:entry colname="col14">12</oasis:entry>
         <oasis:entry colname="col15">13</oasis:entry>
         <oasis:entry colname="col16">14</oasis:entry>
         <oasis:entry colname="col17">15</oasis:entry>
         <oasis:entry colname="col18">16</oasis:entry>
         <oasis:entry colname="col19">17</oasis:entry>
         <oasis:entry colname="col20">18</oasis:entry>
         <oasis:entry colname="col21">19</oasis:entry>
         <oasis:entry colname="col22">20</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">naive</oasis:entry>
         <oasis:entry colname="col2">1.14</oasis:entry>
         <oasis:entry colname="col3">1.89</oasis:entry>
         <oasis:entry colname="col4">2.04</oasis:entry>
         <oasis:entry colname="col5">2.05</oasis:entry>
         <oasis:entry colname="col6">2.06</oasis:entry>
         <oasis:entry colname="col7">2.05</oasis:entry>
         <oasis:entry colname="col8">2.06</oasis:entry>
         <oasis:entry colname="col9">2.06</oasis:entry>
         <oasis:entry colname="col10">2.07</oasis:entry>
         <oasis:entry colname="col11">2.05</oasis:entry>
         <oasis:entry colname="col12">2.04</oasis:entry>
         <oasis:entry colname="col13">2.04</oasis:entry>
         <oasis:entry colname="col14">2.06</oasis:entry>
         <oasis:entry colname="col15">2.04</oasis:entry>
         <oasis:entry colname="col16">2.05</oasis:entry>
         <oasis:entry colname="col17">2.01</oasis:entry>
         <oasis:entry colname="col18">1.99</oasis:entry>
         <oasis:entry colname="col19">2.00</oasis:entry>
         <oasis:entry colname="col20">1.97</oasis:entry>
         <oasis:entry colname="col21">1.94</oasis:entry>
         <oasis:entry colname="col22">1.87</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">instantaneous</oasis:entry>
         <oasis:entry colname="col2">1.65</oasis:entry>
         <oasis:entry colname="col3">2.18</oasis:entry>
         <oasis:entry colname="col4">2.25</oasis:entry>
         <oasis:entry colname="col5">2.25</oasis:entry>
         <oasis:entry colname="col6">2.26</oasis:entry>
         <oasis:entry colname="col7">2.25</oasis:entry>
         <oasis:entry colname="col8">2.25</oasis:entry>
         <oasis:entry colname="col9">2.25</oasis:entry>
         <oasis:entry colname="col10">2.25</oasis:entry>
         <oasis:entry colname="col11">2.24</oasis:entry>
         <oasis:entry colname="col12">2.22</oasis:entry>
         <oasis:entry colname="col13">2.21</oasis:entry>
         <oasis:entry colname="col14">2.21</oasis:entry>
         <oasis:entry colname="col15">2.19</oasis:entry>
         <oasis:entry colname="col16">2.20</oasis:entry>
         <oasis:entry colname="col17">2.15</oasis:entry>
         <oasis:entry colname="col18">2.11</oasis:entry>
         <oasis:entry colname="col19">2.10</oasis:entry>
         <oasis:entry colname="col20">2.07</oasis:entry>
         <oasis:entry colname="col21">2.04</oasis:entry>
         <oasis:entry colname="col22">1.96</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">prediction_based</oasis:entry>
         <oasis:entry colname="col2">1.65</oasis:entry>
         <oasis:entry colname="col3">2.18</oasis:entry>
         <oasis:entry colname="col4">2.25</oasis:entry>
         <oasis:entry colname="col5">2.25</oasis:entry>
         <oasis:entry colname="col6">2.26</oasis:entry>
         <oasis:entry colname="col7">2.25</oasis:entry>
         <oasis:entry colname="col8">2.25</oasis:entry>
         <oasis:entry colname="col9">2.25</oasis:entry>
         <oasis:entry colname="col10">2.25</oasis:entry>
         <oasis:entry colname="col11">2.24</oasis:entry>
         <oasis:entry colname="col12">2.22</oasis:entry>
         <oasis:entry colname="col13">2.22</oasis:entry>
         <oasis:entry colname="col14">2.22</oasis:entry>
         <oasis:entry colname="col15">2.20</oasis:entry>
         <oasis:entry colname="col16">2.22</oasis:entry>
         <oasis:entry colname="col17">2.18</oasis:entry>
         <oasis:entry colname="col18">2.17</oasis:entry>
         <oasis:entry colname="col19">2.16</oasis:entry>
         <oasis:entry colname="col20">2.13</oasis:entry>
         <oasis:entry colname="col21">2.12</oasis:entry>
         <oasis:entry colname="col22">2.07</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">upper_bound</oasis:entry>
         <oasis:entry colname="col2">1.65</oasis:entry>
         <oasis:entry colname="col3">2.19</oasis:entry>
         <oasis:entry colname="col4">2.26</oasis:entry>
         <oasis:entry colname="col5">2.27</oasis:entry>
         <oasis:entry colname="col6">2.27</oasis:entry>
         <oasis:entry colname="col7">2.26</oasis:entry>
         <oasis:entry colname="col8">2.27</oasis:entry>
         <oasis:entry colname="col9">2.27</oasis:entry>
         <oasis:entry colname="col10">2.28</oasis:entry>
         <oasis:entry colname="col11">2.27</oasis:entry>
         <oasis:entry colname="col12">2.26</oasis:entry>
         <oasis:entry colname="col13">2.26</oasis:entry>
         <oasis:entry colname="col14">2.27</oasis:entry>
         <oasis:entry colname="col15">2.27</oasis:entry>
         <oasis:entry colname="col16">2.28</oasis:entry>
         <oasis:entry colname="col17">2.27</oasis:entry>
         <oasis:entry colname="col18">2.27</oasis:entry>
         <oasis:entry colname="col19">2.28</oasis:entry>
         <oasis:entry colname="col20">2.28</oasis:entry>
         <oasis:entry colname="col21">2.28</oasis:entry>
         <oasis:entry colname="col22">2.27</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

</app>

<app id="App1.Ch1.S4">
  <label>Appendix D</label><title>Nomenclature</title>
      <p id="d1e14458"><table-wrap id="Taba" position="anchor"><oasis:table><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M453" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Number of wind turbines</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M454" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Time step duration</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M455" display="inline"><mml:mi>H</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Horizon length</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M456" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Wind direction</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M457" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Wind speed</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M458" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Observed wind direction</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M459" display="inline"><mml:mrow><mml:msubsup><mml:mi>V</mml:mi><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Observed wind speed</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M460" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Local wind speed</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M461" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Absolute orientation</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M462" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">α</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Yaw angle</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M463" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Yaw angle computation function</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M464" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Yaw setting</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M465" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>control</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Absolute orientation update function</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M466" display="inline"><mml:mi mathvariant="normal">Φ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Theoretical power output function</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M467" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>power</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Power output function</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M468" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Controller state</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M469" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Wind direction noise</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M470" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Wind speed noise</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M471" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>simulation</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Local velocities computation function</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M472" display="inline"><mml:mrow><mml:msubsup><mml:mi>P</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Turbine power output</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M473" display="inline"><mml:mi mathvariant="italic">π</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Control policy</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M474" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">All turbine yaw settings</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M475" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>obj</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Controller objective function</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap></p>
</app>

<app id="App1.Ch1.S5">
  <label>Appendix E</label><title>Acronyms</title>
      <p id="d1e14906"><table-wrap id="Tabb" position="anchor"><oasis:table><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">FLORIS</oasis:entry>
         <oasis:entry colname="col2">FLOw Redirection and Induction in Steady State</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GS</oasis:entry>
         <oasis:entry colname="col2">Gauss–Seidel</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">IEA</oasis:entry>
         <oasis:entry colname="col2">International Energy Agency</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">LESs</oasis:entry>
         <oasis:entry colname="col2">large-eddy simulations</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">LUT</oasis:entry>
         <oasis:entry colname="col2">lookup table</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">ML</oasis:entry>
         <oasis:entry colname="col2">machine learning</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">MPC</oasis:entry>
         <oasis:entry colname="col2">model predictive control</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">MW</oasis:entry>
         <oasis:entry colname="col2">megawatts</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">RL</oasis:entry>
         <oasis:entry colname="col2">reinforcement learning</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">WFFC</oasis:entry>
         <oasis:entry colname="col2">wind farm flow control</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap></p>
</app>
  </app-group><notes notes-type="codeavailability"><title>Code availability</title>

      <p id="d1e15014">The code related to the simulation is open-source and is publicly accessible at <uri>https://github.com/NREL/floris.git</uri> (NREL, 2021). The code related to the controllers is not publicly accessible as it is the property of TotalEnergies OneTech. For any details or questions, please write to elie.kadoche@totalenergies.com.</p>
  </notes><notes notes-type="dataavailability"><title>Data availability</title>

      <p id="d1e15023">The farm and turbine data are publicly accessible at <uri>https://github.com/NREL/floris.git</uri> (NREL, 2021). The wind data used in this paper are fully synthetic. The whole generation process is detailed in Sect. 4.1. The parameters of the generated wind data time series are given in Sect. 4.2 and 4.3.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d1e15032">EK contributed to the original idea of the heuristic, implemented the codes, conducted all the simulations, and wrote most of the paper. PB, FC, PC, and DE contributed to the writing and review of the paper.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d1e15039">The contact author has declared that none of the authors has any competing interests.</p>
  </notes><notes notes-type="disclaimer"><title>Disclaimer</title>

      <p id="d1e15045">Publisher’s note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. While Copernicus Publications makes every effort to include appropriate place names, the final responsibility lies with the authors.</p>
  </notes><ack><title>Acknowledgements</title><p id="d1e15051">The authors are grateful for the support of the R&amp;D Wind program of TotalEnergies OneTech, especially Cédric Eneau for his support.</p></ack><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d1e15056">This paper was edited by Johan Meyers and reviewed by two anonymous referees.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Bastankhah and Porté-Agel(2016)</label><mixed-citation>Bastankhah, M. and Porté-Agel, F.: Experimental and theoretical study of wind turbine wakes in yawed conditions, J. Fluid Mech., 806, 506–541, <ext-link xlink:href="https://doi.org/10.1017/jfm.2016.595" ext-link-type="DOI">10.1017/jfm.2016.595</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Boersma et al.(2017)Boersma, Doekemeijer, Gebraad, Fleming, Annoni, Scholbrock, Frederik, and van Wingerden</label><mixed-citation>Boersma, S., Doekemeijer, B. M., Gebraad, P. M. O., Fleming, P. A., Annoni, J., Scholbrock, A. K., Frederik, J. A., and van Wingerden, J.: A tutorial on control-oriented modeling and control of wind farms, in: 2017 American Control Conference (ACC), 18 pp., <ext-link xlink:href="https://doi.org/10.23919/ACC.2017.7962923" ext-link-type="DOI">10.23919/ACC.2017.7962923</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Chu and Majumdar(2012)</label><mixed-citation>Chu, S. and Majumdar, A.: Opportunities and challenges for a sustainable energy future, Nature, 488, 294–303, <ext-link xlink:href="https://doi.org/10.1038/nature11475" ext-link-type="DOI">10.1038/nature11475</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Crespo and Hernández(1996)</label><mixed-citation>Crespo, A. and Hernández, J.: Turbulence characteristics in wind-turbine wakes, J. Wind Eng. Ind. Aerod., 61, 71–85, <ext-link xlink:href="https://doi.org/10.1016/0167-6105(95)00033-X" ext-link-type="DOI">10.1016/0167-6105(95)00033-X</ext-link>, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Dallas et al.(2024)Dallas, Stock, and Hart</label><mixed-citation>Dallas, S., Stock, A., and Hart, E.: Control-oriented modelling of wind direction variability, Wind Energ. Sci., 9, 841–867, <ext-link xlink:href="https://doi.org/10.5194/wes-9-841-2024" ext-link-type="DOI">10.5194/wes-9-841-2024</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Fleming et al.(2017)Fleming, Annoni, Shah, Wang, Ananthan, Zhang, Hutchings, Wang, Chen, and Chen</label><mixed-citation>Fleming, P., Annoni, J., Shah, J. J., Wang, L., Ananthan, S., Zhang, Z., Hutchings, K., Wang, P., Chen, W., and Chen, L.: Field test of wake steering at an offshore wind farm, Wind Energ. Sci., 2, 229–239, <ext-link xlink:href="https://doi.org/10.5194/wes-2-229-2017" ext-link-type="DOI">10.5194/wes-2-229-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Fleming et al.(2022)Fleming, Stanley, Bay, King, Simley, Doekemeijer, and Mudafort</label><mixed-citation>Fleming, P. A., Stanley, A. P. J., Bay, C. J., King, J., Simley, E., Doekemeijer, B. M., and Mudafort, R.: Serial-Refine Method for Fast Wake-Steering Yaw Optimization, J. Phys. Conf. Ser., 2265, 032109, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2265/3/032109" ext-link-type="DOI">10.1088/1742-6596/2265/3/032109</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Gaertner et al.(2020)Gaertner, Rinker, Sethuraman, Zahle, Anderson, Barter, Abbas, Meng, Bortolotti, Skrzypinski, Scott, Feil, Bredmose, Dykes, Shields, Allen, and Viselli</label><mixed-citation>Gaertner, E., Rinker, J., Sethuraman, L., Zahle, F., Anderson, B., Barter, G. E., Abbas, N. J., Meng, F., Bortolotti, P., Skrzypinski, W., Scott, G. N., Feil, R., Bredmose, H., Dykes, K., Shields, M., Allen, C., and Viselli, A.: IEA Wind TCP Task 37: Definition of the IEA 15-Megawatt Offshore Reference Wind Turbine, Technical Report, <ext-link xlink:href="https://doi.org/10.2172/1603478" ext-link-type="DOI">10.2172/1603478</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Hure et al.(2015)Hure, Turnar, Vašak, and Benčić</label><mixed-citation>Hure, N., Turnar, R., Vašak, M., and Benčić, G.: Optimal wind turbine yaw control supported with very short-term wind predictions, in: 2015 IEEE International Conference on Industrial Technology (ICIT), Seville, Spain, 17–19 March 2015, 385–391, <ext-link xlink:href="https://doi.org/10.1109/ICIT.2015.7125129" ext-link-type="DOI">10.1109/ICIT.2015.7125129</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Janssens and Meyers(2024)</label><mixed-citation>Janssens, N. and Meyers, J.: Towards real-time optimal control of wind farms using large-eddy simulations, Wind Energ. Sci., 9, 65–95, <ext-link xlink:href="https://doi.org/10.5194/wes-9-65-2024" ext-link-type="DOI">10.5194/wes-9-65-2024</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Kadoche et al.(2023)Kadoche, Gourvénec, Pallud, and Levent</label><mixed-citation>Kadoche, E., Gourvénec, S., Pallud, M., and Levent, T.: MARLYC: Multi-Agent Reinforcement Learning Yaw Control, Renew. Energ., 217, 119129, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2023.119129" ext-link-type="DOI">10.1016/j.renene.2023.119129</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Kanev(2020a)</label><mixed-citation>Kanev, S.: Dynamic wake steering and its impact on wind farm power production and yaw actuator duty, Renew. Energ., 146, 9–15, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2019.06.122" ext-link-type="DOI">10.1016/j.renene.2019.06.122</ext-link>, 2020a.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Kanev(2020b)</label><mixed-citation>Kanev, S.: Dynamic wake steering and its impact on wind farm power production and yaw actuator duty, Renew. Energ., 146, 9–15, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2019.06.122" ext-link-type="DOI">10.1016/j.renene.2019.06.122</ext-link>, 2020b.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>King et al.(2021)King, Fleming, King, Martínez-Tossas, Bay, Mudafort, and Simley</label><mixed-citation>King, J., Fleming, P., King, R., Martínez-Tossas, L. A., Bay, C. J., Mudafort, R., and Simley, E.: Control-oriented model for secondary effects of wake steering, Wind Energ. Sci., 6, 701–714, <ext-link xlink:href="https://doi.org/10.5194/wes-6-701-2021" ext-link-type="DOI">10.5194/wes-6-701-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Liew et al.(2023)Liew, Göçmen, Lio, and Larsen</label><mixed-citation>Liew, J., Göçmen, T., Lio, A. W. H., and Larsen, G. Chr.: Extending the dynamic wake meandering model in HAWC2Farm: a comparison with field measurements at the Lillgrund wind farm, Wind Energ. Sci., 8, 1387–1402, <ext-link xlink:href="https://doi.org/10.5194/wes-8-1387-2023" ext-link-type="DOI">10.5194/wes-8-1387-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Meyers et al.(2022)Meyers, Bottasso, Dykes, Fleming, Gebraad, Giebel, Göçmen, and van Wingerden</label><mixed-citation>Meyers, J., Bottasso, C., Dykes, K., Fleming, P., Gebraad, P., Giebel, G., Göçmen, T., and van Wingerden, J.-W.: Wind farm flow control: prospects and challenges, Wind Energ. Sci., 7, 2271–2306, <ext-link xlink:href="https://doi.org/10.5194/wes-7-2271-2022" ext-link-type="DOI">10.5194/wes-7-2271-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Niayifar and Porté-Agel(2016)</label><mixed-citation>Niayifar, A. and Porté-Agel, F.: Analytical Modeling of Wind Farms: A New Approach for Power Prediction, Energies, 9, 741, <ext-link xlink:href="https://doi.org/10.3390/en9090741" ext-link-type="DOI">10.3390/en9090741</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>NREL(2021)</label><mixed-citation>NREL: FLORIS. Version 3.4.1, GitHub [code and data set], <uri>https://github.com/NREL/floris</uri> (last access: 4 October 2023), 2021.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Saenz-Aguirre et al.(2019)Saenz-Aguirre, Zulueta, Fernandez-Gamiz, Lozano, and Lopez-Guede</label><mixed-citation>Saenz-Aguirre, A., Zulueta, E., Fernandez-Gamiz, U., Lozano, J., and Lopez-Guede, J. M.: Artificial Neural Network Based Reinforcement Learning for Wind Turbine Yaw Control, Energies, 12, 436, <ext-link xlink:href="https://doi.org/10.3390/en12030436" ext-link-type="DOI">10.3390/en12030436</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Saenz-Aguirre et al.(2020)Saenz-Aguirre, Zulueta, Fernandez-Gamiz, Ulazia, and Teso-Fz-Betono</label><mixed-citation>Saenz-Aguirre, A., Zulueta, E., Fernandez-Gamiz, U., Ulazia, A., and Teso-Fz-Betono, D.: Performance enhancement of the artificial neural network–based reinforcement learning for wind turbine yaw control, Wind Energy, 23, 676–690, <ext-link xlink:href="https://doi.org/10.1002/we.2451" ext-link-type="DOI">10.1002/we.2451</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Siemens Gamesa Renewable Energy(2019)</label><mixed-citation>Siemens Gamesa Renewable Energy: Siemens Gamesa now able to actively dictate wind flow at offshore wind locations, <uri>https://www.siemensgamesa.com/en-int/newsroom/2019/11/191126-siemens-gamesa-wake-adapt-en</uri> (last access: 15 May 2023), 2019.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Simley et al.(2021)Simley, Fleming, King, and Sinner</label><mixed-citation>Simley, E., Fleming, P., King, J., and Sinner, M.: Wake Steering Wind Farm Control With Preview Wind Direction Information: Preprint, <uri>https://www.osti.gov/biblio/1778702</uri> (last access: 4 January 2021), 2021.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Song et al.(2018)Song, Yang, Fan, Liu, Liu, Chen, and Joo</label><mixed-citation>Song, D., Yang, J., Fan, X., Liu, Y., Liu, A., Chen, G., and Joo, Y. H.: Maximum power extraction for wind turbines through a novel yaw control solution using predicted wind directions, Energ. Convers. Manage., 157, 587–599, <ext-link xlink:href="https://doi.org/10.1016/j.enconman.2017.12.019" ext-link-type="DOI">10.1016/j.enconman.2017.12.019</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>van Doorn et al.(2000)van Doorn, Dhruva, Sreenivasan, and Cassella</label><mixed-citation>van Doorn, E., Dhruva, B., Sreenivasan, K. R., and Cassella, V.: Statistics of wind direction and its increments, Phys. Fluids, 12, 1529–1534, <ext-link xlink:href="https://doi.org/10.1063/1.870401" ext-link-type="DOI">10.1063/1.870401</ext-link>, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>von Brandis et al.(2023)von Brandis, Centurelli, Schmidt, Vollmer, Djath, and Dörenkämper</label><mixed-citation>von Brandis, A., Centurelli, G., Schmidt, J., Vollmer, L., Djath, B., and Dörenkämper, M.: An investigation of spatial wind direction variability and its consideration in engineering models, Wind Energ. Sci., 8, 589–606, <ext-link xlink:href="https://doi.org/10.5194/wes-8-589-2023" ext-link-type="DOI">10.5194/wes-8-589-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Yang et al.(2021)Yang, Fang, Song, Su, Yang, Huang, and Joo</label><mixed-citation>Yang, J., Fang, L., Song, D., Su, M., Yang, X., Huang, L., and Joo, Y. H.: Review of control strategy of large horizontal-axis wind turbines yaw system, Wind Energy, 24, 97–115, <ext-link xlink:href="https://doi.org/10.1002/we.2564" ext-link-type="DOI">10.1002/we.2564</ext-link>, 2021.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>On the importance of wind predictions in wake steering optimization</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Bastankhah and
Porté-Agel(2016)</label><mixed-citation>
      
Bastankhah, M. and Porté-Agel, F.: Experimental and theoretical study of
wind turbine wakes in yawed conditions, J. Fluid Mech., 806,
506–541, <a href="https://doi.org/10.1017/jfm.2016.595" target="_blank">https://doi.org/10.1017/jfm.2016.595</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Boersma et al.(2017)Boersma, Doekemeijer, Gebraad, Fleming,
Annoni, Scholbrock, Frederik, and van
Wingerden</label><mixed-citation>
      
Boersma, S., Doekemeijer, B. M., Gebraad, P. M. O., Fleming, P. A.,
Annoni, J., Scholbrock, A. K., Frederik, J. A., and van Wingerden,
J.: A tutorial on control-oriented modeling and control of wind farms, in:
2017 American Control Conference (ACC), 18 pp.,
<a href="https://doi.org/10.23919/ACC.2017.7962923" target="_blank">https://doi.org/10.23919/ACC.2017.7962923</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Chu and
Majumdar(2012)</label><mixed-citation>
      
Chu, S. and Majumdar, A.: Opportunities and challenges for a sustainable energy
future, Nature, 488, 294–303, <a href="https://doi.org/10.1038/nature11475" target="_blank">https://doi.org/10.1038/nature11475</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Crespo and
Hernández(1996)</label><mixed-citation>
      
Crespo, A. and Hernández, J.: Turbulence characteristics in wind-turbine
wakes, J. Wind Eng. Ind. Aerod., 61, 71–85,
<a href="https://doi.org/10.1016/0167-6105(95)00033-X" target="_blank">https://doi.org/10.1016/0167-6105(95)00033-X</a>, 1996.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Dallas et al.(2024)Dallas, Stock, and
Hart</label><mixed-citation>
      
Dallas, S., Stock, A., and Hart, E.: Control-oriented modelling of wind direction variability, Wind Energ. Sci., 9, 841–867, <a href="https://doi.org/10.5194/wes-9-841-2024" target="_blank">https://doi.org/10.5194/wes-9-841-2024</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Fleming et al.(2017)Fleming, Annoni, Shah, Wang, Ananthan, Zhang,
Hutchings, Wang, Chen, and
Chen</label><mixed-citation>
      
Fleming, P., Annoni, J., Shah, J. J., Wang, L., Ananthan, S., Zhang, Z., Hutchings, K., Wang, P., Chen, W., and Chen, L.: Field test of wake steering at an offshore wind farm, Wind Energ. Sci., 2, 229–239, <a href="https://doi.org/10.5194/wes-2-229-2017" target="_blank">https://doi.org/10.5194/wes-2-229-2017</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Fleming et al.(2022)Fleming, Stanley, Bay, King, Simley, Doekemeijer,
and Mudafort</label><mixed-citation>
      
Fleming, P. A., Stanley, A. P. J., Bay, C. J., King, J., Simley, E.,
Doekemeijer, B. M., and Mudafort, R.: Serial-Refine Method for Fast
Wake-Steering Yaw Optimization, J. Phys. Conf. Ser., 2265,
032109, <a href="https://doi.org/10.1088/1742-6596/2265/3/032109" target="_blank">https://doi.org/10.1088/1742-6596/2265/3/032109</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Gaertner et al.(2020)Gaertner, Rinker, Sethuraman, Zahle, Anderson,
Barter, Abbas, Meng, Bortolotti, Skrzypinski, Scott, Feil, Bredmose, Dykes,
Shields, Allen, and
Viselli</label><mixed-citation>
      
Gaertner, E., Rinker, J., Sethuraman, L., Zahle, F., Anderson, B., Barter,
G. E., Abbas, N. J., Meng, F., Bortolotti, P., Skrzypinski, W., Scott, G. N.,
Feil, R., Bredmose, H., Dykes, K., Shields, M., Allen, C., and Viselli, A.:
IEA Wind TCP Task 37: Definition of the IEA 15-Megawatt Offshore
Reference Wind Turbine, Technical Report, <a href="https://doi.org/10.2172/1603478" target="_blank">https://doi.org/10.2172/1603478</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Hure et al.(2015)Hure, Turnar, Vašak, and
Benčić</label><mixed-citation>
      
Hure, N., Turnar, R., Vašak, M., and Benčić, G.: Optimal wind turbine yaw
control supported with very short-term wind predictions, in: 2015 IEEE
International Conference on Industrial Technology (ICIT), Seville, Spain, 17–19 March 2015, 385–391,
<a href="https://doi.org/10.1109/ICIT.2015.7125129" target="_blank">https://doi.org/10.1109/ICIT.2015.7125129</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Janssens and
Meyers(2024)</label><mixed-citation>
      
Janssens, N. and Meyers, J.: Towards real-time optimal control of wind farms using large-eddy simulations, Wind Energ. Sci., 9, 65–95, <a href="https://doi.org/10.5194/wes-9-65-2024" target="_blank">https://doi.org/10.5194/wes-9-65-2024</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Kadoche et al.(2023)Kadoche, Gourvénec, Pallud, and
Levent</label><mixed-citation>
      
Kadoche, E., Gourvénec, S., Pallud, M., and Levent, T.: MARLYC: Multi-Agent
Reinforcement Learning Yaw Control, Renew. Energ., 217, 119129,
<a href="https://doi.org/10.1016/j.renene.2023.119129" target="_blank">https://doi.org/10.1016/j.renene.2023.119129</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Kanev(2020a)</label><mixed-citation>
      
Kanev, S.: Dynamic wake steering and its impact on wind farm power production
and yaw actuator duty, Renew. Energ., 146, 9–15,
<a href="https://doi.org/10.1016/j.renene.2019.06.122" target="_blank">https://doi.org/10.1016/j.renene.2019.06.122</a>, 2020a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Kanev(2020b)</label><mixed-citation>
      
Kanev, S.: Dynamic wake steering and its impact on wind farm power production
and yaw actuator duty, Renew. Energ., 146, 9–15,
<a href="https://doi.org/10.1016/j.renene.2019.06.122" target="_blank">https://doi.org/10.1016/j.renene.2019.06.122</a>, 2020b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>King et al.(2021)King, Fleming, King, Martínez-Tossas, Bay,
Mudafort, and
Simley</label><mixed-citation>
      
King, J., Fleming, P., King, R., Martínez-Tossas, L. A., Bay, C. J., Mudafort, R., and Simley, E.: Control-oriented model for secondary effects of wake steering, Wind Energ. Sci., 6, 701–714, <a href="https://doi.org/10.5194/wes-6-701-2021" target="_blank">https://doi.org/10.5194/wes-6-701-2021</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Liew et al.(2023)Liew, Göçmen, Lio, and Larsen</label><mixed-citation>
      
Liew, J., Göçmen, T., Lio, A. W. H., and Larsen, G. Chr.: Extending the dynamic wake meandering model in HAWC2Farm: a comparison with field measurements at the Lillgrund wind farm, Wind Energ. Sci., 8, 1387–1402, <a href="https://doi.org/10.5194/wes-8-1387-2023" target="_blank">https://doi.org/10.5194/wes-8-1387-2023</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Meyers et al.(2022)Meyers, Bottasso, Dykes, Fleming, Gebraad, Giebel,
Göçmen, and van
Wingerden</label><mixed-citation>
      
Meyers, J., Bottasso, C., Dykes, K., Fleming, P., Gebraad, P., Giebel, G., Göçmen, T., and van Wingerden, J.-W.: Wind farm flow control: prospects and challenges, Wind Energ. Sci., 7, 2271–2306, <a href="https://doi.org/10.5194/wes-7-2271-2022" target="_blank">https://doi.org/10.5194/wes-7-2271-2022</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Niayifar and
Porté-Agel(2016)</label><mixed-citation>
      
Niayifar, A. and Porté-Agel, F.: Analytical Modeling of Wind Farms: A New
Approach for Power Prediction, Energies, 9, 741, <a href="https://doi.org/10.3390/en9090741" target="_blank">https://doi.org/10.3390/en9090741</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>NREL(2021)</label><mixed-citation>
      
NREL: FLORIS. Version 3.4.1, GitHub [code and data set], <a href="https://github.com/NREL/floris" target="_blank"/> (last access: 4 October 2023),
2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Saenz-Aguirre et al.(2019)Saenz-Aguirre, Zulueta, Fernandez-Gamiz,
Lozano, and
Lopez-Guede</label><mixed-citation>
      
Saenz-Aguirre, A., Zulueta, E., Fernandez-Gamiz, U., Lozano, J., and
Lopez-Guede, J. M.: Artificial Neural Network Based Reinforcement Learning
for Wind Turbine Yaw Control, Energies, 12, 436, <a href="https://doi.org/10.3390/en12030436" target="_blank">https://doi.org/10.3390/en12030436</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Saenz-Aguirre et al.(2020)Saenz-Aguirre, Zulueta, Fernandez-Gamiz,
Ulazia, and
Teso-Fz-Betono</label><mixed-citation>
      
Saenz-Aguirre, A., Zulueta, E., Fernandez-Gamiz, U., Ulazia, A., and
Teso-Fz-Betono, D.: Performance enhancement of the artificial neural
network–based reinforcement learning for wind turbine yaw control, Wind
Energy, 23, 676–690, <a href="https://doi.org/10.1002/we.2451" target="_blank">https://doi.org/10.1002/we.2451</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Siemens Gamesa Renewable Energy(2019)</label><mixed-citation>
      
Siemens Gamesa Renewable Energy: Siemens Gamesa now able to actively dictate
wind flow at offshore wind locations,
<a href="https://www.siemensgamesa.com/en-int/newsroom/2019/11/191126-siemens-gamesa-wake-adapt-en" target="_blank"/>
(last access: 15 May 2023), 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Simley et al.(2021)Simley, Fleming, King, and
Sinner</label><mixed-citation>
      
Simley, E., Fleming, P., King, J., and Sinner, M.: Wake Steering Wind Farm
Control With Preview Wind Direction Information: Preprint,
<a href="https://www.osti.gov/biblio/1778702" target="_blank"/> (last access: 4 January 2021), 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Song et al.(2018)Song, Yang, Fan, Liu, Liu, Chen, and
Joo</label><mixed-citation>
      
Song, D., Yang, J., Fan, X., Liu, Y., Liu, A., Chen, G., and Joo, Y. H.:
Maximum power extraction for wind turbines through a novel yaw control
solution using predicted wind directions, Energ. Convers. Manage.,
157, 587–599, <a href="https://doi.org/10.1016/j.enconman.2017.12.019" target="_blank">https://doi.org/10.1016/j.enconman.2017.12.019</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>van Doorn et al.(2000)van Doorn, Dhruva, Sreenivasan, and
Cassella</label><mixed-citation>
      
van Doorn, E., Dhruva, B., Sreenivasan, K. R., and Cassella, V.: Statistics of
wind direction and its increments, Phys. Fluids, 12, 1529–1534,
<a href="https://doi.org/10.1063/1.870401" target="_blank">https://doi.org/10.1063/1.870401</a>, 2000.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>von Brandis et al.(2023)von Brandis, Centurelli, Schmidt, Vollmer,
Djath, and
Dörenkämper</label><mixed-citation>
      
von Brandis, A., Centurelli, G., Schmidt, J., Vollmer, L., Djath, B., and Dörenkämper, M.: An investigation of spatial wind direction variability and its consideration in engineering models, Wind Energ. Sci., 8, 589–606, <a href="https://doi.org/10.5194/wes-8-589-2023" target="_blank">https://doi.org/10.5194/wes-8-589-2023</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Yang et al.(2021)Yang, Fang, Song, Su, Yang, Huang, and
Joo</label><mixed-citation>
      
Yang, J., Fang, L., Song, D., Su, M., Yang, X., Huang, L., and Joo, Y. H.:
Review of control strategy of large horizontal-axis wind turbines yaw system,
Wind Energy, 24, 97–115, <a href="https://doi.org/10.1002/we.2564" target="_blank">https://doi.org/10.1002/we.2564</a>, 2021.

    </mixed-citation></ref-html>--></article>
