rivus: A mixed integer linear optimisation model for energy infrastructure networks

Maintainer:Johannes Dorfner, <johannes.dorfner@tum.de>
Organization:Chair of Renewable and Sustainable Energy Systems, Technical University of Munich
Version:0.1
Date:Oct 11, 2017
Copyright:This documentation is licensed under a Creative Commons Attribution 4.0 International license.

Short Introduction

  • rivus is a MILP model for multi-commodity energy infrastructure networks systems with a focus on high spatial resolution.
  • It finds the minimum cost energy infrastructure networks to satisfy a given energy distribution for possibly multiple commodities (e.g. electricity, heating, cooling, …).
  • Time is represented by a (small) set of weighted time steps that represent peak or typical loads
  • Spatial data can be provided in form of shapefiles, while technical parameters can be edited in a spreadsheet.
  • Sister project to urbs which has a focus on high time resolution analysis.

Demo Output

Besides the numerical results (obtainable programmatically or as an excel report), rivus is can visualize the results. You can see a unified figure of the typical result plots bellow created by rivus.main.rivus.result_figures(), which in turn is a wrapper around rivus.main.rivus.plot(). Merge was done only for better spacing in the documentation.

_images/rivus-caps.png

Unified rivus capacity output of a smaller city.

Yellow:
Electricity network capacities
Red:
Heat network capacities
Brown:
Gas network capacities
Gray:
Longitude and latitude guidelines.
Symbols:
Diamond shapes represent energy sources. The width of the lines represent the amount of built capacity. Triangles represent energy conversion processes. Pointing upwards indicate generation, downwards indicates consumption of that commodity.

If got courious go to Installation

Change-log

Todo

Set version number to 0.2 after accepting the PRs

Version 0.2

  • 2017-10
  • Major bug-fix regarding line length calculation(#13)
  • Major bug-fic regarding usage of hubs in vertices (#37)
  • Restructuring (Issue5, PR8)
  • 3D visualization for results (PR13)
  • Abstract street network generator (PR8, PR28)
  • 3D interactive visualization for results (#17)
  • Graph/Network analysis sub package (#22)
  • PostgreSQL+PostGIS integration (#24)
  • Unittests (#33)
  • Line length calc bugfix
  • Save function extension (#16)
  • Excel parsing (#23)
  • Speed-ups (#27)
  • Fix Warnings (#30)

Version 0.1

  • 2015-05
  • Initial release.

Dependencies

  • Python version 3.x is supported. Version 2.7 may work.
  • Pyomo for model equations and as the interface to optimisation solvers (CPLEX, GLPK, Gurobi, …). Version 4 recommended, as version 3 support (a.k.a. as coopr.pyomo) will be dropped soon.
    • ConcreteModel is the basis to formulate our optimisation problem.
  • matplotlib for plotting
  • Plotly for interactive 3D plots [extension]
    • We use the offline variants of this package.
    • Also compatible with the jupyter notebook.
  • Pandas for input and result data handling, report generation
    • Pandas’ DataFrame is used very extensively throughout rivus.
  • SQLAlchemy and psycopg2 for database integration [extension]
    • Pandas’s DataFrame works together with SQLAlchemy.
  • NetworkX for network analysis [extension]