Skip to main content

GBOML: Graph-Based Optimization Modeling Language

Project description

GBOML: Graph-Based Optimization Modeling Language



The Graph-Based Optimization Modeling Language (GBOML) is a modeling language for mathematical programming enabling the easy implementation of a broad class of structured mixed-integer linear programs typically found in applications ranging from energy system planning to supply chain management. More precisely, the language is particularly well-suited for representing problems involving the optimization of discrete-time dynamical systems over a finite time horizon and possessing a block structure that can be encoded by a hierarchical hypergraph. The language combines elements of both algebraic and object-oriented modeling languages in order to facilitate problem encoding and model re-use, speed up model generation, expose problem structure to specialised solvers and simplify post-processing. The GBOML parser, which is implemented in Python, turns GBOML input files into hierarchical graph data structures representing optimization models. The associated tool provides both a command-line interface and a Python API to construct models, and directly interfaces with a variety of open source and commercial solvers, including structure-exploiting ones.

Quick start

GBOML has been tested on Windows, macOS and Linux. The simplest way to install it is via the pip package manager in a terminal window:

pip install gboml

Please refer to the online documentation for more information on how to install GBOML. Note that optimization solvers are also required to solve GBOML models and installation instructions are also provided in the online documentation.

Several examples are provided in this repository (in the examples directory) and explained in the online documentation.


Documentation is available on Read the Docs:

Community guidelines

To contribute changes:

  1. Fork the project on Gitlab
  2. Create a feature branch to work on in your fork (git checkout -b new-feature)
  3. Commit your changes to the feature branch
  4. Push the branch to Gitlab (git push origin my-new-feature)
  5. On Gitlab, create a new pull request from the feature branch

Issues and questions shall be reported in the issues directory.

Citing GBOML

  doi = {10.21105/joss.04158},
  url = {},
  year = {2022},
  publisher = {The Open Journal},
  volume = {7},
  number = {72},
  pages = {4158},
  author = {Bardhyl Miftari and Mathias Berger and Hatim Djelassi and Damien Ernst},
  title = {GBOML: Graph-Based Optimization Modeling Language},
  journal = {Journal of Open Source Software}


Copyright (C) since 2020 Bardhyl Miftari, Mathias Berger, Hatim Djelassi, Damien Ernst, University of Liege . Licensed under the MIT License (see LICENSE file).

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gboml-0.1.9.tar.gz (120.4 kB view hashes)

Uploaded Source

Built Distribution

gboml-0.1.9-py3-none-any.whl (141.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page