Data and reproduction scripts for the Reserve Adequacy Coefficient (RAC): Tennessee Eastman and CSTR case studies

Published: 6 October 2026| Version 3 | DOI: 10.17632/523n5wrswh.3
Contributor:

Description

Data and code behind every quantitative result in the paper introducing the Reserve Adequacy Coefficient (RAC), a bounded (0–100%) early-warning indicator of remaining operating margin. Version 3 replaces the single-run evaluation of earlier versions with a 40-realisation multi-seed campaign at a locked operating point (50% warning threshold, 6.0 h persistence), selected on 20 calibration seeds and evaluated on 20 held-out test seeds. Contents: (01_CSTR) a self-computing workbook and first-principles Python model for the cooling-jacket-fouling CSTR ground-truth validation, with the generated trajectory — RAC tracks the model-derived cooling-capacity reserve with correlation 0.989 and gives a 109-minute two-timeline lead at the 50% threshold; (02_TEP_RAC) the RAC hard clipped-minimum pipeline for the Tennessee Eastman process; (03_TEP_campaign) the per-seed warning table for all 40 realisations, the per-fault summary (Table 3: detection count, median warning time and median two-timeline lead), and detection/false-alarm rates with Wilson 95% confidence intervals; (04_SOTA_comparators) PCA T-squared/Q, DPCA and ICA baseline code plus an autoencoder reconstruction-error detector, all calibrated to zero false alarms on the fault-free baseline, with per-fault detector statistic series; (05_reproduction_code) all Python code with run instructions and requirements. Headline results (held-out test set): detection rate 0.80 (95% CI 0.75–0.84) over the 17 detectable disturbances at a false-alarm rate of 0.00 (95% CI 0.00–0.16); calibration false-alarm rate 0.05. IDV-3, IDV-9 and IDV-15 do not leave the healthy reserve band and are undetectable by design. All analysis workbooks are live-linked (values computed by spreadsheet formulas from model inputs); statistics requiring matrix decomposition or a trained network are produced by the accompanying Python code. The Tennessee Eastman raw inputs are regenerated with the tep2py wrapper of the TEP simulator. Released under CC BY 4.0.

Files

Steps to reproduce

Requirements: Python 3.10+ with numpy, scipy, scikit-learn and openpyxl. 1. Generate the Tennessee Eastman raw data with the tep2py wrapper (Câmara 2019, MIT licence) of the TEP simulator: raw_idv1.csv … raw_idv20.csv and raw_baseline.csv (52 columns XMEAS(1–41) and XMV(1–11); 1440 rows at 3-min sampling; disturbance onset at t = 12 h). Place them in 05_reproduction_code/. For the 40-realisation campaign, vary only the measurement-noise RNG seed between runs (seed-patched TEP: add COMMON/EXTSEED/GEXT in TEINIT and use GEXT when > 0 in place of the hard-coded constant in teprob.f, surfaced via temain_mod.pyf; all other settings fixed). 2. CSTR ground truth: run `python cstr_model.py` to print the two-timeline result (RAC crosses 50% at 314 min; output breaches the ±2 K band at 423 min; lead 109 min). Open 01_CSTR/CSTR_RAC_live.xlsx to see the live correlation (0.989 over the onset-to-breach window [120, 423 min]). 3. RAC on TEP: apply 02_TEP_RAC/rac_lib.py (or rac_hardmin_pipeline.py) to each raw run. Operating point is locked at a 50% warning threshold with 6.0 h (120-sample) persistence. 4. Campaign: run `python generate_campaign.py` to build the per-seed warning table (03_TEP_campaign/warn_index_perseed.csv). The per-fault summary (table3_campaign_summary.csv) and detection/false-alarm rates with Wilson 95% CIs (fdr_far_summary.csv) are in the same folder. 5. Baseline detectors: run `python comparators_v2.py` (PCA T²/Q, DPCA, ICA; zero baseline false alarms) and `python generate_autoencoder.py` (autoencoder reconstruction error). 6. Propagation test: run `python propagation_idv14.py` for the unit-level propagation-tracing result. All hyperparameters are stated at the top of each script; see 05_reproduction_code/HOW_TO_RUN.txt.

Categories

Chemical Engineering, System Fault Detection, Process Monitoring

Licence