Queue preloading is a process where the queues / storages in the model are preloaded with entities. This helps when you have a large model and you need to reduce the overall simulation starting time.
Why would you need to preload queues?
Queues are preloaded to reduce the amount of time to create steady state in your model. If preloading is used, you can eliminate the warmup time.
For example, the US Social Security Administration creates model for every major adjustment to their systems. All models are large and have hundreds of thousands of entities. To shorten the model runtime, they preload all major queues in the model. This allows them to start the model in steady state to answer questions quickly.
How to preload queues
You can take the following steps to preload the queues;
- At each activity where there is a need to preload the queues, add a storage.
- Create an additional arrival from the entity to the preload storage. Set the arrival quantity to the preload amount.
- Create a percent route from the storage the the activity.
Note: If you introduce entities at some point other than start, your statistics will be skewed. To mitigate the issue of skewed statistics, follow the steps below.
- Add the following action logic to the storage (where 25 is the time it would have taken an entity to reach that point in the simulation); Cyclestart = Clock() – 25. We are basically telling ProcessModel that the entity entered the simulation 25 days prior.
Note: The simulation time in this model is set to days. If it was set to hours, we will have to set this time as 25*24.
- Add the following action logic to the storage, after the logic above (where 25 is the combined value adding time of the steps prior to this activity): INC VATime,25
The example model is provided below. It has display statements to help you see the calculations in the model.