1ISyE 6644 — Fall 2021 — Projects! Timeline: • M 9/20/21: Suggested topics and ground rules posted. • F 10/1/21: Topics and teams due (handled as an assignment in Canvas). • F 10/22/21: Progress report due (handled as an assignment in Canvas). • Tu 12/7/21, 11:59 pm: Turn in project! Some Ground Rules: • Pick one project that you find interesting. The projects are all intended to be a little open-ended, but do not pick a project that will kill you time-wise! • You are allowed to substitute any other interesting topic of your own choice as long as you run it by us first (scroll to the end for some details). • You are allowed to change your project later on as long as you run it by us first. • You are allowed to work in groups that are reasonably sized, though you will have to form the groups on your own. (Suggested group sizes are given in the text of each problem.) • The topics range from computer-intensive to more statistically oriented. When computer work is necessary, you are allowed to use whatever computer languages you’d like, e.g., R, Minitab, Matlab, Python, even Excel. • Good luck, and have fun! Some Suggested Projects for ISyE 6644: Applications-Oriented Problems 1. (2 group members) The African Tanker Problem. If you like tricky little problems, then this is the one for you! This famous exercise concerns the simulation of a somewhat complicated port, and is described in Law (2015) (Chapter 2 exercises). You should model this and conduct a little more output analysis than is asked for in the text of the problem. 22. (2 members) Go to some intersections and model a couple of traffic lights. Collect some real data. Try to answer as many interesting questions as you can think of. For instance, what would the effect of synchronization be? Or, how do cell phones affect driver behavior? Justify everything you conclude by conducting careful output analysis. This could be a great project! 3. (2–3 members) Pandemic Flu Spread. Consider a classroom of 21 elementary school kids. 20 of the kids are healthy (and susceptible to flu) on Day 1. Tommy (the 21st kid) walks in with the flu and starts interacting with his potential victims. To keep things simple, let’s suppose that Tommy comes to school every day (whether or not he’s sick) and will be infectious for 3 days. Thus, there are 3 chances for Tommy to infect the other kids — Days 1, 2, and 3. Suppose that the probability that he infects any individual susceptible kid on any of the three days is p = 0.02; and suppose that all kids and days are independent (so that you have i.i.d. Bern(p) trials). If a kid gets infected by Tommy, he will then become infectious for 3 days as well, starting on the next day. (a) What is the distribution of the number of kids that Tommy infects on Day 1? (b) What is the expected number of kids that Tommy infects on Day 1? (c) What is the expected number of kids that are infected by Day 2 (you can count Tommy if you want)? (d) Simulate the number of kids that are infected on Days 1,2,. . . . Do this many times. What are the (estimated) expected numbers of kids that are infected by Day i, i = 1, 2, . . .? Produce a histogram detailing how long the “epidemic” will last. 4. (2 members) Model, simulate, and analyze a reasonably large-scale real-life conveyor system. 5. (3 members) Go to your favorite non-trivial elevator system and model it. This is not as easy as you might anticipate, so do your best. In particular, collect some real data, and answer as many interesting questions as you can think of. For instance, what rules govern elevator movement? How long do people typically have to wait? Can you think of elevator movement rules that might reduce the average waiting times? Etc., etc. Justify everything you conclude by conducting careful simulations and output analysis. This could be a fun project! 6. (2 members) Model and simulate a reasonably large-scale job shop. This might be a good project if you happen to have a real-life manufacturing job. Let’s see how creative you can be. 37. (2 members) Model, simulate, and analyze a reasonably large-scale real-life ware- house. Let’s see how creative you can be. 8. (2–4 members) Run a simulation having direct applicability for your job. Some people in the class have access to interesting “real-world” problems, either through their jobs, or perhaps as an assignment in another course here at Georgia Tech. If you’d like to do a full-scale simulation analysis on a particular nontrivial simulation (no M/M/1 queues, please!), then this project may be the one for you. I would expect some input analysis (i.e., choosing input distributions, planning run-length, etc.), some modeling and programming, and some output analysis (e.g., confidence intervals). This would be a good project for a group with members having diverse interests. Language- and Modeling-Oriented Problems 9. (3 members) Learn and implement the self-contained simulation language SIMLIB from Chapter 2 of the Law (2015) text. Although SIMLIB is not the most-efficient simulation language around, it will really teach you how an actual simulation lan- guage is written. In your project write-up, give your comments and opinions on the language, provide an easy user’s guide, and demonstrate how SIMLIB works on one or two example models. Note: I’ll allow you to replicate the functionality of SIMLIB using any language such as C++, Python, etc. 10. (2 members) A different modeling paradigm. Read and comment on Lee Schruben’s fundamental paper, “Simulation Modeling with Event Graphs,” Communications of the ACM , Volume 26, pp. 957–963 (1983). Then do the same for the Sargent (1988) and Som and Sargent (1989) articles cited in the References section of the Law (2015) text. (The latter two papers extend and refine the event graphs technique, and they provide lots of nice examples.) 11. (2 members) Learn another higher-level simulation language like AutoMod, Pro- Model, AnyLogic, or any of the available Python- or Java-based freeware systems. In your project write-up, give your comments and opinions on the language, pro- vide an easy user’s guide, and demonstrate how the language works on one or two example models. Programming-Oriented Problems 12. (1 member) Let’s gamble! Implement a blackjack simulation; in fact, simulate a few reasonable strategies. Statistically analyze these strategies by playing lots of 4independent blackjack games. Then determine which choice maximizes your profit. (Assume that the House plays by the usual rules.) Include all code and commentary. Be creative! 13. (1–2 members) Let’s gamble some more! Same thing as in Problem 12, except for solitaire. (This isn’t easy, but it’s fun.) 14. (1–2 members) Another game. There are two players, A and B. At the beginning of the game, each starts with 4 coins, and there are 2 coins in the pot. A goes first, then B, then A,. . . . During a particular player’s turn, the player tosses a 6-sided die. If the player rolls a: • 1, then the player does nothing. • 2: then the player takes all coins in the pot. • 3: then the player takes half of the coins in the pot (rounded down). • 4,5,6: then the player puts a coin in the pot. A player loses (and the game is over) if they are unable to perform the task (i.e., if they have 0 coins and need to place one in the pot). We define a cycle as A and then B completing their turns. The exception is if a player goes out; that is the final cycle (but it still counts as the last cycle). We are trying to determine the expected number (and maybe even the distribution) of cycles the game will last for. I’m guessing that you can use “first-step” analysis to get the expected value. Simulation seems the easiest thing to do to get the entire distribution. 15. (2–3 members) Pandemic Flu Spread. Project 3 considered a (trivial) simulation of pandemic flu spread in a classroom. If you feel a little more adventuresome, I’d like you to think about a bigger-and-better simulation involving a larger population. Here’s a potential scenario (there are many other interesting ones — feel free to be imaginative): • Some infectious people enter a population of susceptibles, and some of the susceptibles become infected. • There is a short period of a couple of days before a newly-infected person in turn becomes infectious. • When a person recovers (or dies), the person is not again susceptible. • Infectiousness or death can be mitigated by masking, social distancing, etc. • Infectiousness or death can be mitigated by vaccination. Vaccines can be delivered in one or two doses. But there could be supply chain issues. 5• Even if a vaccine requires two doses, the vaccine nevertheless provides partial immunization after even only one dose. Might you immediately give everyone only one dose instead of two, and hope that the supply chain catches up so that you can “eventually” give everyone two doses? To determine whether a particular strategy is any good, you probably ought to consider the number of people who eventually get infected (or die), the length of the epidemic, etc. 16. (1 member) Implement the Tausworthe pseudo-random number generator (as de- scribed in Module 6 of our notes). Perform a decent number of statistical tests on the generator to see that it gives PRN’s that are approximately i.i.d. Uniform(0,1). Plot adjacent PRN’s (Ui, Ui+1), i = 1, 2, . . ., on the unit square to see if there are any patterns. Then, just for the heck of it, generate a few Nor(0,1) deviates (any way you want) using Unif(0,1)’s from your Tausworthe generator. 17. (1–2 members) Test some Unif(0,1) random number generators. There are a lot of uniform random number generators around. How do we know if a particular generator is doing a good job? In this project, you should test various generators to see if they are actually producing numbers that are approximately independent, identically distributed uniforms. The tests you should use are formal hypothesis tests such as χ2 goodness-of-fit tests, the von Neumann test for independence, runs tests, etc. You should also comment on the run-time efficiency of the generators; i.e., which generators yield the most random numbers per unit time? This could be a really good project for a group interested in everything from statistics to graphical analysis of data. 18. (1–2 members) Make me a nice library of random variate generation routines. You can use your favorite high-level language like C++, Java, Python, Matlab, or even Excel. Include in your library routines for generating random variates from all of the usual discrete and continuous distributions, e.g., Bern(p), Geom(p), Exp(λ), Normal(µ, σ2), Gamma(α, β), Weibull(α, β), etc., etc. (Just one routine per distribution is fine.) Include in your write-up an easy user’s guide, complete source code, and some appropriate examples. 19. (2 members) Make me a nice library of routines for fitting input distributions. The input to a fitting routine for a particular distribution should be a bunch of observations; the output should be the maximum likelihood estimate. You can use your favorite high-level language like C++, Java, Python, Matlab, or even Excel. Include in your library maximum likelihood estimation routines for fitting all of the usual discrete and continuous distributions, e.g., Bern(p), Geom(p), Exp(λ), 6Normal(µ, σ2), Gamma(α, β), Weibull(α, β), etc., etc. Beware! The Weibull takes a little work (so does the gamma, for that matter). Luckily, everything is outlined very clearly in my notes and/or Law (2015). Include in your write-up an easy user’s guide, complete source code, and some appropriate examples. The examples should be along the following illustrative lines: Generate some example data; attempt to fit the data to various distributions; conduct χ2 goodness-of-fit tests to show how well the fits do. For instance, if you generate some example Weibull data, a Weibull fit ought to do better than an exponential fit. 20. (2 members) Output analysis. Implement the method of batch means in your fa- vorite high-level language like C++, Java, Python, Matlab, etc. The input to your program should be a bunch of observations, the number of batches you want, and a confidence level 1−α; the output should be a 100(1−α)% confidence interval for the steady-state expected value of the observations. Include in your write-up an easy user’s guide, complete source code, and some appropriate examples. In par- ticular, generate some waiting time data from an M/M/1 queueing system; then report the batch means confidence interval for the steady-state expected waiting time, wQ. Note that you can actually look up wQ for the M/M/1 — so you can tell whether or not your confidence interval covers wQ. Does it? Now do 100 in- dependent runs to obtain 100 confidence intervals. How often do your confidence intervals cover wQ? What is the average length of your confidence intervals? What happens if you vary the number of batches (while keeping the run length constant). Be creative! Theory-Oriented Problems 21. (2 members) Work on generalizations of the “Birthday Problem” that we did in class. E.g., what’s the probability that at least three kids in the room will have the same birthday? What happens when the birth patterns change a bit over the year (e.g., more babies born in the spring)? 22. (2 members) Prepare a tutorial on Monte Carlo integration techniques and give several examples. 23. (2 members) Find the exact distributions of the number of runs from a sample U1, U2, . . . , Un of n i.i.d. Unif(0,1) random numbers. This is easy to do for n = 3, but then it starts getting nasty, as we discovered in one of our homeworks. Once you get to a certain point, it would be OK for you to use large simulation runs to approximate the distributions. If you have a little extra time, there are different kinds of runs you can look at: runs up-and-down (like we did in class), runs above- and-below-the-mean, etc. 724. (2 members) Explore the efficiency of different random variate generation tech- niques. Some examples (there are many): • Generate a Bin(n, p) from an Inverse Transform c.d.f. table or by adding up Bern(p)’s? • Generate a Geom(p) via the simple Inverse Transform equation or by sample Bern(p)’s until you get a success? • Generate a Pois(λ) via a table or Acceptance-Rejection? • What’s the fastest way to generate a Nor(0,1)? • Etc., etc., etc.! 25. (1–2 members) Read and comment on Bruce Schmeiser’s fundamental output anal- ysis paper, “Batch Size Effects in the Analysis of Simulation Output,” Operations Research, Volume 30, 556–568 (1982). Bruce’s paper analytically studies the be- havior of the batch means method. Now refer to Chapter 9 of Law (2015), and in particular, the relevant tables there that deal with the empirical behavior of the batch means method for output analysis. Compare Bruce’s results with Law’s. 26. (1–2 members) Another output analysis problem (a bit mathematical). Take a look at and comment on the following paper, which calculates the exact expected values of certain estimators for the mean of a steady-state simulation output pro- cess: Aktaran, et al. (2007), “Exact Expected Values of Variance Estimators for Simulation,” Naval Research Logistics, Volume 54, 397–410. 27. (2 members) Prepare a tutorial on variance reduction methods. You should com- ment on at least the following techniques from Module 10 of our notes: common random numbers, antithetic variates, and control variates. You can also refer to Law (2015) for additional techniques if you have sufficient time. Cook up a few (possibly fake) examples involving Monte Carlo integration or other applications where you might be able to use some of these techniques. 28. (3 members) Ranking and selection procedures are designed to help you determine which one of a number of competitors is the “best.” For example, we might be interested in selecting that one of k competing queueing systems having the smallest expected time-in-system. If you are interested in such problems, read the second half of Module 10 from our notes and/or Chapter 10 of Law (2015). Give me a nice tutorial on some of the procedures described in those references. Then implement at least one of those procedures in your favorite high-level language like C++, Java, Python, Matlab, etc. Include in your write-up an easy user’s guide, complete source code, and appropriate examples. This is very useful stuff! 8And. . . 29. Any Other Problem That You Choose — as long as you can convince us. Succinctly describe the problem and why you think it would be cool for this class. Needs to be nontrivial, useful, and interesting.
欢迎咨询51作业君