Skip to main content

GBOML: Graph-Based Optimization Modeling Language

Project description

GBOML: Graph-Based Optimization Modeling Language


Contents


About

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

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

@article{Miftari2022,
  doi = {10.21105/joss.04158},
  url = {https://doi.org/10.21105/joss.04158},
  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}
}

License

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.10.tar.gz (120.3 kB view details)

Uploaded Source

Built Distribution

gboml-0.1.10-py3-none-any.whl (141.9 kB view details)

Uploaded Python 3

File details

Details for the file gboml-0.1.10.tar.gz.

File metadata

  • Download URL: gboml-0.1.10.tar.gz
  • Upload date:
  • Size: 120.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.8

File hashes

Hashes for gboml-0.1.10.tar.gz
Algorithm Hash digest
SHA256 68dda3a4a885935857022d7b04b9d38e486653a5f7003aa0c950450bc91dca9f
MD5 45e538998afae035eca38a5724efd3ff
BLAKE2b-256 c19d91d33c2b8a69e9a0305ab2a8e02b42e6d88a8f8aed0c81fb469ab89e798f

See more details on using hashes here.

File details

Details for the file gboml-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: gboml-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 141.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.8

File hashes

Hashes for gboml-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 4527ef2bd296c2d2694591cdb90ecb55bab4ce3f9813a6fd15d794e9aa28f6fe
MD5 85049d1fb8060ccc5a9a47b6d8458acc
BLAKE2b-256 ca57b3ed67cf1fbfd951439bcf78883453cc51eec3bd2ad4dc56e8afac30c2e4

See more details on using hashes here.

Supported by

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