Overview
A field that varies run-to-run can be drawn from a probability distribution instead of a fixed number. Distributions let a model reflect real-world variability: cycle times that vary, demand that clusters and lulls, processing durations with realistic long tails. In the Modeler, the distribution picker appears on:- Processing Time on a Process
- Arrival Logic on a Source — note this is an inter-arrival time (time between arrivals), not a rate
- The Distribution assignment strategy for Number attributes on Source, Combiner, Separator, and Transformer outputs
The Quantity to release on a release action takes a literal number or a DSL expression, not a distribution.
</> toggle (Switch to expression) next to a parameter to type a DSL expression instead: that’s how you make variability depend on simulation state, constants, or entity attributes.
The distribution choice is static configuration. Individual parameter values can be literals or expressions, mixed freely.
The duration picker holds whole seconds, even for dimensionless parameters like Beta’s shape parameters, Weibull’s shape, or Lognormal’s Sigma. To enter a fractional value such as a Sigma of 0.294 or an Alpha of 2.5, switch the parameter to expression mode and type the number. The field keeps the exact value, but when you leave it, it switches back to the duration picker, which shows the value rounded to a whole second. Editing it in the picker replaces it with a whole number.
Supported Distributions
Fixed
A deterministic value. Technically not a distribution, but included for consistency so every distribution field uses the same picker. Parameters- Value: the constant the field always resolves to.
Normal
The classic bell curve: symmetric around a mean, spread controlled by standard deviation. Parameters- Mean: center of the distribution.
- Standard Deviation: spread around the mean.
Exponential
Time between memoryless events. Higher concentration near zero, long tail. Parameters- Beta: the mean (equivalently, 1 over the rate). Despite the name, it’s the expected value of a sample.
Uniform
Every value between the bounds is equally likely. Flat distribution. Parameters- Lower Bound: minimum sample value.
- Upper Bound: maximum sample value. Must be greater than the Lower Bound.
Lognormal
A log-transform of a normal distribution: right-skewed, strictly positive, with a long right tail. Parameters- Mu: mean of the underlying normal distribution (before the log transform), not of the lognormal itself.
- Sigma: standard deviation of the underlying normal distribution.
Weibull
Flexible distribution that can model increasing, constant, or decreasing hazard rates depending on its shape parameter. Parameters- Shape: controls how the hazard rate evolves with elapsed time. Shape < 1 models infant mortality (failure rate decreasing over time), Shape = 1 reduces to Exponential (constant rate), Shape > 1 models wear-out (failure rate increasing over time).
- Scale: characteristic magnitude of the samples.
Triangular
A simple three-point distribution. Parameters- Lower Bound: minimum possible value.
- Upper Bound: maximum possible value.
- Mode: most likely value. Must satisfy Lower Bound ≤ Mode ≤ Upper Bound.
(lower + upper + mode) / 3 — handy for sanity-checking results against the numbers you were given.
Use for: expert-elicited estimates (“fastest it ever takes is 2 min, typically 5 min, worst case 10 min”). A reasonable default when you have three-point estimates but no empirical distribution to fit.
Erlang
Sum of Shape independent exponential random variables, where Shape must be a positive integer. Parameters- Shape: number of exponential stages summed (a positive integer; a fractional value is truncated to a whole number when the model runs).
- Scale: mean of each underlying exponential stage.
Beta
Distribution on the interval [0, 1], flexibly shaped by two parameters. Parameters- Alpha: first shape parameter.
- Beta Parameter: second shape parameter. (The label is spelled out to avoid confusion with the Beta distribution name itself.)
Gamma
General-purpose continuous distribution for positive quantities, controlled by two parameters. Parameters- Alpha: shape parameter.
- Beta: scale parameter, so the mean is Alpha × Beta.
Choosing a Distribution
If you have real data, fit a distribution to it. If you don’t:
For processing times where you have “average” and “worst case” numbers from the floor, Triangular is a pragmatic default; if you have a mean and a spread, Lognormal is usually better. For arrival patterns, Exponential is the standard start. Avoid Normal for durations — its negative draws are clamped to zero. For distribution-sensitive work (queue analysis, reliability), fit to real data.
Parameterizing with DSL Expressions
Each parameter field has a</> toggle next to its label. Click it and the duration picker is replaced by a single-line text input where you type a DSL expression: references to constants, state variables, entity attributes (where the context allows), or composed expressions. Click the timer icon (Switch to duration) to go back to the duration picker.
A parameter in expression mode might hold:
base_time * complexity_factor: scale a Normal distribution’s Mean by entity attributes while leaving Standard Deviation as a literal.LOOKUP(MEAN_INTERARRIVAL_BY_SHIFT, CURRENT_SHIFT): drive an Exponential distribution’s Beta from a shift-indexed lookup table and a state variable.LOOKUP(LOG_MEAN_WEIGHT_BY_PRODUCT, ENTITY_TYPE): pick a Lognormal Mu per product type while keeping Sigma fixed.
Tips
- Draw from the distribution at use time, not at entity creation time. For processing times especially, sample the distribution when the Process runs, not as an entity attribute set at the Source. This keeps the sample close to the state it should depend on.
- Normal isn’t always the answer. It’s familiar but it can draw negative values. For strictly positive quantities, prefer Lognormal or Gamma.
- Check parameter labels carefully. Different distributions reuse names even when the mathematical concept is similar: Exponential’s Beta is a mean, Gamma’s Beta is a scale (mean = Alpha × Beta), and Beta’s Beta Parameter is a shape. The picker’s labels are the source of truth.
- Respect parameter constraints. Uniform needs upper > lower; Triangular needs lower ≤ mode ≤ upper; Erlang’s shape must be a positive integer; Weibull, Gamma, Beta, and Exponential parameters must all be positive. The play button doesn’t check these. When a run meets an invalid parameter, it corrects the value (swapping reversed bounds, clamping the mode or a non-positive parameter) and reports a runtime advisory on the run. A fractional Erlang shape is truncated without an advisory. If a run finishes with advisories, check them before trusting the results.
- Match distribution to data when possible. A fitted distribution on real MES cycle times will give much more realistic results than an assumed parametric one.
- Use Fixed to simplify initial modeling. Start with fixed values to verify the structure, then swap in distributions once the model is correct.