Energy planning

There is a nice open source tool for energy planning:

As far as I understand their are two open source versions, one written in GNUMathprog, and one in Python. The GNUMathprog version is quite compact, like 1165 LOC. See: OSeMOSYS_GNU_MathProg/src/osemosys.txt at master · OSeMOSYS/OSeMOSYS_GNU_MathProg · GitHub

As far as I understand this is just a mixed-integer linear optimization problem.


a. is there a similar tool written in Julia?
b. could it make sense to translate the existing tool to Julia?

Any experience how GNUMathprog compares to Julia and JUMP?

UPDATE: I found this document that compares Julia with GNUMathprog and GAMS:

I am not the first who had this idea: OSeMOSYS Julia · Issue #94 · OSeMOSYS/OSeMOSYS · GitHub

And there is indeed a Julia package for Energy Planning: GitHub - sei-international/NemoMod.jl: Next Energy Modeling system for Optimization

1 Like

is there a similar tool written in Julia?

Yes, lots. One of the biggest group of users in JuMP are energy system modelers.

Some of the larger projects (there are many other smaller ones)

And a bunch of talks from prior JuMP-devs


Thanks a lot! I think GitHub - spine-tools/SpineOpt.jl: A highly adaptable modelling framework for multi-energy systems comes closest to what I am looking for… So many options… My topic is the integration of high amounts of offshore wind energy in the Dutch energy system…

1 Like

I would reach out to the developers. A lot of these models are conceptually simple, but very complicated in the details.

cc @Diego_Tejada

p.s., You might also be interested in coming to JuMP-dev 2024 | JuMP. There will be a fairly sizable group of people interested in energy system modeling attending :smile:

1 Like

Hi @ufechner7, it seems that your use case fits into SpineOpt.jl capabilities. The documentation has tutorials and videos to start using it. There are monthly meetings (see the link in the README file in the repo for the details) if you need help from the development team, but you can always post an issue or a question in the discussion section at any time.

There is another energy model called TulipaEnergyModel.jl you might want to check out, too. It has fewer features than SpineOpt at the moment, but it is being developed by the Dutch research centre, TNO, in collaboration with eScience, TU-Delft, and Utrecht University.

TulipaEnergy/TulipaEnergyModel.jl: Tulipa Energy Model (

Also, don’t hesitate to post an issue or question in the discussion section of this repo.

I hope this information helps :slight_smile:


I had a closer look at TulipaEnergyModel.jl, and I think that it is more advanced mathematically, but less user friendly than SpineOpt.jl.

Do you think that it would be possible to integrate Spine tools and Tulipa?

I agree with your comment. TulipaEnergyModel.jl has a strong mathematical background aiming to tackle large-scale energy problems. Still, the user interface is currently through CSV files, which can be less friendly than the nice user interface that SpineOpt.jl has with the SpineToolbox. SpineOpt can offer more features (e.g., optimal power flow, bender’s decomposition, gas sector constraints, etc.). In that sense, it has more developments than Tulipa. Depending on your application and needs, you might want to use one.

Finally, we don’t have a specific task to integrate Tulipa in SpineToolbox in the short term, but there are some ideas to possibly work on it for a future stage/tier of development.