Skip to main content

Planning and Operation Model for Multi-Energy Systems

Project description

POMMES - Planning and Operation Model for Multi-Energy Systems

POMMES is an open source framework to model investment pathways in multi-energy systems. The framework enables to minimise the system costs to meet the energy services demand by modelling the investment and operating costs of energy conversion, storage and transport technologies.

Documentation: The complete documentation for POMMES (methodology, examples and API) is available at DOCS

Installation

Prerequisites

Choose the installation depending on your platform.

To integrate conda in PowerShell, run in the Anaconda Prompt:

  • On Windows

    $ conda init powershell
    
  • On Linux

    $ conda init bash
    

Python environment creation

Ensure Conda is initiated in your shell: see prerequisites if needed.

Download the file environment.yaml.

To create the environment, run in the file directory:

$ conda env create -f environment-all.yaml

Pycharm (optional, recommended)

Using python Pycharm IDE which can be downloaded from this webpage facilitates the interaction with the tool.

Setting the interpreter in Pycharm

You can set this environment as python interpreter in Pycharm using:

Settings > Project: pommes > Python interpreter > Add interpreter > Add local interpreter ... add_interpreter.png

Then:

Conda Environment > Load Environments > Use existing environment > pommes-env If needed, update the conda executable path:

[your installation directory]\miniconda3\condabin\conda.bat.

pommes-env.png

Contributing

All contributions are welcome with merge requests. Use pre-commit for code formatting.

$ pre-commit install

Solver installation

Solving optimisation model with linopy allows to interact easily with multiple solvers. Check linopy documentation to get all compatible solvers.

HiGHS solver is installed in the virtual environment with the highspy package. However, for the sake of performance, here is a short tutorial to get the commercial solver Gurobi which presents much better resolution speed, and which is free for academic use.

Gurobi

Gurobi is already installed in the python virtual environment with the gurobipy package. To generate a named academic license, visit the gurobi license webpage and sign in with your academic e-mail address.

You will get a license token.

Then go to the download page of the license tool packages You can then run the grbgetkey script and copy-paste your token in the console.

If you want to change the default directory of the gurobi.lic file, make sure that the corresponding environment variable is modified.

Getting started

The example study is stored in study\test_case. Data stored in study\test_case\data and the import is described in the study\test_case\config.yaml file.

Try to run the run_study.py first to get some results.

Explore the results in the study\test_case\output directory structured as follow:

output
   |-- ref_(suffix?)
         |-- constraints
            |-- annualised_totex_def.csv
            |-- ...
         |-- plots
            |-- energy_balance
               |-- 2020_electricity.html
            |-- energybalance.html
         |-- variables
            |-- annualised_totex.csv
            |-- ...
         |-- dual.nc
         |-- input.nc
         |-- model.nc
         |-- objective.csv
         |-- solution.nc

Explore it!

  • constraints/ gathers the lagrangians of the constraints
  • variables/ the solution
  • and some visualisations are available in plots/.

Run your own scenario

Inputs

To run your own study, copy-paste the test_case/ study, rename it with your study name. Let's take study_name for the example.

study
   |-- test_case
         |-- data
            |-- availability.csv
            |-- ...
         |-- config.yaml
   |-- study_name
         |-- data
            |-- availability.csv
            |-- ...
         |-- config.yaml

You can now change the inputs value of your scenario.

Waiting for an exhaustive description of the inputs, here are some guidelines:

  • all power units are in MW
  • all energy units in MWh
  • storage assets are considered as energy storage (not power or methane or hydrogen storage)
    • in (keep) represents the resource needed to charge (keep) 1 MWh of energy
    • out represents the resource produced by the storage when discharging 1 MWh of energy

Run the optimisation

Follow the workflow of the study\test_case\run_study.py script with the right study_name (and potentially change the solver)

Enjoy !

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pommes-0.3.2-py3-none-any.whl (121.4 kB view details)

Uploaded Python 3

File details

Details for the file pommes-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: pommes-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 121.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for pommes-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dd2423fd8f22eea88a6e89187bef75d39d58cbd75f86a9b9bbf386bc8ddc3149
MD5 66c3090b66ad3b9dfcc7496e350e7e5f
BLAKE2b-256 5f72b421b6d6000b7e5904ca97252a8715bb6ae93915d248267a35defd2e0173

See more details on using hashes here.

Supported by

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