Schedule Risk and Critical Path Analysis
A finish date is not a promise; it is a probability.
- Python (NumPy
- SciPy
- Monte Carlo)
Problem
Every project schedule is presented as a single date. That date comes from a critical path computed from one duration estimate per task, although the estimates were never single numbers.
The range is collapsed to a mean and discarded before the schedule is drawn. This project puts back what was discarded and measures what happens.
Solution
A twenty-activity ERP migration schedule is simulated 40,000 times from the same estimates. Nothing is made pessimistic: activity by activity, the simulation uses exactly the mean the deterministic schedule uses.
The simulation gives every activity two numbers: how often it sits on the critical path (criticality index) and how much its duration moves the finish (sensitivity).
Outcome
The deterministic finish is 105.2 days; P50 109.2 · P80 117.8 · P95 126.3. The deterministic date holds in only 34% of runs, and the four-day gap comes from the shape of the network rather than from the estimates.
The mechanism is one operation: a merge waits for the slowest of several draws, while the deterministic schedule takes the longest of the means. On parallel paths with identical estimates, the finish slips 12.6 days without lengthening a single task. The converse is true too: parallelising work shortens the plan and lowers the chance of meeting it at the same time.
The deterministic path names 9 activities; 14 are sometimes critical. 72 tests.
"Our delays already have a common cause" is not the reassurance it sounds like. Raising correlation between activities from 0 to 0.8 improves the mean from 109.6 to 106.5 and lifts the chance of meeting the date from 34% to 51.3%, while P95 worsens from 126.3 to 151.5, a full 25 days.
Independent paths offset each other at merges; correlated paths do not, so the project moves as one body. The headline 34% is the optimistic reading.
A second finding shows what float is not: six activities have a criticality index of exactly 1.0, so the index cannot rank them, yet their sensitivities range from 0.085 to 0.395, a factor of 4.6. An activity on the critical path in only 37% of runs moves the finish nearly twice as much as one that is on it every time.
Source code
Comments are shown in the page language. Files in the repository carry both English and Turkish.
Project structure
README.md
117 lines · 9 KB
Loading…