In Lean manufacturing, one common technique is to sort jobs based on their expected processing time and then to run the shortest ones first. To do this in Arena, there needs to be an attribute on which to sort the queue. For processing jobs where the processing time will be known, the time can be written to the attribute and then used for both the sorting and the processing.
Given that you have chosen to analyze your system with simulation, it is highly likely that the exact processing time will not be known and that it will be based on some statistical distribution. In this case, you might choose to use the average processing time for each job type to sort the queue. If there are three part types, each with a different time, arrayed variables can make it easier to update the parameters without having to completely redo the logic.
Using an arrayed variable makes it both easier to have unique minimum and maximum values for each part type and to add additional part types if needed, thus making the model more scalable. In this example, the attribute for processing time would be used for the actual delay, while the average value for the part delay time would be used to sort the queue.
This technique assumes that all the parts use the same underlying statistical distribution with different parameters. If the different parts also use different statistical distributions, then an expression can be used to hold the statistical distributions for each part type. Both the statistical distribution for each part type processing time and the calculation for the average of each statistical distribution would need to be stored in the expression.
Another reason you might use two separate attributes for sorting the queue versus the processing time is to have a weighted sort. In the next example, the delay cost is taken into account as part of the sort.
After you’ve implemented all the logic to manage your queues, how do you know if your system is achieving the goals you’ve set? Arena already captures many output statistics, but you may need more detail on the intricacies of your operations.
An important metric for Lean systems is the number of parts waiting in the queue. While you don’t want a lot of parts sitting in queue at any given time, you may not want the machines idle and starving either. Arena automatically collects statistics on the average number of entities waiting in each queue and the average wait time per entity in that queue. But what if you want to know what percentage of the time the queue is empty versus what percentage of the time it is within the desired range? This is where the Frequency statistic can be useful.
For our system, we ideally want to keep the queue length between 1 to 4 parts. We’ll create a Frequency statistic under the Statistic module. The Frequency statistic has two types, value and state. State is used for capturing the percentage of time that a resource is in different states. Because we’re looking at a queue, we’ll use the value type in this instance.
The expression to evaluate is NQ(), the number in queue. Remember that you can always use the Expression Builder to help create these expressions rather than having to manually type them. We’ll have three categories: Empty for when there are no parts in queue, Ideal Range for when there are 1 to 4 parts in queue, and Too Long for when there are more than 4 parts in the queue.
After you run the model, you can find the results in the Frequencies report, which is located in the Reports list below the default Category Overview.