Differences with other modelling languages and tools
MODELICA Language
Modelica is a language designed for modelling physical systems based on differential and algebraic equations, with a strong focus on dynamic behaviour and simulation. In contrast, GEMS is dedicated to the formulation of mathematical optimisation problems, making it better suited for long-term energy system studies. While Modelica excels at component-level dynamics, GEMS focuses on system-wide decision-making, planning, and optimisation.
GAMS - General Algebraic Modeling System
GAMS is a powerful language for expressing mathematical optimisation problems in an algebraic form. However, it does not provide a native object-oriented or graph-based modelling paradigm. GEMS object and graph-oriented approach is particularly well suited for modelling interconnected energy systems, where similar components (generators, batteries, loads) are replicated across multiple nodes.
Linopy - Python Package - Linear optimization with n-dimensional labeled variables
Although both Linopy and GEMS are used to formulate optimisation problems, they do not fulfil the same functions. Linopy is a Python-based modelling multisolver interface whereas GEMS is conceived as a modelling language to explicitly formulate the energy systems, their components, and their behaviour independently of any particular implementation. GEMS plays at the level of the system (there it is graph-oriented) whereas Linopy plays at the level of the linear problem (it is vector-oriented, and one should build a layer on top of that to manage the system graphs). GEMS interpreters may be built on top of multisolver interfaces, such as Linopy or Google OR-Tools.
Antares Simulator (Legacy)
Historically, Antares Simulator, an open-source tool for long-term energy system studies, relies on a fixed file tree structure as its main input format. This structure is hard-coded in the tool, which limits flexibility and extensibility. Introducing new objects or behaviours typically requires modifying the C++ source code, whereas GEMS allows such extensions directly at the modelling language level.
PyPSA – Python for Power System Analysis
PyPSA enables the generation of energy system studies using flexible configuration files and produces a NetCDF representation of the resulting model. However, the component models themselves are hard-coded in the PyPSA core, which limits extensibility. Adding new component formulations or behaviours requires Python development skills, while GEMS allows users to define and extend models declaratively.
PLEXOS® Energy Modeling Software
PLEXOS® follows a philosophy similar to Antares Simulator, relying on a fixed and predefined file-based structure to describe studies. While powerful, this approach offers limited flexibility when adapting or extending model structures. GEMS, by contrast, provides a fully configurable modelling language where system structure and component behaviour can evolve without modifying the solver core.