Lecture 17 Nov14, 2011 Discrete event simulation • discrete time systems • system changes with time, in discrete steps • uncertainty (modeled by probability) • interested in some aspect of outcome • analytical vs. experimental approach to solution (latter is the “simulation” technique) Discrete Event Simulation •How to generate RV according to a specified distribution? • binomial • geometric • Poisson etc. • Examples of a Discrete Event System: • traffic problem: given the locations of cars and destinations and traffic rules, what is the expected time for a specific car to reach its destination? • repair problem: will be discussed in some detail and we will do a simulation using Matlab. Outline • • • • • What is discrete event simulation? Events Probability – review through examples Probability distributions Some examples What is discrete event simulation? “Simulation is the process of designing a model of a real system and conducting experiments with this model for the purpose either of understanding the behavior of the system or of evaluating various strategies (within the limits imposed by a criterion or set of criteria) for the operation of a system.” -Robert E Shannon 1975 “Simulation is the process of designing a dynamic model of an actual dynamic system for the purpose either of understanding the behavior of the system or of evaluating various strategies (within the limits imposed by a criterion or set of criteria) for the operation of a system.” -Ricki G Ingalls 2002 Definitions from http://staff.unak.is/not/andy/Year%203%2Simulation/Lectures/SIMLec2.pdf What is discrete event simulation? A simulation is a dynamic model that replicates the essential characteristics of a real system. Simulations may be deterministic or stochastic, static or dynamic, continuous or discrete. Discrete event simulation (DEVS) is stochastic, dynamic, and discrete. DEVS is not necessarily spatial – it usually isn’t, but the ideas are applicable to many spatial simulations What is discrete event simulation? • DEVS has been around for decades, and is supported by a large set of supporting tools, programming languages (e.g. Simula, Simulink), conventional practices, etc. • Like other kinds of simulation, offers an alternative, often simple way of solving a problem – simulate a system and observe results, instead of coming up with analytical model. • Many other benefits like repeatability, ability to use multiple parameter sets, cheap compared to physical experiment, etc. (e.g. crash testing) • Usually involves posing a question. The simulation estimates the answer. What is discrete event simulation? Stochastic (probabilistic) uncertainty is modeled as stochastic Dynamic (changes over time) Discrete (successive changes are separated by finite, usually, fixed amounts of time) Time may be modeled in a variety of ways within the simulation. Alternate treatments of time Time divided into equal increments: Unequal increments: Cyclical: (e.g. traffic light or bus schedule) Termination • Simulation may terminate when a terminating condition is met. (e.g., when the queue is empty) • May also be periodic. • Can also be conceptually endless, like weather, terminated at some arbitrary time. Random Variables • A random variable (“X”) is numerical value associated with a random event. • Ex 1: when rolling two dice, the sum of the values on the top faces) • Ex 2: keep tossing a coin until you get a Head. The number of tosses could be the parameter of interest. • In a stochastic Discrete Event System, the value associated with event is a random variable, that is its value has an associated probability. • In Ex 2 above, the value is 2 with probability 0.25 • By repeating the simulation, we can estimate the values of critical parameters. Pseudorandom Number Generators • A stochastic simulation depends on a pseudorandom number generator to generate usable random numbers. • These generators can vary significantly in quality. • For practical purposes, it may be important to check the random number generator you are using to make sure it behaves as expected. Using Matlab’s rand(), we can generate random real numbers between 0 and 1. Exercise 1: Write a program that distributes a deck of 52 cards randomly to 4 people so that each one gets 13 cards. (e.g., hands of Bridge). Expected output format: >>[a,b,c,d] = shuffle(); >> a a = ‘A Hearts’ ‘2 Spades’ ‘8 Hearts’ … Solution idea: • More convenient to map cards to integers 1 to 52 so the problem is to divide 52 cards into four random piles of 13 each. •If we can generate a vector v that represents a random permutation of 1:52, then, we can assign v(1:13) to a, etc. •So the problem further reduces to: generate a random permutation of 1:52. Two possible ideas 1) Start with v = 1:52, then randomly generate two integers j and k in the range 1:52, exchange v(j) and v(k) and repeat the process. Question: How many times should we do this before the deck is well shuffled? Tricky question to answer. 2) Start with v = 1:52 and randomly generate an integer j between 1 and 52 and exchange v(j) with v(52). Next generate an integer j between 1 and 51, and exchange v(j) with v(51) etc. We will next show that (2) works. You are to implement this. Proof that (2) generates a random permutation of 1:52 Suppose a is the final permutation produced by the above algorithm. To show that (2) works, we need to show that the probability that any fixed permutation a = [i1 i2 … i52] is generated by the above method is 1/52! We will not show this completely. But the main idea is the following. Prob( a(n) = i52) is 1/52 since in the first step, all numbers from 1 to n have equal chance of being chosen, and thus i52 has the same chance of 1/n. Similarly, we can see that Prob( a(n) = i52 and a(n-1)= i51) = 1/n(n-1) since in the second step, each of the remaining elements (other than i52) has equal prob of 1/n-1 and the two events are independent. Extending this all the way to n steps, we conclude the claim. Exercise 2: (coupon collector’s problem) When you buy a can of soda, it contains a coupon with a label in 1:n. The labels on the can are random in the sense that, at any point during simulation, the probability that the next can you buy will contain label j is 1/n. The goal is the determine the average number of cans you need to buy before you have collected all the n coupons. Probability distributions • In a Discrete Event Simulation, you need to decide what probability distribution functions best model the events. in most situations, uniform distribution does not work. • Pseudorandom number generators generate numbers in a uniform distribution • One basic trick is to transform that uniform distribution into other distributions. • Some standard probability distributions are convenient to represent mathematically. • They may or may not represent reality, but can be useful simplification. Normal or Gaussian distribution Ubiquitous in statistics Many phenomena follow this distribution When an experiment is repeated, the sum of the outcomes tend to be normally distributed. We will demonstrate this experimentally using a Matlab simulation. Simulating a Probability distribution Sampling values from an observational distribution with a given set of probabilities (“discrete inverse transform method”). Generate a random number U If U < p0 return X1 If U < p0 + p1 return X2 If U < p0 + p1 + p2 return X3 etc. This can be speeded up by sorting p so that the larger intervals are processed first, reducing the number of steps. Poisson distribution • Example of algorithm to sample from a distribution. • X follows a Poisson distribution if: P{ X i} e i i! An algorithm for sampling from a Poisson distribution: 1. 2. 3. 4. Generate a random number U If i=0, p=e-l, F=p If U < F, return I P = l * p / (i + 1), F = F + p, i = i + 1 5. Go to 3 There are similar tricks to sampling from other probability distributions. Some of the distributions (e.g. Poisson, Normal etc.) can be generated using Matlab built in functions. Poisson distribution – Matlab function >>lambda = 2; >>random_sample1 = poissrnd(lambda,1,10) random_sample1 = 1 0 1 2 1 3 4 2 0 0 >>random_sample2 = poissrnd(lambda,[1 10]) random_sample2 = 1 1 1 5 0 3 2 2 3 4 >>random_sample3 = poissrnd(lambda(ones(1,10))) random_sample3 = 3 2 1 1 0 0 4 0 2 0 Normal distribution – Matlab function R = normrnd(mu,sigma,m,n,...) or R = normrnd(mu,sigma,[m,n,...]) generates an m-by-n-by-... array. The mu, sigma parameters can each be scalars or arrays of the same size as R. Examples n1 = normrnd(1:6,1./(1:6)) n1 = 2.1650 2.3134 3.0250 4.0879 4.8607 6.2827 n2 = normrnd(0,1,[1 5]) n2 = 0.0591 1.7971 0.2641 0.8717 -1.4462 n3 = normrnd([1 2 3;4 5 6],0.1,2,3) n3 = 0.9299 1.9361 2.9640 4.1246 5.0577 5.9864 A repair problem n machines are needed to keep an operation. There are s spare machines. The machines in operation fail according to some known distribution (e.g. exponential, Poisson, uniform etc. with a known mean). When a machine fails, it is sent to repair shop and the time to fix is a random variable that follows a known distribution. Question: What is the expected time for the system to crash? System crashes when fewer than n machines are available. n = number of working machines needed S = number of spares available Matlab implementation