Skip to content
/ ficus Public
forked from yabata/ficus

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

License

Notifications You must be signed in to change notification settings

remmyd/ficus

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ficus

ficus is a (mixed integer) linear programming optimization model for capacity expansion planning and unit commitment for local energy systems. Based on URBS and VICUS it was developed as a model for optimising energy systems of factories.

Documentation Status DOI

Publication

D. Atabay: An open-source model for optimal design and operation of industrial energy systems, Energy, 121 (2017), 803–821

Features

  • ficus is a (mixed integer) linear programming model for a multi-commodity energy system of a factory.
  • 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

Installation

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.

    1. 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 ficus.py file to a directory which is already in python's search path or add the your 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. You can run ficus from a python script or directly from the input file using excel.
  2. Read the documenation and create your own input file following the tutorial

Solver (optional)

Pyomo allows using the NEOS Server for Optimisation 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:\GLPK\w64 (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

Screenshots

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

Timeseries plot of 7 days of electricity generation and consumption in 15 minute resolution

More result plots are given in the documenation.

Copyright

Copyright (C) 2015 Dennis Atabay

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%