GithubHelp home page GithubHelp logo

dennisatabay / ficus Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tum-ewk/ficus

0.0 1.0 0.0 13.37 MB

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

License: GNU General Public License v3.0

Python 100.00%

ficus's Introduction

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/

ficus's People

Contributors

yabata avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.