Metadata-Version: 2.4
Name: flixopt
Version: 2.1.10
Summary: Vector based energy and material flow optimization framework in Python.
Author-email: "Chair of Building Energy Systems and Heat Supply, TU Dresden" <peter.stange@tu-dresden.de>, Felix Bumann <felixbumann387@gmail.com>, Felix Panitz <baumbude@googlemail.com>, Peter Stange <peter.stange@tu-dresden.de>
Maintainer-email: Felix Bumann <felixbumann387@gmail.com>, Peter Stange <peter.stange@tu-dresden.de>
License: MIT License
Project-URL: homepage, https://tu-dresden.de/ing/maschinenwesen/iet/gewv/forschung/forschungsprojekte/flixopt
Project-URL: repository, https://github.com/flixOpt/flixopt
Project-URL: documentation, https://flixopt.github.io/flixopt/
Keywords: optimization,energy systems,numerical analysis
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy<3,>=1.21.5
Requires-Dist: pandas<3,>=2.0.0
Requires-Dist: xarray<2026.0,>=2024.2.0
Requires-Dist: linopy<0.6,>=0.5.1
Requires-Dist: netcdf4<2,>=1.6.1
Requires-Dist: pyyaml<7,>=6.0.0
Requires-Dist: rich<15,>=13.0.0
Requires-Dist: tomli<3,>=2.0.1; python_version < "3.11"
Requires-Dist: highspy<2,>=1.5.3
Requires-Dist: matplotlib<4,>=3.5.2
Requires-Dist: plotly<7,>=5.15.0
Provides-Extra: network-viz
Requires-Dist: dash<4,>=3.0.0; extra == "network-viz"
Requires-Dist: dash-cytoscape<2,>=1.0.0; extra == "network-viz"
Requires-Dist: dash-daq<1,>=0.6.0; extra == "network-viz"
Requires-Dist: networkx<4,>=3.0.0; extra == "network-viz"
Requires-Dist: werkzeug<4,>=3.0.0; extra == "network-viz"
Requires-Dist: flask<4,>=3.0.0; extra == "network-viz"
Provides-Extra: full
Requires-Dist: pyvis==0.3.2; extra == "full"
Requires-Dist: tsam<3,>=2.3.1; extra == "full"
Requires-Dist: scipy<2,>=1.15.1; extra == "full"
Requires-Dist: gurobipy<13,>=10.0.0; extra == "full"
Requires-Dist: dash<4,>=3.0.0; extra == "full"
Requires-Dist: dash-cytoscape<2,>=1.0.0; extra == "full"
Requires-Dist: dash-daq<1,>=0.6.0; extra == "full"
Requires-Dist: networkx<4,>=3.0.0; extra == "full"
Requires-Dist: werkzeug<4,>=3.0.0; extra == "full"
Requires-Dist: flask<4,>=3.0.0; extra == "full"
Provides-Extra: dev
Requires-Dist: pytest==8.4.2; extra == "dev"
Requires-Dist: pytest-xdist==3.8.0; extra == "dev"
Requires-Dist: nbformat==5.10.4; extra == "dev"
Requires-Dist: ruff==0.13.0; extra == "dev"
Requires-Dist: pre-commit==4.3.0; extra == "dev"
Requires-Dist: pyvis==0.3.2; extra == "dev"
Requires-Dist: tsam==2.3.1; extra == "dev"
Requires-Dist: scipy==1.15.1; extra == "dev"
Requires-Dist: gurobipy==12.0.3; extra == "dev"
Requires-Dist: dash==3.0.0; extra == "dev"
Requires-Dist: dash-cytoscape==1.0.2; extra == "dev"
Requires-Dist: dash-daq==0.6.0; extra == "dev"
Requires-Dist: networkx==3.0.0; extra == "dev"
Requires-Dist: werkzeug==3.0.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: mkdocs-material==9.6.19; extra == "docs"
Requires-Dist: mkdocstrings-python==1.18.2; extra == "docs"
Requires-Dist: mkdocs-table-reader-plugin==3.1.0; extra == "docs"
Requires-Dist: mkdocs-gen-files==0.5.0; extra == "docs"
Requires-Dist: mkdocs-include-markdown-plugin==7.1.7; extra == "docs"
Requires-Dist: mkdocs-literate-nav==0.6.2; extra == "docs"
Requires-Dist: markdown-include==0.8.1; extra == "docs"
Requires-Dist: pymdown-extensions==10.16.1; extra == "docs"
Requires-Dist: pygments==2.19.2; extra == "docs"
Requires-Dist: mike==2.1.3; extra == "docs"
Dynamic: license-file

# FlixOpt: Energy and Material Flow Optimization Framework

[![Documentation](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://flixopt.github.io/flixopt/latest/)
[![Build Status](https://github.com/flixOpt/flixopt/actions/workflows/python-app.yaml/badge.svg)](https://github.com/flixOpt/flixopt/actions/workflows/python-app.yaml)
[![PyPI version](https://img.shields.io/pypi/v/flixopt)](https://pypi.org/project/flixopt/)
[![Python Versions](https://img.shields.io/pypi/pyversions/flixopt.svg)](https://pypi.org/project/flixopt/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

---

## 🚀 Purpose

**flixopt** is a Python-based optimization framework designed to tackle energy and material flow problems using mixed-integer linear programming (MILP).

**flixopt** bridges the gap between high-level energy systems models like [FINE](https://github.com/FZJ-IEK3-VSA/FINE) used for design and (multi-period) investment decisions and low-level dispatch optimization tools used for operation decisions.

**flixopt** leverages the fast and efficient [linopy](https://github.com/PyPSA/linopy/) for the mathematical modeling and [xarray](https://github.com/pydata/xarray) for data handling.

**flixopt** provides a user-friendly interface with options for advanced users.

It was originally developed by [TU Dresden](https://github.com/gewv-tu-dresden) as part of the SMARTBIOGRID project, funded by the German Federal Ministry for Economic Affairs and Energy (FKZ: 03KB159B). Building on the Matlab-based flixOptMat framework (developed in the FAKS project), FlixOpt also incorporates concepts from [oemof/solph](https://github.com/oemof/oemof-solph).

---

## 🌟 Key Features

- **High-level Interface** with low-level control
    - User-friendly interface for defining flow systems
    - Pre-defined components like CHP, Heat Pump, Cooling Tower, etc.
    - Fine-grained control for advanced configurations

- **Investment Optimization**
    - Combined dispatch and investment optimization
    - Size optimization and discrete investment decisions
    - Combined with On/Off variables and constraints

- **Effects, not only Costs --> Multi-criteria Optimization**
    - flixopt abstracts costs as so called 'Effects'. This allows to model costs, CO2-emissions, primary-energy-demand or area-demand at the same time.
    - Effects can interact with each other(e.g., specific CO2 costs)
    - Any of these `Effects` can be used as the optimization objective.
    - A **Weigted Sum** of Effects can be used as the optimization objective.
    - Every Effect can be constrained ($\epsilon$-constraint method).

- **Calculation Modes**
    - **Full** - Solve the model with highest accuracy and computational requirements.
    - **Segmented** - Speed up solving by using a rolling horizon.
    - **Aggregated** - Speed up solving by identifying typical periods using [TSAM](https://github.com/FZJ-IEK3-VSA/tsam). Suitable for large models.

---

## 📦 Installation

Install FlixOpt via pip.
`pip install flixopt`
With [HiGHS](https://github.com/ERGO-Code/HiGHS?tab=readme-ov-file) included out of the box, flixopt is ready to use..

We recommend installing FlixOpt with all dependencies, which enables additional features like interactive network visualizations ([pyvis](https://github.com/WestHealth/pyvis)) and time series aggregation ([tsam](https://github.com/FZJ-IEK3-VSA/tsam)).
`pip install "flixopt[full]"`

---

## 📚 Documentation

The documentation is available at [https://flixopt.github.io/flixopt/latest/](https://flixopt.github.io/flixopt/latest/)

---

## 🎯️ Solver Integration

By default, FlixOpt uses the open-source solver [HiGHS](https://highs.dev/) which is installed by default. However, it is compatible with additional solvers such as:

- [Gurobi](https://www.gurobi.com/)
- [CBC](https://github.com/coin-or/Cbc)
- [GLPK](https://www.gnu.org/software/glpk/)
- [CPLEX](https://www.ibm.com/analytics/cplex-optimizer)

For detailed licensing and installation instructions, refer to the respective solver documentation.

---

## 🛠 Development Setup
Look into our docs for [development setup](https://flixopt.github.io/flixopt/latest/contribute/)

---

## 📖 Citation

If you use FlixOpt in your research or project, please cite the following:

- **Main Citation:** [DOI:10.18086/eurosun.2022.04.07](https://doi.org/10.18086/eurosun.2022.04.07)
- **Short Overview:** [DOI:10.13140/RG.2.2.14948.24969](https://doi.org/10.13140/RG.2.2.14948.24969)
