Cory Welch gave a paper at the 2017 International System Dynamics Conference on why and how he uses Analytica for system dynamics (SD) models. He has extensive experience with systems dynamics, starting from his graduate studies at MIT, where the methodology was first developed. Max Henrion, CEO of Lumina Decision Systems, the makers of Analytica, was intrigued and interviewed Cory about the paper. The original interview is posted on Lumina's website and is reproduced here (with minor edits) with permission.
Before we get into your paper, how does Systems Dynamics (SD) differ from other approaches to modeling?
Systems Dynamics has two key aspects: First, it models stocks and flows. Stocks are accumulation of stuff – physical stuff like water, money, people, or carbon dioxide – or nonphysical things – like one’s expectation of future prices. Flows are rates of change stocks, representing flows into or out of a stock. Second, it represents feedback loops between stocks and flows. Negative feedbacks include balancing cycles that move towards a target or equilibrium or that resist change by “pushing back” on the system. Positive feedbacks accelerate changes, such as where a new technology like electric vehicles get cheaper as a function of the volume produced, which drives faster adoption. Feedback loops, positive and negative, and their interaction with stocks, generate the complex nonlinear behavior typical of dynamic systems.
I took several courses in grad school while pursuing an MBA at the MIT Sloan School of Management.
I first built SD models using Vensim, the most commonly used package in the SD community.
I learned about Analytica at NREL [the National Renewable Energy Lab in Colorado]. NREL did an exhaustive search for a new platform for a complex energy-economic model – at the end of which they selected Analytica. I soon learned that it had much in common with classical SD software, but had several valuable additional features.
It was very easy to learn. Its array abstraction offered so much more flexibility and ease in creating models than other tools, including Vensim and Matlab, both of which I’d also used a lot. I liked Analytica’s ease of use and user interface and ability to see how model is constructed.
I’ve wanted to write it for many years. It’s a bit of a shame that most of the SD community is unaware of Analytica and are therefore limited in the kinds of models they can build. I wanted to show how easy it is to create an SD model in Analytica with some minor tweaks.
A primary similarity is that they are icon-based visual modeling tools that show relationships between variables with icons and arrows. You click to open variables and see their formulas. They both make it easy to add documentation to your model.
The biggest differentiator between Analytica and not just Vensim, but all SD platforms, is the ease with which you can construct multidimensional models. Analytica’s Intelligent Arrays makes that much easier. It takes a lot more programming effort in other platforms.
Its influence diagrams and Intelligent arrays.
Another big one is optimization. Other SD platforms have limited optimization capability, using best fit for just a few parameters. Analytica can automatically formulate an optimization problem after you define decisions and an objective.
I have developed models for which it automatically formulated and solved millions of linear programs (LPs). For the Northwest Power Council, I created large nonlinear program (NLP) that is stochastic and dynamic. Within each model run, it solves many LPs for optimal dispatch of electric power from multiple power plants. It also adds new generation capacity, gas, wind, or solar, to minimize system cost under multiple constraints, meeting energy and peak demand over a random sample of futures, representing uncertainty about demand, costs, and many other factors. It runs thousands of LPs for each run and does hundreds of Monte Carlo runs to represent uncertainty over possible futures. That combination would not have even been possibility in other SD platforms. But it still models all the stocks, flows, and feedbacks. So I get the best of both worlds with Analytica.
For any model with more than two dimensions, which is most models of any consequence. Dimensions may include time, of course, for dynamic systems, uncertainty scenarios (Monte Carlo runs), different plant types, geographic regions, and so on. Also, if the model uses optimization. And especially, if all of the above, dynamics, uncertainty, optimization, and so on. With Analytica the actual coding is far simpler than any other platform I have worked in.
I primarily use Analytica for the modeling I do. My firm also uses R for analytics with large data sets.
The International Systems Dynamics Conference in Cambridge, MA in August 2017.
People tend to get stuck in their ways and find it hard to use different tools even when locked into an inferior technology. For example, look at how many people still use MS Excel for modeling. But a small number of people latched onto it. And one person said my talk made his whole trip worthwhile!