Welcome
TulipaEnergyModel.jl is an optimization model for analysing energy systems (electricity, hydrogen, heat, natural gas, etc.). The model determines the optimal investment and operation decisions for different types of assets (production, consumption, conversion, storage, and transport). Tulipa is developed in Julia and depends on the JuMP.jl package.
Tulipa is free and easy to install. Check out Getting Started to start using Tulipa today!
Tulipa in a Nutshell
Why Tulipa
Tulipa is built to challenge the usual speed-versus-fidelity tradeoff in energy system modelling. Instead of simplifying away important dynamics, Tulipa combines strong formulations with flexible model detail so you can scale up scenarios while keeping key physics and operational behavior.
In practice, this means:
Lower computational cost without sacrificing fidelity: Reduce problem size through flexible asset connections and fully flexible time resolution.
Higher formulation quality: Use tighter formulations for key decisions such as storage modeling and unit commitment/ramping (see Flexible Time Resolution in UC and Ramping).
Adaptive detail where it matters: Mix levels of detail across time, technologies, and planning horizons, including multi-year investment modeling.
Scalable advanced studies: Tackle larger studies and uncertainty-aware workflows, including two-stage stochastic optimization.
Example Questions
Tulipa can answer questions such as:
How much flexible energy supply and demand is available? How much is needed in the future?
How will different investment decisions impact the balance and generation mix of the energy system?
Where will there be grid congestion in the future? How would placing [technology] at [location] impact congestion?
How will policy targets influence investment and dispatch?
How will a future energy system handle different weather patterns and extreme events (such as dunkelflaute)?
Not sure if Tulipa is right for your project? Feel free to ask in our Discussions!
Scope & Features
For modellers, here is a brief summary of Tulipa's scope and features. More details can be found in the Concepts and Formulation.
Optimization Objective: Minimize total system cost for investment & dispatch (investment in production, conversion, storage, transport/grid)
Geographic scope: Flexible (Anywhere - Region/Country/Continent)
Energy carriers: Any/All (electricity, gas, H2, heat, etc.)
Timespan: Any (Usually Yearly or Multi-year)
Time resolution: Fully Flexible - even mixing different resolutions (1-hr, 2-hr, 3-hr, etc) within a scenario)
Temporal aggregation: Time series aggregation with blended representative periods using TulipaClustering
Storage representation: Short- and Long-term storage - even while using representative periods
Comparison with Other Models
There are several energy system optimization models out there, each with their own scope and features. We recommend the EPRI's report Comparing Open-Source Integrated Planning Models in 2025, which compares several open-source energy system optimization models, including Tulipa, using a five-dimension rubric: (1) scope, (2) modeling language & formulation, (3) data & workflows, (4) uncertainty, (5) usability & ecosystem.
License
This content is released under the Apache License 2.0 License.