Voorraad-stroomdiagram

Uit Systeemmodellering
Naar navigatie springen Naar zoeken springen

Een voorraad-stroomdiagram (Engels: stock and flow diagram) is een conceptueel model dat beschrijft hoe grootheden in een systeem elkaars waarde beïnvloeden. Dit type model wordt veel gebruikt voor het beschrijven van dynamische systemen.

Notatie

Een voorraad-stroomdiagram kun je zien als een uitbreiding van het causalerelatiediagram. De grootheden worden nu in drie deelverzamelingen onderverdeeld:

  • voorraadgrootheden (Engels: stocks), weergegeven door rechthoeken
  • stroomgrootheden (Engels: flows), weergegeven door rechte dubbele pijlen met een "kraan" (⧖) in het midden
  • overige grootheden, weergegeven door enkel hun naam zonder grafisch symbool

Onderstaand voorbeeld laat zien dat de beïnvloedingsrelatie tussen grootheden specifieker wordt weergegeven dan in een causalerelatiediagram:

StockFlowSymbolen.png

Voorraadgrootheden kunnen alleen worden beïnvloed door stroomgrootheden. De richting van de dubbele pijl geeft dan aan of de stroomgrootheid de waarde van de voorraadgrootheid positief beïnvloedt (een "instroom") of juist negatief (een "uitstroom").

Een stroom loopt altijd tussen twee voorraadgrootheden. Als één daarvan buiten de systeemafbakening valt wordt hij niet benoemd, maar weergegeven door een wolkje. Een wolkje aan het begin van een stroom wordt een bron genoemd (Engels: source), een wolkje aan het uiteinde van een pijl een put (Engels: sink).

Stroomgrootheden en overige grootheden kunnen door elk type grootheid worden beïnvloed. Net als in een causalerelatiediagram worden deze invloeden door vloeiende pijlen weergegeven die waar mogelijk met een + of een − gelabeld zijn om aan te geven of het om een positieve of negatieve correlatie tussen de grootheden gaat. Volgens bovenstaand diagram wordt de instroom groter naarmate de overige grootheid toeneemt, en wordt de uitstroom groter naarmate de voorraadgrootheid zelf toeneemt.

Net als bij een causalerelatiediagram is bij een voorraad-stroommodel de tijddimensie impliciet, maar wel essentieel. Vanwege die tijddimensie hebben voorraadgrootheden altijd andere eenheden dan de stroomgrootheden waarmee ze verband houden. Als in bovenstaand diagram de voorraadgrootheid als eenheid kilogram heeft, dan moeten de stroomgrootheden als eenheid kilogram per tijdseenheid hebben. De waarde van de voorraadgrootheid op tijdstip t+Δt is dan gelijk aan zijn waarde op tijdstip t plus (instroom − uitstroom)·Δt. Deze relatie worden in een discretetijdmodel gespecificeerd door een differentievergelijking, en in een continuetijdmodel als een differentiaalvergelijking (zie het eerste voorbeeld hieronder).

Voorbeelden

Watercyclus

De watercyclus op onze planeet zie je hieronder links schematisch en sterk vereenvoudigd voorgesteld: water uit de dampkring valt op aarde als neerslag, stroomt naar zee, en verdampt daar weer onder invloed van de zonnestraling. Rechts staat deze cyclus weergegeven in de vorm van een voorraad-stroomdiagram.

Watercyclus.png

De hoeveelheid zoetwater en de hoeveelheid zoutwater op aarde zijn in dit model de voorraadgrootheden; neerslag, afstroom en verdamping zijn stroomgrootheden. De zonnestraling is van invloed op de verdamping, maar geen voorraadgrootheid en ook geen stroomgrootheid. (N.B. Dit is een modelleerkeuze! Je kunt het model ook uitbreiden) Ook de retentie is geen voorraad- of stroomgrootheid, maar wel mede bepalend voor de afstroom: retentie is de tijd dat water wordt vastgehouden (als grond- en oppervlaktewater) en daardoor de afstroom vertraagt. De dubbele dwarsstreep ‖ door de beïnvloedingspijl van neerslag naar afstroom geeft aan dat de afstroom beïnvloed wordt door de neerslag van enige tijd geleden.

Omdat we in dit model alleen naar hoeveelheden vloeibaar water kijken, valt de hoeveelheid water in de dampkring buiten de systeemgrens. Die grootheid wordt daarom niet benoemd, maar als bron en put weergegeven. Water komt als neerslag het systeem binnen, en verlaat het systeem zodra het verdampt.

Nemen we als tijdseenheid h en als eenheid voor de waterhoeveelheden m3, dan moeten de stroomgrootheden neerslag, afstroom en verdamping als eenheid m3/h hebben. De retentie is de tijd dat zoet water wordt vastgehouden, en heeft dus als eenheid h. De zonnestraling die op aarde valt kunnen we uitdrukken in J/h. Als we het conceptuele model operationaliseren als een discretetijdmodel, dan bestaat dat uit deze vier vergelijkingen:


WatercyclusDifferentievergelijkingen.png


Merk op dat bij de vergelijkingen voor voorraadgrootheden de waarde op tijdstip t+Δt altijd afhangt van de waarde op tijdstip t (differentievergelijking). In vergelijking (3) wordt de afstroom op tijdtip t gelijk gesteld aan de neerslag op tijdstip t−τ waarbij de parameter τ voor de retentietijd staat. Parameter ρ geeft de zonnestraling weer. Ga zelf na dat om vergelijking (4) dimensioneel kloppend te krijgen parameter ρ als eenheid m3/J moet hebben.

Operationaliseren we het conceptuele model als een continuetijdmodel, dan zijn de vergelijkingen voor voorraadgrootheden differentiaalvergelijkingen:


WatercyclusDifferentiaalvergelijkingen.png


⊕ Meer weten over de watercyclus? Lees dan deze pagina van weerkundige Kees Floor. Het Engelstalige Wikipedia-artikel Solar energy gaat nog dieper in op de hoeveelheid zonnestraling die de aarde bereikt. Leuk om te zien hoe daarin m.b.v. een Sankey-diagram wordt getoond hoe die invallende stralingsenergie uiteindelijk ook weer als stralingsenergie de aarde verlaat.


Bevolking

Om het verschil tussen een voorraad-stroomdiagram en een causalerelatiediagram te illustreren, zetten we hieronder conceptualisaties met beide diagrammen naast elkaar. Beide geven weer hoe de bevolking in een land zich ontwikkelt.


StockFlowBevolking.png                 Beinvloedingsdiagram.png

Wat als voorraadgrootheden discreet zijn?

Een differentievergelijking is een wiskundige notatie voor "de voorraad op tijdstip t+Δt is gelijk aan de voorraad op tijdstip t plus wat er in die tijdstap bijkomt min wat er in die tijdstap afgaat":

Vt+Δt = Vt + (Φin, t - Φuit, t)·Δt

Deze notatie sluit direct aan bij de representatie in een voorraad-stroomdiagram: voorraadveranderingen worden veroorzaakt door stromen Φin en Φuit met als eenheid die van voorraadgrootheid V per tijdseenheid. Vandaar de vermenigvuldiging met de duur van 1 tijdstap Δt (in dezelfde tijdseenheid); die bepaalt de hoeveelheden die in- en uitstromen (hoe korter de tijdstap, hoe kleiner), en zorgt er voor dat de differentievergelijking dimensioneel klopt.

Dit werkt prima zolang de voorraadgrootheid een continue schaal heeft (bijv. kilogram, liter of €). Als per uur 6 liter instroomt, dan is de instroom per minuut 0,1 liter en per seconde 0,001666... liter. Ook als in de werkelijkheid een stroom uit discrete dingen bestaat (denk aan voertuigen in het verkeersstroommodel) kun je er voor kiezen de voorraad (bijv. het aantal voertuigen op een wegdeel) toch op een continue schaal af te beelden.

Kies je echter voor een discrete schaal, dan moeten we de differentie iets anders noteren, want tijdstap Δt meten we typisch op een continue schaal, en dan geeft de vermenigvuldiging (Φin, t - Φuit, t)·Δt typisch een reëel getal. Het idee van de differentievergelijking blijft precies hetzelfde, alleen kunnen we "wat er bijkomt" en "wat er afgaat" niet als een continue stroom weergeven. In plaats daarvan geven we weer "wat er in de tijdstap bijkomt" en "wat er in de tijdstap afgaat", en die hoeveelheden zijn dan aantallen (dus dezelfde eenheid als die van de voorraad). De differentievergelijking noteren we dan bijvoorbeeld zo:

Vt+Δt = Vt + Nin, t - Nuit, t

met dan als vergelijking voor "het aantal dat er bijkomt" bijvoorbeeld de afgeronde waarde van een reëel getal:

Nin, t = ⌊Φin, t·Δt + ½⌋    (zie Notatie van vergelijkingen).

Merk op: Door zo af te ronden zal een constante stroom structureel te hoog of te laag uitvallen. Dat kan de validiteit van het model beperken. Daarom verdient het bij deterministische modellen de voorkeur om discrete stromen als continue stromen te modelleren.

Wat als stroomgrootheden stochastisch zijn?

De in- en uitstromen van een voorraadgrootheid kunnen stochastisch zijn. Zo is bij een aankomstproces het aantal aankomsten in een tijdstap een toevalsgetal uit de Poissonverdeling:

Nin, t ~ Poisson(λ)

De parameter λ staat daarin voor de gemiddelde waarde van dat toevalsgetal en is vaak een reëel getal. Bij een aankomstproces staat λ dus voor de aankomstfrequentie per tijdstap. Als de aankomstfrequentie f bijvoorbeeld 10 aankomsten per uur is (dus f = 10 #/h) en de tijdstap is één minuut (dus Δt = 0,01667 h) dan is λ = f·Δt = 0,1667 # (dus λ heeft dezelfde eenheid als Nin). Gemiddeld is er dan om de zes tijdstappen een aankomst.

De aankomstfrequentie f (in #/h) is dus te vergelijken met de stroomsnelheid Φ (in bijv. m3/h) bij een continue differentiaalvergelijking.

Om weer te geven dat de uitstroom per tijdseenheid een random percentage is van de voorraad, geef je Nuit een binomiale verdeling:

Nuit, t ~ Bin(Vt, p)

De kans p hangt dan direct samen met wat de "gemiddelde verblijftijd" wordt genoemd: als een "ding" in voorraad V gemiddeld d uur in dat "bakje" blijft zitten, is de kans dat zo'n ding uitstroomt gelijk aan de lengte van één tijdstap gedeeld door de gemiddelde verblijftijd van een ding, dus p = Δt/d.

Merk op:

  1. Omdat p een kans is moet p een waarde tussen 0 en 1 hebben, dus moet gelden dat d > Δt. Om dat ook voor lange tijdstappen te garanderen kun je de kansverdeling "schalen" met een groot getal α (bijv. 100 of 1000). Je vermenigvuldigt dan het aantal met α en je deelt de kans door α: Nuit, t ~ Bin(α·Vt, Δt/d/α).
  2. p is op deze manier inderdaad (zoals alle kansen) dimensieloos (h/h). Daarom heeft Bin(N, p) altijd dezelfde dimensie als N.
  3. De uitstroomsnelheid (aantal dingen dat gemiddeld uitstroomt per uur, dus #/h) hangt niet alleen af van de gemiddelde verblijftijd, maar óók van hoeveel er in de voorraad zit. De gemiddelde uitstroomsnelheid Φ zal gelijk zijn aan de gemiddelde voorraad μV gedeeld door de gemiddelde verblijftijd d. Zo heeft Φ = μV/d dus netjes als dimensie #/h.

⊕Oorsprong

Het voorraad-stroomdiagram is bedacht door Jay Forrester (1918-2016). In zijn boek Industrial Dynamics (1961) analyseert Forrester industriële systemen alsof het hydraulische systemen zijn: complexe netwerken van reservoirs ("bakjes met water") die met elkaar verbonden zijn via leidingen, waarbij de stroom door een leiding m.b.v. een kraan kan worden geregeld. Het voorraad-stroomdiagram wordt daarom ook wel een "bakjesmodel" genoemd.


Zie ook