본문으로 건너뛰기

Monte Carlo Simulations

Monte Carlo simulation is ProBeya's probabilistic forecasting engine for PPM projects. Instead of relying on a single deterministic schedule, it runs thousands of randomized iterations to produce probability distributions for completion dates and costs. The result is a confidence-based forecast: "There is an 80% chance the project will finish by August 15th."

This feature was introduced in Phase 33 and integrates directly with the PPM module's WBS (Work Breakdown Structure) elements, milestones, and critical path analysis.

Overview​

Traditional project scheduling produces a single completion date based on task estimates. This creates a false sense of certainty. In reality, task durations vary due to resource availability, technical complexity, dependencies, and external risks. Monte Carlo simulation addresses this by sampling from probability distributions for each task, running the schedule model thousands of times, and aggregating the results into percentile-based forecasts.

The simulation engine answers critical questions:

  • When will the project finish? P50 gives the median date; P80 and P90 give progressively more conservative estimates.
  • Which tasks drive the most risk? Sensitivity analysis ranks tasks by their influence on overall project variance.
  • How often is each task on the critical path? Critical path frequency analysis reveals tasks that are sometimes critical but not always.
  • What happens if we change assumptions? Scenario comparison lets you evaluate the impact of adding resources, changing scope, or adjusting task distributions.

Getting Started​

  1. Navigate to your PPM project and select the Simulations tab from the project menu.
  2. Click New Simulation to create a simulation record.
  3. Give it a descriptive name (e.g., "Baseline Q3 Forecast") and configure the parameters:
    • Iterations: Number of random samples to run (default: 10,000; range: 100 to 100,000).
    • Seed: Optional fixed seed for reproducible results. Leave blank for random seeding.
    • Include Cost: Toggle on if you want cost distribution analysis alongside schedule.
    • Confidence Levels: The percentiles to compute (default: P10, P50, P80, P90).
    • Scenario Label: Optional tag to group simulations under a named scenario (e.g., "Aggressive", "Conservative").
  4. Click Run Simulation to execute the computation.
  5. Once the status changes to Completed, click the simulation to view results.

Key Concepts​

TermDefinition
P-value (Percentile)The probability threshold for a forecast. P80 means "80% chance the project completes by this date."
HistogramA bar chart showing how many iterations produced each outcome range. The shape reveals whether the distribution is symmetric, skewed, or bimodal.
S-Curve (CDF)A cumulative distribution function chart. The x-axis is the outcome (date or cost), and the y-axis is the cumulative probability. The characteristic S-shape shows where confidence accelerates.
Sensitivity CoefficientA correlation coefficient (Pearson or Spearman rank) measuring how strongly each task's duration uncertainty influences the project completion variance.
Critical Path FrequencyThe fraction of iterations in which a task appeared on the critical path. A task with 0.95 frequency is "almost always critical"; one with 0.15 is "occasionally critical."
ScenarioA named group of simulations sharing the same label (e.g., "Baseline", "With Buffer", "Reduced Scope") for structured what-if analysis.
IterationA single pass through the schedule model with randomly sampled task durations. ProBeya stores up to 50 sample iterations for audit trail purposes.

How It Works​

Simulation Lifecycle​

Every simulation moves through a defined status lifecycle:

  1. Pending -- Simulation is created but not yet executed. Configuration can be changed.
  2. Running -- Simulation is actively being computed. The engine fetches WBS tasks, samples distributions, and generates results.
  3. Completed -- Results are available. The simulation is read-only at this point. To re-run with different parameters, create a new simulation.
  4. Failed -- An error occurred during execution. The simulation can be retried by creating a new one.

Result Types​

The engine produces three levels of results:

  • Project-level completion: Overall completion date distribution with P10/P50/P80/P90 dates, histogram, CDF, and sensitivity analysis.
  • Milestone-level: Each project milestone gets its own date distribution (P-values, histogram, CDF) so you can forecast key milestones individually.
  • Task-level critical path frequency: Every non-milestone task receives a criticality index showing how often it appeared on the critical path.

Sensitivity Analysis (Tornado Charts)​

Sensitivity analysis ranks tasks by their influence on overall project completion variance. The output is displayed as a tornado chart where:

  • The horizontal axis shows the Pearson correlation coefficient (range -1.0 to +1.0).
  • Tasks with the highest absolute coefficient appear at the top -- these are the risk drivers.
  • Positive coefficients mean the task's duration increase delays the project; negative coefficients indicate inverse relationships.
  • Up to 10 non-milestone tasks are included in the analysis, sorted by absolute coefficient magnitude.

Scenario Comparison​

The compareSimulations procedure lets you align P-value data across two to ten simulations. For each milestone and the project-level completion, the comparison shows P10/P50/P80/P90 values from each simulation side by side. This enables structured what-if analysis:

  • "What if we add a 10% buffer to all task estimates?"
  • "What if we reduce scope by removing Work Package 3?"
  • "How does this month's forecast compare to last month's?"

Simulations can be grouped under scenario labels (stored in the config JSONB). The getScenarios procedure returns simulations grouped by label, with the latest completed simulation highlighted for each group.

Cost Simulation​

When the Include Cost option is enabled, the simulation generates cost distributions alongside schedule distributions. Each result includes P10/P50/P80/P90 cost values, enabling questions like: "There is a 90% chance the project will cost less than 1.2M EUR."

Configuration​

ParameterTypeDefaultRangeDescription
iterationsInteger10,000100 -- 100,000Number of Monte Carlo iterations. Higher values produce smoother distributions but take longer.
seedIntegerRandomAny 32-bit integerFixed RNG seed for reproducibility. Two simulations with the same seed and data produce identical results.
includesCostBooleanfalse--Whether to compute cost distributions alongside schedule.
confidenceLevelsArray[0.10, 0.50, 0.80, 0.90]0.0 -- 1.0Which percentiles to compute.
scenarioLabelStringnoneMax 100 charsOptional label for grouping simulations into named scenarios.
distributionOverrideObjectnone--Per-task distribution overrides keyed by WBS element ID. Allows overriding the default distribution for specific tasks.

Permissions​

Monte Carlo simulations are governed by the same project-level permissions as other PPM features:

  • Project Managers and PMO Coordinators can create, run, and delete simulations.
  • Team Members with project read access can view simulation results and comparisons.
  • Workspace Admins have full access to all simulations within their workspace.
  • All procedures enforce multi-tenant isolation via organizationId -- simulations from one tenant are never visible to another.

Tips & Best Practices​

Start with fewer iterations during calibration

Use 1,000 iterations while adjusting task distributions and scenario parameters. Switch to 10,000 or more for final reporting. The distribution shape stabilizes around 5,000 iterations for most project sizes.

Use scenario labels for structured comparison

Label your simulations with consistent names like "Baseline", "Optimistic", "Risk-Adjusted". The scenario grouping view makes it easy to track how your forecast evolves over time.

Focus on the tornado chart first

The sensitivity analysis tells you which tasks matter most. If one task dominates the tornado chart, improving that estimate (or mitigating that risk) will have the largest impact on your forecast confidence.

Use fixed seeds for audit-ready results

In regulated environments (pharma, GxP), set a fixed seed so that simulation results are fully reproducible. Document the seed value in your project records.

Troubleshooting​

IssueCauseSolution
Simulation stuck in "running" statusLong-running computation or server timeout.Create a new simulation and run it again. The failed simulation will automatically transition to "failed" status.
Flat histogram (no bell curve)Too few tasks or all tasks have identical durations.Add more granular WBS elements with varied duration estimates. Monte Carlo needs variance to produce meaningful distributions.
All tasks show low critical path frequencyThe project has many parallel paths with similar durations.This is a valid result -- it means no single path dominates. Consider this a well-balanced schedule.
"Simulation has already completed" errorAttempting to re-run a completed simulation.Completed simulations are immutable. Create a new simulation to re-run with different parameters.
Empty sensitivity dataThe project has no non-milestone WBS elements.Add work package tasks to the WBS. Sensitivity analysis only applies to tasks, not milestones.
  • Portfolio Management -- Aggregate Monte Carlo results across a portfolio of projects.
  • Resource Planning -- Use simulation results to inform resource allocation decisions.
  • Reports & Export -- Export simulation results and charts for stakeholder presentations.
  • Programs -- Run simulations at the program level across multiple projects.