Same 20 scenarios, same fault-lift times, same economics. Saving = profit minus the no-agent profit over each scenario's window.
USD over each scenario's window, including the shutdown + startup penalty when the plant stops. Select a bar group to open the scenario.
Wall-clock time from detection to dispatch. The plant is held while the agents decide, so this is time a real operator would wait, not simulated time.
Computed from the runs below unless marked “audit”. One run per scenario and configuration: treat differences of one or two plant stops as noise.
v1 re-decides every 5 minutes while a fault is detected; v2 decides once per fault episode (alarm or SPE trigger; a new safety alarm or a newly failed pump opens a new decision), with plain-language feedback and the ADMIT record re-check. Same 20 scenarios and economics.
The same 20 scenarios, fault-lift times and economics for every LLM; only the model behind the agents changes. Open models ran locally through Ollama (4-bit quantised, 16k context, temperature 0) on one 8 GB laptop GPU.
Plant stops out of the runs done, and the saving vs no agents below. Fewer stops is better; bold marks the fewest for a configuration among finished campaigns. Without agents the plant stops in scenarios.
Pale wide bar = protocol v1, solid narrow bar = protocol v2, same scenario. Saving vs no agents over each scenario's window (top) and plant stops (bottom): one plant stop costs about $20k, so most saving differences are a scenario that stopped in one protocol and not the other.
Every rejected proposal of the v2 campaigns, by failure type, summed over the five configurations. Each rejection was fed back to the model in plain language before it tried again (up to 4 proposals per decision).
Each PI loop from the nominal steady state, sensor noise on: setpoint step up at 5 min, back to the design value at 45 min, run to 85 min. Pass = output moves the right way and PV ends within 20 % of the step (or two deadbands) after both steps, no SIF, no priority-1 alarm. PNG plots of the same runs are in benchmark_results/loop_plots/.