$$ % Define your custom commands here \newcommand{\bmat}[1]{\begin{bmatrix}#1\end{bmatrix}} \newcommand{\E}{\mathbb{E}} \newcommand{\P}{\mathbb{P}} \newcommand{\S}{\mathbb{S}} \newcommand{\R}{\mathbb{R}} \newcommand{\S}{\mathbb{S}} \newcommand{\norm}[2]{\|{#1}\|_{{}_{#2}}} \newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}} \newcommand{\pdd}[2]{\frac{\partial^2 #1}{\partial #2^2}} \newcommand{\vectornorm}[1]{\left|\left|#1\right|\right|} \newcommand{\abs}[1]{\left|{#1}\right|} \newcommand{\mbf}[1]{\mathbf{#1}} \newcommand{\mc}[1]{\mathcal{#1}} \newcommand{\bm}[1]{\boldsymbol{#1}} \newcommand{\nicefrac}[2]{{}^{#1}\!/_{\!#2}} \newcommand{\argmin}{\operatorname*{arg\,min}} \newcommand{\argmax}{\operatorname*{arg\,max}} \newcommand{\dd}{\operatorname{d}\!} $$

Wind Turbine Control

Gradient estimation for extremum seeking: what the estimator actually computes, and what turbulence does to it.

A wind turbine must sit on the peak of an efficiency curve it cannot measure, using a knob whose effect arrives buried in turbulence.

Below rated wind speed, a turbine’s job is to hold the tip-speed ratio \(\lambda = R\Omega/V\) at the value that maximizes the rotor’s power coefficient \(C_P\). The difficulty is that both coordinates of that curve are written in terms of the wind speed reaching the rotor, which is the one quantity the machine cannot measure. An anemometer on the nacelle reads air the rotor has already slowed, by an amount that depends on what the controller is doing.

Extremum seeking control solves this without a model: perturb the control parameter with a small periodic dither, correlate the response against it, and climb. The line of work developed at the UTD Wind Energy Center has made that practical, above all by feeding the algorithm the logarithm of power. That removes the wind speed from the loop gain exactly, so a controller tuned at one wind speed works at every other.

Our interest is in what happens next: the statistics of the gradient the algorithm computes.

The survey

Presentation

Extremum Seeking Control of Wind Turbines → is an illustrated walkthrough of the Region-2 control problem, the extremum-seeking machinery built for it, and five questions the published record leaves open. Roughly twenty slides, figure-first, with speaker notes.

The deck builds the problem from the beginning: why the \(k\Omega^2\) torque law works, why its equilibrium is a ray rather than a setpoint, and what the logarithm of power actually fixes. It then turns to what is unresolved.

Gradient noise in extremum seeking

Presentation

Gradient Noise in Extremum Seeking for Wind Turbines → presents the results of the technical report in about twenty-five slides, with backup slides for the derivations and speaker notes throughout.

At the optimum the power curve is flat, so a gust changes log-power only through the cube of the wind speed: the wind enters as the single term \(3\varepsilon\), and every gradient estimate is the wind seen through a known window. A loop slow enough to be useful sees only the wind’s spectral density at the dither frequency, so the scatter of the gain, the power it costs and the tuning that loses least follow in closed form from three numbers: that density, the curvature of \(C_P\) at its peak, and the rotor time constant. Worked out under both IEC spectra, Kaimal and von Kármán.

Checked end to end on the nonlinear NREL 5 MW turbine at \(8\) m/s, every controller in the same wind as a turbine held at the optimum, a demodulation loop designed this way loses \(0.23\%\) of the energy: \(41\%\) less than the best published design (Ciri, Leonardi and Rotea 2019, at the same tracking time), and \(14\) to \(20\) times less than the two 2022 tunings. The published LP-PIESC estimator turns out to read only the part of the response that lags the dither, \(\omega\tau_r\) of the signal, and its loop tracks the optimum with a time constant of \(5.1\) days.

Earlier versions

These decks are superseded by the one above and kept for reference; some of their numbers predate the corrected rotor inertia and the energy simulations.

Five questions, audited

Two of the five closed under inspection. They are kept here with their verdicts rather than quietly dropped.

  • What is the estimator estimating? Closed as a control question. The published runs land \(0.35\) in \(\lambda\) above the design optimum, but most of that offset is already present in uniform inflow, where neither estimator bias nor a turbulent peak shift can act, and the scatter is bounded well below it. What is left is the reference: a blade-element \(\lambda^\star\) scoring an actuator-line rotor. A modeling check, not a controls problem.
  • What sets the stability limit? Closed, and closed in 2017. Plain extremum seeking goes unstable at high wind because the loop is sampled and its gain scales as \(V^3\); the log-of-power feedback removes that scaling exactly, which is why LP-ESC does not. Nor is the stability bound a speed ceiling: the deadbeat gain sits well inside it. The residual is that the loop gain still carries the curvature \(J''\), and that belongs to the Hessian question below.
  • Is the dither necessary? Closed: yes, and structurally so. Aerodynamic torque is recoverable from rotor speed and commanded torque with no wind sensor, and turbulence does move \(\lambda\) about as far as the probe does. But the curve still cannot be identified: at each instant there is one equation and one unknown wind speed, so any candidate curve is absorbed by a correspondingly adjusted \(V(t)\). Simulation confirms it: a curve with its peak flattened by \(30\%\) reproduces the data exactly, with an implied wind of the same mean and turbulence intensity, correlated \(0.9999\) with the truth. A known excitation is the only thing that breaks the degeneracy, which is why extremum seeking exists.
  • What is the Hessian for? The curvature at the peak sets the loop gain calibration, the terminal scatter, and the energy lost to mistuning. In stochastic approximation the same matrix governs the asymptotic covariance, where iterate averaging attains the optimum without estimating it.
  • How good could any algorithm be? No performance bound exists for this problem, so there is no way to tell whether current algorithms are near optimal or leaving an order of magnitude on the table.

Why turbulence is not ordinary noise

In classical stochastic approximation the disturbance is pure nuisance: it corrupts the measurement and is averaged away. Here the same physical process does both jobs. Turbulence is what buries the gradient estimate, and it is also what moves the rotor across the \(C_P\) curve without anyone paying a fatigue cost to put it there. That duality is what makes estimating the curve without probing it worth asking about.

Status

The technical report behind the presentation derives every result in 27 short units with worked solutions, and checks each one against simulation; every number it states is recomputed by a claim checker. Its limits are stated there: a stationary wind, point spectra rather than the rotor-averaged wind, a static power curve with a first-order rotor, and aerodynamic rather than electrical power.

The next steps are measured turbine data, where the true spectrum and the rotor-averaged wind replace the models, and the transient question the analysis leaves open: whether a least-squares loop, retuned by these rules, recovers faster than demodulation after the optimum moves.