1 · The problem
Drift that lives between agents
What happens to one agent, in one equation
Write \(s_i\) for the part of the state that belongs to agent \(i\). Over one step, its evolution separates into a private part and a coupling part:
- \(F_i(s_i, a_i)\)
- The agent on its own: how its state would evolve if no one else used the medium.
- \(C_i(\peer{s_{-i}, \ba_{-i}};\, s_i)\)
- The coupling: what the other agents (written \(-i\)) do to agent \(i\) through the medium.
- \(\drv{\btheta(t)}\)
- The coupling gains: what one unit of the others' activity costs agent \(i\) at time \(t\). External conditions act here and only here.
- \(\oplus\)
- How the two parts combine: by addition (an offset to injected power), by multiplication (a loss of force), or through a realised outcome (a travel time).
Three kinds of drift, and two tests that separate them
From agent \(i\)'s point of view, the environment is nonstationary whenever one ingredient of the equation above changes over time. There are three possibilities, and each has been studied by a different community. Two simple experiments tell them apart: freeze the policies of all other agents, or remove the other agents altogether.
| Kind of drift | What changes | Freeze the others' policies | Remove the others | Studied in |
|---|---|---|---|---|
| (A) Learning-induced | \(\peer{\ba_{-i}(t)}\), because the other agents are learning | Drift stops | Drift stops | Multi-agent RL |
| (B) Exogenous | \(F_i\) itself; the world drifts regardless of the other agents | Drift continues | Drift continues | Nonstationary and continual RL |
| (C) Interaction-mediatedThis paper | \(\drv{\btheta(t)}\), while \(F_i\) stays fixed | Drift continues | Drift stops | This paper |
Interaction-mediated drift is the only kind that survives freezing every partner and disappears for a lone agent. It survives freezing because a frozen fleet still loads the medium, and the external condition still acts on that load. It disappears for a lone agent because, with no one else on the medium, the coupling term \(C_i\) is zero whatever the condition.
Seen as one joint system, (C) is a special case of exogenous drift. What sets it apart is its structure: the drift enters only through the coupling, and it scales with the fleet's own load.
Why this drift needs its own treatment
-
The harm is a product of two factors
Below saturation, the disturbance an agent receives in our feeder, lift and Ant benchmarks has the form
\[ y_i^{\star}(t) \;=\; \underbrace{\drv{\sigma\,\bar k\,A(t)}}_{\text{set by the condition}} \;\times\; \underbrace{\send^{\top}\peer{\bx_i(t)}}_{\text{set by the other agents}} \]and routing has the same structure through the ratio of traffic volume to rain-reduced capacity. A method that is told the weather still lacks the traffic, and a method that sees the traffic still lacks the weather. With either factor missing, the executed action misses its target by an amount that no amount of training removes.
-
Only a few numbers are unknown
Each agent knows the infrastructure layout (who shares its medium, and how strongly) and receives its peers' executed actions. Only the gains are unknown: \(r+1\) numbers per agent, where \(r\) is the number of coupling classes (three in our benchmarks), independent of the size of the fleet. These can be estimated online from the agent's own measured shortfall, which is what our method, PACT, does.
-
Reactions feed back
A correction is itself an action on the medium, so it becomes part of the neighbours' load. Inverters that react to one another can start to oscillate, and vehicles that all follow the same accurate forecast can all switch to the route predicted to be faster and make it slower. How strongly agents should act on their estimates is therefore itself a multi-agent question.
Example 1 · URB
Cars on a shared road during the rainy season
The two examples below reduce two of our benchmarks to their smallest form. The equations are the benchmarks' own harms, restricted to a single road link and to a pair of inverters.
Car \(i\) follows a route whose busiest link has capacity \(c\), in vehicles per hour. While it travels, the other cars put a volume \(\peer{n_{-i}}\) on that link. Rain removes part of the capacity, and travel time grows with the ratio of volume to capacity, as in the volume–delay curves used in transport planning:
- \(\drv{A(t)} \in [0,1]\)
- Rain intensity over a 100-day cycle: a smooth rise and fall over 50 wet days, then exactly zero on 50 dry days.
- \(\drv{L} = 0.14\)
- The capacity lost in heavy rain according to the Highway Capacity Manual, so \(\sigma = 1\) is heavy rain.
- \(\drv{\omega(t)}\)
- The fraction of the link's capacity that the rain leaves.
- \(\peer{u_i(t)}\)
- The load the other cars put on car \(i\)'s busiest link.
- \(h_i(t)\)
- How much longer the trip takes than in dry weather. The slope \(\alpha = 2.28\) is calibrated on the stock benchmark.
How it matches the definition
- Remove othersWith no other cars, \(\peer{n_{-i}} = 0\), so \(u_i = 0\) and \(h_i = 1\) in any rain. The lone car's task is stationary.
- Freeze othersWith every other car on a fixed route, \(h_i\) still rises through the wet season and returns to 1 on dry days. No one learns, and the task still drifts.
- Own dynamicsThe car never changed: same route, same speed limit, same free-flow time. Only the gain \(\drv{\sigma L A(t)}\) moved, and it reaches the car only through \(\peer{n_{-i}}\).
Delay factor over one wet/dry cycle
- Sharing the road, other cars frozen
- Alone on the road
- Rain intensity A(t)
Show the values as a table
| Day | A(t) | Alone | Sharing |
|---|
Example 2 · MAPDN
Two inverters on one feeder on a sunny day
Inverters \(i\) and \(j\) sit on the same radial feeder and share part of their path to the substation. Reactive power injected at \(j\) shifts the voltage at \(i\) in proportion to the reactance of the lines they share. Each inverter's firmware follows a Volt/VAr curve and answers a voltage change with reactive power of the opposite sign. At night the voltage sits in the curve's flat deadband and nothing happens. Under the midday sun it sits on the sloped part, and every injection by the neighbour provokes a reaction:
- \(S_{ij}\)
- Voltage sensitivity of the shared lines (linearised DistFlow): \(X_b\) and \(V_b\) are the reactance and nominal voltage of branch \(b\).
- \(\drv{k}\)
- The Volt/VAr slope. \(\sigma = 1\) is the IEEE 1547 Category B default curve, and \(\sigma = 3\) the steepest curve the standard allows.
- \(\drv{A(t)}\)
- The solar profile: \(\sin^2\) between 06:00 and 18:00, exactly zero at night.
- \(\bar s_i\)
- The inverter's rating; its reaction is proportional to its size.
- \(q_i^{\sent},\ q_i^{\ex}\)
- The reactive power the inverter was told to inject, and what it actually injects.
How it matches the definition
- Remove othersWithout \(j\) there is no shared path, so \(\Delta v_i = 0\) and \(d_i = 0\) at any hour and any severity.
- Freeze othersWith \(q_j\) held fixed, \(d_i\) still swings from zero at night to its largest value at noon.
- Own dynamicsThe inverter hardware is unchanged. Only the gain \(\drv{\sigma k A(t)}\) moved.
This example also shows why reactions matter. Inverter \(j\) reacts to \(i\) in the same way, so each reaction becomes the input to the other's next one. For the whole fleet, with no compensation,
where \(\rho(G)\) is the spectral radius of \(G\). The mutual reactions die out when the loop gain \(\Theta(t)\) is below 1 and grow when it is above 1: the fleet starts to oscillate, which grid engineers call hunting. For two identical inverters \(\rho(G) = \bar s\, S_{ij}\). A single inverter has \(\rho(G) = 0\) and never hunts.
Loop gain over one day on the paper's three feeders
- 6 inverters
- 22 inverters (main feeder)
- 38 inverters
- Solar profile A(t)
| Feeder | kρ(G) | Θ at noon | Reactions grow (Θ > 1) | Noon threshold σc |
|---|
Show the values as a table
| Time | A(t) | Θ, 6 inv. | Θ, 22 inv. | Θ, 38 inv. |
|---|
In both examples the agent's own dynamics never change, the condition acts only through the other agents, and the effect scales with how heavily they use the medium. The same structure appears in all four benchmarks.
2 · The benchmarks
Four benchmarks, one structure
Each benchmark is used exactly as published when \(\sigma = 0\). Raising \(\sigma\) strengthens an external condition whose effect on an agent scales with the other agents' load on the shared medium. The reward function is never modified: agents earn less only because the physics delivers less.
Every instance declares the same four objects.
- M · medium
- What the agents use together, and the load \(\phi_j\) that each user \(j\) puts on it.
- W · coupling
- A fixed operator computed from the infrastructure layout: which agents affect which, and how strongly.
- D · driver
- An external condition \(\drv{A(t)} \in [0,1]\), from no effect (0) to full effect (1). No agent can influence it.
- H · harm
- How the condition, at intensity \(\drv{\sigma A(t)}\), turns the peers' load into a disturbance.
At severity \(\sigma\), the action \(a_i\) that agent \(i\) sends is executed as
The channels \(\peer{\bx_i}\) summarise the other agents' executed load through \(W\), one channel per coupling class, possibly filtered over time. They are exactly zero when agent \(i\) is alone. The harm map does nothing when either factor is absent, \(h(0, \bx; a) = h(\xi, \mathbf 0; a) = a\), which is what makes both tests of Section 1 hold by construction. In routing the harm acts on the realised travel time instead of the action.
All four drivers share one shape
Each driver is a smooth bump over the active half of its cycle and exactly zero over the other half:
The zero half is a built-in control: on those steps every benchmark is the unmodified original at every \(\sigma\). The agents are told neither the period nor the phase.
| URB | MAPDN | VMAS Balance | MaMuJoCo Ant | |
|---|---|---|---|---|
| Task | Route choice for connected vehicles | Voltage control with PV inverters | Cooperative lifting | Four-legged locomotion |
| Agents | 89 vehicles among 222 travellers | 22 inverters, 141-bus feeder | 4 lifters | 4 legs, 2 joints each |
| M · medium | Road links | Feeder lines | Shared supply | The robot's torso |
| W · coupling | Shared links, over capacity | Voltage sensitivity of shared lines | Distance between actuators | The robot's own inverse inertia |
| D · driver | Rain, 100-day wet/dry cycle | Sun, 06:00–18:00 each day | Supply softening, 100-step cycle | Drivetrain warm-up, 20,000-step cycle |
| H · harm | Longer travel time | Unrequested reactive power | Lost force | Unrequested joint torque |
| Acts on | Outcome | Action, additive | Action, multiplicative | Action, additive |
| Inverse | None: steer the route choice | Subtract | Divide | Subtract |
| σ = 1 means | HCM heavy rain (published) | IEEE 1547 default curve (published) | Stated calibration | Stated calibration |
Where the phenomenon comes fromURB · routing in the rain
- Harm on travel time
- No inverse: route steering
- σ = 1: HCM heavy rain
Connected autonomous vehicles choose routes through a real road network, simulated in SUMO, alongside human drivers that no agent controls (Akman et al., 2025). We use the saint_arnoult network: 222 travellers, of whom 89 are controlled, 745 links, 215 origin–destination pairs and 4 candidate routes per traveller. Each simulated day is one decision.
Origin of the phenomenon
Rain and traffic: measured by traffic engineers, not constructed by us
Rain lowers the number of vehicles a road can serve per hour, because drivers keep longer headways and accelerate more gently. The Highway Capacity Manual tabulates this effect as weather adjustment factors for capacity, and field studies of freeways report the same pattern (Smith et al., 2004; Agarwal et al., 2005). In heavy rain, capacity falls by about 14%. That is the value we use for \(\sigma = 1\).
Lost capacity only costs time when traffic needs it. On an empty road at night, a driver in heavy rain loses almost no time to congestion, because the capacity that remains is still far more than one car needs. At rush hour the same rain produces queues. The extra delay a driver suffers is therefore set jointly by the weather and by the other drivers. This is interaction-mediated nonstationarity as it occurs in everyday traffic. We first observed the structure in URB, and it is the model for the definition we apply to the other three benchmarks.
Rain also lowers free-flow speed slightly, and a lone driver feels that part. It is ordinary exogenous drift, type (B). The benchmark models only the capacity effect, which is the part that depends on other traffic.
Road links
Agent \(i\)'s load is taken on the busiest link of its chosen route: the flow of other vehicles over the capacity that the rain leaves.
- \(\ind{e \in a_j}\)
- Whether traveller \(j\)'s route uses link \(e\).
- \(O_{ij}\)
- Temporal overlap: whether \(i\) and \(j\) are on the road at the same time.
- \(T_i\)
- The duration of \(i\)'s trip, which turns a vehicle count into a flow.
- \(c_e\)
- Capacity of link \(e\): number of lanes × 600 vehicles per hour.
Who shares which link, and when
Link sharing weighted by temporal overlap and capacity, read from the road network and the departure schedule before any training.
Rain over a 100-day wet/dry cycle
Rain leaves link \(e\) a fraction \(\omega_e\) of its capacity:
\(\eta_e \in [0.4, 2.0]\) is a per-link rain sensitivity derived from the link's design speed, so faster roads lose more capacity, and the floor \(\underline{\omega}\) keeps every link open.
A longer trip
The travel time returned by the simulator is scaled by the delay factor of the rain, relative to dry weather:
This is the Bureau of Public Roads volume–delay curve used throughout transport planning, in its linear form because URB operates well below capacity. The slope \(\alpha_h = 2.28\) is calibrated once on the stock benchmark (a mean excess delay of 0.50 at a mean busiest-link ratio of 0.219). A delay cannot be undone once the route is chosen, so the harm has no inverse. PACT instead biases the route choice toward routes predicted to be less delayed.
- σ = 0 · dry day\(h_i = 1\) exactly. Verified on all 100 days of the cycle; the 50 dry days are unaffected at every \(\sigma\).
- Lone vehicleEvery numerator is zero, so \(h_i = 1\). In SUMO a lone vehicle reads exactly zero peer load.
- Frozen partnersThe 133 human drivers follow fixed, selfish policies, and their load still turns into more or less delay as the rain comes and goes.
- Monotone\(h_i\) never decreases as \(\sigma\) grows.
Power distributionMAPDN · voltage control under the midday sun
- Harm on reactive power, additive
- Inverse: subtract
- σ = 1: IEEE 1547 default curve
Photovoltaic inverters on a radial distribution feeder regulate voltage by injecting or absorbing reactive power \(q_i\) (Wang et al., 2021). We use the 141-bus, 12.5 kV feeder with 22 inverters. The goal is to keep every bus voltage within 0.95–1.05 per unit.
In the stock benchmark each inverter delivers exactly the reactive power it is told to. Deployed inverters also run an autonomous Volt/VAr curve in their firmware, as specified by IEEE 1547-2018, and grid codes such as California Rule 21 and AS/NZS 4777.2 require it to be active. The operator can move the curve's reference voltage remotely. On the sloped part of the curve this amounts to dispatching a reactive-power level, while the curve keeps reacting to the terminal voltage around it. We model the dispatched level as the agent's action and the curve's reaction as the harm. The terminal voltage is moved by the reactive power of every other inverter on the shared lines, so the curves respond to one another. On feeders with many inverters this interaction is a known cause of voltage oscillation (Jahangiri & Aliprantis, 2013; Farivar et al., 2013; Andrén et al., 2015).
The sun sets how strong the interaction is. At night the voltage sits inside the curve's flat deadband and the firmware does nothing. Around midday, high solar output raises voltages onto the sloped part of the curve, and the same injections from the neighbours provoke stronger reactions.
Feeder lines
Agent \(i\)'s load is the voltage change that its peers' last injections cause at its terminal, split by conductor class \(m\) (heavy, medium and light lines, by resistance per kilometre):
Voltage sensitivity of the shared lines
The linearised DistFlow sensitivity (Baran & Wu, 1989): how strongly reactive power at \(j\) moves the voltage at \(i\) through the class-\(m\) lines on their common path to the substation. It is read from the network model before any training.
A clear-sky solar day
\(A(t) = \sin^2\) between 06:00 and 18:00 and exactly zero at night, on 3-minute steps (480 per day). The 241 steps with \(A = 0\) reproduce the stock task at every \(\sigma\).
An unrequested reaction
Each inverter reacts to the voltage change its neighbours cause, with a Volt/VAr slope that the driver scales:
- \(\drv{k}\)
- Reaction gain. \(\sigma = 1\) is the IEEE 1547-2018 Category B default slope (0.44 per-unit reactive power over 0.06 per-unit voltage); \(\sigma = 3\) is the steepest curve the standard allows, so the experiments stay within the standard.
- \(\send_m\)
- Class gains, unknown to the agents.
- \(q_{\mathrm{sat}} = 0.44\)
- The curve's own reactive-power limit, in units of rating.
- \(\bar q_i\)
- Capability \(\big(\bar s_i^2 - (p_i^{\mathrm{pv}})^2\big)^{1/2}\) at active power \(p_i^{\mathrm{pv}}\).
The reaction adds to the inverter's own action, so a correct estimate cancels it by subtraction. As in Example 2, reactions feed back through the lines: on this feeder \(k\rho(G) = 0.675\), so the midday threshold is \(\sigma_c = 1.48\) and the uncompensated fleet is past it at \(\sigma = 3\).
- Lone inverterReads exactly zero harm at \(\sigma \in \{0.5, 1, 3, 100\}\).
- σ = 0 · nightReproduces the stock task bit for bit at every driver value, and at every \(\sigma\) on the steps with \(A(t) = 0\).
- Frozen partnersThe harm still varies over the day.
- Type (B) controlWhen the sun acts on each inverter directly, an isolated inverter feels it. The interaction-mediated harm it does not.
Cooperative roboticsVMAS Balance · lifting from a shared supply
- Harm on force, multiplicative
- Inverse: divide
- σ = 1: stated calibration
Four agents lift a beam carrying a package toward a goal (Bettini et al., 2022). If the beam tilts too far, the package falls, the episode ends and the team receives a penalty of −10. The difficulty is agreement: when one support pushes harder than the others, the beam rotates.
We add a shared supply, as in a synchronised hydraulic lift, where several jacks raise one load from a single power pack. When several jacks draw at once, the supply pressure sags and every jack delivers less force than it commanded. How much it sags for a given draw changes during operation: as the hydraulic fluid warms over a shift, its viscosity falls, internal leakage rises and the supply becomes softer. A jack alone on the supply receives full pressure at any temperature. In the benchmark this condition follows the same periodic profile as URB's wet/dry cycle.
The supply
Each agent's load on the supply is the magnitude of its executed force. The channels filter the peers' load over time, because pressure does not respond instantly:
Distance between actuators
Actuators closer together couple more strongly. \(\recv_{\cls(i)} \in \{1.6,\ 1.0,\ 0.4\}\) is how much droop an actuator of hardware class \(\cls(i)\) feels, and \(\lambda = 0.35\) is the length scale. Both are public.
A periodic softening of the supply
A 100-step cycle with the shared shape: active over the first half, exactly zero over the second (51 of every 100 steps have \(A = 0\)). The clock keeps running across episodes.
Lost force
The droop scales the delivered force down:
- \(\send_m\)
- How much a class-\(m\) actuator's draw costs the others, \((0.2,\ 1.0,\ 1.8)\). Unknown to the agents.
- \(x_{\mathrm{ref}}\)
- A reference load that fixes the meaning of \(\sigma\).
- \(\delta_{\max} = 0.9\)
- The droop limit: a support never delivers less than 10% of its command.
\(\sigma = 1\) is a stated calibration: at the driver's peak, with every peer at full effort, the droop reaches 0.14, URB's heavy-rain value, so that severities are comparable across benchmarks. The droop grows with the peers' forces, so it penalises exactly the coordinated pushing the task rewards, and the support that droops most tips the beam first. Dividing the command by one minus the predicted droop restores the commanded force, the same kind of feed-forward a lift controller applies.
- Lone actuatorExactly zero droop at any \(\sigma\).
- σ = 0 · A = 0Bit-identical to the stock scenario, and at every \(\sigma\) on the steps with \(A(t) = 0\).
- Frozen partnersThe droop still varies over the cycle, from 0 to 0.018 in the self-test.
LocomotionMulti-Agent MuJoCo Ant · four legs on one torso
- Harm on joint torque, additive
- Inverse: subtract
- σ = 1: stated calibration
Multi-Agent MuJoCo splits the MuJoCo Ant into agents (Peng et al., 2021). In the 4×2 configuration, each of four agents is one leg and controls the torques of its hip and ankle, each in \([-1, 1]\). The reward is the stock Ant reward: forward progress, minus control and contact costs, plus a survival bonus.
All four legs are bolted to one torso. When one leg drives hard, the torso reacts, and part of that reaction reaches the other legs' joints as torque they did not command. This coupling is part of the robot's rigid-body dynamics and is already present in stock Ant. What we add is drift in how strongly it is transmitted, driven by the temperature of the drivetrain. A cold drivetrain is stiff and firmly preloaded, and it holds each joint against the reaction. As the gearboxes and bearings warm during a run, lubricant viscosity falls, preload drops and backlash opens, so more of a neighbour's push leaks through to a joint. No leg controls the temperature, and a leg alone on the torso, with the others slack, feels nothing from them at any temperature.
The torso
The elements of the medium are the eight joints, and each joint's load is the torque it actually delivered at the previous step, which the legs broadcast. Compliance and backlash spread a reaction over a few control steps, so the channels are filtered with memory \(\rho = 0.8\):
Here \(\big|_i\) keeps agent \(i\)'s two joints. \(\mathbf e_i\) is the direction in the agent's two-joint action space along which the reaction arrives, and \(x_{m,i}\) is its size along load path \(m\).
The robot's own inverse inertia
The coupling operator is taken from the robot itself. \(\kappa\) is the joint-space inverse inertia \(|M^{-1}|\) of the Ant at its nominal pose, read out of the MuJoCo model: entry \(\kappa_{pq}\) says how strongly a unit torque at joint \(q\) accelerates joint \(p\).
The index \(m\) runs over three load paths: hip ← hip, ankle ← ankle and hip ↔ ankle. \(\recv_p\) is a declared per-actuator susceptibility with mean 1 and spread 0.35, standing for build tolerance and wear. The last factor removes pairs of joints on the same leg, so an agent never disturbs itself.
| Load path | Entry of \(|M^{-1}|\) |
|---|---|
| Hip ← hip, adjacent legs | 4.382 |
| Hip ← hip, diagonal legs | 2.823 |
| Ankle ← ankle, diagonal legs | 1.795 |
| Ankle ← ankle, adjacent legs | 0.309 |
| Hip ↔ ankle, any two joints | 0.000 |
The structure is not what a distance rule would suggest. Diagonal ankles have parallel axes and couple about six times more strongly than adjacent ones. At the nominal pose no hip torque accelerates any ankle, because hip axes are vertical and ankle axes horizontal. The hip ↔ ankle path is therefore exactly zero and is dropped, which leaves two live channels.
Drivetrain temperature
A 20,000-step cycle: a \(\sin^2\) bump over the warm half and exactly zero over the cold half. At the simulator's 0.05 s control step, one cycle lasts about 17 minutes, the time scale over which a drivetrain warms. The clock keeps running across episodes. \(A(t)\) changes by at most \(3.1\times10^{-4}\) per step, so it is slow compared with control, yet not constant within a 1000-step episode.
Unrequested joint torque
The reaction is added to the torque the leg sends, along the direction \(\mathbf e_i\):
- \(\drv{L} = 0.14\)
- The severity scale shared with the other benchmarks.
- \(\send_m\)
- \((1.5,\ 0.9,\ 0.6)\) for hip ← hip, ankle ← ankle and hip ↔ ankle. Hips attach directly to the torso and load each other hardest. Unknown to the agents.
- \(x_{\mathrm{ref}} = 7.73\)
- The value of \(\sum_m \send_m x_{m,i}\) when every peer applies full torque with random signs.
\(\sigma = 1\) is a stated calibration: at the driver's peak, with every peer at full torque, the disturbance reaching an agent is 0.14 of its torque range (measured: 0.1397). No published constant exists for drivetrain warm-up, so we reuse URB's heavy-rain value to keep severities comparable across benchmarks.
The disturbance is applied where the simulator executes the torques, below the reward. The control cost is charged on the torque the policy commanded, so the reward function is the stock one, and the ant earns less only because it walks worse. The disturbance is a torque in the agent's own action space, so a correct estimate is subtracted from the command and the delivered torque then equals the commanded one exactly. The agent measures its shortfall as \(y_i = \langle \ba_i^{\ex} - \ba_i^{\sent},\, \mathbf e_i\rangle\), which a servo reads through its motor current.
- σ = 0 · cold halfStock Ant, byte for byte, and at every \(\sigma\) whenever \(A(t) = 0\).
- Lone agentWhen one agent owns all eight joints, every channel is exactly zero and the disturbance is zero at \(\sigma = 3\).
- Frozen partnersThe disturbance still follows the warm and cold halves of the cycle.
- FeedbackThe channels are built from delivered torques, which include the disturbance, so the disturbance feeds into its own next value, as on the feeder.
3 · Questions about the design
What the benchmarks do and do not show
In every benchmark the harm is a gain set by an external condition, multiplied by the load that the other agents put on the medium, and PACT's regressor is built from that same product. This section takes up the questions that usually follow: whether PACT is simply handed the answer, whether its use of the coupling operator is an unfair advantage, what remains hard when its model is right, and how realistic each harm is.
Form
The product form comes from the domains.
Traffic engineering, power engineering and rigid-body mechanics already describe these effects as a gain that depends on conditions, applied to a load carried by a known network.
Information
PACT uses only what the environment exposes.
The operator \(W\) is computed from the published layout, and the other inputs are the peers' broadcast actions and the agent's own shortfall. A learner told the true driver still falls short of PACT.
Difficulty
Knowing the form is not enough.
A baseline with an exact linear model, the same measurement and the same estimator still falls behind PACT, because identification and feedback remain hard.
Realism
Realism differs by benchmark.
URB and MAPDN are anchored to published constants. VMAS and the Ant use a physical mechanism with a stated calibration, and the VMAS supply is our own construction.
Is PACT simply given the answer?
On the feeder, the lift and the Ant, the harm is exactly linear in PACT's channels below saturation (Proposition C.2 of the paper). The form is not tailored to the method. It is how each field already writes the effect:
| Domain | Standard model of the effect | Set by the condition | Set by the other agents | Source of the model |
|---|---|---|---|---|
| Road traffic (URB) | \( t = t_{\mathrm{free}}\Big(1 + \alpha\,\dfrac{\peer{v}}{c\,\drv{\omega}}\Big) \) | capacity share \(\drv{\omega}\) left by rain | traffic volume \(\peer{v}\) | BPR volume–delay function; HCM weather adjustment factors |
| Distribution feeder (MAPDN) | \( v_i = v_{0,i} + \sum_j X_{ij}\,\peer{q_j} \), \( q_i^{\mathrm{curve}} = -\drv{k}\,(v_i - V_{\mathrm{ref}}) \) | effective slope \(\drv{k}\): zero in the deadband at night, steep at noon | neighbours' reactive power \(\peer{q_j}\) | LinDistFlow; IEEE 1547 Volt/VAr curve; Farivar et al. (2013) |
| Legged robot (Ant) | \( \ddot\vartheta_i = \sum_j (M^{-1})_{ij}\,\peer{\tau_j} + \dots \) | share of a reaction that the drivetrain passes, set by its temperature | other legs' torques \(\peer{\tau_j}\) | Rigid-body dynamics; \(M^{-1}\) read from MuJoCo |
| Hydraulic lift (VMAS) | \( \delta_i \propto \sum_{j} W_{ij}\,\peer{\lVert a_j\rVert} \) | stiffness of the supply, set by fluid temperature | other jacks' forces \(\peer{\lVert a_j\rVert}\) | Our construction, with a stated calibration |
PACT is given the layout of the network and its peers' executed actions, and it estimates the gains online from its own measured shortfall. The same product is what defines the class: remove the peers and it vanishes, freeze them and the gain still moves. We first met the structure in traffic, where it is measured, and designed PACT for the class it defines.
Is using the operator W an unfair advantage?
No. PACT uses only what the environment exposes, and the same inputs are open to every method.
PACT works from three inputs: the infrastructure layout, the executed actions its peers broadcast, and its own measured shortfall. The operator \(W\) is computed from the layout before training: from the road network and the departure schedule on URB, from the feeder's line reactances on MAPDN, from the actuators' positions and hardware classes on VMAS, and from the robot's own model on the Ant. It records who can affect whom through the medium, and how strongly the structure transmits. It does not contain the gains, the severity \(\sigma\), the driver \(\drv{A(t)}\), or the driver's period and phase, and PACT is given none of these.
A known layout is also a realistic input. The people who operate these systems have it: a utility knows its feeder's impedances, a traffic authority its road network, a robot maker its robot's inertia. What they cannot know in advance is how strongly the layout transmits under the day's conditions, and that is the part PACT estimates.
The baselines receive the same kinds of input, in the form their designs call for. On VMAS every learner observes its own shortfall, and on MAPDN every learner also observes the channels, which are the peers' actions weighted by \(W\). The mean-field learners receive the peers' actions, and URLS and ESO use the shortfall exactly as PACT does. The oracle run, Oracle-A(t), goes further: it receives the one quantity PACT is never given, the true driver \(\drv{A(t)}\), on top of everything a learner normally observes. Methods that make no use of the layout do so by design, since they have no place for a known coupling structure. That is a property of those methods, not a restriction of the benchmark, and any method is free to use the layout.
Having the right model and the right inputs is still not the same as solving the task. The table lists what several baselines are given and how they perform at \(\sigma = 3\), with values as reported in Section 5 of the paper; Section 4 below describes each baseline.
| Method | Own shortfall | Peers' actions | Declared operator | Driver A(t) | URB travel time, lower is better | MAPDN controllable ratio | VMAS return |
|---|---|---|---|---|---|---|---|
| PACT | yes | yes | yes | no | 3.369 | 0.94 | ≈ 47 |
| URLS: PACT's estimator on the peers' raw actions | yes | yes | no | no | 3.443 | 0.84–0.86 | ≈ 38 |
| ESO: disturbance observer | yes | no | no | no | 3.444 | 0.84–0.86 | ≈ 40 |
| Oracle-A(t): the host told A(t) | see note | no | no | yes | 3.533 | 0.73–0.86 | ≈ 35 |
| PACT's host, trust 0 | see note | no | no | no | 3.401 | ≤ 0.89 | ≈ 35 |
The MAPDN values are over the last three evaluations. On MAPDN every learner, the host included, also observes the channels and its own one-step-old shortfall, and on VMAS every learner observes its own shortfall, so the comparisons there are matched in information. The unharmed VMAS return is 56.
-
An exact model with the same data still falls behind
URLS runs PACT's own recursion, with the same forgetting, trust and correction, on the peers' raw actions. On the feeder its model is also exact below saturation, since every coefficient is proportional to \(\drv{A(t)}\). It must identify up to \(n\) coefficients where PACT identifies \(r+1\), and the learners' actions do not vary enough for that. Between two correct models, the declared structure decides.
-
Knowing the driver is not enough
In every benchmark the gains move together with \(\drv{A(t)}\), so \(\drv{A(t)}\) is the only quantity that drifts. Oracle-A(t) is told \(\drv{A(t)}\) at every step and still does not improve on its host, because the harm is \(\drv{A(t)}\) multiplied by the peers' load, and the load changes whenever the co-learners change.
-
The right measurement, used as feedback, makes things worse
The disturbance observer uses the same shortfall that PACT measures, but it learns each reaction one step late. In the feeder's feedback loop this lowers the instability threshold below that of the uncompensated fleet (the observer proposition in Appendix D). On the 6-inverter feeder at \(\sigma = 3\), with a scripted droop host, its voltage loss is 4.32 times the unharmed host's, against 4.21 with no compensation at all; PACT's is 1.04 and the oracle's 1.00.
If the model is right, what remains hard?
Three things, and a correct model class removes none of them.
-
The regressor comes from learners, and it runs dry
Identification needs the peers' actions to vary, and convergent learning removes that variation (the excitation lemma in Appendix C). When we estimated the coupling operator itself instead of declaring it, the fitted coefficient on URB was 0.13 ± 5.0 and never significant in 5004 windows.
-
Acting on the estimate changes what is estimated
Every correction adds to the neighbours' load. At full trust 2 of 5 runs became unstable, and 1 of 5 at trust 0.95 (the trust sensitivity table in Appendix B). If the task were only to track a few numbers, full trust would be best.
-
The outcome is not guaranteed
On VMAS PACT reaches 83% of the unharmed return and closes a little over half of the gap. On the Ant, PACT and its host end at the same return, and the gain is in sample efficiency.
How realistic is each harm?
Each benchmark combines parts taken from its domain with parts we added to create the drift. The table separates the two.
| Benchmark | Taken from the domain | Added by us | σ = 1 means | Inside PACT's model class |
|---|---|---|---|---|
| URB | SUMO traffic on a real road network, human drivers, the HCM heavy-rain capacity loss, the BPR delay curve | The rain cycle, and applying the delay to recorded travel times | HCM heavy rain (published) | No: a maximum over links and a ratio, forecast from the previous day's routes |
| MAPDN | The feeder and its reactances, the IEEE 1547 curve's slope and limit | A curve that reacts to the peers' voltage only; a clear-sky solar profile | IEEE 1547 default curve (published) | Yes, below saturation |
| VMAS | The lifting scenario and the actuators' positions | The shared supply, its kernel, hardware classes and gains, and the cycle | Stated calibration | Yes, below saturation |
| Ant | The robot, its inverse inertia, and the torso coupling, which is present at σ = 0 | Drivetrain drift, per-actuator susceptibility, channel memory, and the cycle | Stated calibration | Yes, below saturation |
Two details matter when reading the results. SUMO has no model of rain, so the URB delay is applied to recorded travel times rather than inside the car-following dynamics. It is applied to every traveller, human drivers included; the benchmark keeps the human drivers' policies fixed, so for them only the reported times change.
On MAPDN the agent's action plays the role of the curve's reference voltage. On the sloped part of an IEEE 1547 curve, moving the reference voltage by \(\Delta V\) shifts the reactive power by \(k\,\Delta V\), so a dispatched level with the curve reacting around it matches how the standard lets operators steer a fleet of inverters. The same linear loop is the standard model for analysing local Volt/VAr stability (Farivar et al., 2013). Our curve reacts only to the voltage that the peers cause. A complete curve would also react to load and solar variation, which adds type (B) drift on top of type (C).
4 · Experiments
Hosts and baselines
All methods are evaluated at \(\sigma = 3\) with 5 seeds. Tables report the mean and the standard deviation over seeds, and figures the mean with one standard deviation. PACT wraps an unmodified learner, its host, and changes only the action sent to the environment, so every host is also run on its own, which is PACT at trust 0, with the same seeds. The Demo tab shows a side-by-side rollout on VMAS Balance.
| Benchmark | Host that PACT wraps | Learners also run | Code |
|---|---|---|---|
| URB | The benchmark's PPO learner, and IQL (PACT-IQL) | IQL, IPPO, VDN, MAPPO, QMIX and the greedy heuristic, as shipped with the benchmark | github.com/COeXISTENCE-PROJECT/URB |
| MAPDN | MATD3 | — | github.com/Future-Power-Networks/MAPDN |
| VMAS Balance | MAPPO | — | github.com/facebookresearch/BenchMARL |
| MaMuJoCo Ant | MAPPO | HAA2C, HAPPO, HATRPO | github.com/PKU-MARL/HARL |
Results on URB
On URB the score is the mean travel time of the agents' vehicles in the test phase, in minutes, so lower is better. Entries are the mean over seeds with the standard deviation in brackets. The video ranks every method at \(\sigma = 3\); the tables below give the same numbers.
| Method | \(\sigma = 0\) | \(\sigma = 3\) | \(\Delta\) (%) |
|---|---|---|---|
| Greedy | 3.042 | 3.044 | 0.1 |
| IQL | 3.119(0.021) | 3.160(0.020) | 1.3 |
| IPPO | 3.377(0.058) | 3.471(0.057) | 2.8 |
| VDN | 3.380(0.208) | 3.496(0.336) | 3.4 |
| MAPPO | 3.659(0.099) | 3.799(0.102) | 3.8 |
| QMIX | 3.668(0.198) | 3.739(0.278) | 1.9 |
| PACT, \(g \equiv 0\) | 3.300(0.045) | 3.401(0.042) | 3.1 |
| PACT, learned \(g\) | 3.288(0.024) | 3.397(0.033) | 3.3 |
| PACT, fixed \(g\) | 3.276(0.025) | 3.369(0.021) | 2.8 |
| PACT-IQL, fixed \(g\) | — | 3.079(0.007) | — |
| Own outcomes | |
|---|---|
| URLS | 3.443(0.031) |
| ESO | 3.444(0.046) |
| R-IPPO | 3.444(0.029) |
| WISDOM | 3.447(0.042) |
| Peers and population | |
| Deep FP | 3.458(0.096) |
| M3W | 3.465(0.091) |
| MF-Q | 3.471(0.088) |
| DGN | 3.560(0.192) |
| LIAM | 3.569(0.091) |
| Driver and robustness | |
|---|---|
| Oracle driver | 3.533(0.047) |
| DR | 3.554(0.042) |
| ERNIE | 3.557(0.055) |
| DORAEMON | 3.572(0.026) |
| RMA | 3.587(0.073) |
| LCPO | 3.685(0.058) |
| Co-learners and restarts | |
| HAPPO | 3.515(0.019) |
| QCD restart | 3.576(0.024) |
| PMPG | 3.651(0.028) |
\(\Delta\) is the change from \(\sigma = 0\) to \(\sigma = 3\). PACT-IQL wraps IQL with a fixed trust and is reported over 4 seeds at \(\sigma = 3\).
Baselines
The baselines take one recent representative from each class of method that could plausibly handle this drift, preferring methods with public code; those without public code were implemented from their papers. Every baseline runs through the same entry point as PACT, inside the same harmed environment. The tags show the benchmarks each one runs on. Four names differ in Figure 4: RLS is URLS, DEDA-FP is Deep FP, IPGA is PMPG, and QCD+ is QCD.
The benchmark's own reference methods
-
Greedya heuristic, not a learner
- URB
Greedy keeps one shared table holding, for each origin, destination and departure time, the shortest travel time ever recorded on each route, and sends every vehicle to the route with the lowest entry; a route nobody has tried yet is entered at its free-flow time. There is no network and nothing is learned. Two consequences make it a reference line rather than a competitor. It is centralised, reading every controlled vehicle's realised travel time from a single record that no decentralised learner sees. And because it stores the minimum ever observed, which is attained on a dry day, its estimate is effectively the dry-day travel time, so the harm barely reaches it: its travel time rises by 0.1% at \(\sigma = 3\) while every learner loses between 1.3% and 3.8%.
-
IQLindependent Q-learning
- URB
One Q-network per agent, trained independently. A URB episode is a single decision, so the next state is terminal and the Q-learning target reduces exactly to the immediate reward: each agent regresses its own travel time on its observation and chosen route, over a replay buffer of the last 2048 days, and acts greedily once exploration has decayed to zero. That is the smallest machinery the task requires, and pooling days averages out the noise that the other 88 vehicles inject into any single day's reward.
This explains the ordering of the learners. The policy-gradient hosts estimate the same quantity from single on-policy samples and discard them, paying variance for a policy parameterisation that a one-step decision does not need. QMIX and VDN exist to split a shared team reward into per-agent shares, and MAPPO fits a centralised critic over all 89 agents, but the reward here is already each vehicle's own travel time and the horizon is one step, so that machinery is carried without being used. The advantage is one of estimator fit to the task's shape, and it is orthogonal to the drift: IQL loses 1.3% at \(\sigma = 3\), inside the band of the other hosts.
Trust regions and sequential updates
-
HAPPO and HATRPOwith HAA2C on the Ant
- URB
- MAPDN
- VMAS
- Ant
Heterogeneous-agent trust-region methods update the agents one at a time in a random order and weight each update by the change the preceding agents have just made. This is the standard multi-agent remedy for drift caused by co-learners. They test whether stabilising learning helps when the drift continues with every partner frozen.
-
HASAC
- URB
- MAPDN
- VMAS
The off-policy, maximum-entropy member of the same family: soft actor-critic with sequential agent updates. Its entropy bonus keeps every agent's actions varied, which is the excitation an estimator of the coupling needs, while its critic is fitted on replayed data that mix phases of the driver.
Memory
-
R-MAPPO and R-IPPO
- URB
- MAPDN
- VMAS
MAPPO and IPPO with a recurrent layer between the observation encoder and the policy head, trained by backpropagation through time. They test the simplest alternative explanation: that a policy with memory can infer the drift from its own history. On URB the recurrent state is carried across days.
Graphs, mean fields and agent models
-
DGN
- URB
- VMAS
Graph convolutional reinforcement learning: each agent combines its features with its neighbours' through multi-head attention, and a Q-network acts on the result, with a regulariser that keeps the attention stable over time. It tests whether a learned graph over the agents can discover the coupling that PACT is given.
-
MF-Q and MF-ACMF-AC and MF-AC-T in Figure 4
- URB
- VMAS
- MAPDN, via the host
Mean-field reinforcement learning summarises an agent's neighbourhood by its mean action and learns the value of the agent's own action against that mean, with a Q-function (MF-Q) or an actor-critic (MF-AC); MF-AC-T uses the team mean with the agent included. The coupling in our benchmarks is a weighted mean of the peers' load, so mean-field RL is its classical alternative. On MAPDN the host already observes the weighted mean of the peers' actions and represents this class.
-
LIAM
- URB
- MAPDN
- VMAS
Local information agent modelling: an encoder learns a representation of the other agents from the controlled agent's own observations and actions, trained to reconstruct what the others observe and do, and the policy conditions on it. It tests whether modelling the peers' behaviour is enough when what drifts is how much that behaviour costs.
Context, latent tasks and restarts
-
LCPO
- URB
- MAPDN
- VMAS
Built for environments driven by an observed exogenous context. It anchors the policy on states from past contexts, so that learning in the current context does not overwrite behaviour that other contexts still need. We give it the driver \(\drv{A(t)}\) as its context.
-
Oracle-A(t)the oracle driver
- URB
- MAPDN
- VMAS
- Code
- Part of our code, released upon acceptance
The host with the true driver \(\drv{A(t)}\) appended to every observation: the one quantity that drifts, and one that PACT is never given. It measures what knowing the condition is worth on its own.
-
LILAC
- MAPDN
- Paper
- proceedings.mlr.press/v139/xie21c.html
- Code
- github.com/EmiliyanGospodinov/LILAC (third-party implementation)
Models the environment as a sequence of MDPs indexed by a latent variable that changes between episodes. A variational model infers the latent from each episode, an LSTM prior predicts the next one, and a soft actor-critic learner conditions on it.
-
WISDOM
- URB
- MAPDN
- VMAS
Learns a representation of the current task from recent transitions, decomposes the sequence of representations over several time scales with wavelets, and predicts how it will evolve; the policy conditions on the prediction. It is the learned counterpart of PACT's declared basis and forecast.
-
QCDQCD+ in Figure 4
- URB
- MAPDN
- VMAS
- Paper
- arxiv.org/abs/2410.13772
- Code
- No public code; implemented from the paper
Quickest change detection with restarts: a Bernoulli generalised likelihood-ratio test watches the reward stream and resets the learner when it detects a change. Variants restart at random times or follow the multi-scale tests of MASTER. It tests whether detecting change and relearning is enough, without identifying what changed.
Online identification
-
RMAwith UP-OSI as a variant
- URB
- MAPDN
- VMAS
- Paper
- roboticsproceedings.org/rss17/p011.html
- Code
- Implemented from the paper
Rapid motor adaptation trains a policy on privileged environment factors, then distils an adaptation module that recovers them from the recent history of observations and actions. It is the closest methodological neighbour of PACT: both identify something online, but RMA learns its identifier from history while PACT estimates a few gains on a declared basis. The privileged factor is the drifting gain on MAPDN and the driver on VMAS and URB.
Robustness
-
DRdomain randomisation
- URB
- MAPDN
- VMAS
Trains the host on severities drawn uniformly from \([0, 3]\) in every episode, without telling the policy which severity it faces. It hedges against the drift instead of identifying it.
-
DORAEMON
- URB
- MAPDN
- VMAS
Domain randomisation with an adaptive curriculum: it maximises the entropy of the training distribution over \(\sigma\) subject to a success-rate constraint and a trust region, so the range of severities widens as fast as the policy can handle it.
-
ERNIE
- URB
- MAPDN
- VMAS
Makes each policy robust to changes in its input with an adversarial regulariser, solved as a Stackelberg game. Its analysis bounds the change of return under perturbed observations or transitions for policies that are smooth in their input.
Model-based MARL
-
M3W
- URB
- MAPDN
- VMAS
Learns a world model whose dynamics and reward predictors are mixtures of experts, and chooses joint actions by model-predictive path-integral planning. It tests whether a learned model of the dynamics, drift included, can take the place of a declared one.
Fictitious play and performative learning
-
Deep FPDEDA-FP in Figure 4
- URB
- MAPDN
- VMAS
- Paper
- arxiv.org/abs/2510.22158
- Code
- No public code; implemented from the paper
Deep fictitious play for mean-field games: each iteration computes a best response to the averaged population, and an average policy fitted by supervised learning plays at evaluation. It tests whether seeking an equilibrium, with no estimator at all, reaches what PACT reaches.
-
PMPGIPGA in Figure 4
- URB
- MAPDN
- VMAS
- Paper
- arxiv.org/abs/2504.20593
- Code
- No public code; implemented from the paper
Independent policy gradient (IPGA) and natural policy gradient (INPG) under repeated retraining, from the theory of performative Markov potential games, in which the deployed policies reshape the game. It tests whether a gain could come from the deployment schedule rather than from identification.
Estimators without the declared operator
-
ESOextended state observer
- URB
- MAPDN
- VMAS
The observer at the heart of active disturbance rejection control. It estimates each agent's lumped disturbance from its own measured shortfall and cancels the estimate at the next step, with no peers and no structure. It is the classical control answer to an unknown disturbance.
-
URLSRLS in Figure 4
- URB
- MAPDN
- VMAS
- Code
- Part of our code, released upon acceptance
Unstructured recursive least squares: PACT's own estimator, with the same forgetting, trust and correction, applied to the peers' raw broadcast actions instead of the declared channels. The two differ only in the design matrix, so URLS isolates the value of the declared operator.
State of the art on the feeder
-
TPA
- MAPDN
- Paper
- dl.acm.org/doi/10.1145/3637528.3671790
- arXiv
- arxiv.org/abs/2406.17818
- Code
- github.com/Canyizl/TPA-for-AVC
Temporal prototype-aware learning for active voltage control. It extends an off-policy learner with a transformer over the zone's bus features, a recurrent summary of recent solar and load profiles, and 24 seasonal prototypes that condition the policy. It is the closest published method on MAPDN and was built for time-varying operating conditions.
Sources
References
- Agarwal, M., Maze, T. H., and Souleyrette, R. (2005). Impacts of weather on urban freeway traffic flow characteristics and facility capacity. Proceedings of the Mid-Continent Transportation Research Symposium.
- Akman, A. O., Psarou, A., Hoffmann, M., Gorczyca, Ł., Kowalski, Ł., Gora, P., Jamróz, G., and Kucharski, R. (2025). URB: Urban Routing Benchmark for RL-equipped connected autonomous vehicles. NeurIPS Datasets and Benchmarks Track.
- Andrén, F., Bletterie, B., Kadam, S., Kotsampopoulos, P., and Bucher, C. (2015). On the stability of local voltage control in distribution networks with a high penetration of inverter-based generation. IEEE Transactions on Industrial Electronics, 62(4), 2519–2529.
- Baran, M. E., and Wu, F. F. (1989). Network reconfiguration in distribution systems for loss reduction and load balancing. IEEE Transactions on Power Delivery, 4(2), 1401–1407.
- Bettini, M., Kortvelesy, R., Blumenkamp, J., and Prorok, A. (2022). VMAS: A vectorized multi-agent simulator for collective robot learning. Distributed Autonomous Robotic Systems.
- Bureau of Public Roads (1964). Traffic Assignment Manual. U.S. Department of Commerce.
- Farivar, M., Chen, L., and Low, S. (2013). Equilibrium and dynamics of local voltage control in distribution systems. IEEE Conference on Decision and Control.
- IEEE (2018). IEEE 1547-2018: Standard for interconnection and interoperability of distributed energy resources with associated electric power systems interfaces.
- Jahangiri, P., and Aliprantis, D. C. (2013). Distributed Volt/VAr control by PV inverters. IEEE Transactions on Power Systems, 28(3), 3429–3439.
- Lopez, P. A., et al. (2018). Microscopic traffic simulation using SUMO. IEEE International Conference on Intelligent Transportation Systems, 2575–2582.
- Peng, B., Rashid, T., Schroeder de Witt, C., Kamienny, P.-A., Torr, P., Böhmer, W., and Whiteson, S. (2021). FACMAC: Factored multi-agent centralised policy gradients. NeurIPS.
- Smith, B. L., Byrne, K. G., Copperman, R. B., Hennessy, S. M., and Goodall, N. J. (2004). An investigation into the impact of rainfall on freeway traffic flow. 83rd Annual Meeting of the Transportation Research Board.
- Transportation Research Board (2016). Highway Capacity Manual, Sixth Edition: A Guide for Multimodal Mobility Analysis. The National Academies Press.
- Wang, J., Xu, W., Gu, Y., Song, W., and Green, T. C. (2021). Multi-agent reinforcement learning for active voltage control on power distribution networks. NeurIPS.