.BusinessSimulation.UsersGuide.Tutorial.ElementaryBuildingBlocks

Information

This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.

Elementary Building Blocks for Dynamic Models

The Business Simulation Library (BSL) provides the following elementary classes to build dynamic models:

Icon Main Class Description
Stocks.svg 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.svg Flows

Flows are aggregate processes that change the states of a system by filling or draining stocks at a certain rate.

SourcesOrSinks.svg 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.svg Converters

Converters model information processing on a fundamental level, transforming information input into information output immediately.

InformationSources.svg Information Sources

Information sources provide inputs from external "information processors" or "controllers" that lie outside a system's boundary.

MoleculesOfStructure.svg 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

Stocks

Information Levels, Material Stocks, and Capacity Restricted Stocks

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
InformationLevel.svg 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.

MaterialStock.svg 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.

CapacityRestrictedStock.svg 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).

Keeping Track of Mean Qualities

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.

Dynamic Stocks—Stocks With Delayed or Discrete Outflows

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.svg  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).

PureDelay.svg 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.

SimpleConveyor.svg 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.svg 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.svg 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.

Flows

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
UnidirectionalFlow.svg Unidirectional

Unidirectional flows drain the stock connected to their portA (→FlowPort) and fill the stock connected to their portB at an identical rate. The rate needs to be positive and will be set to zero if it is negative, as the direction of flow cannot change during a simulation.

BidirectionalFlow.svg 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.svg 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

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.svg 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.svg Source

A Source combines a cloud with a unidirectional outflow that will then fill the connected stock.

Sink.svg Sink

A Sink combines a cloud with a unidirectional inflow that will then drain the connected stock.

SourceOrSink.svg 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

Converters take one or more information inputs (→RealInput), apply a real-valued function to the inputs, and then return the result as an information output (→RealOutput). Regular converters typically model basic arithmetic functions like exp, log, power, plus etc. Next to regular converters there are more specialized converter classes:

Icon Package Name Description
DiscreteDelay.svg 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.svg Logical

Logical converters have Boolean outputs (→BooleanOutput) and/or inputs (→BooleanInput).

Lookup.svg Lookup

Lookup converters use tabular or more elaborate parametric functions to model the transformation of information.

Lookup.svg Vector

Vector converters have vector inputs and/or outputs.

Molecules of Structure

Information Processing and Decision Making

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
InformationProcessing.svg Information Processing

Taking the raw information from the system and its environment and bringing it into the form needed for decision making.

Policy.svg 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.

Subsystems—Modeling a System of Systems

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.svg Blocks

Blocks do not exchange physical quantities with other systems. Instead there is only exchange of information for managerial control or information processing.

Incubators.svg Incubators

Incubators receive, store, and provide physical entities via multiple stock ports. There will often be some kind of transformation during storage.

Transceivers.svg 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.svg 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


Generated at 2024-12-03T19:25:34Z by OpenModelicaOpenModelica 1.24.2 using GenerateDoc.mos