Industry: Manufacturing Product: ModelRisk Application: Process automation — sizing PLC/SCADA throughput investments under uncertainty
A specialty-chemicals batch plant ran a seven-stage process — two sequential reactions, distillation, crystallisation, centrifuging, drying, and packaging — with PLC-controlled valves and a SCADA system the plant manager described as "80 % automated and 100 % unpredictable". The deterministic capacity plan said the line should produce 940 batches per quarter. Realised output across the last four quarters was 651, 712, 640 and 698 — a 28 % shortfall on the average, but, more uncomfortably, a 32 % gap on the worst quarter. The control engineer who maintained the line's PLC logic had the right instinct: the bottleneck was not in one stage, it was wandering. Some weeks the crystalliser was the constraint; other weeks the drying tunnel; occasionally one of the reactors. Sizing one upgrade was guesswork because the deterministic plan had no concept of a constraint at all.
The automation engineering team rebuilt the line in ModelRisk as a discrete-event simulation with all seven stages stochastic: cycle times, defect-induced rework loops, planned-PM downtime and unplanned failures. The single most decision-relevant output was a per-stage bottleneck-frequency vector — the share of batches in which each stage was the rate-limiting step — which told the capex committee exactly which stage to upgrade, and by how much.
The crystalliser is the binding constraint in 57 % of batches, the drying tunnel in 28 %, reactor #2 in 8 %, and distillation #1 in 5 %; reactor #1 binds in 1 %, and the centrifuge and packaging stages never bind. The control engineer's instinct was right — the bottleneck wanders — but the simulation made it actionable: the next $400k of capex should buy crystalliser capacity, not drying capacity, because removing a constraint that binds 57 % of the time has roughly twice the throughput leverage of removing one that binds 28 %.
Cycle time per stage. Fitted from 14 months of MES timestamps as LogNormal per stage, with the most variable stage (crystallisation) having median 87 min, P90 of 142 min — a right tail driven by mother-liquor solids content. Using mean cycle times — the deterministic default — systematically understates the longest jobs that determine the bottleneck.
Rework loops. Stage-out QC checks generate a failure-and-recycle event at three points (after reaction 2, after distillation 1, after drying). Per-batch recycle rate fitted as Beta(α = 3.5, β = 47) — mean 6.9 %, with a P95 of 14 % on bad raw-material weeks. The Beta bounds (0, 1) are important: the legacy spreadsheet used Normal(0.07, 0.04), which silently drew negative recycle rates on ~4 % of iterations.
Unplanned stage failures. TTF per stage as Weibull(β = 1.6, η stage-specific 320–1,800 hours), repair time LogNormal(median 2.1 hours, P90 6.5 hours). Weibull β > 1 captures the wear-out signature on every mechanical stage; using an exponential TTF would have flattened the hazard and missed the cluster of failures that turns a normal shift into a recovery shift.
Crucially, stages are not independent. When raw-material moisture is high, both reaction stages slow down and the crystalliser's recycle rate rises. The team fitted a Gaussian copula with rank correlation ρ = 0.35 between reactor cycle time and crystallisation recycle rate, calibrated from joint per-batch residuals over the prior two quarters. The deterministic plan implicitly assumed ρ = 0; the simulation shows that assumption flatters throughput by widening the tail of slow crystalliser batches the plan never priced.
The deterministic plan said 940 batches/quarter. The simulation says:
The bottleneck-frequency vector at the top of this article is what makes the capex decision tractable. Because the crystalliser binds 57 % of the time and the drying tunnel 28 %, removing the crystalliser constraint has roughly twice the throughput leverage of removing the drying constraint — but it does not lift throughput to the drying-tunnel ceiling, because once the crystalliser is faster the drying tunnel becomes the new binding stage in a larger share of batches. That stage-promotion effect is exactly what the scenario comparison below quantifies, and it is invisible to a deterministic plan that has no concept of a moving constraint.
The capex committee was choosing between three packages. Each was run through the same simulation, with the same seed for input draws, so the comparison isolates structural change from input noise.
Scenario A — $420k crystalliser jacket and seed-strike upgrade. Mean throughput rises from 678 to 780 batches/quarter, P10 from 664 to 765. But promoting the crystalliser hands the constraint to the drying tunnel, so P(hit 800 contractual minimum) only reaches 4 % — a large throughput gain that still misses the contract floor.
Scenario B — $680k integrated drying + crystallisation upgrade. Mean 846, P10 830. By relieving both of the top-two binding stages at once, P(800) jumps to 100 % — the contractual minimum becomes the P10, not the P90.
Scenario C — $1.1M full SCADA platform replacement with model-predictive control. Mean 926, P10 917. P(800) = 100 %, with substantial headroom above the floor.
The capex committee picked Scenario B — the lowest-cost package that takes the contractual-minimum probability to certainty. Scenario A was rejected precisely because the simulation exposed the stage-promotion trap: a $420k spend that lifts mean throughput 15 % but still clears the contract floor only 4 % of the time. The committee held Scenario C in reserve pending whether the next-quarter telemetry validated the model's assumptions.
The crystalliser cycle time dominates the tornado, followed by the reactor/crystalliser copula ρ — confirming that the cross-stage correlation was not a second-order effect. Reactor #2's Weibull η ranks third; the centrifuge's failure rate ranks fifth. This ordering directed the on-shift control-engineer's daily work plan: monitoring crystalliser supersaturation in real time became the first item on the morning huddle.
The deterministic plan named the wrong bottleneck because it had no concept of one. Monte Carlo simulation in ModelRisk identifies the distribution of bottlenecks across batches, which is what tells the capex committee where the next dollar actually buys a batch.