Modeling and simulation are powerful tools for helping us understand complex real-world situations. More than that, they can be fun. Simple discrete event simulations of common situations like cashiers in a grocery store are easy enough for beginning programmers and can provide interesting playgrounds. Continuous simulations (involving differential equations) are more appropriate for more advanced students with some math background, but can serve as effective motivation for further study of continuous systems.

The book consists of four main parts and 12 chapters, along with annexes. Part 1, “Fundamentals,” has two chapters. Chapter 1, “Introduction,” discusses the general ideas to be covered and includes an interesting section on the possible downsides of simulations. Chapter 2, “Modelling and Simulation Fundamentals,” covers the foundations of all simulations, the process of building a model/simulation, documentation, and validation.

Part 2, “DEDS Modelling and Simulation,” covers discrete event dynamic systems (DEDS). Chapter 3, “DEDS Stochastic Behavior and Modelling,” covers various topics involving the (necessary) randomness present in most discrete event simulations, as well as data modeling and random number generation. Chapter 4, “A Conceptual Modelling Framework for DEDS,” presents the basics of the author’s ABCmod framework, a Java-based framework for discrete event simulations. Chapter 5, “DEDS Simulation Model Development,” covers different aspects of discrete event simulations and an overview of GPSS (another simulation system). Chapter 6, “The Activity-Object World View for DEDS,” discusses how object-oriented programming can be integrated into a discrete event simulation. Chapter 7, “Experimentation and Output Analysis,” covers various issues involving discrete event simulations, including fundamental questions like “How long should this run?,” start-up transient behavior, comparing alternative models, and some very basic information on the design of experiments.

Part 3, “CTDS Modelling and Simulation,” focuses on continuous time dynamic systems (CTDS). Chapter 8, “Modelling of Continuous-Time Dynamic Systems,” includes examples and basic structures. Chapter 9, “Simulations with CTDS Models,” covers the numerical solution process and a few examples of solution methods (such as Runge-Kutta), as well as the problems of stability, stiffness, and discontinuities.

Part 4 is “Simulation Optimization.” Chapter 10, “Optimization Overview,” contains a brief discussion of some minimization techniques in simulations, that is, where not just a view of the process is required, but also the minimization of some objective function on the parameters. Chapter 11, “Simulation Optimization in the CTDS Domain,” has a deeper discussion of techniques for optimization. Chapter 12, “Simulation Optimization in the DEDS Domain,” contains a brief overview of the difficulties and techniques for simulations involving random variables.

The four annexes are “ABCmod Applications in M&S Projects,” “Probability and Statistics Primer,” “GPSS Primer,” and “MATLAB Primer.” There is an all too brief index, and each chapter has a bibliography.

The preface says that the book is intended for advanced undergraduates and beginning graduate students, which seems appropriate. However, the mathematics required for continuous time systems and simulation optimizations is much more intense than that required for discrete simulations. While this is certainly appropriate, the difference in mathematical maturity is striking, as is the level of detail. Basic Java data structures are presented in one section on DEDS, but knowledge of much deeper math is just assumed.

The chapters on discrete simulations are a bit scattered--a few quite different models are used and this feels awkward in places. Instead, it might be beneficial to construct a single model and deepen it through the course of the chapters, and then include other models in brief chapters on their own. The introduction of two modeling systems is also a bit confusing--perhaps one should be used as a focus and the other introduced and demonstrated in an annex.

Random number generation is briefly discussed, but only the linear congruential generator is mentioned. While this is probably sufficient for most simulation purposes, it should at least be noted that other generators with longer periods that are often just as fast in practice are also available.

Despite these problems, the book is quite readable overall and does contain a wealth of information that students interested in the topics should see at some point. The book as a whole could work well for a semester-long course as long as the students have the necessary mathematical underpinnings.