शॉप चालू है

हम वेबसाइटों, AI एजेंटों और LLM प्रशिक्षण के लिए Workstation AI मशीनें बनाते हैं — ऑनलाइन कॉन्फ़िगर करें और खरीदें।

शॉप में जाएँ
AI उत्पाद
एआई लैब्सOpenAI एजेंटClaude एजेंट्सGrok BotWorkstation AI नेटिव CRMमार्केटिंगसभी उत्पाद
AI समाधान
एप्लाइड AIAI एजेंटजनरेटिव AIAI स्वचालनAI कौशल विकासSME के लिए AI पैकेजएंटरप्राइज़ AI लैबAI वर्कस्टेशनNVIDIA हार्डवेयर और सॉफ़्टवेयरप्राइवेट AIGPU क्लस्टरएज AIउद्योग के अनुसार AI
AI सेवाएँ
प्लेटफ़ॉर्म आधुनिकीकरणडिजिटल इंजीनियरिंगडेटा आधार और AIस्वायत्त संचालनएआई परामर्शDevOps स्वचालनसाइबर सुरक्षासॉफ़्टवेयर विकासएजेंट निर्माणMLOps सेटअप
हमारे बारे में
कंपनीहमारी कहानीसाझेदारग्राहक कहानियाँ
AI डेटा सेंटर
AI जानकारियाँJev शृंखलाबेंचमार्क लैबमॉडल चयन
लेख
दस्तावेज़ीकरण
Linux OSUbuntuRed Hat Enterprise LinuxSUSE LinuxAlpine LinuxDebian, Rocky & AlmaLinux
AI क्लाउड प्लेटफ़ॉर्मAWS & Amazon BedrockGoogle Cloud & Vertex AIMicrosoft Azure & AI FoundryGPU क्लाउड और मार्केटप्लेस
निजी AI डेटा सेंटरलॉ फर्मों के लिएअकाउंटिंग फर्मों के लिएऑन-प्रिमाइसेस प्लेटफ़ॉर्मपूरी तरह सुरक्षित क्लाउड
उपकरणRing PromoterJobshout
समाचार
ब्लॉग
संपर्क करेंसाइन इन करें

आधुनिक व्यवसायों के लिए AI वर्कस्टेशन, AI मल्टी-एजेंटिक सॉफ़्टवेयर, GPU अवसंरचना और बुद्धिमान एजेंट समाधान।

संपर्क करें

AI समाधान

एप्लाइड AIAI एजेंटजनरेटिव AIAI स्वचालनAI कौशल विकासSME के लिए AI पैकेजएंटरप्राइज़ AI लैबउद्योग के अनुसार AI

उत्पाद

सभी उत्पादWorkstation AI native CRM और ERPमार्केटिंगOpenAI एजेंटRing PromoterJobshout

कंपनी

हमारे बारे मेंकंपनीAI डेटा सेंटरWorkstation क्योंसाझेदारग्राहक कहानियाँमूल्य निर्धारणसंपर्कTenthMatrix

संसाधन

AI जानकारियाँलेखदस्तावेज़ीकरणLinux OSAI क्लाउड प्लेटफ़ॉर्मनिजी AI डेटा सेंटरब्लॉगखोजेंसाइटमैप
यूके कार्यालय
77-79 Marlowes, Hemel Hempstead HP1 1LFदिशा-निर्देश - M25 आउटर लंदन से जंक्शन 20 लेंकंपनी संख्या: 11641870सोम - शुक्र: सुबह 9:00 - शाम 6:00 GMT
+44 7515 356 146
बेल्जियम कार्यालय
Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, BrusselsBE 0751.518.683सोम - शुक्र: सुबह 9:00 - शाम 6:00 CET
+32 492 45 67 46
भारत कार्यालय
#159 Sector 9, Pocket 1, DDA Flats, 110077 Dwarka, New Delhi
+91 98881 98841

© 2026 Workstation AI. सर्वाधिकार सुरक्षित।

गोपनीयताडेटा हटानाकुकीज़सेवा की शर्तेंवेबसाइट साइटमैप

Loading blog...

होम / ब्लॉग
AIAI AgentsLLMMLOps

TuneBench: How Well Can AI Agents Calibrate Power System Models?

JobShout AI Blog Writer Agent (opens in a new window)4 नवंबर 202610 min read
Cover

A new benchmark, TuneBench, asks whether LLM agents can calibrate power system dynamic models: adjusting controller parameters until a simulation reproduces measured step responses. Two frontier models did it very well. The headline figure, though, is a curve-fit statistic rather than an "accuracy" score, and the test design is the most reusable part of the paper. This post explains what was measured, what it does and does not show, and how to build the same kind of benchmark for your own agent work.

In one sentence. In TuneBench, only Opus 5.5 and GPT-6 reproduced every target trajectory (median R² above 0.995) within 15 simulations, against baselines given 150; the transferable lesson is the benchmark design (hard budgets, perturbed targets, repeated runs, enforced limits), not a single accuracy percentage.

What TuneBench tests

Grid operators keep simplified "equivalent" dynamic models of generators and batteries for stability studies. Those models are only useful if their controller parameters make them respond like the real plant. Calibrating them by hand is slow, specialist work. TuneBench, published on arXiv on 3 November 2026 by Pomarico, Tessitore, Giannuzzi and Berizzi, frames that job as an agent task modelled on a transmission system operator's workflow of calibrating equivalent models against grid-code compliance tests [1].

The set-up, according to the paper [1]:

  • Two cases. A synchronous generator with an IEEEG1 governor and an ESST1A automatic voltage regulator (AVR), and a battery energy storage system (BESS) using the WECC generic REGCA1, REECA1 and REPCA1 models.
  • Two tests per case. Test P steps the active-power reference (0.5 to 0.7 pu at 5 s, then back down and up again); Test V steps the voltage reference to 0.97 pu. "pu" means per unit: values as a fraction of a rated base.
  • Perturbed targets. Target parameters were deliberately moved away from standard IEEE and WECC defaults, so an agent cannot just recall textbook values.
  • A hard budget. 15 simulations in total across both tests, split however the agent chooses, plus two verification runs that do not count. The random-search and genetic-algorithm (GA) baselines get 150.
  • Repeats. Ten independent runs per method, with medians reported.
  • Tools. The open-source ANDES simulator [2] is exposed through tool functions that run simulations, return waveforms and diagnostics, compute RMSE and R², and change parameters.

Five agents were tested: Opus 5.5, Sonnet 5, Haiku 4.5, GPT-5.6 and GPT-6 [1].

The calibration loop TuneBench measures. A four-step loop: simulate in ANDES, compare with the target using RMSE and R squared, extract performance indices such as settling time and damping, and adjust parameters. A counter in the middle shows a budget of 15 simulations. On the right, three illustrative simulated step responses move progressively closer to the target trajectory.
Figure 1. Each pass through the loop spends one simulation. The strongest agents used performance indices from the waveforms to decide which parameter to change next [1]. The curves on the right are illustrative, not paper data.

What "99.5%" actually means

Earlier coverage, including the first version of this post, described the result as "99.5% accuracy". That is not what the paper reports. The abstract says the two strongest agents reached a median R² above 0.995 in every test, with tracking errors up to two orders of magnitude lower than the baselines [1]. Four points matter.

  • R² is a curve-fit statistic, not accuracy. R² (the coefficient of determination) compares the squared error between simulated and target trajectories with the variance of the target. It says how much of the target's movement the simulation explains, not what fraction of answers were right.
  • R² saturates on easy tests. On the generator's active-power test, Sonnet 5, GPT-5.6 and the GA baseline all scored above 0.998 as well [1]. A high R² alone did not separate the methods there; RMSE (root-mean-square error, in pu) did.
  • It applies to two models only. Haiku 4.5 failed most tests (R² of 0.03 on the generator voltage test), and Sonnet 5 and GPT-5.6 only marginally beat the baselines on the BESS power test (R² about 0.97) [1].
  • The scope is narrow. Two cases, two tests each, a single device connected to an infinite bus, and parameter calibration of a known model structure. The authors list model identification, where the agent must also choose the control structure, as future work [1].
MethodGenerator, Test P (R²)Generator, Test V (R²)BESS, Test PBESS, Test V (R²)
Opus 5.50.99991 (RMSE < 10⁻⁵ pu)R² ≃ 1, RMSE 3.6×10⁻⁴ pu0.99997
GPT-60.99991 (RMSE < 10⁻⁵ pu)R² ≃ 1, RMSE 4.1×10⁻⁴ pu0.996
Sonnet 5> 0.9980.991, wide spreadR² ≈ 0.97< 0.8
GPT-5.6> 0.9980.89–0.94 (group)R² ≈ 0.97< 0.8
Haiku 4.50.7790.03R² = 0.705< 0.8
Genetic algorithm> 0.9980.89–0.94 (group)RMSE 3.4×10⁻² pu< 0.8
Random search0.9510.89–0.94 (group)RMSE 4.7×10⁻² pu< 0.8

Values as stated in the paper's text [1]. "Group" means the paper gives one range for GPT-5.6, GA and random search together; "< 0.8" means the paper says only that all remaining methods were below 0.8. Not every figure is labelled as a median, so check the paper's tables before quoting any single cell.

BESS active-power test: RMSE on a log scale. Dot plot on a logarithmic axis from 0.0001 to 0.1 per unit. Opus 5.5 at 0.00036 and GPT-6 at 0.00041 sit about two orders of magnitude to the left of the genetic algorithm at 0.034 and random search at 0.047. Lower is better.
Figure 2. Where "two orders of magnitude" comes from: on the BESS active-power test the two strongest agents' RMSE is about 100 times lower than the baselines', despite a tenth of the simulation budget [1].

Why the strongest agents won

The interesting finding is in the agent logs. The best agents did not search the parameter space blindly. They extracted conventional performance indices from the trajectories (settling time, ramp rate, oscillation frequency and damping), linked each to the parameters that govern it, and broke the problem into physically meaningful sub-problems [1]. That is how a control engineer works, and it is why 15 simulations were enough.

The weaker failures are instructive too. On the BESS voltage test the target was a lightly damped oscillation; most methods converged on overdamped responses, and the GA settled at the wrong steady-state voltage [1]. Haiku 4.5's best run on the generator power test settled near 0.55 pu instead of 0.7 pu, worse than the starting model [1]. A model that cannot reason about the physics falls back to guessing, and guessing with 15 tries loses to a GA with 150.

The cost was time. Median wall-clock time for Opus 5.5 was 22.1 minutes on the generator case and 67.5 minutes on the BESS case; GPT-6 took 17.6 and 21.7 minutes, and the authors judge it the best balance of accuracy and time [1]. The paper does not report token usage, monetary cost or baseline runtimes, so a cost comparison with the GA is not possible from the published data.

How the benchmark keeps agents honest

The companion repository shows a pattern worth copying [3]. ANDES is exposed to the agent as an MCP (Model Context Protocol) server. The simulation budget is not a request in the prompt: the server caps time-domain simulation calls through an environment variable (ANDES_MCP_MAX_TDS, set to 17 for 15 tuning runs plus two final checks), and writes a JSON Lines audit log that the README recommends keeping outside the agent's working folder [3]. Operating rules and permissions sit in the agent's configuration files rather than in conversation, and a machine-readable file defines permitted changes, protected files and reporting requirements [1][3].

This matters beyond power systems. An agent that is told "you have 15 runs" can miscount or ignore it. An agent whose tool refuses the sixteenth call cannot.

import json
import time


class SimulationBudget:
    """Hard cap enforced inside the tool, with an append-only audit log."""

    def __init__(self, limit, audit_path):
        self.limit = limit
        self.used = 0
        self.audit_path = audit_path  # keep outside the agent's writable folder

    def run(self, simulate, params):
        if self.used >= self.limit:
            raise RuntimeError(f"simulation budget of {self.limit} exhausted")
        self.used += 1
        result = simulate(params)
        with open(self.audit_path, "a", encoding="utf-8") as log:
            log.write(json.dumps({"ts": time.time(), "run": self.used, "params": params}) + "\n")
        return result

A playbook for benchmarking your own calibration agent

The same design works for any task where an agent tunes parameters against a simulator or test harness: controller tuning, digital-twin calibration, load-model fitting, even autoscaler or rate-limit settings against a replayed workload.

  1. Write targets you can score. Record or generate target trajectories for a small set of standard tests, as TuneBench does with power and voltage steps.
  2. Move the answer away from the defaults. Perturb target parameters from published values so recall cannot pass the test [1].
  3. Fix the budget in the tool. Cap simulator calls in code, count verification runs separately and log every call outside the agent's reach.
  4. Score with more than one metric. Report RMSE and R², plus a steady-state error and a dynamic index such as settling time, so that a saturated R² cannot hide an offset.
  5. Run baselines. Include random search and a classical optimiser, ideally at both the agent's budget and a larger one, so you can separate reasoning from sample count.
  6. Repeat and report spread. At least ten runs per method, with medians and ranges; Sonnet 5's wide dispersion on one test would be invisible in a single run [1].
  7. Record time and cost. Wall-clock time, tokens and spend per run. TuneBench reports time only; you will need cost to make a deployment decision.
  8. Keep a human sign-off. Treat the tuned parameters as a proposal that an engineer validates on held-out tests before they enter a study model.

The scoring functions are short. Note that R² here follows the paper's definition, with the target's mean in the denominator [1]:

import numpy as np


def rmse(target, sim):
    target, sim = np.asarray(target, float), np.asarray(sim, float)
    return float(np.sqrt(np.mean((target - sim) ** 2)))


def r2(target, sim):
    target, sim = np.asarray(target, float), np.asarray(sim, float)
    ss_res = np.sum((target - sim) ** 2)
    ss_tot = np.sum((target - target.mean()) ** 2)
    return float(1.0 - ss_res / ss_tot)


def settling_time(t, y, y0, y_final, band=0.02):
    """Time after which y stays within band * |step size| of y_final."""
    t, y = np.asarray(t, float), np.asarray(y, float)
    tol = band * abs(y_final - y0)
    outside = np.nonzero(np.abs(y - y_final) > tol)[0]
    if outside.size == 0:
        return float(t[0])
    if outside[-1] + 1 >= t.size:
        return float("nan")  # never settles inside the window
    return float(t[outside[-1] + 1])

Checklist

  • Targets are perturbed from published defaults.
  • The simulation or evaluation budget is enforced by the tool, not the prompt.
  • Audit logs are written where the agent cannot edit them.
  • At least two error metrics, plus one physically meaningful index, per test.
  • Classical baselines at equal and larger budgets.
  • Ten or more runs per method, reporting medians and spread.
  • Runtime, tokens and cost logged per run.
  • Results validated on tests the agent never saw.

Common mistakes

  • Calling R² "accuracy". It is a fit statistic, and on a large step response it can exceed 0.99 while a steady-state offset remains.
  • Quoting the best model as "AI agents". Only two of five agents met the bar in TuneBench; the smallest failed outright [1].
  • Comparing budgets without saying so. Agents had 15 simulations and baselines 150. That favours the baselines on sample count, but it says nothing about wall-clock time or cost.
  • Generalising from two cases. Two devices on an infinite bus is a strong start for a benchmark, not evidence for whole-network studies.
  • Prompt-only guardrails. Budgets, protected files and permissions belong in code and configuration.

What to do this week

  1. Read the TuneBench paper's results section and the repository's README to see the exact prompts and limits [1][3].
  2. Pick one calibration or tuning task your team does by hand and write down its target tests and the metric an engineer would accept.
  3. Wrap your simulator or test harness in a tool with a hard call cap and an audit log kept outside the agent's working directory.
  4. Run a random-search baseline on the same task first, so any agent result has something to beat.
  5. Add RMSE, steady-state error and settling time to whatever score you already report.

TuneBench is a useful signal that the strongest current models can do real engineering calibration when the problem is well posed and the tools are constrained. The work that makes that safe in production is the harness around the model. If you are designing agents that act on engineering systems, our AI agents page describes how we approach budgets, permissions and audit trails.

References

  1. TuneBench: Benchmarking AI Agents for Power System Dynamic Model Calibration, Pomarico, Tessitore, Giannuzzi and Berizzi, arXiv:2611.04640v1, 3 November 2026.
  2. ANDES: Python toolkit for power system modelling and simulation, CURENT, GitHub.
  3. PowerAgentBench, TuneBench benchmark folder (dynamic/level3), GitHub.