oemof-solph

A model generator for energy system modeling and optimization.
https://github.com/oemof/oemof-solph

Category: Energy Systems
Sub Category: Energy System Modeling Frameworks

Keywords

energy energy-system modelling modelling-framework

Keywords from Contributors

datapackage oemof tabular-data energy-system-modeling oep open-energy-family power routing power-supply grids

Last synced: 3 days ago
JSON representation

Repository metadata

A model generator for energy system modelling and optimisation (LP/MILP).

README.rst

          
|tox-pytest| |tox-checks| |packaging| |coverage|

|docs| |version| |supported-versions|

|zenodo| |commits-since| |chat|


------------------------------

.. |tox-pytest| image:: https://github.com/oemof/oemof-solph/actions/workflows/tox_pytests.yml/badge.svg?branch=dev
     :target: https://github.com/oemof/oemof-solph/actions?query=workflow%3A%22tox+checks%22

.. |tox-checks| image:: https://github.com/oemof/oemof-solph/actions/workflows/tox_checks.yml/badge.svg?branch=dev
     :target: https://github.com/oemof/oemof-solph/actions?query=workflow%3A%22tox+checks%22

.. |packaging| image:: https://github.com/oemof/oemof-solph/actions/workflows/packaging.yml/badge.svg
     :target: https://github.com/oemof/oemof-solph/actions?query=workflow%3Apackaging

.. |coverage| image:: https://raw.githubusercontent.com/oemof/oemof-solph/python-coverage-comment-action-data/badge.svg
    :target: https://htmlpreview.github.io/?https://github.com/oemof/oemof-solph/blob/python-coverage-comment-action-data/htmlcov/index.html

.. |docs| image:: https://readthedocs.org/projects/oemof-solph/badge/?style=flat
    :target: https://readthedocs.org/projects/oemof-solph
    :alt: Documentation Status

.. |version| image:: https://img.shields.io/pypi/v/oemof.solph.svg
    :alt: PyPI Package latest release
    :target: https://pypi.org/project/oemof.solph

.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/oemof.solph.svg
    :alt: Supported versions
    :target: https://pypi.org/project/oemof.solph

.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/oemof.solph.svg
    :alt: Supported implementations
    :target: https://pypi.org/project/oemof.solph

.. |commits-since| image:: https://img.shields.io/github/commits-since/oemof/oemof-solph/latest/dev
    :alt: Commits since latest release
    :target: https://github.com/oemof/oemof-solph/compare/master...dev

.. |zenodo| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.596235.svg
    :alt: Zenodo DOI
    :target: https://doi.org/10.5281/zenodo.596235

.. |chat| image:: https://img.shields.io/badge/chat-oemof:matrix.org-%238ADCF7
     :alt: matrix-chat
     :target: https://matrix.to/#/#oemof:matrix.org


.. figure:: https://raw.githubusercontent.com/oemof/oemof-solph/492e3f5a0dda7065be30d33a37b0625027847518/docs/_logo/logo_oemof_solph_FULL.svg
    :align: center

------------------------------

===========
oemof.solph
===========

**A model generator for energy system modelling and optimisation (LP/MILP)**

.. contents::
    :depth: 2
    :local:
    :backlinks: top


Introduction
============

The oemof.solph package is part of the
`Open energy modelling framework (oemof) `_.
This is an organisational framework to bundle tools for energy (system) modelling.
oemof-solph is a model generator for energy system modelling and optimisation.

The package ``oemof.solph`` is very often called just ``oemof``.
This is because installing the ``oemof`` meta package was once the best way to get ``oemof.solph``.
Notice that you should prefeably install ``oemof.solph`` instead of ``oemof``
if you want to use ``solph``.


Everybody is welcome to use and/or develop oemof.solph.
Read our `contribution `_ section.

Contribution is already possible on a low level by simply fixing typos in
oemof's documentation or rephrasing sections which are unclear.
If you want to support us that way please fork the oemof-solph repository to your own
GitHub account and make changes as described in the `github guidelines `_

If you have questions regarding the use of oemof including oemof.solph you can visit the openmod forum (`tag oemof `_ or `tag oemof-solph `_) and open a new thread if your questions hasn't been already answered.

Keep in touch! - You can become a watcher at our `github site `_,
but this will bring you quite a few mails and might be more interesting for developers.
If you just want to get the latest news, like when is the next oemof meeting,
you can follow our news-blog at `oemof.org `_.

Documentation
=============
The `oemof.solph documentation `_ is powered by readthedocs. Use the `project site `_ of oemof.solph to choose the version of the documentation. Go to the `download page `_ to download different versions and formats (pdf, html, epub) of the documentation.

Installation
============


If you have a working Python installation, use pypi to install the latest version of oemof.solph.
Python >= 3.11 is recommended. Lower versions may work but are not tested.

We highly recommend to use virtual environments.
Please refer to the documentation of your Python distribution (e.g. Anaconda,
Micromamba, or the version of Python that came with your Linux installation)
to learn how to set up and use virtual environments.

::

    (venv) pip install oemof.solph

If you want to use the latest features, you might want to install the **developer version**. The developer version is not recommended for productive use::

    (venv) pip install https://github.com/oemof/oemof-solph/archive/dev.zip


For running an oemof-solph optimisation model, you need to install a solver.
Following you will find guidelines for the installation process for different operating systems.

.. _windows_solver_label:
.. _linux_solver_label:

Installing a solver
-------------------

There are several solvers that can work with oemof, both open source and commercial.
Two open source solvers are widely used (CBC and GLPK), but oemof suggests CBC (Coin-or branch and cut).
It may be useful to compare results of different solvers to see which performs best.
Other commercial solvers, like Gurobi or Cplex, are also options.
Have a look at the `pyomo docs `_
to learn about which solvers are supported.

Check the solver installation by executing the test_installation example below (see section Installation Test).

**Linux**

To install the solvers have a look at the package repository of your Linux distribution or search for precompiled packages. GLPK and CBC ares available at Debian, Feodora, Ubuntu and others.

**Windows**

 1. Download `CBC `_
 2. Download `GLPK (64/32 bit) `_
 3. Unpack CBC/GLPK to any folder (e.g. C:/Users/Somebody/my_programs)
 4. Add the path of the executable files of both solvers to the PATH variable (cf. `setting environment variables as user `_)
 5. Restart Windows

Check the solver installation by executing the test_installation example (see the `Installation test` section).


**Mac OSX**

Please follow the installation instructions on the respective homepages for details.

CBC-solver: https://github.com/coin-or/Cbc

GLPK-solver: http://arnab-deka.com/posts/2010/02/installing-glpk-on-a-mac/

If you install the CBC solver via brew (highly recommended), it should work without additional configuration.


**conda**

The CBC-solver can also be installed in a `conda` environment. Please note, that it is highly recommended to `use pip after conda `_, so:

.. code:: console

    (venv) conda install -c conda-forge coincbc
    (venv) pip install oemof.solph


.. _check_installation_label:

Installation test
-----------------

Test the installation and the installed solver by running the installation test
in your virtual environment:

.. code:: console

  (venv) oemof_installation_test

If the installation was successful, you will receive something like this:

.. code:: console

    *********
    Solver installed with oemof:
    glpk: working
    cplex: not working
    cbc: working
    gurobi: not working
    *********
    oemof.solph successfully installed.

as an output.

Contributing
============

A warm welcome to all who want to join the developers and contribute to
oemof.solph.

Information on the details and how to approach us can be found
`in the oemof documentation `_ .

Citing
======

For explicitly citing solph, you might want to refer to
`DOI:10.1016/j.simpa.2020.100028 `_,
which gives an overview over the capabilities of solph.
The core ideas of oemof as a whole are described in
`DOI:10.1016/j.esr.2018.07.001 `_
(preprint at `arXiv:1808.0807 `_).
To allow citing specific versions, we use the zenodo project to get a DOI for each version.

Example Applications
====================

The combination of specific modules (often including other packages) is called an
application (app). For example, it can depict a concrete energy system model.
You can find a large variety of helpful examples in the documentation.
The examples show the optimisation of different energy systems and are supposed
to help new users to understand the framework's structure.
Please make sure the example you are looking at is created for the version
of solph you have installed.

You are welcome to contribute your own examples via a `pull request `_
or by e-mailing us (see `here `_ for contact information).

License
=======

Copyright (c) oemof developer group

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

        

Citation (CITATION.cff)

# YAML 1.2
---
cff-version: "1.2.0"
doi: "10.5281/zenodo.596235"
url: "https://github.com/oemof/oemof-solph/"
license: MIT
message: "If you use this software, please cite it using these metadata."
title: "oemof.solph"
abstract: "The oemof.solph package is part of the Open energy modelling framework (oemof). This an organisational framework to bundle tools for energy (system) modelling. oemof-solph is a model generator for energy system modelling and optimisation."
authors:
  -
    given-names: Antonella
    family-names: Giannitelli
    alias: "@AntonellaGia"
  -
    given-names: Bryan Michael
    family-names: Lancien
    alias: "@bmlancien"
  -
    given-names: Caroline
    family-names: "Möller"
    alias: "@c-moeller"
  -
    given-names: Cord
    family-names: Kaldemeyer
    alias: "@ckaldemeyer,
            @ckaldemeyer-ane"
  -
    given-names: David
    family-names: "Fuhrländer"
    alias: "@DFuh"
  -
    given-names: Diana
    family-names: "Maldonado Castro"
    alias: "@juncienf"
    orcid: "https://orcid.org/0000-0001-8373-8913"
  -
    given-names: Ekatarina
    family-names: Zolotarevskaia
    alias: "@e-zolotarevskaya"
  -
    given-names: Elisa
    family-names: Gaudchau
    alias: "@elisagaudchau"
  -
    given-names: Eva
    family-names: Schischke
    alias: "@esske"
  -
    given-names: Fabian
    family-names: "Büllesbach"
    alias: "@FabianTU"
  -
    given-names: Francesco
    family-names: Witte
    alias: "@fwitte"
  -
    given-names: Franzi
    family-names: Pl
    alias: "@FranziPl"
  -
    given-names: Guido
    family-names: Plessmann
    alias: "@gplssm"
  -
    given-names: Hendrik
    family-names: Huyskens
    alias: "@henhuy"
  -
    given-names: Jakob
    family-names: Wolf
    alias: "@jakob-wo"
  -
    given-names: Jann
    family-names: Launer
    alias: "@jnnr"
  -
    given-names: Jens-Olaf
    family-names: Delfs
    alias: "@drjod"
  -
    given-names: Johannes
    family-names: Kochems
    alias: "@jokochems"
  -
    given-names: Johannes
    family-names: "Röder"
    alias: "@joroeder"
  -
    given-names: Jonas
    family-names: Freißmann
    alias: "@jfreissmann"
    orcid: "https://orcid.org/0009-0007-6432-5479"
  -
    given-names: Jonathan
    family-names: Amme
    alias: "@nesnoj"
    orcid: "https://orcid.org/0000-0002-8563-5261"
  -
    given-names: Lena
    family-names: Rosin
    alias: "@leroum"
  -
    given-names: Lennart
    family-names: "Schürmann"
    alias: "@lensum"
  -
    given-names: Malte
    family-names: Fritz
    alias: "@maltefritz"
    orcid: "https://orcid.org/0009-0001-5843-0973"
  -
    given-names: Marie-Claire
    family-names: Gering
    alias: "@MaGering"
  -
    given-names: Maximilian
    family-names: Hillen
    alias: "@Maxhi77"
    orcid: "https://orcid.org/0000-0002-8171-2661"
  -
    given-names: Patrik
    family-names: "Schönfeldt"
    alias: "@p-snft"
    affiliation: "Deutsches Zentrum für Luft- und Raumfart (DLR)"
    orcid: "https://orcid.org/0000-0002-4311-2753"
  -
    given-names: Phillip
    family-names: Kassing
    alias: "pkassing"
  -
    given-names: Pierre-François
    family-names: Duc
    alias: "@Bachibouzouk"
  -
    given-names: Raul Ciria
    family-names: Aylagas
    alias: "@Raul-Ciria-Aylagas"
  -
    given-names: Sabine
    family-names: Haas
    alias: "@SabineHaas"
  -
    given-names: Saeed
    family-names: Sayadi
    alias: "@sasa821"
  -
    given-names: Sarah
    family-names: Berendes
    alias: "@srhbrnds"
  -
    given-names: Simon
    family-names: Hilpert
    alias: "@simnh"
  -
    given-names: Stephan
    family-names: "Günther"
    alias: "@gnn"
  -
    given-names: Tjark
    family-names: Smalla
    alias: "@ChillkroeteTTS"
  -
    given-names: Tobi
    family-names: Rohrer
    alias: "@tobirohrer"
  -
    given-names: Uwe
    family-names: Krien
    alias: "@uvchik"
    orcid: "https://orcid.org/0000-0002-1241-4425"
  -
    given-names: Unnamed
    family-names: Developers
    alias: "@steffenGit,
            @lmilletb,
            @mloenneberga,
            @Siebenfrucht,
            @MedinavonLevetzow,
            @RD-OTH,
            @paulapreuss,
            @richartkeil,
            @pranaykasturi,
            @stefansc1,
            @jdwit,
            @escalacjo,
            @ajimenezUCLA,
            @elisapap,
            @vjangle,
            @chrisflei"
...

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 2 days ago

Total Commits: 7,230
Total Committers: 84
Avg Commits per committer: 86.071
Development Distribution Score (DDS): 0.738

Commits in past year: 495
Committers in past year: 16
Avg Commits per committer in past year: 30.938
Development Distribution Score (DDS) in past year: 0.354

Name Email Commits
uwe u****n@r****e 1893
Patrik Schönfeldt p****k@s****e 1295
Cord Kaldemeyer c****r@f****e 827
Stephan Günther g****e@g****m 542
Hilpert s****t@f****e 449
Johannes Kochems j****s@w****e 277
simnh s****t@u****e 208
jnnr 3****r 201
Francesco Witte f****e@d****e 161
Caroline Moeller c****r@r****e 152
Johannes Roeder j****r@u****e 151
Hendrik Huyskens h****s@r****e 105
Julian.Endres j****s@r****e 77
lensum 8****m 72
Jonas Freißmann j****n@w****e 59
gplessm g****n@r****e 56
Maximilian.Hillen@dlr.de m****n@d****e 49
timo t****t@g****m 48
steffen s****s@w****e 43
pierre-francois.duc p****c@r****e 39
birgit b****r@r****e 35
Martin m****e@u****e 33
Malte Fritz m****z@w****e 33
Eva Schischke e****e@u****e 32
clemens c****h@u****e 31
antonella a****i@c****e 28
Johannes Kochems k****s@t****e 27
FranziPl f****r@b****e 22
FabianTU 3****U 17
Saeed Sayadi s****i@p****m 17
and 54 more...

Committer domains:


Issue and Pull Request metadata

Last synced: about 22 hours ago

Total issues: 626
Total pull requests: 740
Average time to close issues: 6 months
Average time to close pull requests: 3 months
Total issue authors: 102
Total pull request authors: 66
Average comments per issue: 5.6
Average comments per pull request: 3.98
Merged pull request: 526
Bot issues: 0
Bot pull requests: 4

Past year issues: 15
Past year pull requests: 52
Past year average time to close issues: about 2 months
Past year average time to close pull requests: 5 days
Past year issue authors: 10
Past year pull request authors: 14
Past year average comments per issue: 0.8
Past year average comments per pull request: 1.67
Past year merged pull request: 31
Past year bot issues: 0
Past year bot pull requests: 3

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/oemof/oemof-solph

Top Issue Authors

  • uvchik (115)
  • p-snft (78)
  • simnh (70)
  • ckaldemeyer (54)
  • fwitte (26)
  • jokochems (20)
  • gplssm (20)
  • jnnr (19)
  • c-moeller (18)
  • henhuy (14)
  • cswh (11)
  • nailend (10)
  • birgits (10)
  • joroeder (8)
  • lensum (8)

Top Pull Request Authors

  • p-snft (209)
  • uvchik (135)
  • simnh (51)
  • ckaldemeyer (32)
  • jnnr (31)
  • jokochems (25)
  • henhuy (24)
  • fwitte (22)
  • gnn (21)
  • joroeder (19)
  • Bachibouzouk (15)
  • lensum (11)
  • nailend (8)
  • maltefritz (8)
  • birgits (7)

Top Issue Labels

  • enhancement (163)
  • feedback wanted (121)
  • bug (112)
  • oemof-solph (106)
  • question (63)
  • help wanted (60)
  • decision wanted (50)
  • documentation (36)
  • oemof-core (36)
  • API (26)
  • urgent (24)
  • announcement (21)
  • beginner (7)
  • wontfix (5)
  • deadline (3)
  • triaged (3)
  • examples (3)
  • refactor (2)
  • duplicate (1)
  • maintenance (1)

Top Pull Request Labels

  • enhancement (203)
  • oemof-solph (87)
  • bug (67)
  • feedback wanted (53)
  • documentation (49)
  • API (32)
  • help wanted (21)
  • oemof-core (21)
  • refactor (8)
  • urgent (8)
  • decision wanted (7)
  • maintenance (5)
  • github_actions (3)
  • dependencies (3)
  • beginner (2)
  • examples (2)
  • wontfix (2)
  • triaged (1)
  • question (1)

Package metadata

pypi.org: oemof.solph

A model generator for energy system modelling and optimisation.

  • Homepage: https://github.com/oemof/oemof-solph
  • Documentation: https://oemof-solph.readthedocs.io/
  • Licenses: MIT
  • Latest release: 0.6.4 (published 4 months ago)
  • Last Synced: 2026-04-28T17:33:08.425Z (3 months ago)
  • Versions: 40
  • Dependent Packages: 7
  • Dependent Repositories: 23
  • Downloads: 15,694 Last month
  • Rankings:
    • Dependent packages count: 1.398%
    • Dependent repos count: 3.026%
    • Average: 3.863%
    • Downloads: 7.165%
  • Maintainers (3)
proxy.golang.org: github.com/oemof/oemof-solph

  • Homepage:
  • Documentation: https://pkg.go.dev/github.com/oemof/oemof-solph#section-documentation
  • Licenses: mit
  • Latest release: v0.6.4 (published 4 months ago)
  • Last Synced: 2026-07-20T04:31:27.549Z (18 days ago)
  • Versions: 41
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent packages count: 6.521%
    • Average: 6.74%
    • Dependent repos count: 6.959%

Dependencies

setup.py pypi
  • blinker *
  • dill *
  • networkx *
  • numpy *
  • oemof.network *
  • oemof.tools *
  • pandas *
  • pyomo *
ci/requirements.txt pypi
  • pip >=19.1.1
  • setuptools >=18.0.1
  • six >=1.12.0
  • virtualenv >=16.6.0
docs/requirements.txt pypi
  • setuptools <58.3.0
  • sphinx >=1.3
  • sphinx-rtd-theme *
.github/workflows/codeql.yml actions
  • actions/checkout v3 composite
  • github/codeql-action/analyze v2 composite
  • github/codeql-action/autobuild v2 composite
  • github/codeql-action/init v2 composite
.github/workflows/lint.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite
  • samuelmeuli/lint-action v1 composite
.github/workflows/packaging.yml actions
  • actions/checkout v1 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v2 composite
.github/workflows/tox_checks.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/tox_pytests.yml actions
  • actions/checkout v1 composite
  • actions/setup-python v2 composite
pyproject.toml pypi

Score: 19.166998878992317