Presentation is loading. Please wait.

Presentation is loading. Please wait.

Dept. Computer Science, Tianjin Uni. 系统仿真 System Simulation 2008.

Similar presentations


Presentation on theme: "Dept. Computer Science, Tianjin Uni. 系统仿真 System Simulation 2008."— Presentation transcript:

1 Dept. Computer Science, Tianjin Uni. 系统仿真 System Simulation 2008

2 What’s simulation A simulation is The imitation of the operation of a real-world process or system over time. A technique, whereby a model of a system, is run in compressed time, to perform experimentation for analyzing system performance. Whether done by hand or on a computer, simulation involves the generation of an artificial history of a system, and the observation of that artificial history to draw inferences concerning the operating characteristics of the real system.

3 Discrete system simulation

4 Simulation Category General-purpose programming languages FORTRAN, C, C++ “ build your own, use someone else ’ s “ Simulation programming languages ns-2, QualNet/GloMoSim, Opnet, RTSS GPSS/H, SIMAN V Simulation technology Time-driven simulation  They work on a strictly unit-time basis  automatically scanning thousands of fixed time units to discover the next significant change Event-driven simulation  automatically skip to the next known event  saving execute-time

5 Use Queuing models to Describe the behavior of queuing systems Evaluate system performance Model Queuing System Queuing System Queue Server Customers

6 Time Arrival event Delay Begin service Arrival event Delay Activity End service Customer n+1 Customer n Interarrival

7 example Single-server queue simulation Mean Interarrival time 4.5 Mean Service Time 3.2 Standard Deviation of Service Times 0.6 Number of Customers served 1000 Server Utilization 0.68362 Maximum Line Length 9 Average Response Time 6.739 Proportion who Spend Four Minutes or More in System 0.663 Simulation RunLength 4677.74 Number of Departures 1000

8 RTSS Simulator -- A model contains two parts First, a set of processors The simulation software stores the processor parameters, such as service rate etc., in a set of arrays – “the processor table”. Each processor has his own queue to store waiting jobs. Second, the characterization of the workload (i.e. jobs) The job parameters, such as job arriving time, job length of a job etc., are stored in a set of arrays - ”the job table”. The job parameters can be either deterministic or probabilistic.

9 RTSS Simulator

10 events All events can be divided into three types Type 1 marks the arrival of a job in the system Type 2 corresponds to a job’s entering a server Type 3 corresponds to a job’s exiting from a server The event service routines are the arrival routine, the incoming routine and the outgoing routine There is an event list to drive the simulation process Each event has 3 elements in the event list One element is an event identifier which is used for identifying the event type. The second element is the event time The third element is a pointer to the job table

11 control routine The control routine is the heart of the simulator, its loop is executed once for each event handled At the start of each loop, the control routine selects the earliest event in the event list calls the corresponding event service routine advances the simulation clock to the event time, removes the event from the event list The event service routine performs the required processing for the job determines its next event, calculates the event time and inserts the next event in the event list returns control to the control routine

12 arrival routine the arrival routine corresponds to event type 1, and does the following things: 1. The next event (type 2) for the arriving job is inserted in the event list. 2. If the arriving job belongs to a job sequence and it is not the last job of the sequence, a new job of the sequence is generated and inserted in the job table. 3. The event (type 1) for the new job is inserted in the event list. Random-variant generators Routines to generate samples from desired probability distributions

13 incoming routine The incoming routine corresponds to event type 2, and simulates a job entering a processor; it does the following things: 1. If the processor is busy, the input job enters a processor queue. 2. If the processor is not busy, it serves the input job. The next event (type 3) to occur for the input job is inserted in the event list. 3. The states of the job and processor are updated Random-variant generators Routines to generate samples from desired probability distributions

14 outgoing routine The outgoing routine corresponds to event type 3, and simulates a job exiting from a processor; it does the following things: 1. The processor is released by the output job, 2. Then, the queue of the released processor is examined; if there are jobs waiting, the one which has the highest priority is selected from the queue and scheduled to be served

15 report routine A group of variables describes the simulator state when the simulation clock is advanced by the occurrence of a series of events. The report routine records these variables, so that analysis and statistic programs give the final simulation result.

16 Simulation in C++ Main program Provides overall control of the event- scheduling algorithm Clock  A variable defining simulated time Initialization subroutine A routine to define the system state at time 0 Min-time event subroutine A routine that identifies the imminent event, FEL

17 Simulation in C++ Event subroutines For each event type, a subroutine to update system state (and cumulative statistics) when that event occurs Random-variant generators Routines to generate samples from desired probability distributions Report generator A routine that computers summary statistics from cumulative statistics and prints a report at the end of the simulation

18

19

20

21

22

23

24 example Single-server queue simulation

25

26

27 Definitions tab. 4.6, p. 108 Variables System state  QueueLength  NumberInService Entity attributes and sets  Customers

28 Variables(cont’d) Future event list  FutureEventList Activity duration  Service time

29 Variables(cont’d) Input Parameters  MeanInterarrivalTime  MeanServiceTime  SIGMA, Standard deviation of service time  TotalCustomers, stopping criteria

30 Variables(cont’d) Simulation variables  Clock Statistical Accumulators  LastEventTime  TotalBusy  MaxQueueLength

31 Statistical Accumulators  SumResponseTime  NumberOfDepartures  LongService, Number of customers who spend 4 or more minutes

32 Variables(cont’d) Summary statistics RHO = BusyTime/Clock AVGR : average response time PC4 : Proportion of customers who spend 4 or more minutes at the checkout counter

33 Functions exponential ( mu ) normal ( xmu, SIGMA )

34 Subroutines Initialization ProcessArrival ProcessDeparture ReportGeneration

35 Class Event{ Friend bool operator < (const Event& e1, const Event& e2); Friend bool operator == (const Event& e1, const Event& e2); public: Event(){}; enum EvtType { arrival, departure };

36 Event ( EvtType type, double etime) : _type(type), _etime(etime){}; EvtType get_type() { return _type;} double get_time() { return _etime;} protected: EvtType _type; double _etime; };

37 …… priority_queue FutureEventList Queue Customers

38 Main( int argc, char* argv[ ] ){ MeanInterArrivalTime = 4.5 …… Long seed = atoi ( argv[1] ); SetSeed(seed); Initialization();

39 While ( NumberOfDeparture < TotalCustomers ){ Event evt = FutureEventList.top(); FutureEventList.pop(); Clock = evt.get_time(); If ( evt.get_type() == Event::arrival ) ProcessArrival ( evt ); Else ProcessDeparture ( evt ); } ReportGeneration();}

40 Void Initialization (){ Clock = 0; QueueLength = 0; …… Event evt( Event::arrival, exponential ( MeanInterArrivalTime ) ); FutureEventList.push ( evt ); }

41 Void ProcessArrival( Event evt ){ Customer.push ( evt ); QueueLength ++; If ( NumberInService == 0 ) ScheduleDeparture (); Else TotalBusy += ( Clock – LastEventTime ); If ( MaxQueueLength < QueueLength ) MaxQueueLength = QueueLength;

42 Event next_arrival ( Event::arrival, Clock + exponential ( MeanInterArrivalTime ) ); FutureEventList.push ( next_arrival ); LastEventTime = Clock; }

43 Void scheduleDeparture () { double ServiceTime; while( ( ServiceTime = normal ( MeanServiceTime, SIGMA )) < 0 ); Event depart ( Event::departure, Clock + ServiceTime ); FutureEventList.push ( depart ); NumberInservice = 1; QueueLength --; }

44 Void ProcessDeparture ( Evevt evt) { Event finished = Customers.front (); Customers.pop (); if ( QueueLength ) ScheduleDeparture (); else NumberInService = 0;

45 double response = Clock – finished.get_time (); SumResponseTime + = response; …… NumberOfDepartures ++; LastEventTime = Clock; }

46 Void ReportGeneration (){ double RHO = TotalBusy/Clock; double AVGR = SumResponseTime/ TotalCustomers; double PC4 = ((double)LongService)/ TotalCustomers; …… }

47 Mean Interarrival time 4.5 Mean Service Time 3.2 Standard Deviation of Service Times 0.6 Number of Customers served 1000 Server Utilization 0.68362 Maximum Line Length 9 Average Response Time 6.739

48 Proportion who Spend Four Minutes or More in System 0.663 Simulation RunLength 4677.74 Number of Departures 1000


Download ppt "Dept. Computer Science, Tianjin Uni. 系统仿真 System Simulation 2008."

Similar presentations


Ads by Google