Industrial Steam Plant Optimization
Built a sensor pipeline across 400+ industrial sensors and trained PyTorch time-series models from scratch to forecast heating demand, improving accuracy from 81% to 94%.
The Problem
The university heating plant runs three natural gas boilers (~3,400 boiler horsepower total) to heat 17 campus buildings. Because steam boilers and large buildings have long thermal ramp times, operators cannot react quickly when outdoor temperatures shift. Underestimating demand leaves buildings cold, while overestimating burns excess natural gas and vents expensive steam into the air.
The goal of this grant-funded project with DTE Energy was to build an automated forecasting system giving operators an accurate next-day hourly demand prediction.
Sensor Ingestion & Pipeline Architecture
- Fault-tolerant streaming: Industrial telemetry frequently drops out or delivers bad readings. I built an ingestion pipeline in Python with Apache Kafka and Redis fallback caching. When a sensor drops offline, the system continues serving the latest valid reading and queues a background retry, achieving 98% uptime across 400+ sensors.
- Computer vision for analog meters: For older gas meters with physical mechanical dials, I mounted cameras and wrote an OpenCV and Tesseract OCR pipeline to extract and digitize meter numbers automatically.
- Occupancy tracking: Extracted aggregate campus occupancy trends using OpenCV to feed thermal load features directly into the time-series pipeline.
Custom Machine Learning from Scratch
The core of this project was engineering and training the time-series forecasting model from scratch rather than relying on off-the-shelf packages:
- Domain feature engineering: Engineered inputs reflecting physical thermal retention (how long brick and concrete store heat), wind chill, occupancy schedules, and historical boiler firing behavior.
- Custom model development: Implemented sequential neural network architectures from scratch in PyTorch, writing custom data loaders, loss functions, and training loops across LSTM, Bidirectional LSTM, GRU, and ConvLSTM networks.
- Accuracy improvement: The custom PyTorch models lifted next-day forecast accuracy from an 81% historical baseline up to 94%, giving plant operators dependable numbers to plan firing schedules.
Operational Tools & Guardrails
- Real-time operator interface: Developed web dashboards displaying live steam demand curves, weather forecasts, and sensor health warnings.
- Supervised agent workflows: Automated daily operational summaries and alert dispatches using LangGraph and Model Context Protocol (MCP). The system suggests boiler adjustments, but requires human operator sign-off before anything is changed.
- Automated CI/CD: Set up GitHub Actions to validate data transforms and trigger model retraining as seasonal weather shifts between fall and winter.
Technologies Used
- Time-Series & Machine Learning: PyTorch, scikit-learn, LSTM, BiLSTM, GRU, ConvLSTM, NumPy, pandas, SciPy
- Computer Vision & OCR: OpenCV, Tesseract OCR, DeepFace, Image Preprocessing, Thresholding
- Data Ingestion & Streaming: Apache Kafka, Apache Spark (PySpark), Custom Data Loaders, ETL Pipelines, Batch Processing
- Databases & Caching: PostgreSQL, Redis, Time-Series Data Management, Query Optimization
- Agentic Workflows & Tooling: Model Context Protocol (MCP), LangGraph, Claude Code, REST APIs, JSON APIs
- Infrastructure & DevOps: Docker, GitHub Actions CI/CD, Linux, Virtual Machine Deployment, Git, Bash