| Vose Software

Industry: Manufacturing
Product: ModelRisk
Application: Process automation — sizing PLC/SCADA throughput investments under uncertainty


A 7-Stage Process Line Where the Bottleneck Moved Every Shift

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.

Bottleneck frequency by stage — % of batches each stage was the constraint

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 %.

Where the variability lives — three categories, three distributions

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.

What the deterministic plan said vs what the simulation found

Quarterly batches produced — 7-stage line, 5,000-quarter simulation

The deterministic plan said 940 batches/quarter. The simulation says:

  • Mean batches: 678 — within a few per cent of the four-quarter realised average, validating the model.
  • P10: 664, P50: 678, P90: 691, P95: 695.
  • The deterministic 940 is unreachable — the bottleneck-gated line never gets within 240 batches of it, so it was never a baseline plan, just an un-constrained arithmetic sum.
  • P(meeting the 800-batch contractual minimum) = 0 % on the current line. The plant has been below contractual minimum in every recent quarter, and the simulation says that is structural, not bad luck — no amount of scheduling discipline reaches 800 without removing the crystalliser constraint.

Why the constraint moves — and why one upgrade is not obvious

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.

Three automation upgrade scenarios

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.

Cumulative annual throughput — three automation upgrade scenarios

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.

What actually drives throughput

Tornado: drivers of P10 quarterly throughput

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.

What the model changed

  • The capex package was right-sized. The combined crystalliser + drying upgrade (Scenario B) was committed because it was the cheapest package that took the 800-batch contractual minimum to certainty; the single-stage Scenario A was rejected once the simulation showed it cleared the floor only 4 % of the time.
  • The deterministic 940-batch/quarter target was retired in favour of a P10 = 664 / P50 = 678 / P90 = 691 commitment band on the current line, with the contractual minimum tracked as a probability rather than a yes/no plan.
  • Operator daily huddle reordered: real-time crystalliser supersaturation monitoring promoted to first item, replacing a generic "shift safety check" that contributed nothing to throughput.
  • A monthly model recalibration job refits the per-stage cycle-time LogNormals and the cross-stage copula from the prior 60 days of MES data, so the bottleneck-frequency vector tracks the line rather than being a static plan.

ModelRisk Functionality Used

  • Per-stage LogNormal cycle-time fitting on 14 months of MES timestamps, surfacing the right tail on the crystalliser (P90 = 142 min vs median 87 min) that the previous mean-cycle planning had averaged away.
  • Beta recycle-rate fitting on three QC gates, bounded on (0, 1) to eliminate the negative-recycle draws the previous Normal model produced.
  • Per-stage Weibull TTF with shape constrained by KS-test against an exponential alternative; this surfaced two stages where exponential was acceptable and seven where Weibull β > 1 dominated.
  • Gaussian copula between reactor cycle time and crystallisation recycle rate (ρ = 0.35), pricing the joint raw-material-moisture shock the deterministic plan assumed away.
  • Per-stage bottleneck-frequency tracking in each iteration, producing the Pareto chart that promoted the crystalliser to top of the capex queue ahead of the drying tunnel.
  • Comparative scenario simulation of three capex packages with the same input draws applied to each, isolating structural ROI from input-distribution noise.

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.