MESSAGEix framework overview

MESSAGEix is a framework that can be used to develop and run many different models, each describing a different energy system. Models in the MESSAGEix framework can range from very simple (as in the Tutorials) to highly detailed (e.g. the MESSAGE-GLOBIOM global model).


Components and their interlinkages in the ix modeling platform (source [1]): web-based user interface, scientific programming interface, modeling platform, database backend, implementation of the MESSAGEix mathematical model formulation.

Supported features

The framework allows direct and explicit representation of:

  • Energy technologies with arbitrary inputs and outputs, that can be used to describe a “reference energy system,” including:
    • the fuel supply chain,
    • conversion technologies from primary to secondary energy forms,
    • transmission and distribution (e.g. of electricity), and
    • final demand for energy services.
  • Vintaging of capacity, early retirement and decommissioning of technologies.
  • System integration of variable renewable energy sources (based on Sullivan et al., 2013 [6] and Johnson et al., 2016 [2]).
  • Soft relaxation of dynamic constraints on new capacity and activity (Keppo and Strubegger, 2010 [3]).
  • Perfect-foresight and dynamic-recursive (myopic) solution algorithms.

Running a model

There are three ways to run a MESSAGEix model:

  1. Via Python or R APIs using the packages/libraries ixmp and message_ix, calling message_ix.Scenario.solve(). (See the Tutorials.)

  2. Using the file MESSAGE_master.gms, where the scenario name (i.e., the gdx input file), the optimization horizon (perfect foresight or myopic/ rolling-horizon version), and other options can be defined explicitly.

    This approach is recommended for users who prefer to work via GAMS IDE or other text editors to set the model specifications.

  3. Directly from the command line calling the file MESSAGE_run.gms (see the auto-doc page). The scenario name and other arguments can be passed as command line parameters:

    $ gams MESSAGE_run.gms --in="<data-file>" --out="<output-file>"

Auto-generated documentation for the model run scripts is provided: