“System dynamics is a perspective and set of conceptual tools that enable us to understand the structure and dynamics of complex systems. System dynamics is also a rigorous modeling method that enables us to build formal computer simulations of complex systems and use them to design more effective policies and organizations. Together, these tools allow us to create management flight simulators-microworlds where space and time can be compressed and slowed so we can experience the long-term side effects of decisions, speed learning, develop our understanding of complex systems, and design structures and strategies for greater success.”
Developed by Jay W. Forrester in the 1950s, System Dynamics “the study of information-feedback characteristics of industrial activity to show how organizational structure, amplification (in policies), and time delays (in decisions and actions) interact to influence the success of the enterprise”. The range of System Dynamics applications includes also urban, social, ecological types of systems. In System Dynamics the real-world processes are represented in terms of stocks (e.g. of material, knowledge, people, money), flows between these stocks, and information that determines the values of the flows. System Dynamics abstracts from single events and agents and takes an aggregate view concentrating on policies. To approach the problem in SD style one has to describe the system behavior as a number of interacting feedback loops, balancing or reinforcing, just like shown on the figure below, and maybe delay structures.
In this classic textbook model of product diffusion Potential Adopters become adopters at Adoption Rate that depends on advertising and word of mouth promotion.
Important things to know about system dynamics modeling:
- as long as the model works only with aggregates, the items in that same stock are indistinguishable, they do not have individuality;
- the modeler has to think in terms of global structural dependencies and has to provide accurate quantitative data for them.
System Dynamics is mostly used in long-term, strategic models and assumes high level of aggregation of objects being modeled: people, products, events, and other discrete items are represented in SD models by their quantities. Therefore they lose any individual properties, histories or dynamics. If this level of abstraction is OK for your problem, SD may be the right method to use. If you feel however that individual details are important, you can always re-conceptualize all or part of your model using Agent Based or Discrete Event (process-centric) methods staying within the same AnyLogic environment.
You can find more information on system dynamics in Wikipedia: System dynamics.
AnyLogic supports design and simulation of feedback structures (stock and flow diagrams and decision rules, including array variables AKA “subscripts”) in a way most SD modelers are used to. You can:
- Use automatic code completion in formulas
- Define “shadow” variables for better readability of your model
- Use table functions (lookup tables) with step, linear, or spline interpolation
- Define dimensions of both enumeration and range types
- Define sub-dimensions and sub-ranges
- Define array variables with arbitrary number of dimensions
- Use multiple formulas for different parts of an array variable
- Use both SD-specific (delay) and standard Java mathematical functions
How can we improve this article?