System Dynamics for Beginners Hands on Training
By System Dynamics Society
Summary
## Key takeaways - **Limits to Growth Archetype**: The 'limits to growth' is a common system dynamics archetype where growth creates conditions that inhibit that growth, seen in examples from bacteria in a flask to human populations. [00:18] - **Behavior Patterns: Exponential, Sigmoid, Overshoot**: System behavior can be exponential growth (no limits), sigmoid curve (limits with no delay), or overshoot and oscillation/collapse (limits with delays). [02:49] - **Modeling Limits to Growth in Stella**: A basic 'limits to growth' model can be built in software like Stella, starting with population, birth rate, and death rate, then adding carrying capacity to influence death rates. [10:04] - **Impact of Delays in System Dynamics**: Introducing delays into a system's response to limits, such as a 30-year delay in death rate response to carrying capacity, can lead to overshoot and oscillation patterns instead of immediate stabilization. [27:16] - **Software Differences in System Dynamics**: While Stella, PowerSim Studio, and Vensim differ in interface and some quirks (like case sensitivity or error reporting), the core System Dynamics methodology and object types remain consistent. [46:21] - **Outside-In Modeling Approach**: A recommended approach to building models is 'outside-in,' starting with constants, then stocks, then flows and auxiliaries, to manage logic, units, and ensure adherence to the System Dynamics methodology. [49:38]
Topics Covered
- The Basic Limits to Growth Model: Growth Inhibiting Itself
- Overshoot and Collapse: When Growth Exceeds Limits
- Exponential Growth: The Result of No Limits
- Accessing System Dynamics Recordings and Resources
- System Dynamics Philosophy: Structure Determines Behavior
Full Transcript
my screen here
okay
okay can you all see that
yes okay great okay so again
um good awesome okay so again limits to
growth is a very common archetype or
structure in System Dynamics you'll see
it in many different types of models and
context so knowing how to build this
basic model type is is very helpful
because it's something you can draw on
for a range of different problems right
and basically what this refers to is
when a population or an organism or an
institution or anything is growing and
while it is growing it creates
conditions which then inhibit that
growth right so you can think of it as
for example bacteria in a an Erlenmeyer
flask or you know a beaker that as they
the population of bacteria in that flask
is growing they're producing waste
products which then start to poison the
population and limit that growth right
um you know this can be applied to human
population it can be a applied to you
know the oil sector right are they
relevant for Nigerian audience that as
uh we're producing more oil there are
more oil spills which create problems
and backlash to that industry so as
something grows it's creating conditions
that inhibit that growth that's the
basic limits to growth model this is a
very very famous model that was
developed
um you know by a very famous group of
System Dynamics modelers back in the in
the 60s and 70s
um so there's a lot there I'm not going
to get into all of that now but you can
read books about this if you want to
um yeah Jurgen randers danella Meadows
and Dennis Meadows for example
okay so basically what this model
structure looks like uh in a causal Loop
diagram format is that you have a
population that's growing and I think
we've talked before about you know
reinforcing and balancing Loops right
this audience I hope is familiar with
that terminology so the bigger the
population
um you know the more growth that you
have because you have more people having
more babies or more bacteria reproducing
more or whatever your thing is right but
then they also are producing
um effects which lead to those limits
right so for a human population it might
be as the population grows you have more
pollution you have more conflict you
have more disease whatever it is that's
then kind of leading to something that
inhibits that growth so the growth is
reinforcing and the limits to the growth
are balancing
okay
um and so what Behavior does this
produce
um well if there are either no limits or
the limits are very far off or the
limits are themselves growing uh you get
exponential growth right because that's
when the reinforcing Loop is dominating
you know if you have a human population
that's growing in a very well resourced
environment and there's basically
at this point no limits to speak of
you're going to get exponential growth
however if you have that environment
um and those limits that are giving uh
instant and accurate
um uh responses to the growth then
you're going to see this kind of sigmoid
curve right because you're going to have
at first exponential growth and then as
the balancing Loop starts to come in and
dominate that growth is going to slow
until it approaches zero at the limits
right
um so again this is only if you have
signals from the limits that are you
don't have a delay effect right you have
signals from the limits that are
immediate and that the growth responds
to those those limits and we'll see what
this looks like in a minute when we
build the model
um more commonly you're going to have
more of an overshoot and oscillation
pattern right and this is what happens
when the signals from the limits or the
response of the balancing Loop is either
is delayed or you have the limits
themselves might change right so if
you're in an environment where
um you know your the population is
growing producing pollution and that
pollution itself harms the environment
such that then it is less able to
accommodate a growing population then
you're also going to lead to this
pattern in an extreme version of this
pattern is the overshoot and collapse
right where you exceed the limit so far
that you degrade the resource to the
point where it cannot recover
and we have many examples of this in the
real world from the collapse of North
Atlantic Fisheries to
um you know the erosion of topsoil and
the American Plains during the Dust Bowl
where you just overshoot the limits so
far that the system collapses and cannot
recover right and so this happens when
uh the there's a significant delay in
the signals you're getting from the
limits uh or when there's extreme
degradation of the resource okay so that
was a whirlwind introduction
so let's uh let's try building a basic
limits to growth model
um and here again is the is the patterns
right so exponential growth when there's
no limits uh sigmoid curve or s-shaped
growth when there's limits but no delay
and then either overshoot and
oscillation or overshoot and collapse
when there are delays
okay I think that oh um and then yeah I
just had a few more examples of what
this could look like in the real world
um so it doesn't necessarily have to be
a population
uh here's a I pulled out a few examples
of limits to growth models from the
literature so this one is talking about
um what happens when you are over
pumping your groundwater table right so
the groundwater is helping your
agricultural growth but then at the same
time you're producing conditions that
will eventually inhibit that growth
because you're drawing down the
groundwater you're depleting the
resource right so there's a limits to
growth
um or common one is when you have a an
industry that's growing right and as you
are creating more customer orders you're
and selling more products you get more
Revenue which leads to new product
development uh but then eventually your
company is going to kind of overgrow its
ability to provide
uh these products and because it's
becoming too complex and you might have
um you might have a a overshoot and
collapse or overshoot an oscillation
type of thing happening
and then on a personal level you know
thinking about how you're trying to
um manage your metabolism manage your
weight you can also have a limits to
growth thing there so the point I'm
trying to make here is that
um there's a lot of different limits to
growth patterns that show up in
different kinds of systems so this is a
very common pattern and it's something
that you can reproduce in a system of
your choice
okay
any questions about that before we try
to build the model and so um
I will should I take us to about uh 10
40 I'm gonna say right
um
and then Len can take over is that about
right I'm just trying to look at the
timing here
any of the organizers want to
chime in when should I try to wrap up
I think a half an hour more would be
great
okay sure perfect okay so I will I will
go till like 10 45-ish and then and then
Len can take over okay
um and yeah so any questions so Victor
is the challenge is a big city so right
okay so yeah if you're saying a big city
could also exhibit a limits to growth
pattern for sure you know as the city
grows it's creating uh complexity and
challenges uh you know maybe drawing
down resources or creating traffic right
that's going to inhibit some of the
growth of that City absolutely you could
apply limits to growth model to that
um
any other questions
okay all right well let's get into it
and I can
um
show you all how to uh build a basic
limits to growth model
um
so I'm going to do it in Stella but if
you have ven Sim or another modeling
platform feel free to open that as well
and hopefully you can still follow along
um the platforms are very similar you're
going to be you know especially when
we're doing something relatively simple
they're pretty similar so you should be
able to follow along hopefully but if
you have any questions
um you know feel free to to pipe up I
know there's events and experts here too
other than me that can also help so you
can even put something in the chat and
if I don't see it someone else might get
it
um okay so let me share here and I will
walk us through this
hello Lara yeah
sorry to jump in so I would suggest we
populate our questions in the Q a or in
the chat box so we'll then take
everything together towards the end that
way we're able to save some time
yeah yeah that's fine and just just um
yeah because it is going to be a little
bit hard for me to kind of be
demonstrating the model and checking the
chat and you know so um if if somebody
else has if somebody puts a question in
the chat and somebody else
that would be that would be great so
feel free
yeah almost all the questions so I'll
let you know okay great but I'm also
saying that like we have some uh some
more advanced modelers on this call I
know so if somebody puts a question in
the chat that somebody else has an
answer to feel free to answer it does
not have to be me if you know the answer
so great yeah
awesome awesome okay sure
um
okay yeah and uh for example I see uh
Abu just asked a question which is
better uh feel free to weigh in there's
different opinions on this and and
anyone who's used them feel free to
weigh in and I'll answer at the end but
for now let me go into
um into demonstration here okay
let's see so
um we are going to build a basic limits
to growth structure and it's going to
look like this okay so I'm gonna do it
based on human population in our poultry
model we based it on poultry population
basically we had population of chickens
growing and then things like climate
change and crowding um and the Imp you
know the Confluence of crowding and heat
events kind of coming in and limiting
that growth so it is the basic limits to
growth model
um but for this model we're going to
look at uh human population so I got my
new model up here
I got Stella can you all see that
sometimes when I switch screens with the
with still it doesn't
you can't see it can you see the the
model page
yes I can okay
so a short question do you have to
install it on your PC or or can you do
it also on the web
uh there yeah there is a web version I
believe I have not used it uh so if
somebody has please weigh in
um you can download a free trial version
of Stella you can also download a free
version of vencim uh so there's many
different options
um but like I said if you know if you
have it uh in front of you to follow
along that's always the the best way to
learn and my uh experience you know if
you kind of listen to it it's not quite
as effective so
um yeah so feel free to go ahead and and
pull that up uh if you have your
modeling software in front of you that
would be great
um so I'm gonna I'm gonna reproduce this
basic stock and flow structure which you
just saw right so we have our stock I
can't spell this is always the problem
when I'm typing in front of people okay
uh and let me zoom in a little bit here
so you can see that a little bit
okay so we have our population here okay
that's our stock
remember stock is something that is an
amount of something right that can be
growing or declining and then we have
our uh births flow coming in
and we have our deaths flow coming out
okay
so this is the same thing that we had
with our poultry but in this case I'm
going to say it's like a human
population and when I build a new model
I'm always going to save it
so if my computer crashes I can recover
it so I will just call this the LTG
model or
Nigerian
SD okay
all right so save your model all right
so now we have that basic stock and flow
structure
um but we now have a couple of
converters we need to add in two and and
then connect it all up right so when we
have a um a stock and flow structure
with population we typically have a
birth rate and a death rate that help us
to calculate the birth and death flow so
we're going to put that in okay
all right so I'm going to put those in
okay
I'm gonna have death rate over here
okay
and then the um
the births and debts as you can see are
calculated by multiplying the amount of
population by the birth rate and the
death rate so can you see where the re
where the feedback loops are coming in
right right here this is a feedback loop
because the more population you have uh
that's going to impact the births that
are coming into that population so the
more births you have also the more
population you have the more deaths that
are coming in right
okay
so this is a this is a very basic
population model that I'm building here
well nicer there we go
okay
and you know now that we have the
structure we're going to save it
we're going to put some numbers in it
let me pause a minute here see what the
questions are
okay great thank you Len answering the
question about comparing the two
different softwares yeah
um I will just say briefly that I like
to use Stella uh for teaching because I
feel like it's a little bit more
intuitive interface for very beginners
but as you get into more advanced
modeling
um
they're I think they're much more
comparable and um
yeah but I I often use it for teaching
just because for if you're a brand new
beginner I find it a little bit easier
to learn on
um that's just my opinion however it
costs money uh and
there are student versions of it that
are pretty cheap but it does cost money
okay any other questions about this
basic model structure before I put some
numbers in it
okay all right I'm gonna move on then
okay so here's um here's the numbers I'm
gonna put
okay
um and I haven't put the limits to
growth piece in it yet but I'm just
building the basic population model that
we're going to use to to address this
okay
um so I'm going to say that my initial
population is 1 million and my birth
rate is going to be 0.012 which is 12
births per thousand people
um
so remember I can put numbers in my
model by clicking on it and then going
to the equation tab over here for those
of you that use Stella
so my initial initial population is
going to be 1 million
okay
and I'll put a unit here I'll put people
and then my birth rate is going to be
0.012 like I said okay
that is what I said isn't it let me just
double check
all right yeah
um as I mentioned the births is going to
be an equation that is equal to the
birth rate times the population okay
and the death rate I'm going to set up
is .004
so that's uh four deaths per thousand
people per year now
um I should have mentioned that we're
going to be running this on an annual
time step so remember that everything in
Stella because it is a dynamic model is
per time step right per year
okay so death rate times the population
okay
now I need to set my model run
parameters okay
um and I'm going to do that uh
up here under run specs
okay
I'm going to run the model for 100 years
with a Delta time of one
year
okay
okay
and I'm going to graph my output so I
can see what it looks like okay so I put
a graph down that's the graph here
and I want to graph my stock usually
when you're looking at a System Dynamics
model you want to see how the stock
behaves because that's typically the
variable that you're most interested in
and that's going to exhibit the dynamic
behavior that you want to track right
um so I'm going to go down to this box
here and say that I want a graph
population
okay
and I'm moving a little fast just
because of the you know the time crunch
here
um hopefully you're all able to follow
along okay so now I'm going to run the
model and see what happens
what okay what do you think is going to
happen based on the model I just set up
any ideas
so remember my birth rate is 12 per
000 population and my death rate is 4
per thousand population I'm running it
for 100 years what Behavior do you think
we're going to see based on what I
talked about earlier in the presentation
I think you're nearly exponential growth
yeah good that's what I would expect
right because we don't have any limits
and uh in in this case the uh birth
feedback loop is going to be stronger
than the death feedback loop because the
rate is higher right all right so let's
see if that's true
Yep looks like exponential growth to me
okay
all right now I'm going to put a limits
to growth piece in uh any questions
before I do that about what I just did
or about the model process
okay
um
all right seeing none let me move along
here okay
so now I'm going to add a limits to
growth piece right so this is going to
be a piece that pushes back on the
population growth
by having effect an effect on death
rates so remember we talked about like
one way that could play out is that as a
population grows it's creating pollution
the pollution may be
um you know causing cancers or deaths of
some kind right that's the way that it
could work
um so I'm gonna go in here
and add this structure where I have a
carrying capacity that's an ecological
term meaning the amount of population
that the ecosystem can support
and then I'm going to have that have an
effect on the death rate okay so I'm
going to build that into the model
all right
so I have my carrying capacity down here
and then I have
here and maybe I'll move this so it's a
little bit less messy
connect that up
it's going to come in here
come here
okay and then I also am connecting
um
the population to the effective carrying
capacity because the way that this works
right is that as the population grows
the effect of that pollution or that
um you know carrying capacity impact is
going to be stronger right so I have to
take both those things into account
so let me put that in there there's an
arrow
okay
here we go
all right and now I need to put numbers
on it need to parameterize that piece of
it okay
um so I'm going to set the carrying
capacity of the system at 1.45 million
population to be clear I'm just kind of
making up these numbers as a simple
model demonstration if you were going to
do this in a real system you could try
to parametrize this based on real data
of some kind
um but these numbers are basically made
up
um
so I'm going to make this into
one million four hundred fifty thousand
okay now there's many ways to
look at this type of impact the
effective carrying capacity and death
rates the way I'm going to do it is
through a graphical function so this
might be a little bit new for uh folks
um
but basically what I'm going to do is
I'm going to set up the impact of the
carrying capacity on the death rate so
how strong that impact is
is a function of how close the
population is to its carrying capacity
so for example if the population is
getting close to
1.45 million which is the carrying
capacity there's going to be a really
strong impact of that on the Death Race
um which is what this graph is
describing right
um
so
I am going to go in here
back to Stella
okay
and the way that we're going to do this
is we're going to first enter into the
equation box
that we want this to be a function of
the population divided by the carrying
capacity okay
so I'm going to put that down here
then I'm going to go to this little
graphical
tab okay down here graphical function
and I'm going to hit that I want my my
function to be graphical
and you can then draw what you want the
shape of this to look like okay so
notice that down here on the x-axis I
have population over carrying capacity
that is the independent variable and
then I have the effect of the carrying
capacity on death rates up here
and so you see that this is going to
vary between about zero and two so in
other words the population can be up to
two times the carrying capacity or two
times over what the carrying capacity is
and then the effect of the carrying
capacity and death rates is going to
vary between 0 and 50. again I'm kind of
making up these numbers but I'm I'm
trying to make it be like a stronger and
stronger impact as as this gets higher
right
so I'm going to put this here
this is going to be between 0 and 50.
and then Stella has this great little
thing where I can basically draw a
graphical function
right and I'm going to make it kind of
uh
a curve like this so you can see that
like
the effect is 0 up to when population
gets about to about like you know
I think that's like 60 percent of what
the carrying capacity is
um so you can play around with this you
will see that changing this graphical
function does have a pretty big impact
on what your um
on what your model is going to look like
that's one of the things I'd love for
you to play around with you know once
I'm done with this but I'm going to make
it look a little bit like that okay
yours might look a little different
that's okay
because the point is to play around with
it
all right so there we go I'm done with
that
okay and you can see that because I made
it a graphical function I have a little
squiggle here that's what that means
it's a graphical function
okay and then I'm going to make the
death rate equal to
whoops come here come back here I'm
going to make the death rate equal to
.004 times the effective carrying
capacity so the effective carrying
capacity is going to increase the the
death rate
okay
so I'm going to change that equation
and put the effective carrying capacity
into that equation
all right
now I'm going to run the model again
and see what happens
okay whoops
so now it's a little hard to see what
the scale here
um but you can see that rather than
increasing exponentially now I have kind
of leveled off and have a little bit of
a sigmoid growth curve happening right
so the population is not going much
above a million
so remember I said that we have more of
a sigmoid growth curve when uh the
response to the limits is instantaneous
right there's no delay in here I haven't
put a delay in the function yet so as
soon as that population hits you know a
level of that's close to carrying
capacity there's an immediate signal
that increases death rates and we have a
decline in or a multiplier of the death
rates right so we can kind of see that
by looking at um
we can see the death rates here you know
initially go up and then stabilize uh
which is driving this Behavior right
okay
okay
now I'm just going to do one more thing
quickly and I know I'm going through
this very quick
um but to see a different type of
behavior
let's see what happens when we put a
delay in here okay
so Stella has a built-in function called
a delay and what this means is that
um the equation or the signal takes a
certain amount of time right to to
perpetuate through the system
um
so we're going to change our equation
for the death rate to have a delay in it
and the delay built in is is structured
like this there's the input which is the
equation there's a duration of the delay
and then these there's the initial value
okay
so in our case the input is going to be
the effective carrying capacity times
the death rate
the delay is going to be let's say 30
years 30 is the time unit so 30 years
and then the initial value is going to
be .004 because that was the initial
death rate
so let me go in and change that
I'm going to put the delay in here
and like I said it's a built-in so you
can find it in the menu over here
a lot of different kinds of delays we're
not going to be worrying about that
right now so like I said uh the the
function is the input comma the time
and then the initial value okay
all right
and you know what I'm going to make this
graph comparative so we can see the
difference between the two runs here
all right
where the three runs we're going okay so
now that I put a delay in there let's
see what happens
and lo and behold we have now
uh an overshoot and collapse or
overshoot an oscillation we could run it
for longer to see if it's going to
recover if it's an overshoot and
oscillation pattern but you can tell
that you know it's different than our
second run which immediately stabilized
at a level below the carrying capacity
right
um in this case because we have a delay
the population grows past the carrying
capacity and then suddenly gets a
stronger signal and comes back down
right so that's the overshoot and
oscillation pattern and then this is our
run one here where we just had the
exponential growth and we hadn't added
in that carrying capacity yet so right
here in this graph you can kind of see
those three behaviors that we talked
about over here which is the exponential
growth the um the sigmoid curve it's
hard to see the sigmoid because of the
scale on this graph but it is a it is a
sigmoid and then the overshoot and
oscillation pattern okay
all right I know that was really fast
any um
in like five the five ten minutes uh any
any questions about that so that is a
basic limits to growth model that's what
it looks like so you can use this to
model a wide range of systems any system
in which you have that limits to growth
pattern where you have something growing
but then you also have the growth
impacting the conditions of that very
growth uh in a negative way
so you can use this in a wide range of
contexts the poultry model we used it
for poultry sector growth and then we
looked at how that impacts things like
demand for poultry and crowding and heat
impacts that are going to impact the
growth
all right any questions I'll leave this
up here while I
answer questions so you all can take a
look at the structure still
or for those of you who have been
following along anything that you're
running into any problems or or
clarifications as you're trying to build
the model
okay well maybe I guess was this helpful
like was this um was this at the right
was this at the right level here because
uh is it over okay
I see some thumbs up I I had no idea
what the audience is going to be in
terms of like your level of System
Dynamics so this was like this is the
lesson I do on like week three of my
class
hoping that was about the right level
um
quite nice explanation so I'm sorry I
have not installed this Della already
but uh I will try it afterwards
okay great yeah that is the thing
the thing up and do it step by step
um because that's what that's the way I
would recommend learning it yeah you
really have to do it you have to model
by doing yeah
uh Lori have a question
um sorry I just generally with the lead
uh you presented this application and
you switched to the PDF file will this
PDF file be available after this session
sure yeah I can make it available
actually I can pop it in the I think I
can pop a PDF in the chat right now
let's see
yeah just just if you're going to cite
it or use it just just cite me please
because this is a something I developed
for my class so it's oh sure yeah just
don't yeah thank you I will put it in
the chat
all right where if there are no further
questions I guess uh uh Lena can be uh
over to you unless there's anything else
okay I'm I'm ready wait a few seconds
here
sorry Lynn thanks a lot Lara it was very
explanatory so uh I believe that's why
you don't have any questions yet so let
land take over and we'll see if there
are other questions towards the end of
the meeting
okay that works um I am definitely going
to have some issues because I I'm not at
home and I don't have my dual monitor
system
so I'm running off my laptop so please
forgive me if you see weird screens as I
switch back and forth
so I'm going to do a share screen
here and I can only share one screen so
that's the one that's going to be shared
and now hopefully you see a
um
ven Sim copy on the left and a power Sim
Studio copy on the right
can someone give me a signal yes okay
all right now I'm going to go to
PowerPoint
because also
uh as Laura said I wasn't 100 sure
what might be happening today
so
I too am we're using a little bit of
training material and some of you have
seen this before
just uh
a plug for System Dynamics here
and I every year at the conference now
for I don't know how many years I've
done a
a webinar called starting from scratch
so I've got this nice
clean slate in Stella or vencim or
Studio or Insight maker and I want to
start putting objects on it and I found
in my teaching that a lot of people get
really lost when they're converting
ideas and mental models
from their minds or from paper and
putting them into software
so I'm going to try to go through this
quickly first I ask the question what is
it we do when we create a model
it's only an abstraction of reality
uh also I need somebody to watch the
chat I forgot to say that
okay what else are we creating are we
creating an interface a flight simulator
to allow access to people other than
ourselves
maybe our professor maybe a client maybe
a organization what would we like them
to see
and when we put that model in that
interface together we have what I call
an application most of us don't build
applications we just build models
and then finally
and I I'm assuming Laura's got students
they probably have to write a report
about the model and its results
so I I try to think about that before I
start working
and here's some terminology I use let's
say I'm building a model that's a bit
bigger than what Laura showed us and one
part of it might be that population
one part of it might have something to
do with the economy
this is from my background in in surface
and groundwater modeling and energy
modeling and I call these modules
so I made a conscious decision as I'm
modeling to separate the kinds of things
I'm looking at
and literally separate them on the
screen
unfortunately all three of the major
softwares do it in a very different way
I'll show that to you once I've finished
that I have what I call the model
then I could put an interface on it
and I would have an application and as I
said earlier you may not be adding an
interface to your model
that's a lot of work believe me
some working definitions
I call a module a separate part of a
model
it can stand alone with little exchange
of variables with other modules
so Laura's example of the population
model imagine reusing that in many many
different problem situations
you just change the names of the
variables obviously you change the
values but you can reuse that construct
and in the last webinar I talked about
archetypes of which limits to growth is
one
reusable
and a model is just everything you did
all the code all the variables you
created to represent your problem
and finally an interface is access to
the model
one quick question is that do you see
that zoom bar
I hope you don't
okay because it was blocking things for
me all right here we go
forward
so
when you're building a model you have
different kinds of variables
one group of variables I call is the
exogenous
that's data that typically comes from
external sources Laura already mentioned
that we might be getting data from
reports Etc we might have a published
birth rate of published death rates a
published carrying capacity these are
exogenous outside of your system
Dynamics thinking
and then of course you have all the
internal calculations all your
endogenous variables
that's why people engage us to help them
solve problems because we know how to do
that
and then finally well not finally but
you might also create variables just to
enable an interface and remember if
you're not building an interface this is
not really a problem unless you yourself
would like to see the way the data is
presented in a different way
and then finally
as you get better at modeling and get
more experience
you will find that
you'll start creating variables just for
testing and debugging
both your logic your mental model and
how good you are at using the tool that
you use you know Vincent Stella Studio
whatever
that's it
so if you have a variable on your screen
my hypothesis is that it's got to fit in
one of these four categories
most of us are only concerned with the
bottom two
but as you progress in your skill it
will expand
and we don't know how much you're going
to expose to the user
that's why I tried to put some animation
there to show that's a conscious
decision by you and your clients
okay so if you look up on Wikipedia
how many software modeling packages are
there you'll see a whole bunch
and you'll see packages and you'll say
to yourself I didn't know that could do
System Dynamics
well
you can bend and twist it to do System
Dynamics
but the big three I call them
are IC Systems Stella architect
there are multiple versions available
there's a 30-day demonstration free
version
powersim Studio
powersim as is the name of the company
studio is the product it also has
multiple versions it has a studio demo
again a 30-day limit
and then it also has Studio Express
which is a free completely free version
with no time limit and then Ventana
produces vencim again multiple versions
Vincent ple is the free version and
there's no time limit
okay maybe your tool isn't there but the
concepts are still applicable I was
supposed to skip this slide
so this comes from Nikki Zimmerman's uh
presentation gosh sometime in I think
2020 or 2021 it's available at the
System Dynamics Society website
and she talks about the steps in
preparing
the problem definition step
you know identifying key variables
Behavior over time and let's face it we
can't do all that in this session
and then you're going to build stock and
flow diagrams model equations simulate
and finally analyze what you did
so my exercise was actually a population
model for this presentation
and I wanted to say I had an initial
population of a thousand persons
a population a stock a bathtub which is
the integral of that growth rate which
we haven't identified and its initial
value is initial population
and then a growth rate of 1.1 and
depending on what tool you use
there are different ways to specify what
the units are
so it could be 1.1 percent per year
or here's an example of 0.011 that has a
unit of 1 over year
and then finally growth is simply the
population
times the growth rate
okay
and if you can see the top of the screen
there of course I've already thought
about the problem definition I've
identified all my variables
I figured out how long the model would
like to run and I've set the DT the
Delta time
so before before you do anything what
I'm asking is
have you decided what your time unit is
are you doing a model that's producing
things year by year
do you have a time step a DT
and in each of the three major tools
this is where you would find that kind
of thing
has a duration a start and a stop time
been chosen how long will the model run
does it start in year 2023 or is it Year
One
it's up to you
have you established a set of units for
the model even before starting have you
thought about that are you going to
measure humans as
persons are you going to measure them as
people
Etc
what kind of software compatibility do
you want to maintain
almost all three of the major products
have compatibility issues back in time
this shouldn't be a problem for
beginners because you're starting out
now
but let's say you're on the internet and
you Google something and you find a
great Stella model from 1983 and you
find out that the current version of
Stella won't open it that's okay you can
contact the folks at IC Systems and they
will
translate it for you
have you got a naming convention how do
you name your variables
I base my naming on a memo from MIT
that's about 20
two years old
and this is how things are named
stocks have the first letter capitalized
of every major word
flows and auxiliaries are all in lower
case
and constants are in capital letters
and I put this other here as a joke if
you can think of another object then
maybe you can come up with your own
convention why is this important or
useful if you print out a listing of
variables
your reader will instantly know which
variables are stocks flows auxiliaries
and constants
got it
let's skip this last one
okay if you just Place objects on the
screen
here's ventana's fence him this is what
you see
this is what you see in power Sim Studio
and this is what you see in Stella
architect
okay
couple of things about this notice that
they're different
and also notice that they're the same
System Dynamics as a methodology is
limited to a four maybe five different
kinds of objects in a model
okay
notice that they all use arrows
to connect certain kinds of variables
and they use pipes to connect other
kinds of variables
right
but even after today I doubt that any of
you would have any difficulty looking at
a model
in any three of the softwares
you would be able to identify that hey
the rectangles are stocks
these these pipe looking things with
with a directional arrow on them are
flows
and then if you use the naming
convention you would know what the
constants were
what the auxiliaries or Stella calls
them converters were
it's not that difficult because what
we're doing here is implementing a
method in software
this is not Fortran or python or COBOL
or any other Computing language that
isn't constrained by a methodology this
is System Dynamics
see if I can get my cursor to move
okay and as you get uh into this more
and more especially if if you're an
instructor or become an instructor
uh the place I used to work we developed
rules for example notice how I have
initial population as an external
variable here
our programming team which was as big as
30 people said
if the initial value is other than zero
our team requires you to have a variable
called initial something
it's just just a quirk of where I worked
okay now after you put that on the
screen
if you hit x squared in Stella or f x f
of x and Benson
you notice that
the screen goes black
prevents him
Studio doesn't change
and Stella gives you all these warning
messages
okay
here's the problem for simple models not
a big deal
what what I've seen is students will put
30 40 50 variables on a screen and
without identifying them just creating
them and placing them on a screen they
go to the definition window the entire
screen gives them an error and they're
now in panic mode
where do I start what do I do
right don't model this way please
I recommend What's called the outsidian
approach now the only way this works is
if you did some thinking
if you used your protein computer
you know up in your head
to help you plan a little bit so I add
constants first
it distinguishes exogenous from
endogenous
it indicates potential opportunities to
grow the model scope
right
I might have a variable called
I don't know
system dynamicists annual salary
and I put that in as an exogenous
variable and someday I'd like to build a
model to add on
to how that gets determined
that's what I mean by growing the model
scope from a constant
it highlights the potential policy
variables what will people be sliding if
you know what I mean
what will they be able to increase or
decrease
and then finally and probably the most
important part is it determines what
units you'll be using
second I go to add stocks or levels
that sets up unit inheritance
right so if you add a stock and you know
you've got a constant called initial
population measured in people well then
the stocks unit should be people
obviously model transparency
and then I iterate through auxiliaries
and rates
and that helps me to manage the logic
reinforce that inheritance of units
and finally and importantly for us
enforce the SD methodology you can build
non-system Dynamics models with System
Dynamics software
foreign
ER part of this particular presentation
I analyzed
325 models that were submitted to the
conference
there were actually models submitted
that had no stocks in them
couldn't be System Dynamics
so we're going to use the outside in I'm
going to go through this quickly and
then jump to the tool
we're going to do constants then stocks
then flows and auxiliary so your screen
would start to look something like this
in stages
likewise for ven Sim
and likewise for Stella
okay if if you're writing a report for
faculty for clients Etc I highly
recommend this rubric that comes from
What's called the electronic Oracle it's
a textbook quite old
you'll get these slides from Boon me or
kalichi
as you're building you're filling this
in
so that people who don't like to look at
so-called spaghetti
they'll be able to read in prose what it
was you did why you did it when you did
it things of that sort
now let me see if I can get out of yes I
can get out of PowerPoint can everyone
still see the screen
yes okay great so excuse me on my left
I've got Vince him and on my right I've
got power Sim studio and I don't have a
current uh
license for Stella architect so I'm
gonna go grab a variable here
invents him a
and drop it on the screen and since I
know it's a constant I'm going to call
it initial
population
okay and then I'm immediately going to
go up here to define it
and notice what happened
those of your events and users may or
may not know this it changed the writing
to lowercase
you saw me type it in uppercase and it
changed it to lowercase that's just a
quirk invincing
you'll see some magic here so I'm going
to Define it and I'm going to make it be
1000 and what's my unit and I'm going to
do person
I don't like to do plurals typically and
voila Magic
it changed it back to capital letters
because internally
for those who didn't know this vents him
has a switch
that will change
the the case you know upper lower case
structure of an object based on what is
in the object
okay
let's go over to studio and do the same
thing the studio has a separate
construct a separate picture for
constants
and I'm a terrible typist but I'm going
to Define it right here
equals
one one two three
and again syntax is painful
that Studios Syntax for assigning a unit
when I hit enter
it says hey that unit doesn't exist
would you like to create it
I say yes
and a person and persons for plural
they just hit finish
now the nice thing about this at least
from my point of view is I have a
running model in both softwares that
does absolutely nothing
but it's correct it has no unit errors
units are okay
yeah well this is a warning hey you
created a variable but you don't do
anything with it
and Studio doesn't do that it uses that
visual feedback
so if I were to Define this guy and make
a mistake here let's get rid of one of
those
it uses a visual feedback to tell you
when things are incorrect or incomplete
back I could have just now let's close
that I'll use the undo button
get it correct again okay maybe I should
pause
speak up chat whatever
you need to do all right now I'm going
to go did I have any other constants
does anybody remember
I don't know if ROM is still online but
he's seen this many times
I think there's a constant called uh
growth rate so I'm going to grab an
auxiliary
again I'm going to type in
capital letters
I don't have to
then I go to the and I Define
immediately
and if you remember it was 1.1 so in
vents him you would do this as
0
.
011
and the units would be 1 divided by a
year
I think Benson capitalizes here I can
check the syntax
and that one seems to be okay right
notice it kept the capitals because it
knows it's a constant
see I'm a terrible typist
growth rate equals 1.1
I prefer to use percent
notice again syntax differences
Studio has a built-in unit called year
but it's yr
vencim does also but it's called y-e-a-r
done now I put my stock
and that is population
right
it doesn't like that
so I'm going to connect initial
population to population
go back and Define population
and the initial value I'll just pick it
from this list because I'm a terrible
typist
and vincim is still upset and the reason
for that is
invents him this is a stock
but a stock that has no inflow and no
outflow
so vents him rules say it's not
completely defined
that's just a quirk invincing
I'll do the same in studio
population
[Music]
I'll grab a link
it's what this is telling me is yes
you've linked it but you're not using it
that's what the yellow pound sign and
this is saying hey you didn't give me a
definition
so I'll open this guy
and I'd like you to look right here with
your eyes if you can read this under the
word unit I will double click population
and Studio inherited the unit that's
what I meant by unit inheritance a
little bit earlier in the slides
and then both you'll see in vents him in
a minute but both Venison and Studio
change the
the style of the arrow
to say this is an initializer
it's not providing information
throughout the model run it's just an
initializer
all right and then finally we had a
growth rate
whoops I clicked off it
I often do that in vencim
I better delete it
do it again
or WTH growth I'll call it
get another connector connect this to
this connect this
to this
move things around a little bit maybe
make this a little prettier
see if I can do that there we go and now
I'll Define growth
and growth is simply the growth rate
times
that's another habit of mine I like to
keep spaces between operators
times population
ah
I do a lot of work in Vincent but you
probably can tell what's my obvious
choice
all right and population still acting
weird
check
incomplete equation for population how
can that be
what
what happened to the whole definition
that's right it's just the growth let me
check syntax oh and it says it's okay
that's another vencim Quirk by the way
notice the change in color here that's
to show it's an initializer
let me do that quickly in studio
did it wrong
sorry about this
I'm having
it's the demo effect right
growth get my link or connector link
population to growth
and then like growth rate to growth
and go in here and simply say growth
rate
base
times
population
and it inherited the unit figured it out
done two working models
I cheated a little bit I didn't
do the stop time the start time all of
those kinds of things did not do that
so if we go back to
the little session we did on archetypes
way back in March or April
um I was looking at the naira conversion
problem and saying are there examples of
the archetypes including limited limits
to growth
in this whole process of converting old
naira into new naira bills currency
and we talked about a little bit about
this simple model which didn't go very
far
and is very uh mechanistic in some sense
just old naira becoming new right naira
at a certain rate per day of people
trading them in
and we talked about some some of the
things that Laura hinted at
the softer variables the um
lookups some people call them look up
some people call them dimensionless
multipliers Etc and you'll have access
to all of this and I promise I will
convert this to Ben Sim
for you and maybe someone who's a Stella
user can volunteer to convert this model
to Stella
and I can just run it
and remember if you weren't at the
earlier session this is based on news
articles
concerning that currency conversion that
caliche suggested might be a good
problem
okay what I'm going to do in the chat
once I get out of these screens is
[Music]
um
give you all the archetypes in Stella
Vincent and studio if you don't have
them already
so let me minimize these guys
here do a stop share
and see you
okay any questions right now I know that
was also quick
also I will put the archetypes
um webinar slides as a PDF which is
I'll stick that also into the uh the
chat here and just to see if you give me
a second
thank you
they should be able to do that
if I can find it
so here let's go with the uh here comes
the Stella
archetypes
give me a second here I'll get the event
Sim those of you are vencing users
and then finally the studio archetypes
which include of course
the limits to growth that Laura talked
about
and
what else
those of you who did not see
the first video
there's the YouTube link to that
and I think that's it for right now
put my video back on
let's let's try a little let's try a
little something here because we have
the power of Zoom
down at the bottom of your screen you'll
see a reactions icon
a smiling face with a plus sign
if you open that
anyone who's taken a formal System
Dynamics class
please click the thumbs up
if you've taken a formal class in System
Dynamics
I guess I have to click the thumbs up
they're starting to come through
great okay so the Assumption then is or
Laura and I were challenged because many
of you have not taken a course before
you might not know what a stock a flow
is conceptually
so that that
I guess that's some information for the
chapter and maybe we can work together
to do things that are even simpler than
this or at least provide you access to
information
right
those of you who
um know about the system Dynamic Society
at systemdynamics.org
there are about
70 or 80 System Dynamics courses listed
there I can't remember where exactly
uh I don't know if caliche was able to
join us
I guess not but there are a lot of
courses listed there
is a tremendous amount of free
information that's not copyrighted and
of course there's a lot of pirated
information that is copyrighted and is
available on the internet
and then if you're willing to wait until
next summer
the society does a very intensive summer
school
you're given a month to work on homework
problems and then
uh there's a four day very intensive
live session to discuss problems
work on models ask questions things of
that sort
but I guess you know I'm trying to uh
give a pep talk
don't give up
don't worry
there are lots of experts willing to
help there's lots of material
maybe via the the Nigeria chapter we can
handle that
but it's a long road I've been doing
this since oh my gosh
I guess I am a grandfather too since
about 1992
and I thought that gee I'm a software
guy this should be kids stuff
it's just software right I can do it
and I learned my lesson very quickly
and then took the courses from MIT
and in you know core System Dynamics and
then a lot of topic courses modeling the
environment strategy Dynamics
Advanced vinsim uh
I forgot all the courses I took
so please don't ah great Laura thanks
for doing that
putting the the society site please go
there
I'm not sure what it costs to become an
official student member nowadays
uh was it 45 or something like that
US dollars
but again there's a lot out there
that's completely free there's also a
mentoring system within the society you
can find that on the website if you
search for Mentor or mentoring
think of anything else when me
got about 10 minutes it looks like
yeah thank you so very much Lynn and
Laura it's been very enlightening and
insightful
I remember you sharing a paper or some
years back about naming conventions and
System Dynamics modeling
yes over there while you're speaking
yeah it will be very useful and insight
um quite helpful for those that are
starting off that way you know how to
label your models right from the onset
so if you could share that it will be
very helpful yes I'm looking for it
right now
the other thing I want to mention is um
if it won't be too much of a bother
if you if we could share your emails
with participants if they have one or
two questions they want to charge you
upon I don't know if that it's okay by
you yeah it's okay if not oh fantastic
uh uh let me get uh
I'm still looking for that paper I know
right it's a d memo what what MIT called
the D memo
okay awesome Laura has already shared an
email so for those on this call if you
have questions you could just chat at
home directly send your questions to our
email uh Len is also okay with it so his
email will be dropped in the chat box
it's
um it's it's been we we had to manage
time so uh there's only a little we
could do in this Hands-On session
but I'm certain that the foundation has
been lead so anyone that is interested
could definitely pick it up from here
the recordings available on society
websites if you go to Society website
and click on Nigerian chapter all the
videos of past sessions are also
available there so make use of this
opportunity
uh so that will be very helpful for
everyone if you're interested
um I do not think there's any other
thing we need to talk about for now so
unless there are other questions and
I've looked through the chat all the
questions in the chat books have been
addressed
the email addresses of Woodland and Lara
in the chat box please Avail yourself of
this opportunity to reach out to them if
you have questions I have a question for
Laura so I'll just leave
hey Laura do you know anybody in
agricultural economics at MSU
uh I do including my husband what are
you no Scott Scott who's the chair
oh yeah Scott he's he's not they just
got a new chair but yes he and I got AG
econ degrees together at Purdue oh
really oh that's so funny
yeah and went to Niger together right
when he was the grad student and I was
doing some Consulting for uh the AG econ
Department oh that's so funny okay I'll
tell him I ran into you when I see him
yeah we had some really good times good
and then for all of my
for my the way I like to say this is
colleagues
friends and soon to be colleagues and
friends in Nigeria
I I don't know if you know this but I
lived in Niger in Niger for a little
over two years
and I learned to speak hausa
so
all I can say is say anjuma
you try that's really nice
day
[Music]
yes please uh thank you very much Lynn
and Laura
um a very interesting presentation I had
of course I take advantage of any
presentation I see here now picked off I
particularly like the idea of you know
the difference
I Love the Way Lynn did it and I also
love uh the kind of guide to presenting
to parents so I am about
concluding my PhD and I'm using a
System Dynamics methodology so I love
that I have a guide like that for my
present uh for writing my report I love
the way I love that guide on how to
present to guide uh to client so I would
love to have because uh I'm a mechanical
engineer so my supervisors are so much
interested in equations and I've got
like uh learn describe it spaghetti so
much of spaghettis I don't even know how
to report that I have a lot of
difficulties
everybody
well and I think I think the question is
maybe for you it sounded like you faded
out a little bit there and David I think
the question was about how do you uh
report on the variables and equations in
your model in standard way and Len you
you had mentioned that
yeah how our report especially the I'm a
mechanical engineer so my supervisors
are interested in
okay so uh
a lot of models sub models that I'm
finding difficulty putting in my
reporting in my final writer
you didn't get it
so yeah sorry I was muted
everything everything that's available
at least the big three all of them have
a way to export equations
right so you're going to have to do some
searching because I'm I'm not familiar
with with Stella but for example here is
hopefully you can see this screen now
here's a listing of the equations it
from the studio model on naira okay okay
and then all of them have features like
what do you want me to show
do you want me to show the value of the
variables do you want me to show the
type of the variables and then they
either export as uh comma separated
values or text or maybe even Excel
format
and that way you can you know if people
want to verify that indeed you're doing
a good job
they can see that
one issue we find with publishing is
sometimes peer reviewers will ask for
the model
and if you have a model that's got like
one that I worked on it had
um
3 300 variables and eight million pieces
of data in it there's no way that a peer
reviewer can manage that and they might
not own the software
so
that becomes a problem that you have to
deal with
but maybe if you just give them an
equation listing like the one you're
seeing here
let me see if I can bring up the ven Sim
has a view called
um
well this is the new Ben Sim
format and now I can't
sorry maybe I should reach out to you
later so that I don't yes but every
every every good tool has a way to
export I'll reach out to you I'll reach
out to you yeah
time
yep yep thank you very much and and that
don't forget that last page I'll be
sending this to bun me the that these
are the pros the text description what
did I do who were my clients what's the
time
um
the time bounds on this model
it's it's also good for you to keep
track of as you're working what's useful
and what's not useful
oh there is still as an equation viewer
you can export it yeah and I'll just uh
you know Len you're you're talking about
this but in System Dynamics you know the
philos the modeling philosophy is that
the really important thing is is the
model structure yes uh you know so the
equation you can have all the quote
correct equations in the model but if
it's not representing the system in a
way that is helpful and is reflective of
the actual Dynamics then it's useless
right so we always want to check the
model structure as well as the equations
yeah
and you know large models start out as
very small models so you have to build
incrementally but that's a really good
point
structure determines Behavior
thank you
thank you yeah that's that's very true
thanks Lynn thanks the other thing boom
me I should mention I don't know if any
of you know
uh kude
I didn't see him here today yeah
um he's a good source of of SD skill in
Nigeria
yes we live well we're together it's
with us on the chapter
I don't know why I couldn't make it
today but he's with us wearing wearing
contacts no problem he's seen enough of
me
we we await the slides your slides yeah
yeah already
yeah I'm gonna prepare that as a PDF and
send that uh maybe I can do it right how
much time have we uh we're right at time
I'll send it to bun me and and kalichi
distribute
uh the meeting recording will be
available on the system Dynamic Society
just go to Nigerian chapter and then
they're also available on YouTube I can
see a question in the chat about that
they're available on YouTube as well
um I I would um for those that have my
contacts because I have the chapter
email you could just request and then
we'll share with you for those that
request right but the link is available
online once you click on YouTube it
takes you straight to the page you can
view watch over and over you can replay
at your convenience and try to follow
the steps
thank you so very much oh Bernard's got
a question on me so can I have only a
short question in the nick of time and
um
so say I hear a question
yes please so only a short question so
maybe this is uh more advanced but uh
the question is when you make bigger
models from uh and can you encapsulate
those smaller models also is there
possibility in in these softwares
I know that both
um Stella and Studio allow the term
might be components
maybe generically would be called a sub
model so you can encapsulate and send
values back and forth
across events him
vincim used to have macros which is
something like that but I don't think it
does as well as Stella and Studio do
in terms of components or modules
um
oh maybe I should mention Laura and I
haven't kept up with Karim and Bob at at
IC but the vendors have lots of free
videos
the vendors of the software themselves
so they're not going to teach you a lot
of methodology but they will teach the
syntax
how do I do this with that
but not not a lot of conceptual content
but a lot of syntax content yeah I mean
the other thing I really appreciate
about Stella I think the help menu is
excellent you know so I mean that is the
it costs money but if you download and
get access to the online help menu and
it really is great it goes through like
here's what this is here's how you do it
here's how you set up the equation
um so Bernard yeah just to shortly
answer your question yes uh all the
softwares have those capabilities yeah
thank you very much
studio also has what's called context
sensitive help
so if you have an equation and you click
on a keyword it'll automatically open
that help to that keyword
which is pretty slick
okay boomi's in charge all right that's
that's great we do want to spillover
anymore for for the questions please
feel free to chat them up via email
oh yeah
you could build a society Nigerian
chapter we'll take on questions as well
and forward them if we can handle them
we will if not before them to learn a
lower and hopefully if we call on you
next time you will still answer us
is that a yes
thank you thank you very much all right
thank you
yeah bye everyone thank you bye-bye yes
I just want to say to learn mongod say
and
Loading video analysis...