1 / 48

系统仿真 System Simulation

系统仿真 System Simulation. 2008. 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.

ata
Télécharger la présentation

系统仿真 System Simulation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 系统仿真System Simulation 2008

  2. What’s simulation • Asimulation 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. Customers Server Queue Queuing System Model Queuing System • Use Queuing models to • Describe the behavior of queuing systems • Evaluate system performance

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

  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. example • Single-server queue simulation

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

  20. Variables(cont’d) • Future event list • FutureEventList • Activity duration • Service time

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

  22. Variables(cont’d) • Simulation variables • Clock • Statistical Accumulators • LastEventTime • TotalBusy • MaxQueueLength

  23. Statistical Accumulators • SumResponseTime • NumberOfDepartures • LongService, Number of customers who spend 4 or more minutes

  24. 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

  25. Functions • exponential ( mu ) • normal ( xmu, SIGMA )

  26. Subroutines • Initialization • ProcessArrival • ProcessDeparture • ReportGeneration

  27. 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 };

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

  29. …… priority_queue<Event> FutureEventList Queue<Event> Customers

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

  31. 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();}

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

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

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

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

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

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

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

  39. 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

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

More Related