| Introduction to Simulation | p. 1 |
| Introduction | p. 1 |
| Simulation with Java | p. 1 |
| Overview | p. 1 |
| Implementing Simulation Models with Java and Psim-J | p. 3 |
| Systems, Models, and Modeling | p. 4 |
| Categories of Models | p. 5 |
| Conceptual Models | p. 5 |
| Simulation Models | p. 6 |
| General Concepts | p. 6 |
| Designing Simulation Models | p. 8 |
| Implementing Simulation Models | p. 9 |
| Simulation Results | p. 9 |
| Types of Simulation Models | p. 10 |
| Phases in Model Development | p. 11 |
| Performance Measures and Performance Modeling | p. 13 |
| Performance Metrics | p. 13 |
| Workload | p. 14 |
| Additional Performance Concepts | p. 14 |
| Summary | p. 15 |
| Exercises | p. 15 |
| Objects, Classes and UML | p. 17 |
| Introduction | p. 17 |
| Object-Oriented Modeling | p. 17 |
| Conceptual Model | p. 17 |
| Modeling Objects | p. 18 |
| Encapsulation | p. 19 |
| Interfaces | p. 19 |
| Objects and Classes | p. 19 |
| Using UML For Object-Oriented Modeling | p. 20 |
| Use Case Diagrams | p. 21 |
| Static Modeling Diagrams | p. 22 |
| Class Diagrams | p. 22 |
| Associations | p. 23 |
| Multiplicity of the Association | p. 24 |
| Aggregation | p. 24 |
| Generalization and Inheritance | p. 25 |
| Class Inheritance | p. 25 |
| Generalization | p. 25 |
| Dynamic Modeling Diagrams | p. 26 |
| Collaboration Diagrams | p. 26 |
| Sequence Diagrams | p. 27 |
| State Diagrams | p. 27 |
| Concurrency | p. 28 |
| Summary | p. 29 |
| Exercises | p. 30 |
| Relevant Aspects Of The Java Programming Language | p. 31 |
| Introduction | p. 31 |
| Types Of Java Programs | p. 31 |
| Basic Object-Oriented Concepts Of Java | p. 32 |
| Java Classes | p. 32 |
| Java Packages | p. 33 |
| Constructors | p. 33 |
| A Simple Application With Two Classes | p. 34 |
| Dealing With Global Variables | p. 37 |
| Need For Global Variables | p. 37 |
| Global Constants | p. 37 |
| Arrays and Collection Classes | p. 38 |
| Collection Classes | p. 40 |
| Inheritance | p. 40 |
| Base and derived classes | p. 40 |
| Constructors of the Subclasses | p. 42 |
| Abstract Classes | p. 42 |
| Polymorphism | p. 43 |
| Classes and Interfaces | p. 43 |
| Exceptions | p. 44 |
| Java Threads | p. 45 |
| Using Threads | p. 45 |
| Inheriting the Thread Class | p. 46 |
| Other Basic Thread Methods | p. 47 |
| Thread Suspending Itself | p. 48 |
| Implementing the Runnable Interface | p. 48 |
| Interrupting a Thread Object | p. 49 |
| Thread Priorities | p. 51 |
| Simple Thread Synchronization | p. 51 |
| Wait/Notify Mechanism in Threads | p. 52 |
| Summary | p. 53 |
| Exercises | p. 53 |
| Discrete-Event Simulation | p. 55 |
| Introduction | p. 55 |
| Modeling System Behavior | p. 55 |
| Implementation of Discrete-Event Simulation | p. 56 |
| The Time Dimension | p. 57 |
| World Views For Discrete-Event Simulation | p. 58 |
| The Activity World View | p. 59 |
| The Event World View | p. 59 |
| The Process Interaction World View | p. 59 |
| Implementing The Process Worldview | p. 60 |
| Object-Oriented Simulation | p. 62 |
| Software For Discrete-Event Simulation | p. 63 |
| Discrete Event Simulation Packages | p. 64 |
| SimPack and Sim++ | p. 64 |
| CSIM | p. 64 |
| ModSim | p. 64 |
| GPSS | p. 65 |
| Simula | p. 65 |
| Simscript | p. 65 |
| GASP | p. 66 |
| SLAM | p. 66 |
| Task Library | p. 66 |
| The Simulation Package and Language, Psim and PsimL | p. 66 |
| Other Simulation Packages | p. 67 |
| Simulation Packages in Java | p. 67 |
| Java version of Psim | p. 67 |
| Other Sources on Simulation Languages, Conferences, and Courses | p. 67 |
| Summary | p. 68 |
| Exercises | p. 69 |
| Simulation With The Process Worldview | p. 71 |
| Introduction | p. 71 |
| Processes and Simulation Models | p. 71 |
| Entities and Objects | p. 71 |
| Single-Server Models | p. 72 |
| A Model For The Car-Wash System | p. 73 |
| The Conceptual Model | p. 73 |
| The Car-Wash Deterministic Model | p. 75 |
| The Car-Wash Stochastic Model | p. 80 |
| Performance and Workload Characterization | p. 84 |
| Implementing The Simulation Model | p. 85 |
| Using Java And Psim-J | p. 85 |
| Java Implementation Of The Car-wash Model | p. 87 |
| Graphical User Interfaces | p. 93 |
| Summary | p. 93 |
| Exercises | p. 95 |
| Models of Multi-Server Systems | p. 97 |
| Introduction | p. 97 |
| Queuing Models | p. 97 |
| Multi-Server Queuing Models | p. 98 |
| The Multi-Server Model of the Car-Wash System | p. 99 |
| Description Of The Server Process | p. 100 |
| Description Of The Customer Process | p. 100 |
| Description Of The Arrivals Process | p. 101 |
| Simulation Results | p. 102 |
| Java Implementation of the Multi-Server Model | p. 105 |
| Multi-Server Models With Multiple Queues | p. 108 |
| Description Of The Server Process | p. 108 |
| Description of the Customer Process | p. 109 |
| Queuing Networks | p. 109 |
| Summary | p. 110 |
| Exercises | p. 111 |
| Multi-Class Queuing Models | p. 113 |
| Introduction | p. 113 |
| Priorities With Single-Server Models | p. 114 |
| Description of the Server Process | p. 114 |
| Description of the Arrivals Process | p. 115 |
| Description of the Car Process | p. 115 |
| Results from the Simulation | p. 116 |
| Implementation Of The Car-Wash Model | p. 120 |
| Multi-Server Models with Priorities | p. 123 |
| Summary | p. 123 |
| Exercises | p. 124 |
| Resources | p. 127 |
| Introduction | p. 127 |
| Resource Manipulation | p. 127 |
| Software Implementation of Resources | p. 128 |
| Model Implementation in Psim-J | p. 130 |
| A Model of a Busy Warehouse | p. 131 |
| Allocating Resources with Priorities | p. 136 |
| Deadlock | p. 136 |
| Summary | p. 137 |
| Exercises | p. 138 |
| Basic Process Cooperation | p. 139 |
| Introduction | p. 139 |
| Producer-Consumer Cooperation | p. 139 |
| Producer and Consumer Objects | p. 140 |
| Implementing Process Cooperation | p. 141 |
| Producer Implementation | p. 141 |
| Consumer Implementation | p. 142 |
| Model Of A Machine Parts-Replacement System | p. 142 |
| Summary | p. 147 |
| Exercises | p. 147 |
| Synchronous Cooperation | p. 149 |
| Introduction | p. 149 |
| Master-Slave Synchronization | p. 149 |
| General Synchronous Cooperation | p. 149 |
| Synchronous Communication | p. 150 |
| Implementing Process Cooperation in Java | p. 151 |
| Model With Synchronous Communication | p. 152 |
| Cooperation with Several Slaves | p. 156 |
| Summary | p. 157 |
| Questions | p. 157 |
| Conditional Waiting | p. 159 |
| Introduction | p. 159 |
| Modeling With Conditional Synchronization | p. 159 |
| Implementation with Java and Psim-J | p. 160 |
| General Approach | p. 160 |
| Implementing Simulation Models | p. 161 |
| A Model Of A Port System | p. 162 |
| Summary | p. 166 |
| Exercises | p. 166 |
| Interrupts | p. 167 |
| Introduction | p. 167 |
| Basic Notion of Interruptions | p. 167 |
| Interrupt Handling | p. 168 |
| Interrupts using Java and Psim-J | p. 169 |
| The Parts-Replacement Model With Interrupts | p. 171 |
| Car-Wash Model with Interrupts | p. 175 |
| Summary | p. 181 |
| Exercises | p. 181 |
| More Simulation Models | p. 183 |
| Introduction | p. 183 |
| Model of a Simple Client-Server System | p. 183 |
| Model of an Ethernet Client-Server System | p. 191 |
| The Ethernet Protocol | p. 191 |
| Network Performance | p. 192 |
| Model Implementation | p. 192 |
| Summary | p. 196 |
| Exercises | p. 196 |
| Basic Probability Theory and Random Numbers | p. 197 |
| Introduction | p. 197 |
| Experiments and Outcomes | p. 197 |
| Long-term Behavior of Systems | p. 198 |
| Overview of Set Theory | p. 198 |
| Probabilities | p. 199 |
| Random Variable and Distribution Functions | p. 199 |
| Expected Values, Variance and Covariance | p. 200 |
| The Geometric distribution | p. 201 |
| The Binomial Distribution | p. 202 |
| The Exponential Distribution | p. 203 |
| The Poisson Distribution | p. 203 |
| The Uniform Distribution | p. 204 |
| The Normal Distribution | p. 204 |
| Stochastic Processes | p. 204 |
| Random Numbers in Simulation Models | p. 205 |
| Markov Models | p. 206 |
| State Dependencies | p. 206 |
| Markov Chains | p. 207 |
| Summary Statistics | p. 208 |
| Comparing Sample Data | p. 209 |
| Summary | p. 210 |
| Questions | p. 211 |
| Overview of Model Verification and Validation | p. 213 |
| Introduction | p. 213 |
| Verification Techniques For Simulation Models | p. 213 |
| Object-Oriented Modeling and Programming | p. 213 |
| Using Traces | p. 214 |
| Graphical Outputs | p. 214 |
| Testing for Verification | p. 214 |
| Validation Techniques For Simulation Models | p. 215 |
| Importance | p. 215 |
| General Validation Approach | p. 215 |
| Black Box Validation | p. 216 |
| White Box Validation | p. 216 |
| Summary | p. 217 |
| A Short Manual For Psim-J | p. 219 |
| Introduction to The Psim-J Library | p. 219 |
| List Of Classes | p. 220 |
| Defining Processes in a Simulation Model | p. 221 |
| The Time Dimension | p. 222 |
| Other Process Methods | p. 222 |
| Starting and Running a Simulation | p. 226 |
| Priority of a Process | p. 226 |
| Process States | p. 227 |
| Scheduling Processes | p. 228 |
| Handling Queues | p. 228 |
| General Description | p. 228 |
| Methods in Class Squeue | p. 228 |
| Members of Class Pqueue | p. 231 |
| Classes for Resources | p. 235 |
| General Description | p. 235 |
| Class Res | p. 235 |
| Relevant Features in the Bin Class | p. 236 |
| Class Waitq | p. 238 |
| The Condq Class | p. 240 |
| Random Number Generation in Psim-J | p. 241 |
| Class Randint | p. 242 |
| Class Erand | p. 243 |
| Class Normal | p. 244 |
| Class Poisson | p. 245 |
| Class Urand | p. 246 |
| Bibliography | p. 247 |
| About the Author | p. 251 |
| Index | p. 253 |
| Table of Contents provided by Syndetics. All Rights Reserved. |