Kalasim v0.7
After quite some months of exploration, API refinements, countless simulations, and some literature research, we present with great pleasure the next milestone release of kalasim!
kalasim
v0.7 is not just for engineers, but for process analysts and industrial engineers who need to go beyond the limitations of existing simulation tools to model and optimize their business-critical use-cases. So, we deliberately took some time with this release to gather and analyze feedback from our users.
With this milestone release, we have stabilized the core API considerably, improved its performance dramatically while adding new features all over the place.
New Features
Major enhancements in this release are
- Added
processRepeated
to streamline modelling of reiterating processes - Reworked event & metrics logging API for better configurability and performance
- Introduced
ComponentList
to provide metrics-enhanced collection similar to the existingComponentQueue
- Implemented ticks metrics monitor to streamline simulation monitoring
- Added new timeline and activity log attributes to resources for streamlined utilization analytics
- Extended
display()
support API on all major components and their collections (includingResource
,Component
orList<Component>
,MetricTimeline
) - Enabled simplified simulation parallelism by changing the dependency context registry to become thread-local
- Dramatically improved simulation performance to scale at ease to thousands of simulation entities
See kalasim
's changlog for a complete list of technical changes in the v0.7 milestone release
Documentation Improvements
We've rewritten a large part of the documentation for better readability. In particular, we've focussed on resources and components, which are the key elements of every business process model. A new chapter about collections was added, and the numerous advanced topics were worked out to cover more aspects of the product in much more detail.
Several new examples were added including the famous Bridge Games. The ATM was rebuilt using a jupyter-notebook example to better illustrate parallelization and the new visualization support API. Finally, we started a new larger scale example simulation to model the interplay of processes in an emergency room.
Acknowledgments
Different individuals and organizations made this milestone release possible. Most importantly, we'd like to thank SYSTEMA GmbH for supporting the project. Special thanks go to Ilya Muradyan and Igor Alshannikov from JetBrains for their patience with us and their wonderful support with Kotlin data-science tooling. We like to thank Arnaud Giuliani for providing great koin support and guidance, which is the basement on which we managed to build kalasim
.
Finally, we'd like to thank the wonderful folks at CASUS for providing us the opportunity to introduce kalasim
to a great simulation experts panel.
Next steps
We're having a packed feature roadmap. On the top of our roadmap are the following ideas
- Environment snapshotting & branching: This feature will dramatically ease distributed simulations, prepare for new types of AI connectivity, and will enable confidence bands for projects after user-defined branching events
- Environment merging: We strive to enable algebraic composability of simulation environments
- Better examples: Existing examples are intentionally kept small to illustrate the API. Next, we plan to release some large simulations with thousands of simulation entities, along with protocols on how to analyze dynamics in such systems
- Adopt new Kotlin v1.6 language features such as the new duration API, simplified suspend method semantics, and builder inference improvements
Please note, that the kalasim
APIs will be subject to breaking changes until a very distant major release.
If you think that kalasim
is missing some important feature, please just let us know.