# FlixOpt: Energy and Material Flow Optimization Framework
[](https://flixopt.github.io/flixopt/latest/)
[](https://github.com/flixOpt/flixopt/actions/workflows/python-app.yaml)
[](https://pypi.org/project/flixopt/)
[](https://pypi.org/project/flixopt/)
[](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.
---
## 📖 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)
Raw data
{
"_id": null,
"home_page": null,
"name": "flixopt",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "Felix Bumann <felixbumann387@gmail.com>, Peter Stange <peter.stange@tu-dresden.de>",
"keywords": "optimization, energy systems, numerical analysis",
"author": null,
"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>",
"download_url": "https://files.pythonhosted.org/packages/6f/50/66c4c842829344896bc14ec5b3324434d2333343d2a9b5c19cf40d205ca2/flixopt-2.1.5.tar.gz",
"platform": null,
"description": "# FlixOpt: Energy and Material Flow Optimization Framework\n\n[](https://flixopt.github.io/flixopt/latest/)\n[](https://github.com/flixOpt/flixopt/actions/workflows/python-app.yaml)\n[](https://pypi.org/project/flixopt/)\n[](https://pypi.org/project/flixopt/)\n[](https://opensource.org/licenses/MIT)\n\n---\n\n## \ud83d\ude80 Purpose\n\n**flixopt** is a Python-based optimization framework designed to tackle energy and material flow problems using mixed-integer linear programming (MILP).\n\n**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.\n\n**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.\n\n**flixopt** provides a user-friendly interface with options for advanced users.\n\nIt 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). \n\n---\n\n## \ud83c\udf1f Key Features\n\n- **High-level Interface** with low-level control\n - User-friendly interface for defining flow systems\n - Pre-defined components like CHP, Heat Pump, Cooling Tower, etc.\n - Fine-grained control for advanced configurations\n\n- **Investment Optimization**\n - Combined dispatch and investment optimization\n - Size optimization and discrete investment decisions\n - Combined with On/Off variables and constraints\n\n- **Effects, not only Costs --> Multi-criteria Optimization**\n - flixopt abstracts costs as so called 'Effects'. This allows to model costs, CO2-emissions, primary-energy-demand or area-demand at the same time.\n - Effects can interact with each other(e.g., specific CO2 costs)\n - Any of these `Effects` can be used as the optimization objective.\n - A **Weigted Sum** of Effects can be used as the optimization objective.\n - Every Effect can be constrained ($\\epsilon$-constraint method).\n\n- **Calculation Modes**\n - **Full** - Solve the model with highest accuracy and computational requirements.\n - **Segmented** - Speed up solving by using a rolling horizon. \n - **Aggregated** - Speed up solving by identifying typical periods using [TSAM](https://github.com/FZJ-IEK3-VSA/tsam). Suitable for large models.\n\n---\n\n## \ud83d\udce6 Installation\n\nInstall FlixOpt via pip.\n`pip install flixopt`\nWith [HiGHS](https://github.com/ERGO-Code/HiGHS?tab=readme-ov-file) included out of the box, flixopt is ready to use..\n\nWe 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)).\n`pip install \"flixopt[full]\"`\n\n---\n\n## \ud83d\udcda Documentation\n\nThe documentation is available at [https://flixopt.github.io/flixopt/latest/](https://flixopt.github.io/flixopt/latest/)\n\n---\n\n## \ud83d\udee0\ufe0f Solver Integration\n\nBy 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: \n\n- [Gurobi](https://www.gurobi.com/) \n- [CBC](https://github.com/coin-or/Cbc) \n- [GLPK](https://www.gnu.org/software/glpk/)\n- [CPLEX](https://www.ibm.com/analytics/cplex-optimizer)\n\nFor detailed licensing and installation instructions, refer to the respective solver documentation. \n\n---\n\n## \ud83d\udcd6 Citation\n\nIf you use FlixOpt in your research or project, please cite the following: \n\n- **Main Citation:** [DOI:10.18086/eurosun.2022.04.07](https://doi.org/10.18086/eurosun.2022.04.07) \n- **Short Overview:** [DOI:10.13140/RG.2.2.14948.24969](https://doi.org/10.13140/RG.2.2.14948.24969) \n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "Vector based energy and material flow optimization framework in Python.",
"version": "2.1.5",
"project_urls": {
"documentation": "https://flixopt.github.io/flixopt/",
"homepage": "https://tu-dresden.de/ing/maschinenwesen/iet/gewv/forschung/forschungsprojekte/flixopt",
"repository": "https://github.com/flixOpt/flixopt"
},
"split_keywords": [
"optimization",
" energy systems",
" numerical analysis"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "48c01137fc7d68da901388c8433ca5f8a757d9383f7a9ff59b3a00fd83f9ccc6",
"md5": "0cf79769c1d1866a8cff43ad9fa21e88",
"sha256": "1120b7503f36d4de2b9b04883755d20d948c38a87e9ad788fc92749b2b2783fb"
},
"downloads": -1,
"filename": "flixopt-2.1.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0cf79769c1d1866a8cff43ad9fa21e88",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 2209817,
"upload_time": "2025-07-08T11:41:32",
"upload_time_iso_8601": "2025-07-08T11:41:32.778255Z",
"url": "https://files.pythonhosted.org/packages/48/c0/1137fc7d68da901388c8433ca5f8a757d9383f7a9ff59b3a00fd83f9ccc6/flixopt-2.1.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6f5066c4c842829344896bc14ec5b3324434d2333343d2a9b5c19cf40d205ca2",
"md5": "5d47b557004c7df56dd1e9357cc8f627",
"sha256": "edcbd3906d336bdff1e98b253d0d45f23c85cd6fe2652d8ff4ceba24fc5250a7"
},
"downloads": -1,
"filename": "flixopt-2.1.5.tar.gz",
"has_sig": false,
"md5_digest": "5d47b557004c7df56dd1e9357cc8f627",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 2620687,
"upload_time": "2025-07-08T11:41:34",
"upload_time_iso_8601": "2025-07-08T11:41:34.375086Z",
"url": "https://files.pythonhosted.org/packages/6f/50/66c4c842829344896bc14ec5b3324434d2333343d2a9b5c19cf40d205ca2/flixopt-2.1.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-08 11:41:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "flixOpt",
"github_project": "flixopt",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "flixopt"
}