1 Simulation Implementation Using high-level languages

Embed Size (px)

Citation preview

  • Slide 1

1 Simulation Implementation Using high-level languages Slide 2 2 Implementation of a Single- Server Queuing System Two Main Entities SERVER: Busy= 0/1 QUEUE: Qsize= # Two Critical Events for customers Arrival Complete Service (Depart) How do these entities interact? Initialization? How are each of the variables affected? How should simulation terminate? Slide 3 3 Snapshot or System Image State of the system at a given time State variables Queue Future Events List (FEL) Slide 4 4 Generating Future Events Bootstrapping: a method for generating an arrival stream on an as you go basis As opposed to generating all events at once a.k.a. on-the-fly Slide 5 5 Generating Future Events Process 1. Generate initial arrival; when it is removed from FEL generate new interarrival time - add to clock for arrival time- place next arrival on FEL 2. When item is placed in service, generate service time - add to clock place completion event on FEL Slide 6 6 DATA Structures Future Events List (FEL) Queue (1 or more) What information is required for each one? What information is not required but might be convenient? When and how are insertions & deletions made? When are various units of information generated (calculated)? Slide 7 7 Queue Standard FIFO Customer identification Time entered queue Arrival time Type of service being requested (if more than one) Slide 8 8 Future Events List Array implementation Each row represents a specific event Customer ID (identification number) Time of occurrence Search for smallest time to get the next event Slide 9 9 Future Events List Linked List ordered by time of occurrence Event Type Time of Occurrence Identification of customer Slide 10 10 Generating Arrivals Initialize at a fixed time or time zero One for each type of arrival Subsequent arrivals are generated as arrival is removed Remove arrival- generate IAT- add to current time (clock) - put on FEL At any time, there should only be one arrival of any given type Slide 11 11 Generating Departures Complete Service Generated when customer enters the service that will cause the departure Not necessarily upon arrival, not if enter queue, only when enter service Enter service (from queue or from arrival) - generate service time - add to current time (clock) - put on FEL Slide 12 12 Generating Events Terminate Event Only one: placed on FEL at initialization Snapshot Event (Status Report) Initialize 1 st one Remove from FEL- add time unit - return to FEL Slide 13 13 What? Me Simulate? Paper by Dr. Halverson Slide 14 14 Generation of Events Initialization of FEL One arrival (of each type) Snapshot Stop event Generation of Arrival When removed from FEL, generate next arrival Slide 15 15 MAIN Initialize FEL, statistical variables, clock Remove next-event from FEL While not stop-event Clock = next-event.time Case next-event of Arrival: produce next arrival call ARRIVE Departure: call DEPART Snapshop: call SNAPSHOT Remove next-event from FEL Stop-simulation: call STATS; call OUTPUT Slide 16 16 ARRIVE If server_status = busy Then call ENTER-QUEUE Else call ENTER-SERVICE Slide 17 17 DEPART If queue = empty Then server_status= free Else call REMOVE-FROM-QUEUE Slide 18 18 ENTER-SERVICE server_status = busy Generate departure event Update service stats Slide 19 19 ENTER-QUEUE Add customer to queue Update queue statistics Slide 20 20 REMOVE-FROM-QUEUE Update queue and statistics Call ENTER-SERVICE Slide 21 21 STATS Compute final averages, totals, etc. IAT, Service time, Utilization Queue length, max, min, average Number arrivals, departures Wait time, Time in system Slide 22 SNAPSHOT Generate next Snapshot event, place in FEL Print State variables Print Queue Print FEL 22 Slide 23 23 OUTPUT Print results Slide 24 PROJECT #1 Must follow the guidelines presented in class for the form of your program. Must use object oriented approach Print out of Code due in 1 week 24