Project Scheduling under Uncertainty

Initializing live version
Download to Desktop

Requires a Wolfram Notebook System

Interact on desktop, mobile and cloud with the free Wolfram Player or other Wolfram Language products.

Each task is started as soon as all of its predecessors have finished, until the project is complete. In this Demonstration, the number of trials is set to 1000. (You can increase the fidelity by adjusting the trials variable in the Initialization Code.) This Demonstration uses the normal and triangular probability distributions, but any other supported distributions could have been used. The projectStart variable in the Initialization determines the moment when work on the project can begin.

Contributed by: Kerry Michael Soileau  (August 2022)
Open content licensed under CC BY-NC-SA



The controls are used to estimate the distribution of project finish times. Project completion means that all the tasks have been carried out. The tasks will generally be subject to precedence relations, which stipulate which tasks must be completed before a given task may be started.

(In the Initialization Code, the projectData variable contains user input data describing the project tasks. For example, {"BW"->{TriangularDistribution[{6,9},7],{"GC","DE"}}} means the task named "BW" has duration distributed according to the TriangularDistribution with parameters {6,9} and 7. "BW" can be started only after both "GC" and "DE" have been completed. In {"FP"->{TriangularDistribution[{6,9},7],{}}}, {} indicates that "FP" has no predecessors. You can use any Mathematica-supported distributions, and any mixture of different distributions in a project. You can choose which time system is used, provided every moment in time can be represented with a real number, for example, 512.23 days since midnight January 1, 2021 GMT or 1628606395845 milliseconds since UNIX Epoch, or others.)

The topological sort function finds an ordering of the tasks that respects the precedence relations among them.

After beginning the project, each task is scheduled to start as soon as all of its predecessors have finished. Each trial uses the specified task duration distributions to sample and assign these durations to tasks.

A complete schedule of task start and finish times is generated, and the project completion time is added to a list of finish times. This data is then presented in the forms of a histogram and a table giving the probabilities of finishing by selected times.

The precedence relations among the tasks are displayed via a directed graph.


[1] Wikipedia. "Critical Path Method." (Aug 25, 2021).

Feedback (field required)
Email (field required) Name
Occupation Organization
Note: Your message & contact information may be shared with the author of any specific Demonstration for which you give feedback.