In the real world, events tend to occur randomly, according to certain statistical patterns or distributions. Distributions allow you to add randomness or variability to your model in order to make it more accurately reflect reality. ProcessModel is capable of creating random sample values that fit a specific theoretical or user-defined distribution.
- You can use a distribution when specifying time values and quantities or when assigning a value to an attribute or variable. For example, this statement:
TIME (T(2, 2.6, 4) min)
would make the activity last for a time randomly selected from a triangular distribution with a minimum time of 2 minutes, a most likely time of 2.6 minutes, and a maximum time of 4 minutes.
Distribution functions are built-in functions that generate random values from numbers using pre-determined patterns. Distributions may be discrete, selecting one among a finite number of possible solutions, or continuous according to the pattern provided by the input parameters. An example of using a discrete distribution is when an entity can randomly route to one of several places, or when randomly generating a batch size. Examples of continuous distributions include service and inter-arrival times. The distributions directly available to you in ProcessModel are:
Many additional distributions can be used because of conversions made by Stat::Fit to ProcessModel distributions. See Convert Raw Data to Distributions.
Common Distributions
The following is a list of the most commonly used distributions and the syntax used to define them. The s parameter is optional (see discussion of streams following this list).
Common Distributions | Syntax | Components |
---|---|---|
Normal | N(a, b, s) | a = mean, b = standard deviation, s = stream (optional) example: N(30,5) |
Triangular | T(a, b, c,s) | a = minimum, b=mode, c=maximum, s = stream (optional) example: T(2,10,13) |
Uniform | U(a, b, s) | a = mean, b=half range, s = stream (optional) example: U(20,4) |
User-Defined | D n (% 1 ,x 1 ,…% n ,x n ) | % = percentage (entries must total 100%) x = value (numeric or pre-defined descriptor) n = number of%, x entries between 2 and 5 example: D3(20, 35, 30, 45, 50, 37.5) |
The following illustration shows an example of each of the common distributions:
Triangular This distribution is probably the most versatile yet easy to understand. It allows you to set a lower limit, an upper limit, and a most likely point. In the above example, the distribution would return a random number where the minimum value could be 2, the most likely value would be 5, and the maximum value could be 12.
For example, a call center may take as little as 1 minute with a call but usually takes 3.4 minutes and sometimes takes up to 15 minutes to complete the call. To model this in the Time field of the activity, you would enter: T(1, 3.4, 15)
Generally, you should express time values using the triangular distribution since it is flexible and realistic, yet easy to understand. Studies have shown that activity times are never uniformly distributed and rarely normally distributed. Generally, activity times approximate a triangular distribution that is skewed to the right as shown in the example above
Normal A normal Bell curve, this distribution allows you to designate a mean (average) and a standard deviation to generate a random number within that curve, the most likely number to be generated being the mean. The previous example shows a normal distribution with a mean or average of 30 and a standard deviation of 5.
Uniform This distribution allows you to generate a completely random number since any number under its curve is just as likely to be selected as any other. It is very useful when you want to have a random number unaffected by a most likely point. The previous example will result in a random number from 16 to 24 (i.e. 20 ± 4).
For example, suppose you want to assign a random number from 0 to 30 to an attribute called a_Cover_Time. Enter a_Cover_Time = U(15, 15) in the Action logic where the assignment needs to take place.
User-Defined This distribution is specialized to allow you to generate a specific number based on percentages. You can create two, three, four, or five possible outcomes. The previous example, D3(20, 35, 30, 37.5, 50, 45), will generate the number 35 exactly 20% of the time, 30% of the time the number will be 37.5, and 50% of the time 45 will be the number.
For example, two types of patients require different preparation times. About 38% of the time a nurse takes 25 minutes to prepare the patient and 62% of the time it takes 43 minutes. Enter D2(38, 25, 62, 43) in the Time field of the preparation activity.
To see the parameters for other distributions found in ProcessModel, select the Action tab for an Activity and select Distributions from the drop down filter. Select the desired distribution then select the Paste button to move a distribution into action field. This will show the parameters used to build up a distribution.
To determine what distribution to use in the absence of raw data, use the following table:
Characteristics | Possible Distribution |
---|---|
Unboundedsymmetrical about the mean unbounded distribution skewed to the left unbounded distribution skewed to the right | Normal Extreme Value IA Extreme Value IB |
Bounded above a minimumTime to a random event — time between arrivals Time to a complex event — failure times Time to task completion — service times, repair times | Exponential Gama Gama |
Bounded between and minimum and a maximum Time to task completion– when the minimum is not more than 3 * (Max -Most likely) — when the Maximum is not more than 3 * (Most likely – Minimum) — Other | Triangular Beta |
- For detailed information on all available distributions, use the Stat::Fit Help or the Stat::Fit user’s guide found in “C:\Program Files\ProcessModel\x.x\StatFit\SF Manual V2.pdf”.
Streams
An optional stream number (1 – 100), shown as the S in the above tables, can be used to generate independently random numbers for the distribution. If this option is omitted, ProcessModel will use stream 1. The range is 1 – 100. The stream number is used to start the random seed value of a distribution at a number other than 1, which is the default. The stream number, preceded by a comma, is included as an additional parameter at the end of a distribution. It is placed before the closing parenthesis.
- Any negative values returned by a distribution that are used for a time expression will be automatically converted to zero.