Deep Reinforcement Learning for Tengiz-Sileno Supply Chain — Simulation Code and Results
Description
This dataset contains the simulation code and results for the research paper "Deep Reinforcement Learning for Supply Chain Resilience: The Tengiz–Sileno Ethane Corridor in Kazakhstan." Contents: 1. Python source code for the physics-based simulator of the Tengiz → GSK → Sileno ethane supply chain (sileno_env.py, config.py, disruptions.py). 2. Deep Q-Network (DQN) training and evaluation code (train_dqn.py, evaluate_agent.py, rl_utils.py). 3. Temporal Fusion Transformer (TFT) forecasting code (train_tft.py, tft_forecast_provider.py). 4. Simulation results: comparison of 4 agents (Random, DQN+Oracle, DQN+TFT, DQN+Constant) across 100 episodes × 365 days. 5. Economic P&L breakdown in USD. The simulator incorporates engineering constraints: hydrate blockages (temperature-driven, -10°C threshold), pipeline pressure dynamics, emergency venting, gradual vs abrupt shutdown, buffer inventory, import quota, and domestic demand by 5 Kazakhstan regions. Key results: DQN eliminates downtime completely and delivers +$762M annual savings vs. random baseline. TFT achieves MAPE 2.14%. Software: Python 3.14, gymnasium, stable-baselines3, PyTorch, Streamlit.
Files
Steps to reproduce
1. Environment setup: install Python 3.14, create virtual environment, install dependencies: gymnasium, stable-baselines3, torch, streamlit, plotly, fastapi, requests, pandas, numpy, matplotlib. 2. Run smoke test: python test_env_random_agent.py — verifies the simulator works with a random agent. 3. Train DQN agent: python train_dqn.py — trains the DQN controller (200,000 steps) and saves model to models/dqn_sileno.zip. 4. Train TFT model: python train_tft.py — trains the Temporal Fusion Transformer for demand forecasting; outputs tft_training_curve.png and tft_forecast_example.png. 5. Evaluate agents: python compare_agents.py — runs 100 episodes × 4 agents (Random, DQN+Oracle, DQN+TFT, DQN+Constant); outputs comparison_results.csv and comparison_agents.png. 6. Run pilot on real data: python pilot_test.py — calibrates demand against JODI 2024 and runs scenario with three real 2026 Tengiz outages; outputs pilot_comparison.png. 7. Launch dashboard: python -m streamlit run dashboard.py — opens interactive dispatcher interface in browser. Source files: config.py, sileno_env.py, disruptions.py, synthetic_data.py, real_data.py, rl_utils.py, train_dqn.py, train_tft.py, evaluate_agent.py, compare_agents.py, pilot_test.py, dashboard.py, api.py.