Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Modeling and Simulation Programming Language [closed]

I work with many different models and simulations. Some of the older models and simulations are written in FORTRAN. Some of those models have been converted to C++, but the current trend is to create these models using MATLAB/SIMULINK. From a computer science perspective I have always felt MATLAB/SIMULINK was not a good solution. What language do you use to create models and simulations and why?

like image 946
SchwartzE Avatar asked Dec 03 '22 08:12

SchwartzE


1 Answers

I would always try to use the language that is provided by the best modeling and simulation tool (or library, if you like) to do the job for me.

And this question can really only be answered by taking into account what kinds of models you want to implement. Continuous (e.g. ODEs), discrete (e.g. StateCharts, Petri Nets), or a combination (i.e. a hybrid model, as can be implemented with Simulink+StateFlow)? There are various tools for each kind of model.

Another important aspect would be the domain in which you are working. Simulink has pretty extensive libraries for electrical engineering, finance, or computational biology (most of them are included in additional packages, though) - if you work in one of those fields, there might simply be no better (i.e. complete, valid) component library. The same goes for other commercial simulation packages, such as AnyLogic, Arena, etc. There might also be some open-source simulation tools, depending on your modeling problem.

Finally, you might prefer a specific programming language over another, and you might have additional requirements, e.g. support for

  • Optimization (of model parameters)
  • Validation
  • Output analysis (statistics, plots, statistical tests)
  • Support for parallel and distributed simulation
  • Model checking
  • ...

So I'm currently working with Java with the well-known advantages - reasonably fast, good support for multi-threading, relatively simple to use etc. But if 'reasonably fast' is not fast enough, there might be no option but going down one level of abstraction :-)

like image 53
Roland Ewald Avatar answered Dec 21 '22 06:12

Roland Ewald