pith:J3QNN4CB
Accelerating Reinforcement Learning for Wind Farm Control via Expert Demonstrations
Pretraining with expert demonstrations lets reinforcement learning wind farm controllers start at baseline performance instead of lagging by 12 percent.
arxiv:2604.22794 v1 · 2026-04-13 · eess.SY · cs.LG · cs.SY
Add to your LaTeX paper
\usepackage{pith}
\pithnumber{J3QNN4CBHU24AABEYRYZQM7ACA}
Prints a linked badge after your title and injects PDF metadata. Compiles on arXiv. Learn more · Embed verified badge
Record completeness
Claims
Experiments on a 2x2 wind farm show that pretraining eliminates the costly initial learning phase: while an untrained agent underperforms the greedy zero-yaw baseline by approximately 12%, pretraining raises initial performance to near-baseline levels. During online fine-tuning, all configurations converge within 250,000 environment steps to achieve similar performance, ultimately exceeding that of a lookup-table controller, which reaches approximately 7% power gain after 500,000 steps.
That expert demonstrations generated by a steady-state PyWake optimizer inside the dynamic WindGym simulator transfer effectively to initialize both actor and critic networks of a Soft Actor-Critic agent for online fine-tuning.
Pretraining Soft Actor-Critic agents via behavior cloning on PyWake-generated expert trajectories in WindGym simulations eliminates the initial learning phase for 2x2 wind farm control and yields final performance exceeding a lookup-table baseline.
References
Receipt and verification
| First computed | 2026-06-01T01:02:40.525474Z |
|---|---|
| Builder | pith-number-builder-2026-05-17-v1 |
| Signature | Pith Ed25519
(pith-v1-2026-05) · public key |
| Schema | pith-number/v1.0 |
Canonical hash
4ee0d6f0413d35c00024c4719833e010346918cf67ed4bd7a227883874f28f7b
Aliases
· · · · ·Agent API
Verify this Pith Number yourself
curl -sH 'Accept: application/ld+json' https://pith.science/pith/J3QNN4CBHU24AABEYRYZQM7ACA \
| jq -c '.canonical_record' \
| python3 -c "import sys,json,hashlib; b=json.dumps(json.loads(sys.stdin.read()), sort_keys=True, separators=(',',':'), ensure_ascii=False).encode(); print(hashlib.sha256(b).hexdigest())"
# expect: 4ee0d6f0413d35c00024c4719833e010346918cf67ed4bd7a227883874f28f7b
Canonical record JSON
{
"metadata": {
"abstract_canon_sha256": "dab427759cb036f5f65ec21193c9e00c4c2b1d9d117e1e8e281f345542bbf941",
"cross_cats_sorted": [
"cs.LG",
"cs.SY"
],
"license": "http://creativecommons.org/licenses/by/4.0/",
"primary_cat": "eess.SY",
"submitted_at": "2026-04-13T12:25:43Z",
"title_canon_sha256": "354f22270abbd1f919f0a5d1f61a6fe2dfb7ac45020c9ba7611fc927b2e38384"
},
"schema_version": "1.0",
"source": {
"id": "2604.22794",
"kind": "arxiv",
"version": 1
}
}