1. We use models in an attempt to gain understanding and insights about some aspect of the real world. Attempts to model reality assume a priori the existence.

Similar presentations

Presentation on theme: "1. We use models in an attempt to gain understanding and insights about some aspect of the real world. Attempts to model reality assume a priori the existence."— Presentation transcript:

2
We use models in an attempt to gain understanding and insights about some aspect of the real world. Attempts to model reality assume a priori the existence of some type of “ground truth,” which impartial and omniscient observers would agree upon. 2

3
 We define a system to be a set of elements which interact or interrelate in some fashion.  The elements that make up the system are often referred to as entities.  A model is a system which we use as a surrogate for another system.  A computer simulation is a model which happens to be a computer program. 3

4
 In stage 1 of the modeling process we should try to identify what is meant by the system of interest.  In stage 2, we try to rigorously describe the behaviors and interactions of all of the entities which comprise the system. 4

6
 Feedback enters the modeling process in the form of verification and validation.  Verification constitutes a feedback loop between the computer model and the formal model. “does my computer program do what I meant it to do?”  Validation constitutes a feedback loop between the computer model and reality. “does my computer program mimic reality adequately?” 6

7
Using this approach you are more likely to achieve a functioning model.  Start small  Improve incrementally  Test frequently  Do not be afraid to backtrack or simplify 7

8
 There are many classifications of systems available. The Winter Simulation Conference tends to focus on Discrete Event Systems. These are systems where the state changes occur at a discrete set of points along the time axis, rather than continuously. Discrete Event Simulation (DES) models can be built with any of several world views.  Schruben (1983) created event graph notation so that simulation modelers could focus on the model-specific logic of the system to be studied. 8

9
 Another type of error that modelers can make is a concept, called a Type III error by Mitroff and Featheringham (1974).  Simulation languages are an example of what computer scientists call Domain Specific Languages (DSLs). The alternative to DSLs is General-Purpose Programming Languages (GPPLs). 9

10
 Event graphs are a pictorial representation of event-based discrete event models.  Each event in the system is represented by a vertex in the graph. State transitions can be specified below the vertex or separately, labeled by the vertex’s label. Scheduling relationships between events are depicted using directed edges with attributes annotated on the edges to indicate the delay (if any) between the events and the conditions under which the scheduling should occur. 10

11
A and B are events, t is a delay (which coul be constant, random, or some function of the state), and c is a boolean function of the state. 11

13
To implement the model as a computer program, we need three things:  A method for each event in the event graph model that updates the model state as specified, schedules further events as appropriate, and then terminates.  An executive loop that determines the order in which event methods should be invoked.  A schedule capability that provides the mechanism by which event methods notify the executive loop about events that are candidates for invocation. 13

14
 The simulation program needs to store notices of pending events in a container of some sort. (Let P be the pending events set)  If P is implemented as a priority queue, clock is the simulation clock, and current is an event notice reference with associated method and time attributes, the following block of pseudo-code describes the structural form of the executive loop. 14

15
The Model Interface Every SIMpleKit model must implement the Model interface. In Java an interface mandates class elements that must be present, but does not provide any implementation for those elements. In other words, a SIMpleKit Model must have a method initialize() which takes no arguments and returns nothing. 15

16
The EventNotice Class The EventNotice class is a helper class for storing and retrieving event notices. It should never be used directly by users, so all methods and constructors are declared protected, meaning they are not available outside of the SIMpleKit package hierarchy. Event notices are immutable. 16

17
The Simulation Class Class Simulation provides the core functionality of SIMpleKit. It maintains a priority queue of EventNotice’s called eventList, a reference of type Model to your model object called model, and the current simulated time in a variable called modelTime. 17

18
 We demonstrate usage of SIMpleKit by implementing an M/M/k queueing system.  SIMpleKit does not provide a library of distributions—techniques for random variate generation are widely available in the simulation literature. 18

19
 Execution of the model is handled via a method called run(),  EventNotice variable to keep track of the current event,  initialize() method whose existence is guaranteed by the Model interface proceeds with an execution loop which determines the next event to be performed by polling the event list, sets the simulation clock to the time of that event, and invokes the event method. 19

20
Event Methods Each event has a corresponding event method in the model class. The event graph provides a roadmap of how to write the event methods. First, perform all state transitions. Then schedule events corresponding to each departing edge if the edge conditions are true, with suitable delays. 20

21
 The halt event invokes Simulation.halt(), which empties the event list to guarantee termination of the model as described earlier. 21

22
The other event methods are sufficiently straightforward that we present the implementations without further comment other than to note that ++ and -- are Java operators for increment and decrement, respectively. 22

23
Running the Model The model has to be started somehow. This is accomplished by creating a Java “main” method which creates an instance of the model and passes it to the Simulation class to be run. 23

24
 SIMpleKit provides a simple and transparent mechanism to illustrate how discrete event models can be implemented. Event Graphs map very directly into SIMpleKit programs, and run very efficiently.  SIMpleKit has been used to implement some quite sophisticated models, including an analysis of joint problem solving in edge vs. hierarchical organizations and an implementation of Dijkstra’s algorithm for determining shortest paths in a graph. 24