News for hackers. Stuff that matters.
Re:Modelica by whisker9587 on Monday December 16, 2024 @11:02AM (#42432256)
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_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!

Re:Modelica by maltelenz on Monday December 16, 2024 @12:44PM (#42433306)
Modelica absolutely has discrete events: https://mbe.modelica.university/behavior/discrete/events/
Re:Modelica by whisker9587 on Monday December 16, 2024 @01:01PM (#42433514)
Thank you for the pointer!
Re:Modelica by lagrange77 on Monday December 16, 2024 @01:02PM (#42433525)
That'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?

Re:Modelica by michaeltiller on Monday December 16, 2024 @02:04PM (#42434153)
Modelica 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-lan...