Skip to content

TEP Studio

This documentation explains how to use the Python simulator for the modified Tennessee Eastman Process (TEP).

It assumes you are comfortable copying commands into a terminal, but it does not assume prior knowledge of the codebase, process simulation, reinforcement learning, or MkDocs.

What the simulator provides

The package wraps the legacy temexd_mod.c Tennessee Eastman model through a native CFFI extension and exposes practical Python interfaces for:

  • direct process simulation with TennesseeEastmanProcess;
  • Gymnasium-style control experiments with GymTEPEnv;
  • named trajectory datasets with TrajectoryDataset;
  • deterministic finite-horizon rollout with OptimizationAdapter;
  • closed-loop decentralized control with ClosedLoopSimulation and RickerMultiLoopController;
  • an interactive Dash + Plotly interface (the "Simulation Studio") for runs, disturbances, and dataset generation;
  • validation runs, metrics, figures, reports, and manifests.

The simulator does not define a complete benchmark by itself. A study still needs to define the task objective, constraints, disturbance policy, train/test split, baselines, and evaluation protocol.

Quickstart by audience

Install with pip install tep-studio (add [ui] for the web studio), then pick the path that matches your work, and keep the Cookbook handy for task recipes.

  • Process / control engineers — run the closed loop, inject disturbances, change setpoints, plot, and export data. Start with python -c "import tep_studio as t; t.quickstart()", then Closed-Loop Control and the Interface (Studio). The tep command-line tool (tep run, tep dataset, tep list) covers no-code runs.
  • ML / RL researchersimport tep_studio registers a standard Gymnasium environment: gymnasium.make("TennesseeEastman-v0"), with a configurable reward_fn. See Gymnasium and RL and Working with Data.
  • Control theorists — get a local linear state-space model with OptimizationAdapter.linearize(...), run step tests via tep_studio.analysis, and bring your own controller through the Controller protocol. See Optimization and the Cookbook.
  1. Read Getting Started and install the package.
  2. Run First Simulation to make sure the simulator works.
  3. Keep the Cookbook open for copy-paste recipes for common tasks.
  4. Read Core Concepts to understand states, measurements, actions, disturbances, shutdowns, and intervals.
  5. Use Working with Data if you need CSV, pandas, supervised learning, system identification, or offline RL data.
  6. Use Gymnasium and RL if you want an environment with reset() and step().
  7. Use Optimization for deterministic rollout, finite-difference gradients, and linearization.
  8. Use Closed-Loop Control to stabilize the plant with the decentralized controller.
  9. Use the Interface (Studio) to run, visualize, and export simulations interactively.
  10. Use Validation before relying on results in a report or paper.