This page will provide advance information on the introductory book 'SimPy --
Simulation in Python', currently being written by Klaus G. Müller and a
co-author. It is aimed
at self-studying users and teachers of Simulation 101 courses.
Status as of January 2008
Negotiations with publishers are ongoing.
Status as of June 2007
The draft is more than 75% complete. A suitable publisher is still being
sought.
Status as of October 2006
The draft text is done for more than 50%. Negotiations with publishers will
start later this autumn.
Sample chapter
A sample chapter (Chapter 3, 'Developing a SimPy simulation program') can be
read here.
(Ignore the crazy coloring scheme, it just reflects different MS Word text
styles in
the draft.)
Sample section from annex
A sample section from the book's annex, "Saving and restarting SimPy
simulations", can be read
here.
Book Table of Contents (draft)
Preface
Audience
Prerequisites
Getting and installing SimPy
Where to get SimPy
Installing SimPy
Contents of this book
Conventions used in this book
Resources, comments and questions
Acknowledgments
Chapter 1: Introduction
Systems models and simulation
Models, activities and events
A very simple model
Activities
The notion of process
Exercises
Chapter 2: SimPy overview
What is SimPy?
The power of SimPy
SimPy's implementation of processes
Scheduling commands
How time passes in SimPy
SimPy process states
Behind the scenes - SimPy event scheduling
Exercises
Chapter3: Developing a SimPy simulation program
Basic structure of a SimPy program
Tools to use
Development approach
Let’s build our first SimPy program
Chapter 4: Entities
class Process for active objects: entities
Activating processes: the activate function
Entities with multiple processes
Generating transient entities: source processes
Exercises
Chapter 5: Simulation results: data collection, analysis and output
class Monitor
class Tally
Automatic monitoring of Resource, Level and Store instances
Exercises
Chapter 6: Simple plotting: SimPlot
Basic facilities
Advanced facilities
Exercises
Chapter 7: Inter-process synchronization in SimPy
Mutual exclusion
class Resource for passive, shared objects: resources
Requesting and releasing resource units: yield request, yield
release
Monitoring Resource instances
Priorities for resource requests
Preemption by higher priority entities
Changing available resource levels
Impatient customers: balking and reneging
Balking
Reneging
Exercises
Producer/consumer synchronization
Buffers: classes Level and Store
class Level
class Store
Entity-entity (master/slave) cooperation
Interrupts
Exercises
Chapter 8: Conditional waiting
Waiting for events - the observer pattern
Queuing for an event
Waiting for a general condition
Exercises
Chapter 9: Miscellaneous features of SimPy
Introspection by tracing: SimulationTrace
More introspection: Lister, allEventNotices, allEventTimes
Graphical user interface building: SimGUI
Event-by-event execution: SimulationStep
Synchronizing with real time: SimulationRT
Exercises
Chapter 10: An advanced SimPy case-study (Call Center staffing)
Annexes
Getting started with SimPy
Debugging SimPy programs
Recommended program structure for SimPy-based simulations
Producing production quality graphs with SimPy
Saving and restarting SimPy
simulations
SimPy resources
SimPy glossary