EZStrobe ACD Animation

The first model of a complex system is rarely a correct representation of the modelers’ understanding of the real system. By running the model and analyzing its output it is often possible to detect some errors, other errors may not be readily apparent and may go undetected.

EZStrobe offers graphical and interactive model verification (debugging) by means of model animation. EZStrobe’s animation capabilities are designed specifically for the model developer to understand and gain confidence in the model’s correctness. The animator graphically illustrates the dynamic state of the simulation (e.g., current content of queues and number of ongoing activity instances) and the events that take place during simulation (e.g., when an instance of an activity starts or ends, when a queue receives resources, or when resources flow through links).

Controlling the Animation

When running a simulation of an EZStrobe model that has the Animate and enable breakpoints option turned on in the Model Options form, EZStrobe presents the Simulation Controller shown below.

image

To start animation click the Begin button. The animation will proceed at a speed that depends on the position of the Animation Speed slider. The speed can be decreased or increased while the animation is going on. To pause the animation at the next event, check the Next event option. The simulation will pause immediately. The Simulation Controller during a pause looks like this:

image

The Begin button changes to a Continue, and the current simulation time is displayed below the progress bar.

While an animation is paused or after it has ended you can right-click any activity or Queue in the ACD to see the current values of most statistics associated with it. Right-clicking over a Queue, for example, will show a context menu similar to the one shown below.

image

Whereas right-clicking over an activity will show a context menu similar to the one shown below.

image

The displayed statistics are meant to always be up to date, but in some rare instances they may not be. If you suspect that the statistics shown when right-clicking a modeling element are not up to date, you can force an update by clicking the Update Node Statistics button.

Clicking the Continue button will resume animation. To watch an animation step by step, continue to click the Continue button without turning off the Next event option. To take steps that encompass all the events that take place at a given time, turn on the Clock advance option and turn off the Next event option.

To continue animating and stop only after the simulation reaches a specified time, uncheck the Clock advance and Next event options, type the time at which you want the simulation to stop in the provided input box, and turn on the Time option. This can be done whether the animation is ongoing or paused.

To make the simulation proceed without animation, and consequently at a much greater speed, you can turn off the Animate option. While the animation continues you can turn on the Clock Advance option to make it pause when the simulation clock advances, or set a time and turn on the Time option to stop it then. Once it is paused you can turn on the Animate option and continue or view step by step.

To finish the animation and the simulation you can click the End Model button at any time.

Do not change any aspect of the model such as editing the parameters of a Queue or activity while the simulation is running, since the changes will be ignored until the next time the simulation runs.

If you are not interested in watching the animation, turn off the model option to Animate and Enable breakpoints prior to running the simulation, rather than turning off the Animate option in the Simulation Controller. The simulation will run up to 10 times faster this way.

Understanding the Animation

The portion of an EZStrobe ACD below shows a paused animation that can be used to understand things by example.

image

The thick red border on DumpBucket indicates that one of its instances is terminating. Specifically, the 20 on the top right indicates the specific instance that is finishing (zero based count). The 1/21 in the top middle indicates that one instance is currently taking place (the one terminating) and that 21 have started since model execution began. The blue thick border on SwingEmpty indicates that one of its instances is starting (this happens while an instance of DumpBucket is terminating). The 20 on the top left of the activity indicates the specific instance that will start. The 0/20 in the top middle indicates that no instances are taking place (the one currently starting does not count until after its duration has been sampled), and that a total of 20 have begun. The thick line used for the link that connects DumpBucket to SlInTrk indicates that 2.5 resource units are being sent to the Queue. The 5 at the top of SlInTrk indicates its current content. If the Continue button is pressed on the controller, the link’s line will return to normal thickness, SlInTrk’s border will turn thick, and the number on top will be updated to 7.5.

EZStrobe is based upon work supported by the National Science Foundation under Grant No. 9733267. Any opinions, findings, and conclusions or recommendations are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.