4 ms·
Together with colleagues, I have been developing the dynamical systems modeling language "NESTML" for hybrid dynamical systems, that is, systems that contain co
by whisker9587 2y ago
Together with colleagues, I have been developing the dynamical systems modeling language "NESTML" for hybrid dynamical systems, that is, systems that contain continuous-time dynamics (expressed as ordinary differential equations) as well as being able to emit and receive discrete events that happen instantaneously in time. We strive for a minimal syntax, so you can write a model really concisely, for example:
model lorenz_attractor:
state:
x real = 1
y real = 1
z real = 1
equations:
x' = sigma * (y - x) / s
y' = (x * (rho - z) - y) / s
z' = (x * y - beta * z) / s
update:
integrate_odes()
parameters:
sigma real = 10
beta real = 8/3
rho real = 28
For events, there are constructs like "onReceive(in_port_name)" and "emit_spike()" (nomenclature there being clearly somewhat influenced from our neuroscience application domain).
It's still a work in progress, but we already have some cool applications, like a spiking neural network that learns and then replays sequences (https://nestml.readthedocs.io/en/latest/tutorials/sequence_learning/sequence_learning.html https://nestml.readthedocs.io/en/latest/tutorials/sequence_l...).
I was frankly surprised that something like this did not already exist when I started development on NESTML. Modelica is similar, but does not seem to have support for discrete events. I realise all of this is a shameless plug ;) but in actuality we are of course very happy to receive comments and feedback! All development is out in the open on GitHub and it is GPL licensed. If someone knows of similar DSLs, I would be very happy to read your comments. Cheers!
- maltelenz 2y agoModelica absolutely has discrete events: https://mbe.modelica.university/behavior/discrete/events/ https://mbe.modelica.university/behavior/discrete/events/
- whisker9587 2y agoThank you for the pointer!
- lagrange77 2y agoThat's a really interesting project! In the docs you say > Currently, there is support for GSL, forward Euler, and exact integration Does 'GSL' refer to GNU Scientific Library, which you use as a backend?
- michaeltiller 2y agoModelica not only has discrete events (see other comment), it includes support for synchronous (clocked) systems of equations directly in the language. These kinds of language semantics are necessary if you want to have unambiguous discrete models. https://specification.modelica.org/maint/3.6/synchronous-language-elements.html https://specification.modelica.org/maint/3.6/synchronous-lan...