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