Sunday, August 29, 2021

Running Models Simultaneously

Did you know you can run models simultaneously in ExtendSim?  Yes, you certainly can.  That feature has been in ExtendSim since v10 was released, but I often run into ExtendSim users who are not aware of the feature.  It is one that I make use of all the time. 

To run multiple models simultaneously, all one needs to do is toggle the run mode button to show multiple people running – you can see this in the red circle in the image.  Do this for each of your models. Then click on the run button for each model.  That is all you need to do! 

How many models could you run simultaneously?  My computer has 4 cores / 8 threads and I tend to run around 5 models simultaneously.  The ExtendSim interface and other Windows applications that run in the background also needs some CPU capacity. 

One last thing to mention.  If your models imports or exports data from Excel, be aware that Excel doesn’t like multiple models accessing the same file simultaneously. So, you might need to turn the import and export off or set the model up with different spreadsheets.

Try it for yourself sometime if you have not already.  This is an awesome feature.

Sunday, October 25, 2020

Agent-Based Modeling in ExtendSim


Is it possible to build an agent-based simulation (ABS) model in ExtendSim? Certainly. We recently helped build a model of the intensive care unit (ICU) of a hospital. The purpose of the model was to study the impact of facility design. We used ExtendSim to compare two facility designs by looking at how nurses interact with each other when requesting patient care assistance. The model turned out to a good example of an ABS model, and it was straightforward to build in ExtendSim. 

Typical discrete event simulation (DES) models are process-based where entities flow through a defined set process. ABS models are a special case of DES models. ABS models use autonomous decision-making entities called agents where the agents make decisions based on a set of rules. In typical ABS models, the focus is on the agent behaviors.

The ICU model turned out to be a state diagram similar to the one shown below (please note that I have simplified the state diagram for illustrative purposes). The nurses are modeled as agents in the system. The nurse behavior is modeled using their states and the rules around why the nurse agents transition from one state to another. 

Sometimes, a nurse’s patient requests help, so the nurse agent transitions from idle to helping the patient. Other times, a nurse who is with the patient, requests help from another nurse that is currently idle. This forces a state change in two nurse agents. One nurse agent transitions from “I am helping my patient” to “another nurse is helping me.” Meanwhile, the nurse agent who is helping will transition from “idle” to “I am helping another nurse.” When the helping task is complete, both nurse agents transition back to their idle states and on with their next task.

This example is simple to build in ExtendSim once you understand the modeling components involved. This includes the ExtendSim database, a few advanced database features of which the link alert is the most important, and the Queue Equation block (all of these topics are covered in the Advanced ExtendSim course by the way).  What we discovered from this experience is that ExtendSim is a great tool to solve certain kinds of ABS models.

Thursday, July 2, 2020

Race Conditions

written by Dave Krahl, QMT Group
In computer science and engineering a race condition is "an undesirable situation that occurs when a device or system attempts to perform two or more operations at the same time, but because of the nature of the device or system, the operations must be done in the proper sequence to be done correctly". In discrete event simulation programs such as ExtendSim, a race condition is when multiple events happen at the same simulated time and the order of these events has an impact on the operation of the model. Because discrete event simulators process events at discrete times, race conditions are fairly common. There is no standard solution to this, and it is handled differently by the various simulation software programs. When an event occurs in a discrete event simulation model any number of actions can be triggered. The order of these actions can have a significant effect on the behavior of the model. A classic example is if a resource is released and the item (or entity) releasing that resource requests the same resource again and other items are waiting for that resource. Is the releasing item in contention for the resource?

ExtendSim has a number of features that provide additional control over the sequence and scheduling of events as well as the transmission of messages. These include:
  • Scheduling a 0 time event in an equation before it is evaluated. This provides the ability to delay the calculation of the equation and any subsequent messages sent by the equation returning control to the block that initiated the calculation. This can be implemented in custom blocks as well.
  • Detailed control of messages in the equation and custom blocks. Whether or not a connector responds to a message is a user-defined option.
  • In custom blocks, there are message handlers for every type of interaction. These can be used to control how other messages are sent out.
While there are numerous tools for solving race condition problems, the biggest challenge is detecting them in the first place. This often requires detailed inspection of the results of an event in the simulation. Some tools available for this in ExtendSim are:
  • Tracing of simulation execution
  • Enabling debugging code and in particular examining the "stack" of function calls and message handlers
  • Animation of item movement
  • Record Message block in the ExtendSim Utilities library shows sequences of messages
  • History block that shows item movement and properties.
Race conditions are an artifact of discrete event simulation as a technology. This issue is something that every experienced simulation modeler has encountered in their modeling experience. Identifying the race condition can be challenging. However, tools exist in simulation programs to address any race condition problems and control the execution of the model.

Popular Posts