ElementaryBuildingBlocksA quick tour introducing the library's main classes |
This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.
The Business Simulation Library (BSL) provides the following elementary classes to build dynamic models:
Icon | Main Class | Description |
---|---|---|
Stocks |
Stocks describe the states of a system, such as a measurable quantity that could, in principle, be measured even if the system were hypothetically "frozen." |
|
Flows |
Flows are aggregate processes that change the states of a system by filling or draining stocks at a certain rate. |
|
Sources or Sinks |
Sources or Sinks act as stocks with infinite capacity ("clouds") at a system's boundary, from or into which elements flow. The BSL broadens the definition to include the combination of a stock with infinite capacity and a connected flow to model processes of growth or decline from external influences. |
|
Converters |
Converters model information processing on a fundamental level, transforming information input into information output immediately. |
|
Information Sources |
Information sources provide inputs from external "information processors" or "controllers" that lie outside a system's boundary. |
|
Molecules of Structure |
These are pre-built components for modeling information processing, decision-making, or subsystems more generally. |
→Flows
→Sources or Sinks
→Converters
→Molecules of Structure
In the system dynamics community, the terms stock and level (sometimes also referred to as reservoir) are used synonymously to describe compartments that store a measurable quantity during a simulation [20]. Generally, these compartments can be filled and drained over time by flows operating at a certain rate. In the BSL, we distinguish three basic types of stocks:
Icon | Class Name | Description |
---|---|---|
Information Level |
Information Levels store information that changes over time due to the flow of information. We may use an information level to model a company's assets, liabilities, and shareholders' equity. |
|
Material Stock |
Material Stocks represent physical quantities, such as living beings and people, raw material, finished goods, or capital equipment, that change due to material flows. Unlike information levels, material stocks can never become negative. If a flow tries to drain an empty material stock, it will be set to zero. |
|
Capacity Restricted Stock |
Capacity Restricted Stocks are material stocks with additional capacity restriction. They may have maximum and a minimum levels (≥ 0). |
Stocks—hereafter referred to simply as stocks/levels in general—have an inflow and an outflow port (→StockPort) through which they can receive in- and outflows from connected flow components. This is indicated by the pairs of grey arrows within the stock icon. It's important to note, however, that this indication and naming are generally suggestive, as stocks may be filled or drained via both ports. Whenever possible, inflows and outflows should be connected to the appropriate port of a stock component to avoid incorrect stock information reporting by →StockInfoOutputs.
All stock components report the quantity that currently resides in the component via information outputs (→RealOutput).
It is often desirable to track some mean quality for entities contained in a stock, such as the experience level of new employees or their wage level, which may vary during a simulation. A coflow is typically applied in these cases and can be modeled compactly using the →HinesCoflow.
Next to the elementary types of stock, there are special kinds of stock which can best be thought of as dynamic stocks. Dynamic stocks contain internal processes, which we will not model in more detail. They have a special stock port (red) on their outflow side (→StockPort_Special) as the rate of outflow is determined internally. This was already described by Forrester [2, pp. 86 ff.] for delays.
Icon | Class Name | Description |
---|---|---|
DelayN |
An n-th order exponential delay will delay its inflow so that the actual times of residence will be distributed around the indicated (mean) delay time. The variation for the distribution of residence times will decrease with higher delay orders (a delay of infinite order will behave exactly like a PureDelay). |
|
Pure Delay |
A material delay with fixed delay time that may change over time. Any changes in the delay time will only affect incoming material, so that new material may flow out earlier than material already in the stock. |
|
Simple Conveyor |
As in an ideal conveyor belt, everything that enters is delayed by a fixed amount of time, which cannot change during the simulation. |
|
Conveyor |
This stock also models an ideal conveyor, but the discretely modeled component allows the delay time to change during the simulation. Unlike a PureDelay, the order of inflow is preserved so that material may leave the belt at the same time, but never ahead of material that has entered earlier. |
|
Oven |
The Oven (aka batch delay) is an ideal model of a batch production process: Material will flow into the oven until its capacity is reached (or the load time is exceeded). The material will then be processed for some process time and will then be unloaded. During the processing material can neither flow in nor out of the stock. |
All dynamic stocks are material stocks and there can never be negative amounts inside a process. Dynamic stocks may have additional input ports in case process or delay times are chaning during a simulation.
It is important to mention that for dynamic stocks the ports' designations are binding. Accordingly, they can only be filled via the inflow port and can only be drained via the outflow port. Only the →OutflowDynamicStock and the →SplitOutFlowDynamicStock components have a corresponding FlowPort_Special that can be connected to the outflow port of dynamic stocks.
Flow components are mainly responsible for dynamic behavior as they fill or drain static stocks over time. There are three basic types of flows:
Icon | Class Name | Description |
---|---|---|
Unidirectional |
Unidirectional flows drain the stock connected to their |
|
Bidirectional |
Bidirectional flows are essentially unidirectional flows that may change the direction of flow during a simulation depending on the sign of the rate: A negative rate will transport entities from B to A, while a positive rate will transport entities from A to B. |
|
Interaction |
Interactions model the general case of two stocks having netflows flow from/to clouds (positive rates will fill the connected stock), which may be influenced by the stock levels. A simple example is the →BrokenTransition, where the inflow to stock B is proportional to the rate of the outflow of stock A, as some kind of transformation is modeled rather than a mere transition. |
All flow components report their current rate—or rates in the case of interactions—via information outputs (→RealOutput). They may have additional inputs (→RealInput) in the general case where variables determining the rate of flow can change during the simulation.
Sources or Sinks are compact components that can be used to model processes of growth or decline at a system's boundary in a compact way:
Icon | Class Name | Description |
---|---|---|
Cloud | A Cloud simply is a stock that is outside a system's boundary—here we assume that the stock has an infinite capacity. In models of population dynamics, clouds will be used as sources for newborns or sinks for the deceased. |
|
Source |
A Source combines a cloud with a unidirectional outflow that will then fill the connected stock. |
|
Sink |
A Sink combines a cloud with a unidirectional inflow that will then drain the connected stock. |
|
Source or Sink |
A SourceOrSink combines a cloud with a bidirectional flow that may fill or drain a stock depending on the sign of the flow's rate: A positive rate, by convention, fills the connected stock. |
Like flow components, sources or sink components report their current rate via information outputs (→RealOutput). They may have additional inputs (→RealInput) in the general case where variables determining the rate of flow can change during the simulation.
Converters take one or more
Icon | Package Name | Description |
---|---|---|
Discrete Delay |
DiscreteDelay converters introduce discrete behavior or delays into information processing and typically contain an information level—which is the reason for their boxlike-appearance. |
|
Logical |
Logical converters have Boolean outputs (→BooleanOutput) and/or inputs (→BooleanInput). |
|
Lookup |
Lookup converters use tabular or more elaborate parametric functions to model the transformation of information. |
|
Vector |
Vector converters have vector inputs and/or outputs. |
John Morecroft [7] suggested that diagrams of dynamic systems would be greatly improved, if we used more aggregate diagramming. Instead of showing lots of converters, we may simply combine them within an aggregate class, which will succinctly indicate information processing and/or decision making (policy setting) in diagrams.
Icon | Package Name | Description |
---|---|---|
Information Processing |
Taking the raw information from the system and its environment and bringing it into the form needed for decision making. |
|
Policy |
Using (preprocessed) information, we will have some decision rule that will give a decision output—usually goals and other regulations to be observed or rates for processes that change the state(s) of the system. |
When we look at complex systems in society or even at individual companies and markets, we are well advised to conquer their complexity by applying a hierarchical modeling approach. Accordingly, we will model the system in focus as a system of systems exchanging instantaneous information signals and conserved quantities, such as matter, energy, and stored information.
We can usually assume that all subsystems exchange some kind of information. Accordingly, we can best distinguish different types of subsystems by looking at the presence of stock and flow ports for the exchange of conserved quantities, such as raw materials or finished goods.
Icon | Subsystem Type | Description |
---|---|---|
Blocks |
Blocks do not exchange physical quantities with other systems. Instead there is only exchange of information for managerial control or information processing. |
|
Incubators |
Incubators receive, store, and provide physical entities via multiple stock ports. There will often be some kind of transformation during storage. |
|
Transceivers |
Transceivers not only receive and store physical quantities, but also move them to/from connected systems. With multiple stock and flow ports, these are the most general kind of subsystems. |
|
Actuators |
Actuators move physical entities to and from connected systems via multiple flow ports (push or pull). Subsequently, there may also be some storage as internal processes of transformation take up time. |
Copyright © 2020 Guido Wolf Reichert
Licensed under the EUPL-1.2 or later