Warm-up
A simulation starts empty: no queues, nobody busy. If your real process never starts empty, those first hours make it look better than it is. A warm-up leaves them out of your results.
Do you need one?
Ask whether your real process starts empty.
- No warm-up needed. A clinic that opens with an empty waiting room each morning and closes at night. The empty start is real, so you want to measure it.
- Warm-up needed. A production line or a call center that runs around the clock, or a line with WIP already on it at the start of the period you care about. The empty start isn't real.
What it does to the numbers
Here is a real example, run in Quodsi. One nurse does triage. Patients arrive every 6 minutes on average and triage takes 5 minutes on average, both Exponential. We ran 10 replications at the default seed, three ways, and looked at average time in system: the time from arrival to leaving.
| Run Length | Warm-up Period | Time measured | Average time in system | 95% confidence interval |
|---|---|---|---|---|
| 4 hours | None | 4 hours | 14.0 minutes | 9.4 to 18.6 |
| 12 hours | 8 hours | 4 hours | 37.5 minutes | 11.4 to 63.7 |
| 200 hours | None | 200 hours | 29.5 minutes | 24.0 to 35.0 |
The first row starts empty and reports 14.0 minutes, well under half of the long-run figure. The second row measures the same length of time, but only after the queue has had 8 hours to build. Its mean moves up past the long-run figure, and its range is very wide. So a warm-up removes the empty-start bias, but it doesn't give you precision. For that, you need longer runs or more replications.
How to set it
- Switch to the Intermediate view or higher.
- Open the Model editor and stay on the Basic tab.
- Expand Advanced Settings and fill in Warm-up Period.
The warm-up is the first part of each replication. It's part of Run Length, not added to it. With a Run Length of 12 hours and a Warm-up Period of 8 hours, the model runs for 12 hours and your statistics cover the last 4. It must be shorter than Run Length, or the model won't run.
A calendar model works the same way. Start Date is the start of the run, statistics begin a warm-up later, and the run ends at Start Date plus Run Length.
Once a warm-up is set, a sentence under Run Length spells out the window. It shows in every view, because a warm-up changes your results even if your view hides the field.
What happens when the warm-up ends
Nothing in the model changes. Entities stay where they are, queues stay full, resources stay busy, and schedules carry on. Only the counting restarts.
- Utilization, queue lengths and WIP are measured from the end of the warm-up.
- Entities in flight count in full. A patient who arrived during the warm-up and leaves after it adds their whole time in system, including the part before the cut.
- Counts restart. Arrivals count only after the warm-up, but entities already in the model carry over. So completed plus in-progress entities can add up to more than arrivals.
- Costs restart. Hourly and per-entity costs count from the end of the warm-up. A Fixed Cost is a one-time charge for the run, so it stays in your totals.
- States keep their values. A state's statistics restart, but its value stays. Tick Reset value at warm-up end on a state to put a running tally back to its initial value. Leave it off for flags that drive routing.
How long should it be?
Quodsi doesn't work this out for you. Try a warm-up, then try a longer one. When a longer warm-up stops moving your key results by more than their confidence interval, the first one was long enough. Warm-up length is also a lever, so you can test several values in a study. A longer warm-up measures less of the run, because Run Length stays the same.