We have been receiving a number of questions about building Arena simulation models from healthcare organizations that are struggling to cope with the COVID-19 crisis. While we will continue to provide support as quickly and thoroughly as we can to individual questions, we wanted to write a post to help with general suggestions for users building models focused on predicting healthcare capacity and bottlenecks.
One crucial aspect of most Arena models is resource utilization. When using Arena resources, capacity schedules can help you vary the capacity of individual resources, like nurses and doctors, over the day or week. When a resource uses a capacity schedule, you must assign a schedule rule to tell Arena how to handle a decrease in capacity to a level below the number of resources that are currently busy. Remember that the preempt schedule rule will only remove one unit of capacity from a multi-capacity resource, so this rule is generally not helpful in situations where a multi-capacity resource is used (e.g. a nurse resource with a capacity of 10). When modeling a situation where resources must immediately be released, it is usually better to create individual resources and place them in a resource set. For situations where resources do not need to be immediately released, either the Wait or Ignore rules may be used. The Ignore rule is likely the simplest choice as it does not alter the following durations of the schedule like the Wait rule. The Ignore rule may result in utilizations over 100% as these resources finish work before being released, but this is likely to be an accurate scenario for many emergency response situations.
Another important reminder with resources is that if you are seizing multiple individual resources in one Seize or Process module, all resources in the list need to be available simultaneously for Arena to gain control of them. Also, your entity can never seize more units of capacity from a resource than it has available. For example, if you have a Seize module where you are trying to gain control of four nurses from a resource set but there are never more than three scheduled to be available, your entity will not be able to progress past that module. If you have Arena version 15.1 or higher, you could consider using the Gather module instead of a Seize in this situation. The Gather module can collect units of capacity from multiple resources in a set while enforcing a minimum number of units of capacity needed. In the previous example, the Gather module could seize the three available nurses and grab one available doctor if resources representing each of these are included in the same resource set.
Arrival schedules are another important feature. These schedules allow you to change the arrival rate throughout the day or week to handle increasing or decreasing demand, or demand that varies within the time period of your model. One critical point to remember about arrival schedules is that you are scheduling the average hourly arrival rate, not individual patient arrivals. Arena will use this rate to determine an interarrival time and then apply the exponential distribution so that it still schedules arrivals randomly. Arrival schedules also allow you to move the demand higher or lower by changing the scale factor parameter, which acts as a multiplier. This gives you the ability to quickly alter the demand to your simulation model without having to make any changes to the underlying data.
With any models that include variability, it’s vital to run multiple replications. While a single run of your model will generate results, you need to run the model many times to understand how the underlying variability will affect your results. The average wait times and utilizations are important, but the potential range of these key metrics may be even more significant. The needed number of replications will be based on your model and your data. Start with a small run, five to ten replications, and look at the half widths generated by the output reports. These initial results can give you an idea of the amount of variability in your model and how many more replications you need to run. If you are modeling any facility without a set opening and closing time, you may also want to include warm up time to clear out statistics captured at the start of the model run. Since your model will start empty and with idle resources, not clearing statistics collected at the beginning of the run may bias the average wait times to be lower than they would be in the actual operation.
The goal with any simulation model is to generate results that can be used for making decisions. This starts with input data analysis. Arena’s Input Analyzer can help recommend statistical distributions and the parameters to use for process times in your model. This tool will provide results regardless of the number of samples provided, so it is important to make sure that you are using a sufficient amount of data. If you only have a handful of observations for a process, you may want to group those data points with another similar process. If this is not an option, you may be better off using a triangular distribution based on expert estimates. With any data you are analyzing, be sure that the times are for the actual process and do not include wait times for personnel or materials. Arena supports direct read from Excel so that users may store all their input data in a user-friendly format. This makes it easier to update the data for your model as well as enabling users who are not familiar with Arena to run simulation scenarios. If you are planning to build a model that will be run by others, Excel’s validation tools can be used to prevent bad data from being entered and potentially causing runtime errors or invalid results.
Validation is one step that is often overlooked or minimized. Before you start to build your simulation model, you should know how you will confirm that it is accurately describing your system. Do you have wait times or throughput counts that you could use as a comparison? You may be dealing with a model that has no real-world comparison, which makes validation even more difficult. If this is your situation, it becomes even more essential that you spend time double-checking your logic and using the debug bar to step through the model and confirm that your entities are moving as expected. The run-time elements bar will show you the current state of all your resources, values of variables and expressions, and let you examine queues and entities contained within them. To assist with debugging and validation, you can also write out log files to CSV for more detailed analysis. For example, you might want to use attributes to mark time stamps when patients arrive, undergo triage, are assigned a bed, and other major steps in the process. You can then examine these files to confirm that the times seem reasonable and consult others who are familiar with the process to help you identify any potential issues.
We have included a list of applicable SMART models and example models below. These models all come with your Arena installation to help you learn the software and key concepts. We also have user groups on LinkedIn where users can connect to support each other in this critical time. Please find these on the right of this page.
Applicable SMARTS and example models:
- Emergency room example: Emergency Room.doe
- Resource schedules: Resources Scheduling Capacity Changes.doe
- Seizing multiple resources: Resources Seizing Multiple Simultaneously.doe
- Gather: Advanced Concept GatherDisperse.doe
- Arrival schedules: Arrivals Scheduled Arrivals.doe
- Reading in data using Excel: External Data Files Read Variables from Excel Basic Example.doe
- Reading schedules from Excel: External Data Files Read in Variable Values Used In Resource Schedules.doe
- Writing CSV log files: External Data Files Writing CSV File with Header.doe