Archive for August, 2010

System Dynamics Conference in Seoul

August 10th, 2010 No comments
isee systems is proud to have sponsored the 28th International System Dynamics Conference held in Seoul, Korea last month.  We especially enjoyed supporting the conference again this year through the Barry Richmond Scholarship Award.   The scholarship was established in 2007 to honor and continue the legacy of our company founder, Barry Richmond.  Barry was devoted to helping others become better “Systems Citizens”.  It was his mission to make Systems Thinking and System Dynamics accessible to people of all ages and in all fields.
Presenting the scholarship in Seoul was isee’s longtime consulting and training partner, Mark Heffernan.  Mark had this story to tell about Barry:

I first met Barry 20 years ago, when I had to trudge through the snow to get to his small wooden office.  I was building a discrete event model using STELLA and I wanted him to make some changes to the software so I didn’t have these “egg timer“ structures everywhere.  Barry was horrified with what I had done with his software and said words to the effect that it’s not meant for that, it was created to spread the gospel of System Dynamics.  Despite the fact that I was a civil engineer, he encouraged me to take a look at SD.  Such was his passion and conviction that 20 years later I’m still attending this conference.”

Tony Phuah accepts Scholarship Award from Mark Heffernan

Through most of his career Barry saw education as the key to spreading Systems Thinking.  As a teacher and a mentor, he dedicated much of his time to developing tools and methodologies for learning.  It is fitting therefore that this year’s award was presented to Tony Phuah, a Master’s student in System Dynamics at the University of Bergen.

Tony’s work includes an experimental study that explores the question: How can we improve people’s understanding of basic stock and flow behavior?  His experiment uses two different methods for teaching stock and flow behavior — the standard method (using graphical integration) and a method he calls “running total”.  Tony presented his paper at a parallel session during the conference and it can be downloaded by clicking here.  Although the results of his study favor traditional methods for teaching stock and flow behavior, we all should be encouraged by the work being done to try to improve Systems Thinking education and communication.  In Tony’s own words:

Speeding up ‘Systems Thinkers beget more Systems Thinkers’ growth will make us one step closer to Barry Richmond’s vision of a systems citizen world.”

Congratulations Tony and thank you Mark for helping us to celebrate Barry’s passion!

Applications for the 2011 Barry Richmond Scholarship Award will be available on the isee systems and System Dynamics Society web sites.  Check those sites for more information.

What is Delta Time (DT)?

August 3rd, 2010 15 comments

After reading Karim Chichakly’s recent post on Integration Methods and DT, I was reminded that delta time (DT) has always been a tricky modeling concept for me to grasp.   Beginning modelers don’t usually need to think about changing DT since STELLA and iThink set it to a useful default value of 0.25.   But once you progress with your modeling skills, you might consider the advantages and risks of playing with DT.

The DT setting is found in the Run Specs menu.

By definition, system dynamics models run over time and DT controls how frequently calculations are applied each unit of time.  Think of it this way, if your model was a movie, then DT would indicate the time interval between still frames in the strip of movie film.  For a simulation over a period of 12 hours, a DT of 1/4 (0.25) would give you a single frame every 15 minutes.  Lowering the DT to 1/60 would give a frame every minute.   The smaller the DT is, the higher the calculation frequency (1/DT).

Beware of the Extremes

A common tendency for modelers is to set the calculation frequency too high.  Without really thinking too hard about it, more data seems to imply a higher quality model – just like more frames in movie film make for smoother motion.  If your model calculates more data for every time unit, its behavior will begin to resemble the behavior of a smoothly continuous system.  But a higher frequency of calculations can greatly slow down your model’s run performance and more data does not directly translate to a better simulation.

Beware of Discrete Event Models

Another situation where DT can often lead to unexpected behavior is with models that depend on discrete events.   My eyes were opened to this when I attended one of isee’s workshops taught by Corey Peck and Steve Peterson of Lexidyne LLC.

One of the workshop exercises involved a simple model where the DT is set to the default 0.25, the inflow is set to a constant 10, and the outflow is set to flush out the stock’s contents as soon as it reaches 50.   This is how the model’s structure and equations looked:

Discrete Model

Stock = 0

inflow = 10

outflow = IF Stock >= 50 THEN 50 ELSE 0

I would have expected the value of the stock to plunge to zero after it reached or exceeded 50, but this graph shows the resulting odd saw-tooth pattern.

Sawtooth Model Behavior

The model ends up behaving like a skipping scratched record, in a perpetual state of never progressing far enough to reach the goal of zero.  (Click here to download the model.)

What is happening in the model?  In the first DT after the stock’s value reaches exactly 50, the outflow sets itself to 50 in order to remove the contents from the stock. So far so good, but now the DT gotcha begins to occur.   Since the outflow works over time, its value is always per time.  To get the quantity of material that actually flowed, you must multiply the outflow value (or rate) by how long the material was flowing.  When DT is set to 0.25,  the material flows 0.25 time units each DT.  Hence, the quantity of material removed from the stock is 50*0.25 = 12.50.

Suddenly we are in a situation where only 12.50 has been removed from the stock but the stock’s value is now less than 50.  Since the stock is no longer greater than or equal to 50, the outflow sets itself back to 0 and never actually flushes out the full contents of the stock. 

So what do we do?  One solution to this problem would be to use the PULSE built-in to remove the full value from the stock.   Here’s what the equation for the outflow would look like:

outflow = IF Stock >= 50 THEN PULSE(Stock) ELSE 0

(Note: This option will only work using Euler’s integration method.)

Further Reading

STELLA and iThink have great help documentation on DT.  The general introduction provides a good explanation of how DT works. The more advanced DT Situations Requiring Special Care section focuses more on artifactual delays and the discrete model issues mentioned in this post.  Delta time and resulting model behaviors are reminders that system dynamics models run over time, but they achieve this by applying numerous discrete calculations in order to simulate the smooth behavior of actual systems.

Categories: Modeling Tips Tags: ,