/FMIFlux.jl

FMIFlux.jl is a free-to-use software library for the Julia programming language, which offers the ability to set up NeuralFMUs just like NeuralODEs: You can place FMUs (fmi-standard.org) simply inside any feed-forward ANN topology and keep the resulting hybrid model trainable with a standard FluxML training process.

Primary LanguageJuliaMIT LicenseMIT

FMIFlux.jl Logo

FMIFlux.jl

What is FMIFlux.jl?

FMIFlux.jl is a free-to-use software library for the Julia programming language, which offers the ability to set up NeuralFMUs just like NeuralODEs: You can place FMUs (fmi-standard.org) simply inside any feed-forward ANN topology and still keep the resulting hybrid model trainable with a standard AD training process.

Dev Docs Run Tests Run Examples Build Docs Coverage ColPrac: Contributor's Guide on Collaborative Practices for Community Packages

How can I use FMIFlux.jl?

  1. Open a Julia-REPL, activate your preferred environment.

  2. Goto Package-Manager (if not already), install FMIFlux.jl.

    julia> ]
    
    (@v1.6) pkg> add FMIFlux

    If you want to check that everything works correctly, you can run the tests bundled with FMIFlux.jl:

    julia> using Pkg
    
    julia> Pkg.test("FMIFlux")

    Additionally, you can check the version of FMIFlux.jl that you have installed with the status command.

    julia> ]
    (@v1.6) pkg> status FMIFlux
  3. Have a look inside the examples folder in the examples branch or the examples section of the documentation. All examples are available as Julia-Script (.jl), Jupyter-Notebook (.ipynb) and Markdown (.md).

What is currently supported in FMIFlux.jl?

  • building and training ME-NeuralFMUs (event-handling is BETA) with the default Flux-Front-End
  • building and training CS-NeuralFMUs with the default Flux-Front-End
  • ...

What is currently BETA-supported in FMIFlux.jl?

  • training ME-NeuralFMUs with state- and time-event-handling

What FMI.jl-Library should I use?

FMI.jl Family To keep dependencies nice and clean, the original package FMI.jl had been split into new packages:

  • FMI.jl: High level loading, manipulating, saving or building entire FMUs from scratch
  • FMIImport.jl: Importing FMUs into Julia
  • FMIExport.jl: Exporting stand-alone FMUs from Julia Code
  • FMICore.jl: C-code wrapper for the FMI-standard
  • FMIBuild.jl: Compiler/Compilation dependencies for FMIExport.jl
  • FMIFlux.jl: Machine Learning with FMUs (differentiation over FMUs)
  • FMIZoo.jl: A collection of testing and example FMUs

What is under development in FMIFlux.jl?

  • performance optimizations
  • different modes for sensitivity estimation
  • improved documentation
  • more examples
  • ...

What Platforms are supported?

FMIFlux.jl is tested (and testing) under Julia versions 1.6.5 LTS and latest on Windows (latest) and Ubuntu (latest). MacOS should work, but untested.

How to cite? Related publications?

Tobias Thummerer, Lars Mikelsons and Josef Kircher. 2021. NeuralFMU: towards structural integration of FMUs into neural networks. Martin Sjölund, Lena Buffoni, Adrian Pop and Lennart Ochel (Ed.). Proceedings of 14th Modelica Conference 2021, Linköping, Sweden, September 20-24, 2021. Linköping University Electronic Press, Linköping (Linköping Electronic Conference Proceedings ; 181), 297-306. DOI: 10.3384/ecp21181297

Tobias Thummerer, Johannes Tintenherr, Lars Mikelsons 2021 Hybrid modeling of the human cardiovascular system using NeuralFMUs Journal of Physics: Conference Series 2090, 1, 012155. DOI: 10.1088/1742-6596/2090/1/012155