Simulations
ProBeya Simulations brings Monte Carlo probabilistic forecasting to your project portfolio. Instead of single-point schedule estimates that invariably miss, simulations run thousands of iterations with three-point estimates (optimistic, most likely, pessimistic) to produce probability distributions for project completion dates and costs -- giving PMO teams the confidence levels they need for governance decisions.
Overview
Traditional project scheduling uses single deterministic estimates that create a false sense of precision. A task estimated at 10 days might take 7 or 15 depending on resource availability, complexity surprises, and external dependencies. Monte Carlo simulation addresses this by modeling each task's duration as a probability distribution and running thousands of iterations to reveal the range of likely outcomes.
ProBeya's simulation engine integrates directly with the PPM module's WBS (Work Breakdown Structure), allowing project managers to define three-point estimates on WBS elements, auto-calibrate from historical data, run simulations, compare scenarios side-by-side, and present probabilistic forecasts in governance meetings.
Getting Started
- Navigate to simulations -- Open a project and go to the Simulations tab at
/{workspaceSlug}/{projectSlug}/simulations. - Set three-point estimates -- For each WBS element, define optimistic, most likely, and pessimistic duration estimates.
- Auto-calibrate (optional) -- Use the auto-calibration feature to fit estimates from historical actual durations of completed tasks.
- Create a simulation -- Click "New Simulation", configure parameters (iterations, confidence levels, cost inclusion), and submit.
- Review results -- Once the simulation completes, explore the results across six tabs: Overview, Milestones, Sensitivity, Distribution, Scenarios, and Audit.
- Compare scenarios -- Create additional simulations with different assumptions and use the comparison view to evaluate alternatives.
Key Concepts
- Three-Point Estimate -- An estimation technique using three values per task: optimistic (best case), most likely (expected), and pessimistic (worst case). These define the probability distribution for the task's duration.
- Distribution Type -- The statistical distribution used to model task duration variability. Supported types include
triangular(simple, symmetric-ish),PERT/beta(weighted toward most likely), andnormal(Gaussian). - Iteration Count -- The number of simulation runs. More iterations yield more precise probability distributions. Typical range: 1,000 to 100,000.
- Confidence Level -- The probability percentile for a forecast. A P80 (80th percentile) completion date means there is an 80% chance the project will finish by that date.
- Sensitivity Analysis -- Identifies which tasks contribute most to overall schedule variability, helping project managers focus risk mitigation on the highest-impact items.
- Auto-Calibration -- Automatically fits three-point estimates from historical actual durations of completed WBS elements, providing an evidence-based starting point.
- Scenario Override -- Custom adjustments applied to specific tasks within a simulation: modified estimates, duration multipliers, cost multipliers, or task removal for what-if analysis.
How It Works
Three-Point Estimate Management
The updateWbsEstimates and batchUpdateEstimates procedures allow project managers to set optimistic, pessimistic, distribution type, and standard deviation values on WBS elements. Since the WBS schema does not have dedicated columns for these fields, estimates are stored in the simulation config's distributions JSONB. The getProjectEstimates procedure returns all WBS elements with their current estimate metadata merged in.
Auto-Calibration
The auto-calibration engine analyzes completed WBS elements that have both planned and actual durations. It fits a statistical distribution to the historical variance and suggests three-point estimates for tasks that lack manual estimates. The getCalibrationPreview procedure provides a dry-run showing how many tasks would be calibrated and sample distribution fits before committing.
Simulation Execution
When a simulation is created:
- A simulation record is inserted with status
pending - The simulation is enqueued for execution via the worker
- The worker runs the configured number of iterations, sampling task durations from their probability distributions
- Results are written to the
ppm_simulation_resultstable, partitioned by type (schedule, cost, milestone) - The simulation status updates to
completed(orfailedif an error occurs)
Progress is tracked via the getSimulationProgress procedure, which returns the current percentage.
Results Dashboard
The simulation results page provides six analytical views:
| Tab | Content |
|---|---|
| Overview | Summary statistics: P50, P80, P90 completion dates; expected vs. baseline comparison |
| Milestones | Per-milestone probability distributions and confidence intervals |
| Sensitivity | Tornado chart showing which tasks contribute most to overall variance |
| Distribution | Histogram of simulated completion dates with percentile markers |
| Scenarios | Scenario-specific results when overrides were applied |
| Audit | Simulation parameters, input assumptions, and execution metadata |
Scenario Comparison
The compareSimulations procedure allows side-by-side comparison of 2-5 simulations. This enables what-if analysis: "What if we add two resources to the critical path?" vs. "What if we descope the secondary deliverable?" Each scenario is a separate simulation with different overrides, and the comparison view aligns their results for direct evaluation.
Configuration
Simulation Parameters
| Parameter | Description | Default |
|---|---|---|
| Iterations | Number of Monte Carlo iterations | 10,000 |
| Seed | Random seed for reproducible results | Auto-generated |
| Confidence Levels | Percentiles to calculate (e.g., P50, P80, P90) | [50, 80, 90] |
| Include Cost | Whether to simulate cost distributions alongside schedule | Off |
| Scenario Label | Descriptive name for the simulation scenario | Optional |
Estimate Fields per WBS Element
| Field | Description |
|---|---|
| Optimistic Duration | Best-case task duration (days) |
| Most Likely Duration | Expected task duration (base WBS duration) |
| Pessimistic Duration | Worst-case task duration (days) |
| Distribution Type | triangular, pert, or normal |
| Duration Std Dev | Standard deviation (used with normal distribution) |
Scenario Overrides
| Override Type | Description |
|---|---|
| Custom Estimate | Replace a task's three-point estimate with specific values |
| Duration Multiplier | Scale a task's duration by a factor (e.g., 1.5x for risk) |
| Cost Multiplier | Scale a task's cost by a factor |
| Remove Task | Exclude a task from the simulation (descoping analysis) |
Permissions
| Role | Access |
|---|---|
| Organization Owner / Tenant Admin | Full access to all simulations across all projects |
| Project Manager | Create, run, and view simulations for their projects |
| PMO / Portfolio Manager | View and compare simulations across the portfolio |
| Team Member | View simulation results (read-only) |
All simulation procedures use orgProcedure for multi-tenant isolation. Simulation results are linked to specific projects and inherit the project's access control.
Tips & Best Practices
If your organization has historical project data in ProBeya, use auto-calibration before manually setting estimates. Historical data provides an evidence-based baseline that reduces estimation bias.
Present the P80 (80th percentile) date in governance meetings. It communicates "we are 80% confident the project will complete by this date" -- which is more honest and actionable than a single-point estimate.
Before investing in risk mitigation actions, check the sensitivity analysis to identify which tasks drive the most schedule variability. Focus mitigation efforts on the top 3-5 sensitivity drivers for maximum impact.
Always run a baseline simulation and at least one alternative. The comparison view makes it easy to quantify the impact of proposed changes (additional resources, scope changes, or risk mitigation) in probabilistic terms.
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| Simulation stuck in "pending" | Worker may not be running or queue is backed up | Check the simulation worker status; the getSimulationProgress procedure shows current state |
| "WBS element not found" | Element was deleted after estimate was set | Remove the orphaned estimate reference and re-run the simulation |
| Flat distribution (no variance) | All estimates have identical optimistic/pessimistic values | Add realistic variability -- if optimistic equals pessimistic, the simulation adds no value |
| Auto-calibration returns 0 tasks | No completed WBS elements with actual duration data | Complete some tasks with actual duration tracking before running calibration |
| Comparison shows misaligned dates | Simulations were run against different WBS versions | Re-run simulations against the current WBS to ensure consistent comparison |
| Results show "failed" status | Simulation engine encountered an error | Check the simulation's error message via getSimulation; common causes include circular dependencies or missing estimates |
Related Features
- Monte Carlo Simulations -- Core Monte Carlo engine documentation and methodology
- Portfolio -- Portfolio-level project management and governance
- Estimates -- Estimation techniques and CAPEX/OPEX tracking
- Dependencies -- Project dependency management that feeds simulation models
- Resource Planning -- Resource allocation that complements schedule simulation