Environment reference¶
Twenty-one environments, every one a target MDP: the objective is to reach and hold a subset of the state space against disturbances, not to reach a goal and stop.
Every environment implements the same interface, so the table below is the whole of what differs between them:
- Observation / Action are the array shapes.
- Tracked is the quantity the target applies to, exposed at
env.obs_value_indexwith its setpoint atenv.obs_target_index, and named byenv.tracked_names. - PID / MPC say whether a baseline ships. Where one does not, the registry
records why in
baselines_noterather than leaving it silent. - Physics links the environment's contract: sourced parameters, published validation targets asserted by tests, and quantified known deviations.
Load any of them by registry name:
from target_gym.registry import REGISTRY
spec = REGISTRY["boiler_drum"]
env, params = spec.make_env(), spec.params_cls()
Aircraft¶

| Environment | Cite as | Observation | Action | Tracked | PID | MPC | Physics |
|---|---|---|---|---|---|---|---|
plane |
plane-v1 |
(10,) | (2,) | altitude (m) | yes | yes | contract |
plane_energy |
plane_energy-v1 |
(10,) | (2,) | altitude (m) | yes | yes | contract |
plane_sine |
plane_sine-v1 |
(10,) | (2,) | altitude (m) | yes | yes | contract |
plane3d_heading |
plane3d_heading-v1 |
(15,) | (3,) | altitude (m) | yes | yes | contract |
plane3d_circle |
plane3d_circle-v1 |
(17,) | (3,) | altitude (m) | yes | yes | contract |
plane3d_racetrack |
plane3d_racetrack-v1 |
(21,) | (3,) | altitude (m) | yes | yes | contract |
plane3d_figure8 |
plane3d_figure8-v1 |
(19,) | (3,) | altitude (m) | yes | yes | contract |
patrol |
patrol-v1 |
(26,) | (3,) | slot error (m) | yes | yes | contract |
patrol_bearing_only |
patrol_bearing_only-v1 |
(21,) | (3,) | measured range (m) | yes | no | contract |
patrol_bearing_only-- PID present -- a lead-state estimator feeding the same pursuit law the full-observation variant uses. Range with azimuth and elevation is a complete relative-position measurement, so the only genuinely unobservable quantity is the lead's HEADING, which the commanded slot needs because the slot is expressed in the lead's frame; it is recovered by differencing the estimated relative position and filtering. Measured performance matches the full-observation expert (4 of 8 seeds complete, ~229 m settled slot error vs ~260 m), so the partial observation costs essentially nothing here. No MPC, and the reason is the withheld observation rather than the manoeuvring lead. This note used to blame the lead, on the grounds that an MPC would need its future trajectory as a time-varying parameter. That holds for a CasADi model and not for a gradient planner:patrolnow ships a GradientMPC that differentiates step_env, and because the lead is scripted and deterministic the plan propagates it for free. What blocks one here is that the planner reads the slot error out of the state, which is precisely what this variant withholds. Handing it the true state anyway would make it an oracle on a task defined by what is hidden, so it needs a planner built on the estimator.
Process Control¶

| Environment | Cite as | Observation | Action | Tracked | PID | MPC | Physics |
|---|---|---|---|---|---|---|---|
cstr |
cstr-v1 |
(3,) | (1,) | C_a (mol/L) | yes | yes | contract |
first_order |
first_order-v1 |
(2,) | (1,) | x | yes | yes | contract |
four_tank |
four_tank-v1 |
(6,) | (2,) | h1 (m), h2 (m) | yes | yes | contract |
ph_neutralization |
ph_neutralization-v1 |
(3,) | (1,) | pH | yes | yes | contract |
distillation |
distillation-v1 |
(6,) | (2,) | yD (mole fraction) | yes | yes | contract |
Industrial / Energy¶

| Environment | Cite as | Observation | Action | Tracked | PID | MPC | Physics |
|---|---|---|---|---|---|---|---|
glass_furnace |
glass_furnace-v1 |
(5,) | (1,) | crown temperature (K) | yes | yes | contract |
reactor |
reactor-v2 |
(4,) | (1,) | neutron power (normalised) | yes | yes | contract |
hvac |
hvac-v1 |
(7,) | (1,) | zone air temperature (deg C) | yes | yes | contract |
cement_kiln |
cement_kiln-v1 |
(8,) | (2,) | discharge free lime (%) | yes | yes | contract |
boiler_drum |
boiler_drum-v1 |
(7,) | (2,) | drum level (m), drum pressure (bar) | yes | yes | contract |
Renewable Energy¶

| Environment | Cite as | Observation | Action | Tracked | PID | MPC | Physics |
|---|---|---|---|---|---|---|---|
wind_turbine |
wind_turbine-v1 |
(5,) | (2,) | electrical power (MW) | yes | yes | contract |
battery |
battery-v1 |
(5,) | (1,) | delivered power (MW) | yes | yes | contract |