מצגת של PowerPoint - Tel Aviv University

Download Report

Transcript מצגת של PowerPoint - Tel Aviv University

Simulation
Based on
Law & Kelton, Simulation Modeling &
Analysis, McGraw-Hill
Why Simulation?
• Test design when cannot analyze
– System too complex
– Can analyze only for certain cases (Poisson
arrivals, very large N, etc.)
• Verify analysis
• Fast production of results
Simulation types
• Static vs. dynamic
• Deterministic vs. stochastic
• Continuous vs. discrete
– Simulation model  system model
Discrete Event System
• Discrete system
– The system state can change only in a countable
number of points in time!
– Event = an instantaneous change in state.
• Example: a queueing system
– System state: Number of customer
– At each time number of customer can only
change by an integer
Continuous Simulation
• Simulating the flight of a rocket in the air
– System state: rocket position and weight
– State changes continuously in time (according
to a partial differential equation)
Components of a discrete-event
simulation model
• System state: the collection of state variables
necessary to describe the system at a particular
time.
• Simulation clock: a variable giving the current
value of simulated time
• Event list: a list containing the next time when
each type of event will occur.
• Statistical counters: variables used for storing
statistical information about system performance
– How many moments?
Components of a discrete-event
simulation model (2)
• Initialization routine: a subprogram to initialize
the simulation model at time 0.
• Timing routine: a subprogram that determines the
next event from the event list and then advances
the simulation clock to the time when the event is
to occur.
• Event routine: A subprogram that updates the
system state when a particular type of event occurs
(one routine per event).
Components of a discrete-event
simulation model (3)
• Library routine: A set of subprograms used
to generate random observations from
probability distributions that were
determined as part of the simulation model.
• Report generator: A subprogram that
computes estimates (from the statistical
counter) of the desired performance
measures when simulation ends.
Components of a discrete-event
simulation model (4)
• Main program: a subprogram that invokes
the timing routine to determine the next
event and then transfers control to the
corresponding event routine to update the
system state. May also check for
termination and invoke the report generator.
Flow control
Init
Determine
next event
Event 1
Event n
Done?
report
no
Example
a single server queuing system
• System to be simulated
–
–
–
–
Ai Interarrival times are I.I.D.
Si Service time are I.I.D.
FIFO service
Work preserving
• Initial state
– Empty and idle
– First arrival after Ai time units from time 0
• Termination after n customers left queue.
Performance measures
• d(n) = expected average delay in queue.
– Customer point of view
• q(n) = expected time-average number of
customers in queue.
– System point of view
– Note: average over time which is continuous!!
• u(n) = proportion of time server is busy
No. of customers in queue.
Q(t)
4
3
2
1
0
t
No. of customers in queue.
Q(t)
4
3
2
1
0
t
Performance measures (2)
• Averages are not always enough.
• Register max/min values.
• Register the entire “pdf”
– histograms
Initialization
• Set simulation time to 0.
• Set initial state:
– Server idle
– Queue empty
– Last event time
• Init event list
– Generate 1st arrival
• Zero stat counters
– Total delay and number delayed
– Area under Q(t) and B(t).
st
1
Event: customer arrival
• After init finished the arrival event is selected and
time is advanced to this event
• Change server from idle to busy
• Add 0 to total delay, increment No of delayed.
• Generate two events:
– This customer departure
– Next arrival (generate as you go)
• Add 0 to the area under Q(t).
• Add 0 to the area under B(t).
nd
2
Event: customer arrival
• Arrival event is selected and time is advanced to
this event
• Server busy => put customer in queue with arrival
time
• Set “No. in queue” to 1.
• Generate next-arrival events (don’t mess with dep.)
• Add 0 to the area under Q(t).
• Add (t2-t1) to the area under B(t).
Remarks
• While handling an event time is standing
• But, order of operation is still important:
– First update area under Q(t) then update “No. in
queue”
• Two events at the same time
– Order may change simulation result!
Determining Events
• In complex systems events sequence may
not be trivial.
• Use of event graph to aim us is designing
the events
Event Graph
• States are bulbs, connected with arrows
• Bold arrow: event may occur after nonzero
time.
• Thin arrow: event may occur immediately.
arrival
departure
Alternative Event Graph
arrival
Enter
service
departure
• This design is correct as well!
• One more event => more complexity
• Simplification rule:
– If an event node has incoming arcs that are all thin and
smooth, it can be eliminated.
• A strongly connected component that has no
incoming arcs from other nodes must be
initialized.
Take care
• GIGO = garbage in garbage out
– Realistic scenarios (arrival process, service time)
– Full cover of system behavior
• Statistical confidence
• What to model
– Not enough details => hurts accuracy
– Too many details => slows simulation
• Attempt to verify correctness
– Simulate cases you can analyze
Random Generator
• Make sure you can regenerate your random
sequence, or debugging is hell.
• For long simulations, use 32 bit pseudo
random generator. 16 bit is too short!
Statistical Confidence
• Better a few short runs than one long one.
• However, make sure run time is long
enough to make end conditions negligible.
• Given a set of IID random variables we can
calculate the confidence interval.
Confidence Interval
• X1, X2, …Xn are IID random variables with
finite mean  and finite variance 2>0.
Z n  ( X (n)   )
 /n
2
Fn(z)=P(Zn z) is Dist. Func. of Zn
• By central limit theorem Fn(z)(z) (the
std. Normal r.v.)
• For sufficiently large n, approx. 100(1-)
percent confidence interval for  is given by
X (n )  z1 / 2 S (n ) / n
2
1
0.9
0.8
0.7
0.6
0.5
Area:
0.4
1-
0.3
0.2
0.1
0
-5
-3
 z1 / 2
0
z1 / 2
3
5
Confidence Interval for Small n
• For small number of observations, we need
to correct the coefficient of the interval
width
X (n )  tn 1,1 / 2 S (n ) / n
2
• The smaller n the larger tn-1,1-/2 is.
• tn-1,1-/2 is taken from a table.
Confidence Interval
• In general all plots has to have a confidence
interval on every mark
• Exception: high confidence (mark size)
A good pseudo random generator
float myrand()
{
b32 = (314159269*b32 + 453860245);
if (b32<0)
b32 = -b32;
return(0.00000000046566128730 * b32);
}
Generating Non-Uniform
Distributions
• F(x), the PDF, of any distribution is a
function to [0,1], => use the inverse
Since U is U(0,1) and
transform
0 F(x) 1,
– Generate U~U(0,1)
P(U y) = y
– Return X=F-1(U)
• P(Xx) = P(F-1(U)  x)=P(U F(x))=F(x)
Generating the Exponential
distribution
1  e  x / 
F ( x)  
 0
if x  0
otherwise
F 1 (u )    ln(1  u )
Note we can use - ln(u).
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
20
40
60
80
100
120
140
160
180
200
Simulating complex systems
• Systems often have many identical components
– A queueing system with multiple queues
– A switch with multiple ports running a distributed
algorithm
• Must keep state for each component
– Array of structures in C,
– multiple instances of the basic object (C++)
• Keep the connectivity (when applicable)
Wet Exercise No. 1
Assume a 100MHz output port. The port is fed from four input ports each
with its own queue. For this exercise we neglect all other traffic.
Packets arrive at the input ports with inter packet space that is Exponentially
distributed with parameter  (such that the total load is 20:20:120
percent). Packet length is distributed according to Internet mix.
Scheduling between Qs: smooth deficit round robin, quota=3000.
Every 250mS we send two back-to-back packets to measure the link capacity
e.g.,
according
to
the
method
in
http://www.cc.gatech.edu/fac/Constantinos.Dovrolis/Papers/ton_dispersion.pdf
Run each simulation for 25 Sec.
•
Hand-ins:
–
–
–
Code transcript
Histogram of the one-way inter packet delay for the packet pairs.
Plot a graph of the capacity estimation as a function of the load and
measurement packet size (use 3-5 sizes).
Remarks
• Code has to work anywhere (not just at
home), especially in TAU.
• Make it portable.
• Oral exams through the semester.
• Send code to [email protected]
– Specify development env. (Unix/Visual C/..)
– One tar/zip file with makefile etc.
– Header: “EX1 PCN: stu-name”