The integrated assessment and energy systems model MESSAGEix
Clone or download
gidden migrate `cat` features from `ixmp.Scenario` (#125)
* migrate `cat` features from `ixmp.Scenario`

update unit test properties file in line with new db-connection args

migrate `cat` tests to `message_ix.Scenario`

update `clone()` API to `keep_solution()`

update test-db

change all tests to `message_ix.Scenario` and new API

udpate MESSAGE-version in GAMS code, change to `MAJOR.MINOR.PATCH` format

remove manual addition of MESSAGE sets and parameters in ``

harmonize setting of auxiliary set `all_modes`

stickler appeasement

rename cols for  new parameters in tests

add to release notes

* general error in cli

* try again

* regenerate again with new jar file

* Rolled back test DB schema to migration 1.3 (#126)
Latest commit af7f685 Nov 14, 2018
Failed to load latest commit information.
.circleci Adding CI for testing scenarios on circleci. Additionally add initial… Nov 14, 2018
doc add Python API pages in the doc pages (#98) Nov 14, 2018
message_ix migrate `cat` features from `ixmp.Scenario` (#125) Nov 14, 2018
rmessageix adapt to changes rmessage_ix and reticulate tutorial (#42) Jun 20, 2018
tests migrate `cat` features from `ixmp.Scenario` (#125) Nov 14, 2018
tutorial Fix emission price reporting (#99) Nov 14, 2018
.gitignore WIP (do not merge) - add a FAQ page and update the docs to remove `ix… Jun 5, 2018
.gitmodules Install model (#15) Jun 4, 2018
.stickler.yml add pr template, release notes, and stickler (#58) Jun 26, 2018
.travis.yml add py2 on travis (#102) Nov 14, 2018 added tzipperle to the authors (#11) Apr 5, 2018
CONTRIBUTING.rst Hackathon docs cleanup (#97) Nov 14, 2018
CONTRIBUTOR_LICENSE.rst release updates of doc-pages, license info, publication reference (#37) Mar 12, 2018
Dockerfile Adding CI for testing scenarios on circleci. Additionally add initial… Nov 14, 2018
LICENSE Initial commit Dec 4, 2017
NOTICE.rst Hackathon docs cleanup (#97) Nov 14, 2018 add pr template, release notes, and stickler (#58) Jun 26, 2018 Updating the link to download conda (#104) Aug 29, 2018 migrate `cat` features from `ixmp.Scenario` (#125) Nov 14, 2018
appveyor.yml add ability to dump data directly to excel and read it back (#60) Jul 10, 2018
install.bat add ci for config cli, fixes #41 (#54) Jun 21, 2018 fix to work with conda Jun 5, 2018

The MESSAGEix framework


MESSAGEix is a versatile, open-source, dynamic systems-optimization model. It was developed for strategic energy planning and integrated assessment of energy-engineering-economy-environment systems (E4). The framework includes the possibility for integration with the general-economy MACRO model to incorporate the feedback from price changes on demand for commodities or energy services. The mathematical formulation is based on the MESSAGE Integrated Assessment model developed at IIASA since the 1980s.

The MESSAGEix and MACRO models are implemented in GAMS. This repository contains the GAMS code and a number of tutorials and examples using stylized national energy system models.

The MESSAGEix framework is fully integrated with IIASA's ix modeling platform (ixmp), a data warehouse for high-powered numerical scenario analysis.


Copyright 2018 IIASA Energy Program

The MESSAGEix framework is licensed under the Apache License, Version 2.0 (the "License"); you may not use the files in this repository except in compliance with the License. You may obtain a copy of the License at

Please refer to the NOTICE for details and user guidelines.


A documentation of the MESSAGEix framework, including the complete mathematical formulation and associated files, is automatically created from mark-up comments in the GAMS code and the R/Python packages. The online documentation is synchronyzed with the contents of the master branch of the repository

Scientific reference

Please cite the following manuscript when using the MESSAGEix framework and/or the ix modeling platform for scientific publications or technical reports:

Daniel Huppmann, Matthew Gidden, Oliver Fricko, Peter Kolp, Clara Orthofer, Michael Pimmer, Adriano Vinca, Alessio Mastrucci, Keywan Riahi, and Volker Krey. "The |MESSAGEix| Integrated Assessment Model and the ix modeling platform". 2018, submitted. Electronic pre-print available at

Install from Conda (New Users)

  1. Install Python via Anaconda. We recommend the latest version, e.g., Python 3.6+.

  2. Install GAMS. Importantly:

    • Windows:
      • Check the box labeled Use advanced installation mode
      • Check the box labeled Add GAMS directory to PATH environment variable on the Advanced Options page.
    • MacOSX/Linux:
      • Add the following line to you .bash_profile (Mac) or .bashrc (Linux)

        export PATH=$PATH:/path/to/gams-directory-with-gams-binary
  3. Open a command prompt and type

    conda install -c conda-forge message-ix

Install from Source (Advanced Users)

  1. Follow the installation instructions of the ixmp package.

  2. Fork this repository and clone the forked repository (<user>/message_ix) to your machine. Add iiasa/message_ix as upstream to your clone.

  3. Open a command prompt in the message_ix directory and type

    python install && py.test tests

Configure Model Files

By default, the model files (e.g., GAMS files) are installed with message_ix (in your Python site-packages directory). Many users will simply want to run MESSAGEix, and will never need to see the these files; however, some users will want to edit the files directly to change the mathematical formulation, such as adding new types of parameters, constraints, etc. Accordingly, we provide a utility to place the model files in a local directory of your choosing:

messageix-config --model_path /path/to/model

Please note, if you cloned this repository and installed MESSAGEix with install.bat, this command has already been run, pointing to message_ix/model.

Getting Tutorial Files

If you installed from source, all tutorial files are in the tutorial folder. If you installed from conda, you can download them to your machine by opening a command prompt and typing

messageix-dl --local_path /path/to/tutorials

Running Tutorials

Using Anaconda

  1. Additionally install the following package:

    conda install nb_conda
  2. Open Jupyter Notebooks from Anaconda's "Home" Tab (or directly if you have the option)

  3. Open the tutorial notebook file

  4. Make sure the Kernel is aligned with your conda environment

    • Change kernels with menu options Kernel -> Change Kernel -> Python [conda root] (for example)

Using Command Line

Navigate to the tutorial folder and type

jupyter notebook

Building Documentation

Navigate to the doc folder and in a command prompt type

make doc