ficus: A (mixed integer) linear optimisation model for local energy systems

Maintainer:Dennis Atabay, <>
Organization:Institute for Energy Economy and Application Technology, Technische Universität München
Date:Jan 31, 2018
Copyright:This documentation is licensed under a Creative Commons Attribution 4.0 International license.


This documentation contains the following pages:


  • ficus is a (mixed integer) linear programming model for multi-commodity energy systems.
  • It finds the minimum cost energy system to satisfy given demand time-series for possibly multiple commodities (e.g. electricity, heat)
  • It considers given cost time-series for external obtained commodities as well as peak demand charges with configurable timebase for each commodity
  • It allows to deactivate specific equations, so the model becomes a linear programming model without integer variables
  • It supports multiple-input and multiple-output energy conversion technologies with load dependent efficiencies
  • ficus includes reporting and plotting functions


If you don’t already have an existing Python I recommend using the Python distribution Anaconda. It contains all needed packages except Pyomo.

  1. Anaconda (Python 2.7 or Python 3.5). Choose the 64-bit installer if possible. During the installation procedure, keep both checkboxes “modify PATH” and “register Python” selected!
  2. Pyomo (pip install pyomo)
  3. download or clone (with git) this repository to a directory of your choice.
  4. Copy the file to a directory which is already in python’s search path or add the python folder to python’s search path (sys.path) (how to)
  5. Install a solver (optional).

Get started

  1. Run the given examples in the examples folder.
  2. Follow the turorial to create your own input file.


Pyomo allows using the NEOS Server for Optimization for solving, so it is not required to install a solver.

I still recommend to install and use one of the following solvers.

  1. GLPK (open source)
    1. Download the latest version (e.g. GLPK-4.55) of WinGLPK
    2. Extract the contents to a folder, e.g. C:GLPK
    3. Add the sub-folder w64 to your system path, e.g. C:GLPKw64 (how).
  2. CPLEX (commercial)

    Download and install IBM’s CPLEX solver. (Free for academics)

  3. Gurobi (commercial)

    Download and install Gurobi solver. (Free for academics)


This is a typical result plot created by ficus.plot_timeseries(), showing electricity generation and consumption over 7 days: