This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.
This package contains high-level classes (i.e., wrappers) that allow to quickly set up dynamic models in a Causal Loop Diagram (CLD) fashion. Unlike conventional CLD such models can immediately be simulated and analyzed.
A typical workflow in an "Agile Dynamic Modeling" setup would be to quickly establish a first working model using the most relevant variables as starting points and consider them to be stocks/levels. Exogenous processes of change and/or control next to simplified relations between the variables—defined by elasticities or proportionalities—will then give rise to dynamic behavior.
Such a preliminary model can be made more expressive by introducing lookups to modify constant coefficients (e.g., factors of proportionality) thus making the models more nonlinear. As van Zijderveld [24] has shown, such models may even suffice in situations of tight budgets or lower stakes.
True to the Agile paradigm, we may start out with a preliminary, working model and replace any of its parts by more elaborate models as needed. Such a gradual approach to modeling is the sweet spot of object-oriented modeling in Modelica.
Since not all component names are visible in the diagram display for CausalLoop
classes the following table shows the defaultComponentName
for the main classes of the package:
defaultComponentName | Explicit Name | Classes |
s | Stocks (aka states) | SimpleInformationLevel, |
p | Processes (exogenous change ~) | ExponentialChange, |
r | Relations (aka links) | Elasticity, |
d | Delays | ExponentialDelay, |
c | Controls | InputControl, |
b | Blocks (i.e., information processing) | Lookup_ type,Aggregation, |
f | Flows | UnidirectionalFlow, |
L | Loop indicators | LoopIndicator_CW, |
lab | Labels (i.e., flow indicators) | MatFlowIndicator, |
To see the components of this package at work, have a look at these example models:
A short video presentation (12 min) introducing quantitative causal loop diagramming can be found here.
Copyright © 2021 Guido Wolf Reichert
Licensed under the EUPL-1.2 or later
Name | Description |
---|---|
SimpleInformationLevel | Information level for CLD-like modeling |
SimpleMaterialStock | Information level for CLD-mapping |
Performance | Evaluation of a stock on a [0,1] scale |
InputControl | Directly set information using a ramp input profile |
SimpleControl | Directly influencing a stock to keep it at setpoint value |
PID_Control | Directly influencing a stock to keep it at setpoint value |
ExponentialChange | Exponential growth or decline process |
LinearChange | Process of growth or decline at given rate |
LogisticGrowth | S-shaped logistic growth process |
Elasticity | Fractional rate of change is proportional to that of the influencing stock |
ElasticityDelayed | Process driven by elasticity and additional exponential delay |
Proportionality | Rate of change is proportional to that of the influencing stock |
ProportionalityDelayed | Process driven by proportionality with additional exponential delay |
ForceToInputValue | Flow is obtained as closing the gap to input value |
ForceToStockValue | Flow is obtained as closing the gap to input stock value |
ExponentialDelay | Exponential delay of input flow |
PipelineDelay | Fixed or pure delay of input flow |
ComplexInteraction | Interaction with linear and nonlinear terms |
UnidirectionalFlow | Interaction with linear and nonlinear terms |
SplitFlow | Splitting a flow into n flows |
Lookup_JPositive | Positively sloping s-shaped lookup |
Lookup_JNegative | Negatively sloping s-shaped lookup |
Lookup_SPositive | Positively sloping s-shaped lookup (centered at origin) |
Lookup_SNegative | Negatively sloping s-shaped lookup (centered at origin) |
Lookup_Table | Table-based lookup with manual input of the interpolation table |
Lookup_TableOnFile | Table-based lookup given on file |
Aggregation | Generalized mean function for multiple stock information inputs |
StockInformation | Provide amount in stock information |
RateInformation | Provide rate of net flow information |
Aggregation_Info | Generalized mean function for multiple information inputs |
Total | Sum all inputs |
Product | Multiply all inputs |
LoopIndicator_CW | Loopindicator for clockwise feedback loop |
LoopIndicator_CCW | Loopindicator for counter clockwise feedback loop |
MatFlowIndicator | Directional indicator for material flows in a diagram |
InfoFlowIndicator | Directional indicator for information flows in a diagram |
SketchVariable | Class to be used for comments or sketch variables |