the Creative Commons Attribution 4.0 License.
the Creative Commons Attribution 4.0 License.
On the importance of wind predictions in wake steering optimization
Elie Kadoche
Pascal Bianchi
Florence Carton
Philippe Ciblat
Damien Ernst
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 steadystate 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 steadystate 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.
 Article
(3695 KB)  Fulltext XML
 BibTeX
 EndNote
As global energy consumption increases, there is a strong willingness and necessity to decarbonize electricity production. Hence, renewable energies are becoming increasingly important (Chu and Majumdar, 2012). 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.
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 steadystate models and artificial wind data.
In wind farm optimization, the use of lowfidelity models (usually based on steadystate models) is favored over higherfidelity models (usually based on computational fluid dynamics and realtime 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 Janssens and Meyers (2024) explore realtime optimal control of wind farms using largeeddy simulations (LESs). However, this research area is still in the early stages and for largescale wind farm optimization, steadystate models are still widely used.
In wind farm flow control (WFFC), developing effective closedloop 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. Modelbased, closedloop 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, opensource, lowfidelity simulators.
1.1 Wake effect
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 (Yang et al., 2021).
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.
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 (Boersma et al., 2017). 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 (Meyers et al., 2022). A simple example of a twoturbine wind farm is given in Fig. 1.
Current implemented wake steering strategies usually involve lookup tables (LUTs) (Fleming et al., 2017; Siemens Gamesa Renewable Energy, 2019). 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 steadystate 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.
1.2 Wind direction dynamics
The study of wind direction dynamics is gaining interest within the research community. Wind direction dynamics can be broken down into largescale drifts and smallscale fluctuations (van Doorn et al., 2000) 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 (Dallas et al., 2024).
As the farm operates, the wind direction varies in both time (at the farm level) and space (at the turbine level). The study by von Brandis et al. (2023) 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 steadystate 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.
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 (von Brandis et al., 2023; van Doorn et al., 2000; Dallas et al., 2024), 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 longterm operation.
1.3 Related works
As tracking wind direction is essential for wind turbines, the literature is rich in studies seeking better wind direction tracking mechanisms. Song et al. (2018) developed a model predictive control (MPC)based controller on a finite control set to track the wind directions. Hure et al. (2015) designed a yaw controller based on very shortterm wind predictions. But performing WFFC and wake steering is a more complex optimization problem.
LUTs can be adapted for dynamic control with different methods. Usually, a lowpass 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 (Kanev, 2020a). Simley et al. (2021) improved a traditional LUT by anticipating the wind direction changes ahead of upstream turbines. Kanev (2020b) performed WFFC with a receding horizon using gradientbased optimization and ran tests in largeeddy 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.
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 SaenzAguirre et al. (2019) and SaenzAguirre et al. (2020), but most of the studies carried out later only consider static or quasistatic wind directions. Some recent works have started to consider timevarying wind directions in WFFC optimization (Kadoche et al., 2023).
1.4 Contributions
The remainder of this paper is structured to mirror the three main contributions. Each contribution forms the basis of an individual section, and Sect. 5 concludes. The contributions and their corresponding sections are as follows.

This work proposes a discretized formalization of the WFFC problem over time as the succession of multiple steadystate 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. 2.

To develop a predictionbased controller, this work presents a reformulation of the instantaneous, steadystate 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. 3.

This work conducts a sensitivity analysis of the wind direction variations and wake steering optimization. It empirically demonstrates the importance of a windpredictionbased control when the magnitude of the wind direction fluctuations becomes large. The new proposed heuristic greatly improves the performance of a traditional steadystate wake steering optimization when the variations of the wind direction are important. Numerical simulations using synthetic wind data are conducted in Sect. 4.
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 N interconnected wind turbines. Over time, each turbine is controlled via its yaw. An episode consists of a succession of H time steps during which the turbines are controlled, with H the horizon length. The transition from a time step t to a time step t+1 corresponds to a specific time window of a constant length of Δt minutes. The environment evolves from one time step t to the next time step t+1 in Δt minutes, with $t\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},H\mathrm{1}\mathit{\}}$.
2.1 Wind data
At a time step t, the exogenous variables are a global incoming wind direction ${K}_{t}\in [\mathrm{0},\mathrm{360}]$ [°] and a global incoming wind speed ${V}_{t}\in [{\mathit{\nu}}_{\text{min}},{\mathit{\nu}}_{\text{max}}]$ [m s^{−1}]. The wind data can be measured or predicted. Then, a controller does not have access to K_{t} and V_{t} directly but to ${K}_{t}^{\prime}$ [°] and ${V}_{t}^{\prime}$ [m s^{−1}], with ${K}_{t}^{\prime}$ a noisy wind direction defined as ${K}_{t}^{\prime}={K}_{t}+{\mathit{\u03f5}}_{K,t}$, and ${V}_{t}^{\prime}$ is a noisy wind speed defined as ${V}_{t}^{\prime}={V}_{t}+{\mathit{\u03f5}}_{V,t}$. The random noises ϵ_{K,t} and ϵ_{V,t} can come from either measurement imprecisions or prediction errors.
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 t, in front of a turbine i, the local wind direction is denoted as ${\mathit{\kappa}}_{t}^{i}$ [°] and the local wind speed is denoted as ${\mathit{\nu}}_{t}^{i}$ [m s^{−1}]. 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 lowfidelity, steadystate simulator: FLOw Redirection and Induction in Steady State (FLORIS) NREL (2021). The local wind directions stay equal to the global wind direction for any time step, i.e., ${\mathit{\kappa}}_{t}^{i}={K}_{t}\phantom{\rule{0.33em}{0ex}}\forall \phantom{\rule{0.33em}{0ex}}i\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},N\mathrm{1}\mathit{\}}$, as is common for lowfidelity, steadystate simulations.
2.2 Turbines
At a time step t, a turbine i is characterized by its absolute angular position ${\mathit{\beta}}_{t}^{i}\in [\mathrm{0},\mathrm{360}]$ [°] and its relative orientation or yaw (often used to compute the power output) ${\mathit{\alpha}}_{t}^{i}={f}_{\text{yaw}}({K}_{t},{\mathit{\beta}}_{t}^{i})\in [\mathrm{180},\mathrm{180}]$ [°] such that
Adding and subtracting by 180 ensures that the yaw stays in the range $[\mathrm{180},\mathrm{180}]$. As illustrated in Fig. 2, the yaw corresponds to the rotational movement going from the absolute angular position ${\mathit{\beta}}_{t}^{i}$ to the wind direction K_{t} such that ${\mathit{\beta}}_{t}^{i}+{\mathit{\alpha}}_{t}^{i}\phantom{\rule{0.25em}{0ex}}\mathrm{mod}\phantom{\rule{0.25em}{0ex}}\mathrm{360}={K}_{t}$. 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.
At a time step t, the yaw setting ${u}_{t}^{i}\in [{u}_{\text{min}},{u}_{\text{max}}]$ [°] of a turbine i corresponds to the rotational movement of the turbine between time steps t and t+1. 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. 2, the setting is used to update the orientation of the turbine ${\mathit{\beta}}_{t+\mathrm{1}}^{i}={f}_{\text{control}}({\mathit{\beta}}_{t}^{i},{u}_{t}^{i})$ such that
2.3 Power
The power curve Φ of a turbine gives the theoretical power output (megawatts, MW; y axis) of the machine as a function of the wind speed ν [m s^{−1}] (x axis), considering no yaw misalignment, such that
with ρ [kg m^{−3}] the air density, A [m^{2}] the rotor blade area, and C_{P} the power coefficient of the turbine. The theoretical power output is strictly positive if the wind speed is within certain bounds [ν_{cutin},ν_{cutout}] [m s^{−1}].
At a time step t, the power output of a turbine i considering yaw misalignment ${P}_{t}^{i}={f}_{\text{power}}({\mathit{\nu}}_{t}^{i},{\mathit{\alpha}}_{t}^{i})$ [MW] is computed from the power curve and the yaw angle such that
with p a parameter accounting for power losses due to misalignment and [α_{cutin},α_{cutout}] [°] 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.
2.4 Policy
A policy π is a function returning the yaw settings $({u}_{t}^{\mathrm{0}},{u}_{t}^{\mathrm{1}},\mathrm{\dots},{u}_{t}^{N\mathrm{1}})$ of all the turbines at a time step t given a state s_{t}. Each wind farm controller is associated with a specific policy. In this work, the state s_{t} may be composed of

the current orientations of the turbines $\mathit{\{}{\mathit{\beta}}_{t}^{i}{\mathit{\}}}_{i\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},N\mathrm{1}\mathit{\}}}$,

an observation of the current wind $({K}_{t}^{\prime},{V}_{t}^{\prime})$,

a prediction of the wind at time step t+1 $({K}_{t+\mathrm{1}}^{\prime},{V}_{t+\mathrm{1}}^{\prime})$,

a prediction of the wind at time step t+2 $({K}_{t+\mathrm{2}}^{\prime},{V}_{t+\mathrm{2}}^{\prime})$, and

until time step t+L, with L the prediction horizon.
Therefore, the general form of a state is ${s}_{t}=\mathit{\{}{K}_{t}^{\prime},{V}_{t}^{\prime},{K}_{t+\mathrm{1}}^{\prime},{V}_{t+\mathrm{1}}^{\prime},\mathrm{\dots},{K}_{t+L}^{\prime},{V}_{t+L}^{\prime},\mathit{\{}{\mathit{\beta}}_{t}^{i}{\mathit{\}}}_{i\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},N\mathrm{1}\mathit{\}}}\mathit{\}}$. 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 1.
2.5 System evolution
An episode is defined by H 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 1) and the policy is presumed to be stationary (it does not change over time).
The full evolution of an episode is described in Algorithm (1). 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 i at the end of time step t is indexed t+1 (because it has been updated) and it is the one used for the power computation of time step t.
state
control policy
angular positions update
yaw angles computation
local velocities computation
power outputs computation
At a time step t, 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 steadystate simulator ${\mathit{\nu}}_{t}^{i}={f}_{\text{simulation}}^{i}({K}_{t},{V}_{t},\mathit{\{}{\mathit{\alpha}}_{t+\mathrm{1}}^{j}{\mathit{\}}}_{j\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},N\mathrm{1}\mathit{\}}})$, which is used as a substitute for reallife measurements.
The simulation is said to be steadystate 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.
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 ${f}_{\text{control}},{f}_{\text{yaw}},{f}_{\text{simulation}}^{i}$, and f_{power} 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 t, if a controller computes the yaw of a turbine i based on its updated orientation ${\mathit{\beta}}_{t+\mathrm{1}}^{i}$, it would be equal to ${{\mathit{\alpha}}_{t+\mathrm{1}}^{i}}^{\prime}={f}_{\text{yaw}}({K}_{t}^{\prime},{\mathit{\beta}}_{t+\mathrm{1}}^{i})$. Because the observed wind direction ${K}_{t}^{\prime}$ can be different from the true wind direction K_{t}, the yaw ${{\mathit{\alpha}}_{t+\mathrm{1}}^{i}}^{\prime}$ estimated by a controller can be different from its true value ${\mathit{\alpha}}_{t+\mathrm{1}}^{i}$.
2.6 Transition regime
At a time step t, for a turbine i, and due to the steadystate nature of the simulation, the WFFC problem thus formalized considers a single power output ${P}_{t}^{i}$. In reality, during a time step, the wind is timevarying 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 quasiconstant.
The duration of a time step is always considered constant during an episode. At a time step t, when a setting ${u}_{t}^{i}$ is applied to a turbine i, the rotational time T_{r} (minutes) for the turbine to go from its current orientation ${\mathit{\beta}}_{t}^{i}$ to its next orientation ${\mathit{\beta}}_{t+\mathrm{1}}^{i}$ is always considered largely inferior to the duration of the time step, i.e., T_{r}≪Δt for all ${u}_{t}^{i}\in [{u}_{\text{min}},{u}_{\text{max}}]$. 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 [u_{min},u_{max}] need to be consistent with the duration of a time step Δt.
The coherence time T_{c} (minutes) of a wind variable (either the direction or the speed) is the maximum duration during which the variable is quasiconstant. If the coherence time of the wind direction is strictly smaller than the time step duration, a discretized value K_{t} 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., T_{c}=Δt, for both the direction and the speed.
At a time step t, the yaw settings $({u}_{t}^{\mathrm{0}},{u}_{t}^{\mathrm{1}},\mathrm{\dots},{u}_{t}^{N\mathrm{1}})$ are denoted as u_{t}. A controller is defined by its policy π(s_{t}) with the state s_{t} described in Sect. 2.4. 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 t, during the control policy operation of Algorithm (1), each controller computes the yaw settings such that u_{t}=π(s_{t}) by maximizing a specific objective function f_{obj}(s_{t},u_{t}) with regard to the turbine rotational constraints, as defined below.
3.1 Naive controller
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., L=0), as it is only concerned with the current observed wind direction ${K}_{t}^{\prime}$. Therefore, the state s_{t} is reduced to $\mathit{\{}{K}_{t}^{\prime},\mathit{\{}{\mathit{\beta}}_{t}^{i}{\mathit{\}}}_{i\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},N\mathrm{1}\mathit{\}}}\mathit{\}}$. It consists of a greedy control (no wake steering) where the objective function at a time step t minimizes the amplitude of the yaws, i.e.,
At a time step t, the rotational movement required for a turbine i to stay aligned with the observed wind direction is equal to ${f}_{\text{yaw}}({K}_{t}^{\prime},{\mathit{\beta}}_{t}^{i})$. 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 closedform expression for the solution, defined as
3.2 Wake steering
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 predictionbased controller maximizes the instantaneous and future power outputs. At each time step t, 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 A1). A similar approach was first proposed by Fleming et al. (2022) with a serialrefine algorithm.
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 $S=\mathit{\{}{u}_{\text{min}}+l\cdot \frac{{u}_{\text{max}}{u}_{\text{min}}}{{n}_{y}\mathrm{1}}\mathit{\}}$ for all $l\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},{n}_{y}\mathrm{1}\mathit{\}}$, with n_{y} being a precision parameter. Once optimized, the setting of the current turbine is updated, and it goes to the next one.
3.2.1 Instantaneous controller
The instantaneous controller searches for the yaw settings maximizing the immediate power output of the farm. It always runs under no foresight (i.e., L=0), as it performs wake steering for the current observed wind data only. Therefore, the state s_{t} is reduced to $\mathit{\{}{K}_{t}^{\prime},{V}_{t}^{\prime},\mathit{\{}{\mathit{\beta}}_{t}^{i}{\mathit{\}}}_{i\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},N\mathrm{1}\mathit{\}}}\mathit{\}}$. It is a steadystate optimization performed on one time step where the objective function at a time step t is the immediate normalized power output, i.e.,
3.2.2 Predictionbased controller
A traditional predictionbased controller searches for the yaw settings of time steps $t,t+\mathrm{1},\mathrm{\dots},t+L$ that maximize the power output over that horizon. It always runs with foresight (i.e., L⩾1). The corresponding sequential decision problem over a future time window can be stated under a form usually exploited by the MPC community, defined as
The optimization problem thus described multiplies the number of decision variables by L+1. Also, the computation of the local velocities at a given time step depends on all the previous yaw settings. Therefore, the predictionbased decision problem significantly increases the complexity, and because there is no simple solution, this work proposes a reformulation. The objective function given by Eq. (16) can be split between the current time step t and the next ones, from t+1 to t+L, such that
The first term of Eq. (21) 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. 3.2.1. It only depends on the current yaw settings u_{t}. Now, focusing on the second term, the closedform expression of the f_{power} is written, giving
The complexity brought by the predictionbased controller comes from the fact that Eq. (22) depends on the local velocities ${{\mathit{\nu}}_{t+k}^{i}}^{\prime}$ and the updated yaw angles ${{\mathit{\alpha}}_{t+k+\mathrm{1}}^{i}}^{\prime}$ corresponding to the optimized yaw settings of each future time step. To decrease the complexity, this work proposes modifying Eq. (22) in the following way.

Each local velocity ${{\mathit{\nu}}_{t+k}^{i}}^{\prime}$ is replaced by the corresponding predicted global wind speed ${V}_{t+k}^{\prime}$. It reduces the complexity coming from the steadystate 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.

Each updated yaw angle ${{\mathit{\alpha}}_{t+k+\mathrm{1}}^{i}}^{\prime}$ depending on the optimized yaw setting ${u}_{t+k}^{i}$ is replaced by the expected yaw angle ${\widehat{\mathit{\alpha}}}_{t+k+\mathrm{1}}^{i}{}^{\prime}$ if a naive controller was used instead. It reduces the complexity coming from the optimization, as there is a closedfrom expression for the naive controller, as provided by Eq. (10). 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.

The cosine function at power p 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.

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.

For each time step, the overall expression is multiplied by a discounted factor $\mathit{\gamma}\in [\mathrm{0},\mathrm{1}]$. It gives more importance to immediate time steps. It is common practice for modelpredictivebased optimization.
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 N. With such modifications, Eq. (22) becomes a new heuristic ℋ_{t} defined as
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 predictionbased controller can finally be written as
The heuristic is the discounted weighted sum of the future theoretical power outputs. By choosing certain optimized yaw settings u_{t} for the current time step, the heuristic uses a naive controller over a future time horizon of L 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.
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. 3, describing the first term (wake steering optimization) and the second term (heuristic based on a wind tracking control) of Eq. (27).
3.3 Upper bound
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. (6), the variables u_{min} and u_{max} are equal to −180 and 180°, respectively. Between two consecutive time steps, each turbine is assumed to be capable of reaching any orientation.
From a different point of view, the upper bound corresponds to the wake steering instantaneous controller, but for a complete steadystate version of the system evolution presented in Algorithm (1). All time steps are entirely independent from each other, as there are no longer any rotational constraints for the turbines.
The same objective function of the instantaneous controller, presented in Sect. 3.2.1, is used. It always runs under no foresight (i.e., L=0), as it performs wake steering for the current wind data only. Therefore, the state s_{t} is reduced to $\mathit{\{}{K}_{t}^{\prime},{V}_{t}^{\prime},\mathit{\{}{\mathit{\beta}}_{t}^{i}{\mathit{\}}}_{i\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},N\mathrm{1}\mathit{\}}}\mathit{\}}$. 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.
In Sect. 4.1 the process used to generate wind data is described, and in Sect. 4.2 the experiment setting is given. Finally, the results and the empirical conclusions that can be drawn are explained in Sect. 4.3.
4.1 Wind data scenario
The wind data time series are artificially generated with custom Wiener processes. The wind directions $\mathit{\{}{K}_{t}{\mathit{\}}}_{t\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},H+L\mathrm{1}\mathit{\}}}$ are computed with Algorithm (2). The wind speeds $\mathit{\{}{V}_{t}{\mathit{\}}}_{t\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},H+L\mathrm{1}\mathit{\}}}$ are computed with Algorithm (3). To generate the time series, an initial value is cumulatively incremented at each time step by variable m_{t}. Each increment m_{t} is independently sampled from a normal distribution of mean 0 and standard deviation σ_{t} such that
with τ a normalization variable with regard to the number and range of the generated values and ${\mathit{\delta}}_{t}^{X}$ a variation parameter for the wind variable X (either the direction or the speed).
To maintain the wind directions in the range of valid values, i.e., [0,360] [°], the modulo operation is sufficient. To maintain the wind speeds in the range of valid values, i.e., [ν_{min},ν_{max}] [m s^{−1}], a mirrored function as explained in Fig. 4 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.
The variable ${\mathit{\delta}}_{t}^{X}$ defines the level of variation of the wind variable X time series (either the direction or the speed). When equal to 0, the signal is constant. As ${\mathit{\delta}}_{t}^{X}$ increases, the absolute value of the increments increases on average. At each time step, ${\mathit{\delta}}_{t}^{X}$ is sampled from a uniform distribution defined between ${\mathit{\delta}}_{\text{min}}^{X}$ and ${\mathit{\delta}}_{\text{max}}^{X}$. When ${\mathit{\delta}}_{\text{min}}^{X}$ and ${\mathit{\delta}}_{\text{max}}^{X}$ are equal, all increments $\mathit{\{}{m}_{t}{\mathit{\}}}_{t\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},H+L\mathrm{1}\mathit{\}}}$ are independently sampled from the same distribution: the generated time series is stationary with regard to the increments. When ${\mathit{\delta}}_{\text{min}}^{X}<{\mathit{\delta}}_{\text{max}}^{X}$, increments are independently sampled from different distributions: the generated time series is nonstationary with regard to the increments. In Fig. 5 the impact of the ${\mathit{\delta}}_{t}^{K}$ variable is shown for the wind direction.
4.2 Experimental setting
The function ${f}_{\text{simulation}}^{i}({K}_{t},{V}_{t},\mathit{\{}{\mathit{\alpha}}_{t+\mathrm{1}}^{j}{\mathit{\}}}_{j\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},N\mathrm{1}\mathit{\}}})$ computes the local wind speed in front of a turbine i at a time step t given wind data K_{t},V_{t}, and the yaw of each turbine $\mathit{\{}{\mathit{\alpha}}_{t+\mathrm{1}}^{j}{\mathit{\}}}_{j\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},N\mathrm{1}\mathit{\}}}$. This function, introduced in Sect. 2.5, is ensured by the lowfidelity, steadystate simulator FLORIS (NREL, 2021). FLORIS is used with a Gauss curl hybrid wake model. The Gaussian velocity model is implemented based on Bastankhah and PortéAgel (2016) and Niayifar and PortéAgel (2016). To compute the deflection of the wakes depending on the yaws, the models described by Bastankhah and PortéAgel (2016) and King et al. (2021) are used. The turbulence model described by Crespo and Hernández (1996) is used. The optional wake modeling options “secondary steering”, “yaw added recovery”, and “transverse velocities”, provided by FLORIS and giving additional features to the ${f}_{\text{simulation}}^{i}$ function, are enabled.
A wind farm of 34 International Energy Agency (IEA) identical 15 MW (Gaertner et al., 2020) wind turbines is used. It has cutin and cutout speeds of ν_{cutin}=3 m s^{−1} and ν_{cutout}=25 m s^{−1}, respectively. Each wind turbine has a rotor diameter of 242.24 m, i.e., a rotor area of 46 087 m^{2}. The air density is ρ=1.225 kg m^{−3} and the tunable parameter accounting for the power losses due to misalignment is p=1.88. 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. 6.
The limits for the wind speed are ν_{min}=4 m s^{−1} and ν_{max}=10 m s^{−1}. The interval [4,10] m s^{−1} approximately corresponds to the ascending part of the power curve, where wake steering is the most beneficial for the farm. For wind speeds of [10,25] m s^{−1}, 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 [4,10] m s^{−1}.
The horizon size is H=144 and the length of the foresight for the predictionbased controller is L=10. The initial wind values are K_{init}=270° and V_{init}=8 m s^{−1}. The discount factor used for the heuristic ℋ_{t} is γ=0.99. The precision parameter for the GS methods is n_{y}=120, giving the grid search method good precision.
More technical details regarding the simulations and numerical instabilities are given in Appendix B. The time step duration Δt is intentionally undefined, as it will be explained in Sect. 4.3.1. Depending on the time step duration value, different interpretations of the same results will be made. For example, if Δt corresponds to 5 min, then the horizon L=10 means that the predictionbased controller has access to a prediction of the wind of 50 min. In Table 2, a summary of the experimental setting used in this work is given.
4.3 Results
To empirically demonstrate the importance of optimizing yaw control over a longterm 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.
For one episode, the total farm power output of a controller C given by Algorithm (1) is denoted as ${P}_{C}={\sum}_{t=\mathrm{0}}^{H\mathrm{1}}{\sum}_{i=\mathrm{0}}^{N\mathrm{1}}{P}_{t}^{i}$. The metric to benchmark a controller C is the power gain [%] between the total farm power output of C and the total farm power output of the naive controller. The power gain is equal to $\mathrm{100}\cdot \frac{({P}_{C}{P}_{\text{naive}})}{{P}_{\text{naive}}}$.
4.3.1 Perfect predictions
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., ${\mathit{\u03f5}}_{K,t}=\mathrm{0}$ and ${\mathit{\u03f5}}_{V,t}=\mathrm{0}$ for all $t\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},\mathrm{153}\mathit{\}}$. The performance of each controller presented in Sect. 3 is tested for increasing values of ${\mathit{\delta}}_{t}^{K}$.
Numerical simulations are run on 21 different values of ${\mathit{\delta}}_{t}^{K}$, with ${\mathit{\delta}}_{t}^{K}\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{2},\mathrm{\dots},\mathrm{20}\mathit{\}}$. The wind speed is always generated with ${\mathit{\delta}}_{t}^{V}=\mathrm{1}$. 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: ${\mathit{\delta}}_{t}^{K}={\mathit{\delta}}_{\text{min}}^{K}={\mathit{\delta}}_{\text{max}}^{K}$ and ${\mathit{\delta}}_{t}^{V}={\mathit{\delta}}_{\text{min}}^{V}={\mathit{\delta}}_{\text{max}}^{V}$ for all $t\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},\mathrm{153}\mathit{\}}$.
The objective here is to study the impact of the wind direction variations on yaw control. The greater the ${\mathit{\delta}}_{t}^{K}$ 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 ${\mathit{\delta}}_{t}^{K}$ parameter in Eq. (32). To better illustrate the wind direction evolution, the time series ΔK defined as
is used. Each value of ΔK lies in the range [0,180] [°]. To study the magnitude of the variations, the absolute values are taken. Figure 7 illustrates the influence of some ${\mathit{\delta}}_{t}^{K}$ time series on the magnitude of wind direction variations ΔK.
In Fig. 8, the power gains of each controller compared to a naive controller are plotted. The yaw limits u_{min} and α_{cutin} are equal to −15° (a) or −30° (b). And u_{max} and α_{cutout} 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 C in Tables C1 and C2.
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 predictionbased 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 predictionbased 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.
Based on the results given in Fig. 8, several general statements can be drawn. As previously said, the time step duration is intentionally imprecise. The reason is that different values of Δt will lead to different interpretations. The following statement is true for any values of Δt, with respect to the hypotheses of the transition regime, described in Sect. 2.6.

For wind turbines that can rotate from −15 to 15° every Δt minutes, if the wind direction changes by more than 7.34° every Δt minutes, it is important to consider future wind data in a steadystate yaw control optimization.

For wind turbines that can rotate from −30 to 30° every Δt minutes, if the wind direction changes by more than 12.23° every Δt minutes, it is important to consider future wind data in a steadystate yaw control optimization.
4.3.2 Noisy predictions
In the second set of simulations, the robustness to noisy predictions of each controller is tested. The yaw limits are ${u}_{\text{min}}={\mathit{\alpha}}_{\text{cutin}}=\mathrm{15}$° and ${u}_{\text{max}}={\mathit{\alpha}}_{\text{cutout}}=\mathrm{15}$°. The $\mathit{\{}{K}_{t}{\mathit{\}}}_{t\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},\mathrm{153}\mathit{\}}}$ time series are computed with ${\mathit{\delta}}_{\text{min}}^{K}=\mathrm{0}$ and ${\mathit{\delta}}_{\text{max}}^{K}=\mathrm{20}$. The time series $\mathit{\{}{V}_{t}{\mathit{\}}}_{t\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},\mathrm{153}\mathit{\}}}$ are always computed with ${\mathit{\delta}}_{t}^{V}={\mathit{\delta}}_{\text{min}}^{V}={\mathit{\delta}}_{\text{max}}^{V}=\mathrm{1}$. Because ${\mathit{\delta}}_{\text{min}}^{K}\ne {\mathit{\delta}}_{\text{max}}^{K}$, the increments are nonstationary for the wind direction. The corresponding ΔK time series is plotted in Fig. 9.
In Fig. 10, the noise for the wind direction is increasing, i.e., ${\mathit{\u03f5}}_{K,t}\sim U({z}_{K},{z}_{K})$ with ${z}_{K}\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},\mathrm{15}\mathit{\}}$, for each $t\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},\mathrm{153}\mathit{\}}$. The noise for the wind speed is always sampled from the same distribution, i.e., ${\mathit{\u03f5}}_{V,t}\sim U(\mathrm{1},\mathrm{1})$. In Fig. 10, the noise for the wind speed is increasing, i.e., ${\mathit{\u03f5}}_{V,t}\sim u({z}_{V},{z}_{V})$ with ${z}_{V}\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},\mathrm{7}\mathit{\}}$, for each $t\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},\mathrm{153}\mathit{\}}$. The noise for the wind direction is always sampled from the same distribution, i.e., ${\mathit{\u03f5}}_{K,t}\sim U(\mathrm{1},\mathrm{1})$.
Only the noise applied to the wind directions strongly impacts the different policies. The predictionbased 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 predictionbased controller uses more wind data points, it is more robust than the instantaneous controller.
As WFFC is becoming more important to increase the energy production of wind farms, this work studies wake steering as a steadystate optimization problem over time. The yaw control problem is formalized as successive multiple steadystate optimization problems interconnected by the rotational constraints of the turbines and the evolution of the wind. Because the function computing the power outputs is steadystate, only the dynamics of a homogeneous global wind and the rotational constraints of the machines are captured. Lowfidelity, steadystate simulators are used because they are not timeconsuming and they are suitable for optimization. But future works should perform the same studies with continuous and higherfidelity simulators such as HAWC2Farm (Liew et al., 2023), 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.
Traditionally, yaw control is optimized in a steadystate manner. Yaw settings are computed so that they maximize the instantaneous power output of the farm. To optimize wake steering over a longterm 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 steadystate 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 predictionbased controller proposed in this paper has the same number of decision variables as an instantaneous optimization.
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 predictionbased controller greatly improves the performance without increasing complexity. This work shows, for example, that if deploying wind turbines that can rotate from −15 to 15° every Δt minutes, and if the wind direction changes by more than 7.34° every Δt minutes, it is important to consider future wind data in a steadystate 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 predictionbased decision problem.
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 lowpass 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 predictionbased 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.
rotate turbines
order turbines
initialize yaw settings
discretized solution space
fix all other settings
grid search optimization
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 $\mathit{\{}c{x}^{i},c{y}^{i}{\mathit{\}}}_{i\in \mathit{\{}\mathrm{0},\mathrm{1},\mathrm{\dots},N\mathrm{1}\mathit{\}}}$ [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 S is used. Once solved, the setting for turbine k is fixed and optimization is conducted again on turbine k+1. Such an approach gives good results because it exploits the sequential nature of the lowfidelity simulation.
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 t, for a given turbine i, 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.

Round out the power output computed by the simulator.

Take the yaw setting ${u}_{t}^{i}$ maximizing the objective function.

Find all the yaw settings giving a performance close to the maximum.

Among these selected settings, keep the one closest to the setting corresponding to the naive controller.
To compute the solutions of the upperbound controller described in Sect. 3.3, a trick is used. Relaxing the rotational constraints of the turbines, i.e., making u_{min} and u_{max} equal to −180 and 180°, respectively, increases the solution space. With the same precision parameter n_{y}, it reduces the precision of the grid search method. To keep the solution space between u_{min} and u_{max}, and therefore not to alter the precision of the grid search method, the evolution of the system described in Algorithm (1) 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 upperbound controller because good yaw settings are the ones keeping turbines close to the wind direction.
N  Number of wind turbines 
Δt  Time step duration 
H  Horizon length 
K_{t}  Wind direction 
V_{t}  Wind speed 
${K}_{t}^{\prime}$  Observed wind direction 
${V}_{t}^{\prime}$  Observed wind speed 
${\mathit{\nu}}_{t}^{i}$  Local wind speed 
${\mathit{\beta}}_{t}^{i}$  Absolute orientation 
${\mathit{\alpha}}_{t}^{i}$  Yaw angle 
f_{yaw}  Yaw angle computation function 
${u}_{t}^{i}$  Yaw setting 
f_{control}  Absolute orientation update function 
Φ  Theoretical power output function 
f_{power}  Power output function 
s_{t}  Controller state 
ϵ_{K,t}  Wind direction noise 
ϵ_{V,t}  Wind speed noise 
f_{simulation}  Local velocities computation function 
${P}_{t}^{i}$  Turbine power output 
π  Control policy 
u_{t}  All turbine yaw settings 
f_{obj}  Controller objective function 
FLORIS  FLOw Redirection and Induction in Steady State 
GS  Gauss–Seidel 
IEA  International Energy Agency 
LESs  largeeddy simulations 
LUT  lookup table 
ML  machine learning 
MPC  model predictive control 
MW  megawatts 
RL  reinforcement learning 
WFFC  wind farm flow control 
The code related to the simulation is opensource and is publicly accessible at https://github.com/NREL/floris.git (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.
The farm and turbine data are publicly accessible at https://github.com/NREL/floris.git (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.
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.
The contact author has declared that none of the authors has any competing interests.
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.
The authors are grateful for the support of the R&D Wind program of TotalEnergies OneTech, especially Cédric Eneau for his support.
This paper was edited by Johan Meyers and reviewed by two anonymous referees.
Bastankhah, M. and PortéAgel, F.: Experimental and theoretical study of wind turbine wakes in yawed conditions, J. Fluid Mech., 806, 506–541, https://doi.org/10.1017/jfm.2016.595, 2016. a, b
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 controloriented modeling and control of wind farms, in: 2017 American Control Conference (ACC), 18 pp., https://doi.org/10.23919/ACC.2017.7962923, 2017. a
Chu, S. and Majumdar, A.: Opportunities and challenges for a sustainable energy future, Nature, 488, 294–303, https://doi.org/10.1038/nature11475, 2012. a
Crespo, A. and Hernández, J.: Turbulence characteristics in windturbine wakes, J. Wind Eng. Ind. Aerod., 61, 71–85, https://doi.org/10.1016/01676105(95)00033X, 1996. a
Dallas, S., Stock, A., and Hart, E.: Controloriented modelling of wind direction variability, Wind Energ. Sci., 9, 841–867, https://doi.org/10.5194/wes98412024, 2024. a, b
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, https://doi.org/10.5194/wes22292017, 2017. a
Fleming, P. A., Stanley, A. P. J., Bay, C. J., King, J., Simley, E., Doekemeijer, B. M., and Mudafort, R.: SerialRefine Method for Fast WakeSteering Yaw Optimization, J. Phys. Conf. Ser., 2265, 032109, https://doi.org/10.1088/17426596/2265/3/032109, 2022. a
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 15Megawatt Offshore Reference Wind Turbine, Technical Report, https://doi.org/10.2172/1603478, 2020. a
Hure, N., Turnar, R., Vašak, M., and Benčić, G.: Optimal wind turbine yaw control supported with very shortterm wind predictions, in: 2015 IEEE International Conference on Industrial Technology (ICIT), Seville, Spain, 17–19 March 2015, 385–391, https://doi.org/10.1109/ICIT.2015.7125129, 2015. a
Janssens, N. and Meyers, J.: Towards realtime optimal control of wind farms using largeeddy simulations, Wind Energ. Sci., 9, 65–95, https://doi.org/10.5194/wes9652024, 2024. a
Kadoche, E., Gourvénec, S., Pallud, M., and Levent, T.: MARLYC: MultiAgent Reinforcement Learning Yaw Control, Renew. Energ., 217, 119129, https://doi.org/10.1016/j.renene.2023.119129, 2023. a
Kanev, S.: Dynamic wake steering and its impact on wind farm power production and yaw actuator duty, Renew. Energ., 146, 9–15, https://doi.org/10.1016/j.renene.2019.06.122, 2020a. a
Kanev, S.: Dynamic wake steering and its impact on wind farm power production and yaw actuator duty, Renew. Energ., 146, 9–15, https://doi.org/10.1016/j.renene.2019.06.122, 2020b. a
King, J., Fleming, P., King, R., MartínezTossas, L. A., Bay, C. J., Mudafort, R., and Simley, E.: Controloriented model for secondary effects of wake steering, Wind Energ. Sci., 6, 701–714, https://doi.org/10.5194/wes67012021, 2021. a
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, https://doi.org/10.5194/wes813872023, 2023. a
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, https://doi.org/10.5194/wes722712022, 2022. a
Niayifar, A. and PortéAgel, F.: Analytical Modeling of Wind Farms: A New Approach for Power Prediction, Energies, 9, 741, https://doi.org/10.3390/en9090741, 2016. a
NREL: FLORIS. Version 3.4.1, GitHub [code and data set], https://github.com/NREL/floris (last access: 4 October 2023), 2021. a, b
SaenzAguirre, A., Zulueta, E., FernandezGamiz, U., Lozano, J., and LopezGuede, J. M.: Artificial Neural Network Based Reinforcement Learning for Wind Turbine Yaw Control, Energies, 12, 436, https://doi.org/10.3390/en12030436, 2019. a
SaenzAguirre, A., Zulueta, E., FernandezGamiz, U., Ulazia, A., and TesoFzBetono, D.: Performance enhancement of the artificial neural network–based reinforcement learning for wind turbine yaw control, Wind Energy, 23, 676–690, https://doi.org/10.1002/we.2451, 2020. a
Siemens Gamesa Renewable Energy: Siemens Gamesa now able to actively dictate wind flow at offshore wind locations, https://www.siemensgamesa.com/enint/newsroom/2019/11/191126siemensgamesawakeadapten (last access: 15 May 2023), 2019. a
Simley, E., Fleming, P., King, J., and Sinner, M.: Wake Steering Wind Farm Control With Preview Wind Direction Information: Preprint, https://www.osti.gov/biblio/1778702 (last access: 4 January 2021), 2021. a
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, https://doi.org/10.1016/j.enconman.2017.12.019, 2018. a
van Doorn, E., Dhruva, B., Sreenivasan, K. R., and Cassella, V.: Statistics of wind direction and its increments, Phys. Fluids, 12, 1529–1534, https://doi.org/10.1063/1.870401, 2000. a, b
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, https://doi.org/10.5194/wes85892023, 2023. a, b
Yang, J., Fang, L., Song, D., Su, M., Yang, X., Huang, L., and Joo, Y. H.: Review of control strategy of large horizontalaxis wind turbines yaw system, Wind Energy, 24, 97–115, https://doi.org/10.1002/we.2564, 2021. a
 Abstract
 Introduction
 Problem formalization
 Controllers
 Simulations
 Conclusions
 Appendix A: Gauss–Seidel method
 Appendix B: Numerical instabilities
 Appendix C: Detailed results
 Appendix D: Nomenclature
 Appendix E: Acronyms
 Code availability
 Data availability
 Author contributions
 Competing interests
 Disclaimer
 Acknowledgements
 Review statement
 References
 Abstract
 Introduction
 Problem formalization
 Controllers
 Simulations
 Conclusions
 Appendix A: Gauss–Seidel method
 Appendix B: Numerical instabilities
 Appendix C: Detailed results
 Appendix D: Nomenclature
 Appendix E: Acronyms
 Code availability
 Data availability
 Author contributions
 Competing interests
 Disclaimer
 Acknowledgements
 Review statement
 References