Kotlin System Dynamics Toolkit
.We developed Kotlin SD Toolkit, or ksdtoolkit, in late 2019/20 as a tool that is suitable for both modelling large, hierarchical System Dynamics (SD) models (supporting modules) and for automatic generation of interactive simulators for multiple target platforms: desktop, web or mobile using Kotlin programming language.
Kotlin first appeared in 2011 as a statically-typed programming language, with modern, more expressive syntax, null-pointer exception safety, and both object-oriented and functional programming capabilities. It is interoperable with all existing Java libraries and frameworks, and it is Google’s preferred language for Android application development since 2017. Kotlin also excels in developing internal, domain-specific language (internal DSL), which allows adapting general-purpose language (e.g. Kotlin) to solve problems of a specific domain (e.g. system dynamics).
We found that Kotlin programming language is a new, good choice for SD modelling and simulation since it provides many new benefits:
Kotlin has an expressive and concise syntax (in comparison to Java), making SD model definition concise
Kotlin allows us to develop an internal domain-specific language (DSL) specially tailored for the SD domain
Kotlin is a statically-typed programming language (in comparison to dynamically-typed Python) meaning it detects type-errors at compile time instead of failing at runtime
prevents null-pointer exceptions at runtime by tracking values, making SD model robust and stable
Kotlin combines both the object-oriented and functional programming approaches allowing us to develop large hierarchical SD models, reusing previously developed and tested SD submodels as modules
Kotlin is completely interoperable with any existing Java libraries, allowing us to do any data-processing, storing or visualization developed so far in Java.
For the development of Kotlin SD Toolkit we used IntelliJ IDEA (Ultimate Edition, 2019.1 version) integrated development environment for programming in Java/Kotlin languages, from company JetBrains (JetBrains s.r.o, Prague, Czech Republic), the same company that developed Kotlin. We also used: OpenJDK 11 – open Java development kit, OpenJFX – open JavaFX, Gradle – dependency management & build automation tool, Vaadin 8 – Vaadin web framework, and Android SDK – Android software development kit.
The simulation speed was not in our primary focus and could be further improved. A preliminary test on 10 million (1E7) time steps with a very simple SD model (comprised of just one stock and one flow) runs 7.08 seconds on Kotlin SD Toolkit using a laptop computer (Intel i7-8550U CPU at 1.80 GHz with 16 GB of RAM) , while in BPTK-Py runs 153.0 seconds (thus 22x times slower), and in Vensim 6.2 Double Precision runs 30.0 seconds (thus 4x times slower).
Kotlin SD Toolkit in this stage of development has several limitations since we have not implemented: 1) GUI for graphical model design, 2) XMILE transpiler, 3) simulation scenario management, and 4) SD functions or collection of archetypes (e.g. SD molecules). In the near future, we plan to expand the toolkit and overcome these limitations.
Kotlin SD Toolkit is available as a free, open-source GitHub project and we present it as our contribution to the System Dynamics community.
Sovilj, Etinger, Sirotić, and Pripužić are coauthors of “System dynamics modeling and simulation with Kotlin”, available on the System Dynamics Review.
Practitioner Profile: Jack Homer, Homer Consulting Welcome to Practitioner Profiles, a series of up-close blog-length interviews with experienced System Dynamics practitioners. We have a standard set of 10 questions and let practitioners take the responses in any...
The System Dynamics Conference From the Perspective of a Multi-Method Simulations Developer System Dynamics, Agent-Based and Discrete-Event simulations are three competing and complementary simulation methods that are used to address a wide range of real-world...
Data & Uncertainty in System Dynamics Jay Forrester cautioned that “fitting curves to past system data can be misleading”. Certainly, that can be true, if the model is deficient. But we can have our cake and eat it too: a good model that passes traditional System...
Monthly meetings of the Policy Council occur on the last Wednesday of the month with the exception of conference month. All Society members are welcome to attend. Login to see the meeting location which will be displayed here to members 15 minutes prior to the start...
Recent Business cases
RSC Uses System Dynamics to Increase HVACR Sales Against the Tide “Using the proven Strategy Dynamic process focused our limited resources on organizing strategic issues, identifying the critical resources, and developing the insight to more rapidly create intuitive...
Achieving a Polio-Free World Through System Dynamics Simulation EXECUTIVE Summary This System Dynamics model underpinned a 192 country resolution to eradicate polio globally and led the Bill and Melinda Gates Foundation to give Rotary International $100 million to...
MasterCard Halts Market Share Slide With Scenario Planning The Problem MasterCard, a major credit card company, once held a dominant market position US Market Share with only one primary competitor, Visa. They woke up one day and realized that, after six years of...