Skip to Main Content Skip to Search
Product Documentation

Exploring a Simulation Using the Debugger and Plots

Exploring the D/D/1 System Using the SimEvents Debugger

The plot in Running the Simulation indicates how many entities have departed from the server, but does not address the following question: Is any entity still in the server at the conclusion of the simulation? To answer the question, you can use the SimEvents debugger, as described in this section. Using the debugger involves running the simulation in a special debugging mode that lets you suspend a simulation at each step or breakpoint and query simulation behavior. Using the debugger does not require you to change the model. The topics in this section are as follows:

Starting the Debugger

To open a completed version of the example model for this tutorial, enter simeventsdocex('doc_dd1') in the MATLAB Command Window. Save the model in your working folder as dd1.mdl.

To start simulating the current system in debugging mode, enter this command at the MATLAB command prompt:

sedebug(bdroot)

The output in the MATLAB Command Window indicates that the debugger is active. The output also includes hyperlinks to information sources.

*** SimEvents Debugger ***

Functions | Help | Watch Video Tutorial

%==============================================================================%
Initializing Model dd1
sedebug>> 

The sedebug>> notation is the debugger prompt, where you enter commands.

Running the Simulation

The simulation has initialized but does not proceed. In debugging mode, you indicate to the debugger when to proceed through the simulation and how far to proceed before returning control to you. The purpose of this example is to find out whether an entity is in the server when the simulation ends. To continue the simulation until it ends, enter this command at the sedebug>> prompt:

cont

The Command Window displays a long series of messages that indicate what is happening during the simulation. The end of the output indicates that the debugger has suspended the simulation just before the end:

Hit built-in breakpoint for the end of simulation.
Use 'cont' to end the simulation or any other function to inspect final states of the 
system.

%==============================================================================%
Terminating Model dd1

To understand the long series of messages, see The Debugger Environment or the debugger resources listed in For Further Information.

Querying the Server Block

The debugger has suspended the simulation just before the end and the sedebug>> prompt indicates that you can still enter debugging commands. In this way, you have an opportunity to inspect the final states of blocks or other aspects of the simulation. To get information about the Single Server block, enter this command:

blkinfo('dd1/Single Server')

The output shows the state of the Single Server block at the current time, T=10. The last two rows of the output represent a table that lists entities in the block. The table has one row because the server is currently storing one entity. The entity has a unique identifier, en11, and is currently in service. This output affirmatively answers the question of whether an entity is in the server when the simulation ends.

Ending the Simulation

The simulation is still suspended just before the end. To proceed, enter this command:

cont

The simulation ends, the debugging session ends, and the MATLAB command prompt returns.

For Further Information

For additional information about the SimEvents debugger, see these resources.

TopicDescription
Building a Simple Hybrid Model, specifically the section, Confirming Event-Based Behavior Using the SimEvents DebuggerAn example that illustrates single-stepping, which is another important debugger feature

A video tutorial on the Web, in two parts:

Introductions to a variety of debugger features
Debugger function listList of functions related to debugging
Overview of the SimEvents DebuggerOverview of debugging and links to other debugging topics

Exploring the D/D/1 System Using Plots

The dd1 model that you created in Building a Simple Discrete-Event Model plots the number of entities that depart from the server. This section modifies the model to plot other quantities that can reveal aspects of the simulation. The topics are as follows:

To open a completed version of the example model for this tutorial, enter simeventsdocex('doc_dd1') in the MATLAB Command Window. Before modifying the model, save it with a different file name.

Enabling the Queue-Length Signal

The FIFO Queue block can report the queue length, that is, the number of entities it stores at a given time during the simulation. To configure the FIFO Queue block to report its queue length, do the following:

  1. Double-click the FIFO Queue block to open its dialog box. Click the Statistics tab to view parameters related to the statistical reporting of the block.

  2. Set the Number of entities in queue parameter to On and click OK. This causes the block to have a signal output port for the queue-length signal. The port label is #n.

Plotting the Queue-Length Signal

The model already contains a Signal Scope block for plotting the entity count signal. To add another Signal Scope block for plotting the queue-length signal (enabled above), follow these steps:

  1. In the main SimEvents library window, double-click the SimEvents Sinks icon to open the SimEvents Sinks library.

  2. Drag the Signal Scope block from the library into the model window. The block automatically assumes a unique block name, Signal Scope1, to avoid a conflict with the existing Signal Scope block in the model.

  3. Connect the #n signal output port of the FIFO Queue block to the in signal input port of the Signal Scope1 block by dragging the mouse pointer from one port to the other. The model now looks like the following figure.

Simulating with Different Intergeneration Times

By changing the intergeneration time (that is, the reciprocal of the entity arrival rate) in the Time-Based Entity Generator block, you can see when entities accumulate in the queue. Try this procedure:

  1. Double-click the Time-Based Entity Generator block to open its dialog box, set the Period parameter to 0.85, and click OK. This causes entities to arrive somewhat faster than the Single Server block can process them. As a result, the queue is not always empty.

  2. Save and run the simulation. The plot whose title bar is labeled Signal Scope1 represents the queue length. The figure below explains some of the points on the plot. The vertical range on the plot has been modified to fit the data better.

  3. Reopen the Time-Based Entity Generator block's dialog box and set Period to 0.3.

  4. Run the simulation again. Now the entities arrive much faster than the server can process them. You can make these observations from the plot:

    • Every 0.3 s, the queue length increases because a new entity arrives.

    • Every 1 s, the queue length decreases because the server becomes empty and accepts an entity from the queue.

    • Every 3 s, the queue length increases and then decreases in the same time instant. The plot shows two markers at T = 0, 3, 6, and 9.

  5. Reopen the Time-Based Entity Generator block's dialog box and set Period to 1.1.

  6. Run the simulation again. Now the entities arrive more slowly than the server's service rate, so every entity that arrives at the queue is able to depart in the same time instant. The queue length is never greater than zero for a positive amount of time.

Viewing Waiting Times and Utilization

The queue length is an example of a statistic that quantifies a state at a particular instant. Other statistics, such as average waiting time and server utilization, summarize behavior between T=0 and the current time. To modify the model so that you can view the average waiting time of entities in the queue and server, as well as the proportion of time that the server spends storing an entity, use the following procedure:

  1. Double-click the FIFO Queue block to open its dialog box. Click the Statistics tab, set the Average wait parameter to On, and click OK. This causes the block to have a signal output port for the signal representing the average duration that entities wait in the queue. The port label is w.

  2. Double-click the Single Server block to open its dialog box. Click the Statistics tab, set both the Average wait and Utilization parameters to On, and click OK. This causes the block to have a signal output port labeled w for the signal representing the average duration that entities wait in the server, and a signal output port labeled util for the signal representing the proportion of time that the server spends storing an entity.

  3. Copy the Signal Scope1 block and paste it into the model window.

      Note   If you modified the plot corresponding to the Signal Scope1 block, then one or more parameters in its dialog box might be different from the default values. Copying a block also copies parameter values.

  4. Double-click the new copy to open its dialog box.

  5. Set Plot type to Continuous and click OK. For summary statistics like average waiting time and utilization, a continuous-style plot is more appropriate than a stairstep plot. Note that the Continuous option refers to the appearance of the plot and does not change the signal itself to make it continuous-time.

  6. Copy the Signal Scope2 block that you just modified and paste it into the model window twice. You now have five scope blocks.

    Each copy assumes a unique name. If you want to make the model and plots easier to read, you can click the names underneath each scope block and rename the block to use a descriptive name like Queue Waiting Time, for example.

  7. Connect the util signal output port and the two w signal output ports to the in signal input ports of the unconnected scope blocks by dragging the mouse pointer from port to port. The model now looks like the following figure. Save the model.

  8. Run the simulation with different values of the Period parameter in the Time-Based Entity Generator block, as described in Simulating with Different Intergeneration Times. Look at the plots to see how they change if you set the intergeneration time to 0.3 or 1.1, for example.

Observations from Plots

Information About Race Conditions and Random Times

Other examples modify this one by varying the processing sequence for simultaneous events or by making the intergeneration times and/or service times random. The modified examples are:

  


Free Discrete Event Simulation Technical Kit

Model electronic system architectures, process flows, and logistics as queuing systems or agent-based systems.

Get free kit

Trials Available

Try the latest version of discrete-event simulation products.

Get trial software
 © 1984-2012- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS