Simulation Modeling and Analysis

Averill M. Law

Mentioned 2

Since the publication of the first edition in 1982, the goal of Simulation Modeling and Analysis has always been to provide a comprehensive, state-of-the-art, and technically correct treatment of all important aspects of a simulation study. The book strives to make this material understandable by the use of intuition and numerous figures, examples, and problems. It is equally well suited for use in university courses, simulation practice, and self study. The book is widely regarded as the "bible" of simulation and now has more than 100,000 copies in print. The book can serve as the primary text for a variety of courses; for example: *A first course in simulation at the junior, senior, or beginning-graduate-student level in engineering, manufacturing, business, or computer science (Chaps. 1 through 4, and parts of Chaps. 5 through 9). At the end of such a course, the students will be prepared to carry out complete and effective simulation studies, and to take advanced simulation courses. *A second course in simulation for graduate students in any of the above disciplines (most of Chaps. 5 through 12). After completing this course, the student should be familiar with the more advanced methodological issues involved in a simulation study, and should be prepared to understand and conduct simulation research. *An introduction to simulation as part of a general course in operations research or management science (part of Chaps. 1, 3, 5, 6, and 9).

More on Amazon.com

Mentioned in questions and answers.

Whenever I run large scale monte carlo simulations in S-Plus, I always end up growing a beard while I wait for it to complete.

What are the best tricks for running monte carlo simulations in R? Any good examples of running processes in a distributed fashion?

  • Using multiple cores/machines should be simple if you're just using parallel independent replications, but be aware of common deficiencies of random number generators (e.g. if using the current time as seed, spawning many processes with one RNG for each might produce correlated random numbers, which leads to invalid results - see e.g. this paper)

  • You might want to use variance reduction to reduce the number of required replications, i.e. to shrink the size of the required sample. More advanced variance reduction techniques can be found in many textbooks, e.g. in this one.

I want to start a simulation project, which will be a descrete-time simulation. The purpose is simulating agent communication with some non-autonomous physical models involved, so it is not necessarily limited to a pure agent-based simulation. Before starting, I wanted to ask what software engineering practices specific to simulation do exist, for example test practices (TDD suited? Simulation tends to be hinghly non-deterministic), which problems from a software engineering point of view are common, often occurring problems, etc. I am not talking about the modelling process, but the process of the realization of a system that uses existing models. Related book recommendations are very welcome.

Thanks.

Marcin is right, this question is much too broad to have a correct answer apart from It Depends.

The main reason for this is that simulation software is, first and foremost, still 'just' software, and the engineering part very much depends on your requirements (programming language, purposes of the software, time budget, constraints on resources, etc.). Of course, there might be additional steps involved (such as VV&A) and certain tasks need extra care, such as testing, but all this depends on the context.

Also, before you start hacking away, have you looked at existing tools - maybe there is a library or framework that you can rely on? If so, what approaches have worked there?

Except general introductions (like this), most books and papers are also focused on specific subsets of simulation software (e.g. simulation software in C++, or agent-based simulations, or parallel and distributed simulations). So without more context it is hard to even point you to relevant material.