Every published run lands a few percent below the design value, and the two obvious explanations do not account for it
Robot Control Lab · Systems Engineering · UT Dallas
The controller has one knob: the torque gain \(k\) in \(\tau_g = k\Omega^2\). Everything else follows from it. Setting \(\dot\Omega = 0\) gave
\[\frac{C_P(\lambda)}{\lambda^3} = \frac{2k}{\rho\pi R^5}\]
so choosing \(k\) chooses the tip-speed ratio \(\lambda_{\text{eq}}(k)\) the rotor settles at. Extremum seeking estimates \(\partial \ln P/\partial k\) and integrates until that estimate is zero.
So the quantity that converges is \(k\). The tip-speed ratio is not adjusted, estimated, or held. It is what you read off afterward, through the monotone map \(k \mapsto \lambda_{\text{eq}}\).
The reference value comes from the design power-coefficient curve:
\[k_{\text{opt}} = \tfrac12\rho\pi R^5\,\frac{C_P^{\max}}{\lambda_\star^3} \;=\; 2.2, \qquad\text{from}\quad C_P^{\max} = 0.49,\ \ \lambda_\star = 7.5\]
Where that curve comes from
Blade-element momentum: chop each blade into spanwise strips, look up the lift and drag of the airfoil at each strip’s angle of attack, and integrate. That gives \(C_P(\lambda,\beta)\) for the NREL 5 MW reference rotor.
What that makes it
A prediction from blade geometry and airfoil tables, in steady uniform flow. Not a measurement of the rotor in the simulation.
So \(k_{\text{opt}} = 2.2\) inherits whatever that curve gets wrong. If its peak sits at the wrong \(\lambda\), the reference is wrong and every convergence claim is scored against the wrong number.
Every converged torque gain in the large-eddy simulations of [CLR19] sits below the design value, and every tip-speed ratio sits above it. Two algorithms, three wind speeds, two inflow conditions, and the sign never changes.
One dither period produces one number, a correlation:
\[\hat g \;=\; \frac{1}{aT}\int_0^T \ln P(t)\,g(t)\,dt, \qquad \ln P = \underbrace{\ln(\tfrac12\rho A)}_{\text{constant}} + \underbrace{3\ln V(t)}_{\text{the wind}} + \underbrace{\ln C_P(\lambda)}_{\text{the turbine}}\]
the constant does cancel
\(\int_0^T g\,dt = 0\) by symmetry, so a constant contributes exactly nothing.
the wind does not
\(3\ln V(t)\) is not a constant. What survives is \(\tfrac{3}{aT}\int_0^T \ln V\,g\;dt\), which is zero in expectation and nonzero in any one window.
Flip a fair coin ten times: heads minus tails has expectation zero, and you still get \(+2\) or \(-4\). Over 150 s the turbulence leans one way or the other against the square wave by chance. The wind does not bias the gradient. It adds scatter.
In the raw record the irrelevant term is about fifteen times the signal: \(3\ln V\) has \(\sigma \approx 3\,\mathrm{TI} = 0.30\) nepers, against a probe response near \(0.02\).
(a) the design \(k\)
\(k_{\text{opt}} = 2.2\), the gain that peaks the blade-element curve in steady uniform flow. What every paper scores against.
(b) the turbulent \(k\)
The gain maximizing \(\mathbb{E}[\ln P]\) under the inflow the machine actually sees. Differs from (a) by a Jensen gap plus rotor lag.
(c) the algorithm’s fixed point
The gain where the gradient estimate vanishes, which adds whatever bias the demodulator carries.
Three different numbers. The runs all land near \(2.03\). Asking “how accurate is the estimator” is premature until we say which of these it was supposed to hit.
[CLR19] dithers with a square wave, so the correlation is a two-point central difference. The slides that follow derive \(\hat g = J' + \tfrac{a^2}{6}J''' + O(a^4)\) and the displacement \(\Delta u = -\tfrac{a^2}{6}\,J'''/J''\) it leaves; the numbers are below.
Every term is computable: invert \(\varphi(\lambda) = C_P(\lambda)/\lambda^3 = c\,u\) for \(\lambda_{\text{eq}}(u)\), with \(c\) pinned by \(\varphi(\lambda_\star) = c\,u_{\text{opt}}\); form \(J(u) = \ln C_P(\lambda_{\text{eq}}(u))\) and differentiate at the peak. Units below are Ciri et al.’s, \(u_{\text{opt}} = 2.2\) N\(\cdot\)m\(\cdot\)rpm\(^{-2}\).
read off the curve
| \(J''\) | \(-0.145\) |
| \(J'''\) | \(0.108\) |
| ratio | \(-0.748\) |
| \(d\lambda/du\) | \(-1.13\) \(\;(=-\lambda_\star/3u_{\text{opt}})\) |
| \(a\) (Ciri 2019) | \(13.6\%\) of \(k_{\text{opt}}\) |
the result
\[\Delta u = +0.0112\]
\[\Delta\lambda = \Delta u\cdot\frac{d\lambda}{du} = -0.013\]
Against an observed \(+0.35\), and with the wrong sign.
Rotor inertia is \(3.5\times10^7\) kg m², so \(\lambda\) swings rather than sits. Expanding \(\mathbb{E}[C_P(\bar\lambda+\delta)] \approx C_P + \tfrac12\sigma_\lambda^2 C_P''\) and maximizing over \(\bar\lambda\),
\[\Delta\lambda \;=\; -\frac{\sigma_\lambda^2}{2}\,\frac{C_P'''}{C_P''}, \qquad C_P'' = -0.0551,\quad C_P''' = 0.0065\]
| \(\sigma_\lambda\) | \(0.3\) | \(0.5\) | \(0.8\) |
|---|---|---|---|
| \(\Delta\lambda\) | \(+0.005\) | \(+0.015\) | \(+0.037\) |
Same shape as candidate one, a third derivative over a second scaled by a variance, but opposite in meaning: one says the algorithm misses a fixed target, the other says the target moved. Note \(\sigma_\lambda\) is estimated, from the share of turbulence energy above the rotor’s own pole, not measured.
Both fail, by more than an order of magnitude. Adding a third effect, that the reported \(\bar\lambda\) is a time average and \(\lambda(u)\) is curved, brings the total to \(0.042\) against an observed \(0.350\).
Where the \(a^2/6\), the \(-1/3\) and the amplitude trade actually come from.
\(C_P\) is naturally a function of \(\lambda\), but \(\lambda\) is not settable. You turn the gain \(u\), and \(\lambda\) follows through \(\lambda_{\text{eq}}(u)\). So split \(\ln P\) into the part that moves with \(u\) and the part that does not:
\[\ln P(t) \;=\; \underbrace{\ln(\tfrac12\rho A) + 3\ln V(t)}_{C(t),\ \text{no } u \text{ in it}} \;+\; \underbrace{\ln C_P\big(\lambda_{\text{eq}}(u)\big)}_{J(u)}\]
A term with no \(u\) in it has zero derivative in \(u\), so
\[\frac{\partial^n(\ln P)}{\partial u^n} = \frac{\partial^n J}{\partial u^n} \qquad\text{for every } n\ge 1\]
\(\ln P\) needs the wind and cannot be evaluated; \(J\) needs only the \(C_P\) curve. They have identical derivatives, so derivatives may be taken on \(J\) alone. That is not the same as saying \(C\) disappears from the estimator.
The 2019 dither is a square wave: the knob sits at \(u+a\) for the first half-period, \(u-a\) for the second. The correlation is a difference of two half-period means, \(\hat g = \big[\bar y(u{+}a) - \bar y(u{-}a)\big]/2a\). Substituting the split:
\[\hat g \;=\; \underbrace{\frac{J(u{+}a) - J(u{-}a)}{2a}}_{\text{the turbine}} \;+\; \underbrace{\frac{\bar C^{+} - \bar C^{-}}{2a}}_{\text{the wind}}\]
\(\bar C^{\pm}\) are means of the same \(C(t)\) over different windows, so they do not cancel. This is the coin-flip term: zero mean, nonzero variance. It is where all the scatter comes from, and it is not part of any Taylor series.
Bias from the first term, scatter from the second. The next slides take them in turn.
Taylor-expand the turbine term about \(u\):
\[J(u+a) = J + aJ' + \tfrac{a^2}{2}J'' + \tfrac{a^3}{6}J''' + \tfrac{a^4}{24}J'''' + \cdots\] \[J(u-a) = J - aJ' + \tfrac{a^2}{2}J'' - \tfrac{a^3}{6}J''' + \tfrac{a^4}{24}J'''' - \cdots\]
Subtracting, every even power cancels, which is what “central” difference means. Then divide by \(2a\): every term drops one order, \(O(a^5)\) included.
\[J(u{+}a) - J(u{-}a) = 2aJ' + \tfrac{a^3}{3}J''' + O(a^5) \;\;\Longrightarrow\;\; \frac{J(u{+}a) - J(u{-}a)}{2a} = J' + \frac{a^2}{6}J''' + O(a^4)\]
That is the turbine term alone. Adding back the wind term from the previous slide gives the whole estimator:
\[\hat g \;=\; J' + \frac{a^2}{6}J''' + O(a^4) \;+\; \underbrace{\frac{\bar C^{+} - \bar C^{-}}{2a}}_{\text{the wind}}\]
The algorithm stops where \(\hat g = 0\), not where \(J' = 0\). Linearizing \(J' \approx J''\Delta u\) gives \(\Delta u = -\tfrac{a^2}{6}\,J'''/J''\).
The bias lives in \(u\), the torque gain the algorithm turns; Ciri et al. report \(\lambda\). The equilibrium relation converts between them. With \(\varphi(\lambda) := C_P(\lambda)/\lambda^3\) it reads \(\varphi(\lambda_{\text{eq}}) = c\,u\), where \(c\) is a rotor constant that also carries whatever units \(u\) is quoted in. Differentiate implicitly:
\[\varphi'(\lambda)\,\frac{d\lambda}{du} = c \qquad\Longrightarrow\qquad \frac{d\lambda}{du} = \frac{c}{\varphi'(\lambda)}\]
You never have to evaluate \(c\): the optimum pins it, \(c = \varphi(\lambda_\star)/u_{\text{opt}}\). And at the peak \(C_P' = 0\), so \(\varphi'(\lambda_\star) = -3C_P^{\max}/\lambda_\star^4\). Everything cancels:
\[\frac{d\lambda}{du}\bigg|_\star = \frac{C_P^{\max}\big/(\lambda_\star^3\,u_{\text{opt}})}{-3C_P^{\max}\big/\lambda_\star^4} = -\frac{\lambda_\star}{3\,u_{\text{opt}}} \qquad\Longleftrightarrow\qquad \frac{d\ln\lambda}{d\ln u}\bigg|_\star = -\frac13\]
Negative: more braking torque, slower rotor, lower \(\lambda\). And the leverage is exactly \(-1/3\) in elastic terms, free of \(c\), \(\rho\), \(R\), the gearbox and the choice of units. With Ciri et al.’s \(u_{\text{opt}} = 2.2\) N\(\cdot\)m\(\cdot\)rpm\(^{-2}\) that is \(d\lambda/du = -1.14\).
The wind term is \((\bar C^{+} - \bar C^{-})/2a\). Let \(\sigma_y\) be the standard deviation of the fluctuating part of \(y = \ln P\), and let \(\tau_c\) be its correlation time: the lag beyond which the signal has forgotten itself, so a window of length \(T_w\) carries about \(T_w/\tau_c\) independent samples rather than \(T_w/\Delta t\). Each half-period average has \(T_w = T/2\):
\[\operatorname{Var}(\bar C^{\pm}) = \frac{\sigma_y^2}{\underbrace{(T/2)/\tau_c}_{\text{independent samples}}} = \frac{2\sigma_y^2\tau_c}{T}\]
The two windows are disjoint, so treat them as independent and add variances. Then divide by \(2a\):
\[\operatorname{Var}(\hat g_{\text{noise}}) = \frac{1}{4a^2}\cdot\frac{4\sigma_y^2\tau_c}{T} \;\;\Longrightarrow\;\; \boxed{\;\sigma_{\hat g} = \frac{\sigma_y}{a}\sqrt{\frac{\tau_c}{T}}\;}\]
The \(1/a\) is the whole difficulty: the wind does not care how hard you dither, so shrinking the probe to kill bias amplifies the noise one for one. The \(\sqrt{\tau_c/T}\) is weaker than it looks, and only holds for \(\tau_c \ll T/2\), which this turbine does not satisfy.
Taylor’s frozen-turbulence picture: eddies of size \(L\) sweep past at \(U\), so the signal decorrelates in \(\tau_{\text{int}} = L/U\). IEC 61400-1 fixes \(L\) from hub height [IEC]: \(\Lambda_1 = 0.7\min(z,60)\) m, \(L = 8.1\Lambda_1\). At \(h = 90\) m \(\ge 60\) m the scale parameter is \(\Lambda_1 = 42\) m and the longitudinal integral length is \(L = 8.1\Lambda_1\):
\[L = 8.1(42) = 340\ \text{m} \;\;\Longrightarrow\;\; \tau_{\text{int}} = \frac{340}{8} = 42.5\ \text{s} \;\;\Longrightarrow\;\; \tau_c = 2\tau_{\text{int}} = 85\ \text{s}\]
The factor of two is the convention: independent samples sit \(2\tau_{\text{int}}\) apart, not \(\tau_{\text{int}}\).
\(\tau_c = 85\) s exceeds the half-period \(T/2 = 75\) s, so \(\sigma_{\hat g}\) is outside the regime it was derived in. Wind slower than \(T\) is common to both half-windows and cancels in their difference, so the formula over-states the scatter: exactly, by \(1.5\times\) at \(\tau_{\text{int}} = 42.5\) s and \(2.4\times\) at \(85\) s.
\(L\) is a design standard, not a measurement of this inflow, so \(\tau_c\) is good to a factor of two. That costs \(12\%\) in the answer, since \(a_\star \propto \tau_c^{1/6}\).
Bias, from the previous slides, converted to \(\lambda\):
\[|\Delta\lambda| = \underbrace{\tfrac16\left|\tfrac{J'''}{J''}\right|\left|\tfrac{d\lambda}{du}\right|}_{K_b}\,a^2 = \tfrac16(0.748)(1.13)\,a^2 = 0.141\,a^2 \;\;\longrightarrow\;\; 0.68\,\alpha^2\]
Scatter. One period gives gradient noise \(\sigma_y\sqrt{\tau_c/T}/a\); a gradient error displaces the settled gain by \(\delta g/|J''|\); \(N\) periods average it down:
\[\sigma_\lambda = \underbrace{\frac{\sigma_y\sqrt{\tau_c/T}}{|J''|}\left|\tfrac{d\lambda}{du}\right|}_{K_v}\,\frac{1}{a\sqrt N} \;\;\longrightarrow\;\; \frac{K_v/u_{\text{opt}}}{\alpha\sqrt N}\]
Writing \(a = \alpha\,u_{\text{opt}}\) puts both in the units the figure plots: \(\alpha\) is the dither as a fraction of the optimal gain. \(K_b\) follows from the \(C_P\) curve alone. \(K_v\) does not, and the next slide is why.
\(K_b\) carries no \(N\); \(K_v\) does. Bias survives averaging, scatter does not.
Feeding \(\sigma_y = 3\,\text{TI} = 0.30\) and \(\tau_c = 85\) s into \(\sigma_{\hat g}\) gives \(K_v/u_{\text{opt}} = 0.80\), hence \(\sigma_\lambda = 3.4\) at their dither. The rotor would wander the whole curve. The converged tip-speed ratios reported in [CLR19] say otherwise:
| converged \(\bar\lambda\) | \(U=4\) | \(U=8\) | \(U=12\) | spread |
|---|---|---|---|---|
| [CLR19] Table 4, shear \(+\) \(10\%\) TI | 7.72, 7.75 | 7.85, 7.85 | 7.85 | \(0.13\) |
| [CLR19] Table 3, uniform inflow | 7.60, 7.60 | 7.75, 7.73 | 7.70 | \(0.15\) |
Each cell is ESC then LP-ESC; at \(U=12\) only LP-ESC is listed, because plain ESC did not converge there.
Turbulence adds nothing to the spread of the converged means. The 40-minute mean covers \(\approx 2\) independent realizations, so \(\sigma_\lambda \lesssim 0.14\) and \(K_v/u_{\text{opt}} \lesssim 0.033\): the prediction is too big by \(\mathbf{24}\) to \(\mathbf{40\times}\).
The demodulator rejects far more of the wind than \(\sigma_y\sqrt{\tau_c/T}\) allows for, because that form counts the whole spectrum while the correlation sees a narrow band at \(1/T\), sited in a spectral valley on purpose. Quantifying that rejection is the open problem, and until it is done \(K_v\) is an upper bound read off the data.
Bias and scatter are now both errors in \(\lambda\), so they are comparable. What a run actually delivers is the mean-squared error, bias squared plus variance:
\[M(a) = \underbrace{\big(K_b a^2\big)^2}_{\text{bias}^2} + \underbrace{\left(\frac{K_v}{a\sqrt N}\right)^2}_{\text{variance}} = K_b^2 a^4 + \frac{K_v^2}{a^2 N}\]
One term climbs with \(a\) and the other falls, so the minimum is interior. Set the derivative to zero:
\[\frac{dM}{da} = 4K_b^2a^3 - \frac{2K_v^2}{a^3N} = 0 \;\;\Longrightarrow\;\; a_\star^6 = \frac{K_v^2}{2K_b^2N} \;\;\Longrightarrow\;\; a_\star \propto N^{-1/6}\]
Substituting \(a_\star\) back gives what that amplitude actually achieves:
\[M(a_\star) = \left(2^{-2/3} + 2^{1/3}\right)K_b^{2/3}K_v^{4/3}N^{-2/3} \;\;\Longrightarrow\;\; \sqrt{M(a_\star)} \propto N^{-1/3}\]
Both limits are bad: \(a\to0\) kills the bias but sends the scatter to infinity, \(a\to\infty\) does the reverse. Two different exponents fall out and they are easy to confuse: the amplitude goes as \(N^{-1/6}\), the error it buys goes as \(N^{-1/3}\).
Equations 11 and 12 of Ciri, Leonardi & Rotea [CLR19] take one step per dither period:
\[u_{n+1} = u_n + \kappa\int_0^{T} y(t)\,g_c(t)\,dt\]
The demodulator \(g_c\) is \(+1\) on the first half-period and \(-1\) on the second, blanked for \(T_r\) after each step. So the integral is exactly the half-window difference from before, \((\tfrac T2 - T_r)(\bar y^{+} - \bar y^{-})\), and since \(\hat g = (\bar y^{+}-\bar y^{-})/2a\):
\[u_{n+1} = u_n + \kappa_{\text{eff}}\,\hat g_n, \qquad \kappa_{\text{eff}} := 2a\kappa\left(\tfrac T2 - T_r\right)\]
The correlate-and-step loop is a gradient ascent whose step size is \(\kappa_{\text{eff}}\). There is no \(1/n\) anywhere, so the step never decays.
\(\hat g_n\) is an estimate of \(J'(u_n)\), and two facts turn the update into a linear recursion. First, at the peak \(J'(u^\star)=0\), so for \(\tilde u_n := u_n - u^\star\) small,
\[J'(u_n) = J'(u^\star) + J''\tilde u_n + O(\tilde u_n^2) \approx J''\,\tilde u_n\]
Second, the estimator does not return \(J'\) cleanly. It returns it plus the wind term derived earlier, which is what \(w_n\) is:
\[\hat g_n = J''\tilde u_n + \underbrace{w_n}_{(\bar C^{+}-\bar C^{-})/2a}, \qquad \mathbb{E}[w_n]=0, \qquad \operatorname{Var}(w_n) = \sigma_{\hat g}^2 = \frac{\sigma_y^2\tau_c}{a^2T}\]
Substitute into the update and subtract \(u^\star\) from both sides:
\[\tilde u_{n+1} = \big(1 + \kappa_{\text{eff}}J''\big)\tilde u_n + \kappa_{\text{eff}}w_n = \rho\,\tilde u_n + \kappa_{\text{eff}}w_n, \qquad \rho := 1 - g,\;\; g := \kappa_{\text{eff}}|J''|\]
\(J''<0\) at a maximum, which is why \(1+\kappa_{\text{eff}}J''\) is \(1-g\). The loop is a scalar AR(1) driven by gradient-estimate noise.
An AR(1) has a stationary variance. Take variances of both sides, use independence of \(w_n\) from \(\tilde u_n\), and set \(V_{n+1}=V_n=V\):
\[V = \rho^2 V + \kappa_{\text{eff}}^2\sigma_{\hat g}^2 \;\;\Longrightarrow\;\; V = \frac{\kappa_{\text{eff}}^2\sigma_{\hat g}^2}{1-\rho^2} = \frac{g}{2-g}\cdot\frac{\sigma_{\hat g}^2}{J''^2}\]
using \(\kappa_{\text{eff}} = g/|J''|\) and \(1-\rho^2 = g(2-g)\). Averaging \(N\) periods instead would give \(\sigma_{\hat g}^2/(N J''^2)\). Equating the two:
\[\boxed{\;N_{\text{eff}} = \frac{2}{g} - 1\;}\]
\(N\) is a tuning, not a run length. Table 2 of [CLR19], with \(k\) going \(4.5 \to 2.2\) and \(99\%\) of steady power in 10 min \(=\) 4 periods, gives \(g \approx 0.49\), so \(N_{\text{eff}} \approx 3\). An hour instead of ten minutes changes nothing.
With \(K_v\) bounded from Table 4 of [CLR19] and \(N_{\text{eff}} = 3\): \(a_\star \lesssim 27\%\) of \(k_{\text{opt}}\), against the published \(13.6\%\). Within a factor of two, and scatter still beats bias by \(11\times\) there, so the loop is variance-limited but not wildly mistuned.
\(a_\star\) is an upper bound, because \(K_v\) is. The honest statement is that the published amplitude is on the small side of optimal and that nobody, here included, can yet compute \(K_v\) from the turbulence.
Both estimates hinge on a third derivative, and third derivatives are what a fitted surface reproduces worst.
To explain the whole \(0.35\) by estimator bias you would need the ratio \(J'''/J''\) to be \(-20.8\), against the fitted \(-0.748\). A factor of 28.
What is solid
The formulas, the inversion of the equilibrium relation, and the dither amplitude, read straight out of [CLR19].
What is not
The \(C_P\) surface. These figures use Heier’s analytic curve remapped onto \((7.5,\,0.49)\), not the NREL table, and both third derivatives inherit that.
An order-of-magnitude argument, good to a factor of a few, not verified against the real rotor. Enough to motivate the test, which settles the question without needing either curve.
The decisive split
[CLR19] Table 3 runs the same machine in uniform inflow: no turbulence, no peak shift, negligible scatter. The offset is still \(+0.10\) to \(+0.25\).
What that leaves
Turbulence can account for at most the difference between the two campaigns, about \(0.1\). The rest is present when nothing stochastic is happening at all.
Neither candidate can act in uniform inflow, yet most of the gap is already there. The design curve is already known to be wrong about the level, \(0.44\) realized against \(0.49\). Nobody has checked whether it is also wrong about the location, and that is the one explanation the arithmetic cannot touch.
Stop closing the loop. Hold the torque gain at a series of fixed values, run each long enough to average out the turbulence, and measure the simulator’s own \(C_P(\lambda)\) curve. Then ask where its peak is.
If the peak is at 7.5
The gap is real and none of the three candidates explain it. That is a more interesting outcome than confirming one of them.
If the peak is near 7.85
There is no estimator bias. The algorithms were right, the reference was wrong, and every convergence claim in the line needs restating against the new number.
A few days of compute, no new code, and it is the same measurement the simulator-fidelity question needs anyway.
It gates the bound
You cannot write a performance bound for the estimation of a quantity that has not been defined.
It gates stability
Calling a run unstable presumes you know what it failed to converge to.
It gates the application
Detecting a \(0.2\) shift from erosion is hopeless if the reference carries an unexplained \(0.35\).
Cheapest of the open questions, and the one the others rest on. Worked through, it closes: most of the offset survives in uniform inflow where no estimator effect can act, so the residual is in the reference, not the algorithm. What it leaves behind is a measurement, not a research program.
Two explanations, costed out, both dead by an order of magnitude, and most of the offset survives in inflow where neither can act.
The claim
The offset is not estimator bias, not a Jensen shift, and not scatter: the scatter is bounded at \(\sigma_\lambda \lesssim 0.14\) by the run-to-run spread. What remains is that the simulated rotor’s peak is not at \(7.5\).
The caveat
The third derivative behind that arithmetic comes from a fitted surface. The sensitivity is stated on the arithmetic slide: it would have to be wrong by \(28\times\).
[R17] M. A. Rotea, Logarithmic power feedback for extremum seeking control of wind turbines, IFAC-PapersOnLine 50(1) (2017) 4504–4509. doi:10.1016/j.ifacol.2017.08.381
[CLR19] U. Ciri, S. Leonardi & M. A. Rotea, Evaluation of log-of-power extremum seeking control for wind turbines using large eddy simulations, Wind Energy 22 (2019) 992–1002. doi:10.1002/we.2336
[KR22] D. Kumar & M. A. Rotea, Wind turbine power maximization using log-power proportional-integral extremum seeking, Energies 15 (2022) 1004. doi:10.3390/en15031004
[KR24] D. Kumar & M. A. Rotea, Optimal tip-speed ratio for degraded blades, Wind Energy Science 9 (2024) 2133–2146. doi:10.5194/wes-9-2133-2024
[RKAJ24] M. A. Rotea, D. Kumar, E. J. Aju & Y. Jin, Multi-row extremum seeking for wind farm power maximization, J. Phys. Conf. Ser. 2767 (2024) 032043. doi:10.1088/1742-6596/2767/3/032043
[MGR24] S. P. Mulders, N. Gallo & M. A. Rotea, Analysis of extremum seeking control for wind turbine torque controller optimization by aerodynamic and generator power objectives, ACC (2024). arXiv:2407.08059
[GKN12] A. Ghaffari, M. Krstić & D. Nešić, Multivariable Newton-based extremum seeking, Automatica 48 (2012) 1759–1767. doi:10.1016/j.automatica.2012.05.059
[S00] J. C. Spall, Adaptive stochastic approximation by the simultaneous perturbation method, IEEE Trans. Automat. Contr. 45 (2000) 1839–1853. PDF
[LM23] C. Lauand & S. Meyn, Quasi-stochastic approximation: design principles with applications to extremum seeking control, IEEE Control Systems Magazine 43 (2023). doi:10.1109/MCS.2023.3291884
[A22] N. J. Abbas et al., A reference open-source controller for fixed and floating offshore wind turbines, Wind Energy Science 7 (2022) 53–73. doi:10.5194/wes-7-53-2022
[J09] J. Jonkman, S. Butterfield, W. Musial & G. Scott, Definition of a 5-MW reference wind turbine, NREL/TP-500-38060 (2009). PDF · [IEC] IEC 61400-1 ed. 3, normal turbulence model.
See also the matrix gain.
← Wind Turbine Control · Q1, Where k Lands