This is a fundamental design decision that should be addressed at the beginning of the project. It will dictate how your simulation is configured, how data is fed into it, and how results are collected and interpreted. It may even alter how you look at a process.
A potential client came to us in their search for simulation software; they wanted to understand how SIMUL8 could be applied to critical path analysis within a production machine that had many complex parallel steps. If they could easily understand the critical path elements, they could focus their attention on the best process steps for overall cycle time reduction. In this example, all process times are deterministic (fixed distributions).
After 15 years of simulation, I came across a perfect use of simulation that I have not seen before.
One of our clients has a production line in France that they intend to move to Romania. They have started to develop a simulation model to capture and document the inner workings of the line including cycle times, line efficiencies, labor assignments, station capacities and performance metrics.
They will then unistall, pack-up, and move the entire line 2500km East where it will be reassembled, configured, and production resumed.
The goal of the simulation is mainly to transfer knowledge from the old to the new plant to ensure that production targets are maintained. Normally, we see simulation used to identify and test changes to a system in order to improve it. This time, the simulation model will be used to ensure that everything remains the same.
My employees have a primary activity but occasionally receive random interruptions that occupy their time. What is the best way to model this situation in SIMUL8?
This is a common situation. As a simple example, consider a receptionist whose primary duties are to answer phone calls and emails. Occasionally, the receptionist must also leave to fax a document or make copies. The best way to handle this depends upon how the employee should respond when an interruption occurs. Will the employee first complete the current task, then deal with the interruption or will the employee immediately drop the primary activity (even if in the middle of a task)?
The following SIMUL8 feature is very convenient method of randomly consuming a resource's time without needing to explicitly model the arrival and process times of the interruption. If you are interested in the more detailed and complex method of modeling the interruption, please see Work Center Interruption.
The simplest approach is to use the availability feature of the resource in question. Much the same as a work center's efficiency, availability randomly creates resource absences. You can achieve this by either using the auto field by entering an availability % and average absence time, or by using the detailed option.
The detailed option allows you to enter more accurate distribution parameters for time between absences and time to return.
I've been working with SIMUL8 since 1994 and, for as long as I can remember, SIMUL8 has treated work center changeovers as an extension of the work center's process time.
The changeover requirement is detected as a work item enters a work center. At this moment, the work center can check label values, check the number of items processed (or the amount of working time) since the last changeover and determine if a changeover is required before starting the next work item.
Since changeovers were introduced, SIMUL8 added:
- the changeover result so we could evaluate what percentage of time a work center spent in changeover
- resource requirements for changeovers
- a Visual Logic event at the end of changeover (On State Change)
These additions have all been great, but we are still left with the fact that a changeover occurs at the beginning of a work center's process time. This means we need the next work item to trigger the changeover. But what if we want to use changeover to model cleanup or some other post-process time event?
Our frequent work in healthcare provides several good examples of this situation. Sometimes a pre-process changeover just can't accurately reflect the true process. Imagine that a trauma center's operating room has been left a mess from the previous patient. Would the staff wait until the next trauma patient arrives to clean and prep the room? Of course not. To do so would mean that the staff has both failed to make use of the free time between patients and, worse, risks making a potentially critical patient wait to receive care. Instead, staff would initiate the cleaning process as soon as the previous patient has left the room.
So how can we model this in SIMUL8 given that changeover times are tied to the next patient by default? Simple - we trick the work center into initiating the changeover sequence ealier. One easy solution is to create a "change over" work item to pass through the work center after each "patient" is compete. Using the On Work Complete Visual Logic, simply use the "Add work to Queue" visual logic command to create and add a new work item to the appropriate queue. Next set a label on the newly created work item to indicate that it is a "changeover" work item.
When a work item arrives into the work center use Visual Logic After Loading Work to determine if the item represents a "patient" or a "changeover". If it is a "Patient", set the work center's operation time accordingly and the changeover time to zero. If the item is a changeover, set the operation time to zero and the changeover accordingly. When the item is complete, route the "changeover" to an exit point, and the "patient" to the next step in the process.
This solution will ensure that any changeover (i.e. cleaning) required will occur immediately after the previous process time completes. It also has the advantage of keeping the working percent and changeover percent results correct. You should keep in mind, however, that the number of work items completed result at the work center will reflect twice the number of patients, as it will have one count for each patient plus one count for each changeover.
This example illustrates a lesson that we have seen so often in our years of using SIMUL8 for complex problems - just because there may not be an immediate built-in dialog or check box to handle a given situation, that doesn't mean it can't be modeled with SIMUL8. With a little creativity and SIMUL8's powerful built-in programming capabilities, you can conquer just about any modeling challenge. And don't forget that you can always ask us for help if you get stuck!