Skip to content

Commit 05d707f

Browse files
committed
first text version made from paper-draft
1 parent 6dc334f commit 05d707f

1 file changed

Lines changed: 51 additions & 47 deletions

File tree

paper/paper.md

Lines changed: 51 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: 'Flixopt: A framework for optimization of flow-systems'
2+
title: 'Flixopt: A flexible optimization framework for flow-systems'
33
tags:
44
- flow-system
55
- mixed-integer linear programming
@@ -34,75 +34,84 @@ bibliography: paper.bib
3434

3535
---
3636

37-
# Flixopt: A Flexible Optimization Framework for Energy and Material Flow Systems
38-
3937
## Summary
4038

41-
Flixopt is an open-source Python framework for the mixed-integer linear optimization of systems with energy and material flows. It addresses the growing complexity of modern supply systems—characterized by fluctuating renewables, sector coupling, storage integration, and diverse technology portfolios—by providing a general, extensible, and vectorized modeling architecture. Built on the linear optimization package Linopy [@Hofmann2023], Flixopt allows users to flexibly represent system topologies, configure operational and investment decisions, and evaluate multiple metrics through its novel *Effects* concept. While developed primarily for energy-system studies such as district heating, the framework is domain-agnostic and suitable for any flow-based system where modular modeling and transparency are essential.
39+
Flixopt is an open-source Python framework for the mixed-integer linear optimization of systems with energy and material flows. It addresses the growing complexity of modern supply systems—characterized by fluctuating renewables, sector coupling, storage integration, and diverse technology portfolios—by providing a general, extensible, and vectorized modeling architecture. Built on the linear optimization package Linopy [@Hofmann2023], Flixopt allows users to flexibly represent system topologies, configure operational and investment decisions, and evaluate multiple metrics through its novel *Effects* concept. While developed primarily for energy-system studies such as heat supply systems, the framework is domain-agnostic and suitable for any flow-based system where modular modeling and transparency are essential.
4240

4341
## Statement of Need
4442

45-
Existing energy system modeling frameworks often focus on specific technologies or sectors, restrict the representation of time structures, or embed implicit assumptions into predefined component libraries. Reviews such as Hoffmann et al. [@HOFFMANN2024100190] highlight the need for more flexible, framework-based modeling tools capable of adapting to diverse research questions. Other established tools—such as oemof.solph [@oemof_2020] or PyPSA [@PyPSA]—excel in particular domains but provide less granular control over multi-metric evaluations or lack transparent vector-based formulations.
43+
Existing energy system modeling frameworks as reviewed in [@HOFFMANN2024100190] are often tailored to particular use cases, have limited flexibility for extensions, unflexible handling of timesteps or do not support different evaluation metrics beyond the monetary costs. This highlights the need for more flexible, framework-based modeling tools capable of adapting to diverse questions.
44+
In addition to the need for more flexible and adaptable settings, the efficient handling of equations in a vector-based form has emerged as an important requirement, as it supports improved mathematical modeling, enhances computational performance, and facilitates better transparency and manageability of the model’s equation set.
45+
[@PyPSA]
4646

47-
Flixopt fills this gap by enabling:
4847

49-
* full flexibility in timestep definitions, including non-equidistant structures;
50-
* modular construction of flows, components, and buses;
51-
* detailed representation of operational and investment behavior via optional *Features*;
52-
* arbitrary evaluation metrics through *Effects*, supporting multiobjective and constrained formulations.
48+
Flixopt fills this gap by enabling:
5349

54-
This combination allows researchers to represent system structure and evaluation logic without adopting predefined assumptions or technology templates.
50+
* full flexibility of system construction
51+
* detailed representation of operational and investment behavior
52+
* arbitrary evaluation metrics through *Effects*, supporting multiobjective and constrained formulations.
53+
* todo: dimensions scenario and period!
5554

56-
## Software Description
55+
ODER
56+
* allocating impacts to freely definable evaluation metrics, through *Effects*, supporting multiobjective and constrained formulations.
57+
* easy switch of objectives and wide flexibility of configuration of the calculation
5758

58-
Flixopt organizes system models into *Flows*, *Components*, *Buses*, and *Effects*. Flows represent the transport of energy or material; components transform, store, generate, or consume flows; buses enforce nodal balance; and effects gather contributions to metrics such as cost, emissions, primary energy demand, or user-defined indicators. Effects may reference each other, enabling constructs such as CO₂ taxes, weighted-sum objectives, or ε-constraints.
59+
Flixopt is designed for flexible use across various disciplines and research questions or practical tasks ranging from operational dispatch to strategic planning.
5960

60-
Each user-defined element is associated with an internal model that generates constraints and variables in a vectorized form using Linopy. Optional features add investment decisions, on/off states, minimum up- or downtimes, mutual exclusivity of flows, or piecewise-linear relations. These capabilities remain inactive unless explicitly required, keeping models compact and computationally efficient.
61+
## Software Description
6162

62-
Flixopt supports several calculation modes. The default mode performs full time-resolved optimization. Aggregated modes use clustered typical periods, following principles discussed in the literature on time-series aggregation (e.g., @TSAM2020), reducing computational burden for long time horizons. A segmented mode decomposes large operational problems into smaller, sequentially optimized blocks.
63+
The architecture and workflow of the Flixopt package consist of three main steps: initialization, modeling and solving, and postprocessing of results; illustrated in \autoref{fig:architecture}. Users begin by implementing a flow‑system, defining the network topology and all element parameters. The flow-system describes the structural representation of a physical system to be modeled. It consists of *Flows*, *Components* and *Buses* inspired by [@oemof_2020]. Based on an arbitrary subset of the flow-system, one or more calculation setups can then be configured.
64+
During modeling, Flixopt constructs the optimization problem in a fully vectorized manner using Linopy. After solving, Flixopt provides a postprocessing environment that yields structured access to results, facilitates visualization and statistical analysis, and enables saving/restoring complete solution states.
6365

6466
![Overview of Flixopt´s system architecture and workflow \label{fig:architecture}](figures/architecture.svg)
6567

66-
## Use Cases
68+
Each user-defined element is associated with an internal model that generates constraints and variables in a vectorized form using Linopy. Optional features add investment decisions, on/off states, minimum up- or downtimes, mutual exclusivity of flows, piecewise-linear relations etc. These capabilities remain inactive unless explicitly required, keeping models compact and computationally efficient.
6769

68-
Flixopt has been used in a variety of studies, particularly in district heating and building supply optimization. Examples include:
70+
Flixopt supports several calculation modes. The default mode performs full time-resolved optimization. Aggregated modes use clustered typical periods, following principles discussed in the literature on time-series aggregation ([@TSAM2020]), reducing computational burden for long time horizons. A segmented mode decomposes large operational problems into smaller, sequentially optimized blocks.
6971

70-
* **District heating transformation**: Optimization of investment and operation for portfolios including heat pumps, biomass boilers, and thermal storage, as in SmartBioGrid [@SBG_2023] and related follow-up analyses.
71-
* **Building-level energy systems**: Integrated optimization of heat pumps, PV, thermal storage, and optional batteries under physical constraints such as roof area.
72-
* **Strategic long-term planning**: Multi-decade scenarios with typical-period aggregation and iterative investment decisions, similar to approaches seen in Welder et al. [@WELDER20181130].
72+
## Effects
7373

74-
Across these applications, Flixopt reduces the need for custom equation writing while maintaining full transparency and flexibility.
74+
Flixopt introduces a freely definable system of evaluation metrics called *Effects* such as costs, emissions, primary energy demand, or any user-defined indicators. Any structural entity can contribute shares to any *Effect* and *Effects* can contribute to each other. This abstraction through *Effects* has the following advantages over a traditional rigid objective, as it generically integrates the following features:
75+
* Switch the objective to another *Effect* easily, once *Effects* and a flow-system are defined.
76+
* Include as many evaluation metrics as needed to simplify the evaluation of the solution.
77+
* Example: Instead of a global objective ’costs’, you could divide it into ’energy costs’, ’labor costs’, ’funding’, ’revenues’ and more, which all have a share to the ’net total’. This way it is possible to access these metrics individually after the optimization.
78+
* Constrain the solution space for the programming problem via additional criteria, that are not included in the objective (ϵ-constraint method [@HOFFMANN2024100190]).
79+
* Example 1: Available floor space as a constraint on investment options.
80+
* Example 2: Limitation of ’primary energy demand’ or ’CO2 emission’ for a supply task.
81+
* Example 3: Limitation or necessity of a ’number of installed entities’ for the investment decision.
82+
* Combine multiple evaluation metrics to the objective (Weighted Sum Method [@HOFFMANN2024100190]).
83+
* Example 1: ’CO2 emissions’ contribute to the ’costs’ through CO2 taxes.
84+
* Example 2: ’floor space area’ used for investments contribute to the ’costs’ through the land price.
85+
* Distinguish between operational and investment impacts and constraints of an evaluation criteria.
86+
* Example: Only operational ’CO2 emissions’ should be integrated to cost objective via CO2 taxes, as investment related CO2 emission costs are already included in the component costs.
87+
* Adjust the optimization by using an additional Effect to apply an incentive for or against an investment or dispatch decision without altering existing effects. This simplifies modeling to generate alternatives and comparing their results.
7588

76-
## Conclusion
89+
## Scenarios and Periods
7790

78-
Flixopt provides a general, extensible, and transparent optimization framework for systems with energy and material flows. By combining a modular element structure, vector-based modeling, flexible time handling, and a powerful multi-metric evaluation system, it enables researchers and practitioners to address diverse optimization tasks without committing to predefined templates or assumptions. Its architecture, grounded in established modeling principles [@williams_model_2013; @kallrath_2002], and its open-source implementation make it a robust foundation for future developments in energy system optimization.
91+
todo! Idealerweise kurz und kleines Bild dazu.
7992

8093
## References
8194

82-
References are managed via the accompanying `paper.bib` file, which will be rendered automatically by JOSS.
95+
siehe unten!
8396

84-
# Variante näher am paper (und zu lang)!
85-
## Introduction
97+
<div style="background-color: #f0f8ff; padding: 15px; border-radius: 5px;">
8698

87-
With the ongoing transformation of the energy supply, the complexity of systems is increasing. Fuel and technology switches, sector coupling, fluctuating energy sources, and the integration of storage solutions are becoming state of the art. Due to new limitations as well as newly acquired degrees of freedom, simple demand-driven operation is increasingly replaced by cost‑optimized operation of many individual units within supply systems. Mathematical optimization — particularly mixed‑integer linear programming (MILP) — has therefore become one of the standard methods for determining optimal operation and design of energy supply systems.
88-
89-
A wide range of frameworks for modeling and optimization of energy systems exists. An overview of 63 existing frameworks is given in Hoffmann et al. (2024). However, existing frameworks are often tailored to particular use cases, do not allow flexible extension, restrict timestep handling, or lack support for evaluation metrics beyond monetary cost. In addition to the need for greater flexibility and adaptability, efficient handling of equations in a vector‑based form has become an important requirement, as it enables improved mathematical modeling, enhances computational performance, and supports transparency and maintainability of the model’s equation set.
99+
# ++ Textschnipsel näher am smart energy paper (und zu lang)! ++
100+
## Introduction
90101

91102
Flixopt is a Python framework for mixed‑integer linear programming and optimization of complex systems with energy and material flows. It builds on a MATLAB® framework that has been migrated to Python and incorporates principles from earlier work as well as ideas from the Python package oemof/solph. Flixopt is published under the MIT license. Its generic and extensible approach allows application in a wide variety of scenarios. It enables non‑equidistant timesteps, allocation of impacts to freely definable evaluation metrics, switching between objectives, and broad flexibility in configuring the optimization. A short overview was previously published, but this paper provides a comprehensive description of the framework and introduces its novel concepts (e.g., *Effects*).
92103

93104
Although development has focused mainly on optimizing energy systems — especially district heating systems — Flixopt is designed to be usable across disciplines and research questions.
94105

95-
## Architecture and Workflow of Flixopt
96-
97-
The architecture and workflow of the Flixopt package consist of three main steps: initialization, modeling and solving, and postprocessing of results. Users begin by implementing a flow‑system consisting of *Element* objects, defining the network topology and all element parameters. One or more calculation setups can then be configured, including the choice of solver, calculation mode, and selected time horizon or segment.
98-
99-
During modeling, Flixopt creates for each calculation a sub‑flow‑system derived from the base model. It then constructs the optimization problem in a fully vectorized manner using Linopy, which handles array‑based modeling and solver communication. After solving, Flixopt provides a postprocessing environment that yields structured access to results, facilitates visualization and statistical analysis, and enables saving/restoring complete solution states.
100-
106+
## Architecture and workflow of Flixopt
101107

108+
The architecture and workflow of the Flixopt package consist of three main steps: initialization, modeling and solving, and postprocessing of results. Users begin by implementing a flow‑system, defining the network topology and all element parameters. Based on the flow-system or an arbitrary subset of it, one or more calculation setups can then be configured, including the choice of solver.
102109

110+
During modeling, Flixopt constructs the optimization problem in a fully vectorized manner using Linopy. After solving, Flixopt provides a postprocessing environment that yields structured access to results, facilitates visualization and statistical analysis, and enables saving/restoring complete solution states.
103111

112+
The architecture and workflow of the Flixopt package consist of three main steps: initialization, modeling and solving, and postprocessing of results. Users begin by implementing a flow‑system consisting of *Element* objects, defining the network topology and all element parameters. One or more calculation setups can then be configured, including the choice of solver, calculation mode, and selected time horizon or segment.
104113

105-
![Overview of Flixopt´s system architecture and workflow \label{fig:architecture}](figures/architecture.svg)
114+
During modeling, Flixopt creates for each calculation a sub‑flow‑system derived from the base model. It then constructs the optimization problem in a fully vectorized manner using Linopy, which handles array‑based modeling and solver communication. After solving, Flixopt provides a postprocessing environment that yields structured access to results, facilitates visualization and statistical analysis, and enables saving/restoring complete solution states.
106115

107116
## Structure and Mathematical Modeling
108117

@@ -114,12 +123,10 @@ Time handling in Flixopt is fully flexible: users may define equidistant or non
114123

115124
## Effects and Objective
116125

117-
Effects are central to Flixopt’s abstraction of evaluation metrics. Any element can contribute operation‑ or investment‑related shares to any effect, and effects may also reference each other. This enables: (1) multi‑criteria evaluation, (2) ε‑constraint formulations, (3) weighted‑sum multiobjective optimization, (4) distinguishing operational and investment impacts, and (5) external incentives without altering existing effect definitions. One effect is chosen as the objective, and a general penalty term is added to ensure solvability and improve debugging.
126+
Effects are central to Flixopt’s abstraction of evaluation metrics. This enables: (1) multi‑criteria evaluation, (2) ε‑constraint formulations, (3) weighted‑sum multiobjective optimization, (4) distinguishing operational and investment impacts, and (5) external incentives without altering existing effect definitions. One effect is chosen as the objective, and a general penalty term is added to ensure solvability and improve debugging.
118127

119128
## Components, Flows, and Buses
120129

121-
Flows represent directed transport of energy or material, defined by flow‑rates and flow‑hours. Components include sinks, sources, linear transformers, and storages. Linear transformers define ratios between incoming and outgoing flows, while storages introduce state‑of‑charge variables, efficiencies, and bounds. Buses maintain nodal balance between incoming and outgoing flows at each timestep and can include penalty terms to resolve infeasibilities.
122-
123130
## Features
124131

125132
Flixopt’s feature system extends elements with optional advanced modeling capabilities:
@@ -134,14 +141,11 @@ Flixopt’s feature system extends elements with optional advanced modeling capa
134141

135142
Flixopt supports several calculation modes: exact time‑resolved modeling, segmented optimization for long horizons, and aggregated/typical‑period approaches based on time‑series clustering. These modes reduce computational effort while preserving system characteristics.
136143

137-
## Applications
138-
139-
Two exemplary applications illustrate Flixopt’s capabilities: (1) investment and operational optimization of district heat generation systems, and (2) integrated heat and electricity supply for a building including renewable energy and storage technologies. In both cases, Flixopt’s flexibility allows the definition of multiple technologies, effects, constraints, and interactions with little need for custom equations.
140-
141-
## Conclusion
142-
143-
Flixopt is a highly flexible open‑source optimization framework for modeling complex systems with energy and material flows. By combining a generic architecture, vector‑based equation handling, and a powerful abstraction of evaluation metrics through *Effects*, it supports a wide range of research and practical applications. Its extensibility, detailed configuration options, and efficient postprocessing environment make it a comprehensive tool for tackling modern challenges in energy system design and operation.
144-
145144
# Acknowledgements
145+
</div>
146+
147+
# todo
148+
* Prüfen, dass möglichst alle Literaturquellen verwendet
146149

147150
# References
151+
* todo: Prüfen, dass möglichst alle Literaturquellen verwendet

0 commit comments

Comments
 (0)