flixopt 2.2.0rc2__py3-none-any.whl → 3.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- flixopt/__init__.py +33 -4
- flixopt/aggregation.py +60 -80
- flixopt/calculation.py +403 -182
- flixopt/commons.py +1 -10
- flixopt/components.py +939 -448
- flixopt/config.py +553 -191
- flixopt/core.py +513 -846
- flixopt/effects.py +644 -178
- flixopt/elements.py +610 -355
- flixopt/features.py +394 -966
- flixopt/flow_system.py +736 -219
- flixopt/interface.py +1104 -302
- flixopt/io.py +103 -79
- flixopt/linear_converters.py +387 -95
- flixopt/modeling.py +757 -0
- flixopt/network_app.py +73 -39
- flixopt/plotting.py +294 -138
- flixopt/results.py +1254 -300
- flixopt/solvers.py +25 -21
- flixopt/structure.py +938 -396
- flixopt/utils.py +36 -12
- flixopt-3.0.1.dist-info/METADATA +209 -0
- flixopt-3.0.1.dist-info/RECORD +26 -0
- flixopt-3.0.1.dist-info/top_level.txt +1 -0
- docs/examples/00-Minimal Example.md +0 -5
- docs/examples/01-Basic Example.md +0 -5
- docs/examples/02-Complex Example.md +0 -10
- docs/examples/03-Calculation Modes.md +0 -5
- docs/examples/index.md +0 -5
- docs/faq/contribute.md +0 -61
- docs/faq/index.md +0 -3
- docs/images/architecture_flixOpt-pre2.0.0.png +0 -0
- docs/images/architecture_flixOpt.png +0 -0
- docs/images/flixopt-icon.svg +0 -1
- docs/javascripts/mathjax.js +0 -18
- docs/user-guide/Mathematical Notation/Bus.md +0 -33
- docs/user-guide/Mathematical Notation/Effects, Penalty & Objective.md +0 -132
- docs/user-guide/Mathematical Notation/Flow.md +0 -26
- docs/user-guide/Mathematical Notation/LinearConverter.md +0 -21
- docs/user-guide/Mathematical Notation/Piecewise.md +0 -49
- docs/user-guide/Mathematical Notation/Storage.md +0 -44
- docs/user-guide/Mathematical Notation/index.md +0 -22
- docs/user-guide/Mathematical Notation/others.md +0 -3
- docs/user-guide/index.md +0 -124
- flixopt/config.yaml +0 -10
- flixopt-2.2.0rc2.dist-info/METADATA +0 -167
- flixopt-2.2.0rc2.dist-info/RECORD +0 -54
- flixopt-2.2.0rc2.dist-info/top_level.txt +0 -5
- pics/architecture_flixOpt-pre2.0.0.png +0 -0
- pics/architecture_flixOpt.png +0 -0
- pics/flixOpt_plotting.jpg +0 -0
- pics/flixopt-icon.svg +0 -1
- pics/pics.pptx +0 -0
- scripts/extract_release_notes.py +0 -45
- scripts/gen_ref_pages.py +0 -54
- tests/ressources/Zeitreihen2020.csv +0 -35137
- {flixopt-2.2.0rc2.dist-info → flixopt-3.0.1.dist-info}/WHEEL +0 -0
- {flixopt-2.2.0rc2.dist-info → flixopt-3.0.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# Storages
|
|
2
|
-
**Storages** have one incoming and one outgoing **[Flow](#flows)** with a charging and discharging efficiency.
|
|
3
|
-
A storage has a state of charge $c(\text{t}_i)$ which is limited by its `size` $\text C$ and relative bounds $\eqref{eq:Storage_Bounds}$.
|
|
4
|
-
|
|
5
|
-
$$ \label{eq:Storage_Bounds}
|
|
6
|
-
\text C \cdot \text c^{\text{L}}_{\text{rel}}(\text t_{i})
|
|
7
|
-
\leq c(\text{t}_i) \leq
|
|
8
|
-
\text C \cdot \text c^{\text{U}}_{\text{rel}}(\text t_{i})
|
|
9
|
-
$$
|
|
10
|
-
|
|
11
|
-
Where:
|
|
12
|
-
|
|
13
|
-
- $\text C$ is the size of the storage
|
|
14
|
-
- $c(\text{t}_i)$ is the state of charge at time $\text{t}_i$
|
|
15
|
-
- $\text c^{\text{L}}_{\text{rel}}(\text t_{i})$ is the relative lower bound (typically 0)
|
|
16
|
-
- $\text c^{\text{U}}_{\text{rel}}(\text t_{i})$ is the relative upper bound (typically 1)
|
|
17
|
-
|
|
18
|
-
With $\text c^{\text{L}}_{\text{rel}}(\text t_{i}) = 0$ and $\text c^{\text{U}}_{\text{rel}}(\text t_{i}) = 1$,
|
|
19
|
-
Equation $\eqref{eq:Storage_Bounds}$ simplifies to
|
|
20
|
-
|
|
21
|
-
$$ 0 \leq c(\text t_{i}) \leq \text C $$
|
|
22
|
-
|
|
23
|
-
The state of charge $c(\text{t}_i)$ decreases by a fraction of the prior state of charge. The belonging parameter
|
|
24
|
-
$ \dot{ \text c}_\text{rel, loss}(\text{t}_i)$ expresses the "loss fraction per hour". The storage balance from $\text{t}_i$ to $\text t_{i+1}$ is
|
|
25
|
-
|
|
26
|
-
$$
|
|
27
|
-
\begin{align*}
|
|
28
|
-
c(\text{t}_{i+1}) &= c(\text{t}_{i}) \cdot (1-\dot{\text{c}}_\text{rel,loss}(\text{t}_i) \cdot \Delta \text{t}_{i}) \\
|
|
29
|
-
&\quad + p_{f_\text{in}}(\text{t}_i) \cdot \Delta \text{t}_i \cdot \eta_\text{in}(\text{t}_i) \\
|
|
30
|
-
&\quad - \frac{p_{f_\text{out}}(\text{t}_i) \cdot \Delta \text{t}_i}{\eta_\text{out}(\text{t}_i)}
|
|
31
|
-
\tag{3}
|
|
32
|
-
\end{align*}
|
|
33
|
-
$$
|
|
34
|
-
|
|
35
|
-
Where:
|
|
36
|
-
|
|
37
|
-
- $c(\text{t}_{i+1})$ is the state of charge at time $\text{t}_{i+1}$
|
|
38
|
-
- $c(\text{t}_{i})$ is the state of charge at time $\text{t}_{i}$
|
|
39
|
-
- $\dot{\text{c}}_\text{rel,loss}(\text{t}_i)$ is the relative loss rate (self-discharge) per hour
|
|
40
|
-
- $\Delta \text{t}_{i}$ is the time step duration in hours
|
|
41
|
-
- $p_{f_\text{in}}(\text{t}_i)$ is the input flow rate at time $\text{t}_i$
|
|
42
|
-
- $\eta_\text{in}(\text{t}_i)$ is the charging efficiency at time $\text{t}_i$
|
|
43
|
-
- $p_{f_\text{out}}(\text{t}_i)$ is the output flow rate at time $\text{t}_i$
|
|
44
|
-
- $\eta_\text{out}(\text{t}_i)$ is the discharging efficiency at time $\text{t}_i$
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Mathematical Notation
|
|
3
|
-
|
|
4
|
-
## Naming Conventions
|
|
5
|
-
|
|
6
|
-
FlixOpt uses the following naming conventions:
|
|
7
|
-
|
|
8
|
-
- All optimization variables are denoted by italic letters (e.g., $x$, $y$, $z$)
|
|
9
|
-
- All parameters and constants are denoted by non italic small letters (e.g., $\text{a}$, $\text{b}$, $\text{c}$)
|
|
10
|
-
- All Sets are denoted by greek capital letters (e.g., $\mathcal{F}$, $\mathcal{E}$)
|
|
11
|
-
- All units of a set are denoted by greek small letters (e.g., $\mathcal{f}$, $\mathcal{e}$)
|
|
12
|
-
- The letter $i$ is used to denote an index (e.g., $i=1,\dots,\text n$)
|
|
13
|
-
- All time steps are denoted by the letter $\text{t}$ (e.g., $\text{t}_0$, $\text{t}_1$, $\text{t}_i$)
|
|
14
|
-
|
|
15
|
-
## Timesteps
|
|
16
|
-
Time steps are defined as a sequence of discrete time steps $\text{t}_i \in \mathcal{T} \quad \text{for} \quad i \in \{1, 2, \dots, \text{n}\}$ (left-aligned in its timespan).
|
|
17
|
-
From this sequence, the corresponding time intervals $\Delta \text{t}_i \in \Delta \mathcal{T}$ are derived as
|
|
18
|
-
|
|
19
|
-
$$\Delta \text{t}_i = \text{t}_{i+1} - \text{t}_i \quad \text{for} \quad i \in \{1, 2, \dots, \text{n}-1\}$$
|
|
20
|
-
|
|
21
|
-
The final time interval $\Delta \text{t}_\text n$ defaults to $\Delta \text{t}_\text n = \Delta \text{t}_{\text n-1}$, but is of course customizable.
|
|
22
|
-
Non-equidistant time steps are also supported.
|
docs/user-guide/index.md
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
# FlixOpt Concepts
|
|
2
|
-
|
|
3
|
-
FlixOpt is built around a set of core concepts that work together to represent and optimize energy and material flow systems. This page provides a high-level overview of these concepts and how they interact.
|
|
4
|
-
|
|
5
|
-
## Core Concepts
|
|
6
|
-
|
|
7
|
-
### FlowSystem
|
|
8
|
-
|
|
9
|
-
The [`FlowSystem`][flixopt.flow_system.FlowSystem] is the central organizing unit in FlixOpt.
|
|
10
|
-
Every FlixOpt model starts with creating a FlowSystem. It:
|
|
11
|
-
|
|
12
|
-
- Defines the timesteps for the optimization
|
|
13
|
-
- Contains and connects [components](#components), [buses](#buses), and [flows](#flows)
|
|
14
|
-
- Manages the [effects](#effects) (objectives and constraints)
|
|
15
|
-
|
|
16
|
-
### Flows
|
|
17
|
-
|
|
18
|
-
[`Flow`][flixopt.elements.Flow] objects represent the movement of energy or material between a [Bus](#buses) and a [Component](#components) in a predefined direction.
|
|
19
|
-
|
|
20
|
-
- Have a `size` which, generally speaking, defines how fast energy or material can be moved. Usually measured in MW, kW, m³/h, etc.
|
|
21
|
-
- Have a `flow_rate`, which is defines how fast energy or material is transported. Usually measured in MW, kW, m³/h, etc.
|
|
22
|
-
- Have constraints to limit the flow-rate (min/max, total flow hours, on/off etc.)
|
|
23
|
-
- Can have fixed profiles (for demands or renewable generation)
|
|
24
|
-
- Can have [Effects](#effects) associated by their use (operation, investment, on/off, ...)
|
|
25
|
-
|
|
26
|
-
#### Flow Hours
|
|
27
|
-
While the **Flow Rate** defines the rate in which energy or material is transported, the **Flow Hours** define the amount of energy or material that is transported.
|
|
28
|
-
Its defined by the flow_rate times the duration of the timestep in hours.
|
|
29
|
-
|
|
30
|
-
Examples:
|
|
31
|
-
|
|
32
|
-
| Flow Rate | Timestep | Flow Hours |
|
|
33
|
-
|-----------|----------|------------|
|
|
34
|
-
| 10 (MW) | 1 hour | 10 (MWh) |
|
|
35
|
-
| 10 (MW) | 6 minutes | 0.1 (MWh) |
|
|
36
|
-
| 10 (kg/h) | 1 hour | 10 (kg) |
|
|
37
|
-
|
|
38
|
-
### Buses
|
|
39
|
-
|
|
40
|
-
[`Bus`][flixopt.elements.Bus] objects represent nodes or connection points in a FlowSystem. They:
|
|
41
|
-
|
|
42
|
-
- Balance incoming and outgoing flows
|
|
43
|
-
- Can represent physical networks like heat, electricity, or gas
|
|
44
|
-
- Handle infeasible balances gently by allowing the balance to be closed in return for a big Penalty (optional)
|
|
45
|
-
|
|
46
|
-
### Components
|
|
47
|
-
|
|
48
|
-
[`Component`][flixopt.elements.Component] objects usually represent physical entities in your system that interact with [`Flows`][flixopt.elements.Flow]. They include:
|
|
49
|
-
|
|
50
|
-
- [`LinearConverters`][flixopt.components.LinearConverter] - Converts input flows to output flows with (piecewise) linear relationships
|
|
51
|
-
- [`Storages`][flixopt.components.Storage] - Stores energy or material over time
|
|
52
|
-
- [`Sources`][flixopt.components.Source] / [`Sinks`][flixopt.components.Sink] / [`SourceAndSinks`][flixopt.components.SourceAndSink] - Produce or consume flows. They are usually used to model external demands or supplies.
|
|
53
|
-
- [`Transmissions`][flixopt.components.Transmission] - Moves flows between locations with possible losses
|
|
54
|
-
- Specialized [`LinearConverters`][flixopt.components.LinearConverter] like [`Boilers`][flixopt.linear_converters.Boiler], [`HeatPumps`][flixopt.linear_converters.HeatPump], [`CHPs`][flixopt.linear_converters.CHP], etc. These simplify the usage of the `LinearConverter` class and can also be used as blueprint on how to define custom classes or parameterize existing ones.
|
|
55
|
-
|
|
56
|
-
### Effects
|
|
57
|
-
|
|
58
|
-
[`Effect`][flixopt.effects.Effect] objects represent impacts or metrics related to your system, such as:
|
|
59
|
-
|
|
60
|
-
- Costs (investment, operation)
|
|
61
|
-
- Emissions (CO₂, NOx, etc.)
|
|
62
|
-
- Resource consumption
|
|
63
|
-
- Area demand
|
|
64
|
-
|
|
65
|
-
These can be freely defined and crosslink to each other (`CO₂` ──[specific CO₂-costs]─→ `Costs`).
|
|
66
|
-
One effect is designated as the **optimization objective** (typically Costs), while others can be constrained.
|
|
67
|
-
This approach allows for a multi-criteria optimization using both...
|
|
68
|
-
- ... the **Weigted Sum**Method, by Optimizing a theoretical Effect which other Effects crosslink to.
|
|
69
|
-
- ... the ($\epsilon$-constraint method) by constraining effects.
|
|
70
|
-
|
|
71
|
-
### Calculation
|
|
72
|
-
|
|
73
|
-
A [`FlowSystem`][flixopt.flow_system.FlowSystem] can be converted to a Model and optimized by creating a [`Calculation`][flixopt.calculation.Calculation] from it.
|
|
74
|
-
|
|
75
|
-
FlixOpt offers different calculation modes:
|
|
76
|
-
|
|
77
|
-
- [`FullCalculation`][flixopt.calculation.FullCalculation] - Solves the entire problem at once
|
|
78
|
-
- [`SegmentedCalculation`][flixopt.calculation.SegmentedCalculation] - Solves the problem in segments (with optioinal overlap), improving performance for large problems
|
|
79
|
-
- [`AggregatedCalculation`][flixopt.calculation.AggregatedCalculation] - Uses typical periods to reduce computational requirements
|
|
80
|
-
|
|
81
|
-
### Results
|
|
82
|
-
|
|
83
|
-
The results of a calculation are stored in a [`CalculationResults`][flixopt.results.CalculationResults] object.
|
|
84
|
-
This object contains the solutions of the optimization as well as all information about the [`Calculation`][flixopt.calculation.Calculation] and the [`FlowSystem`][flixopt.flow_system.FlowSystem] it was created from.
|
|
85
|
-
The solutions is stored as an `xarray.Dataset`, but can be accessed through their assotiated Component, Bus or Effect.
|
|
86
|
-
|
|
87
|
-
This [`CalculationResults`][flixopt.results.CalculationResults] object can be saved to file and reloaded from file, allowing you to analyze the results anytime after the solve.
|
|
88
|
-
|
|
89
|
-
## How These Concepts Work Together
|
|
90
|
-
|
|
91
|
-
The process of working with FlixOpt can be divided into 3 steps:
|
|
92
|
-
|
|
93
|
-
1. Create a [`FlowSystem`][flixopt.flow_system.FlowSystem], containing all the elements and data of your system
|
|
94
|
-
- Define the time series of your system
|
|
95
|
-
- Add [`Components`][flixopt.components] like [`Boilers`][flixopt.linear_converters.Boiler], [`HeatPumps`][flixopt.linear_converters.HeatPump], [`CHPs`][flixopt.linear_converters.CHP], etc.
|
|
96
|
-
- Add [`Buses`][flixopt.elements.Bus] as connection points in your system
|
|
97
|
-
- Add [`Effects`][flixopt.effects.Effect] to represent costs, emissions, etc.
|
|
98
|
-
- *This [`FlowSystem`][flixopt.flow_system.FlowSystem] can also be loaded from a netCDF file*
|
|
99
|
-
2. Translate the model to a mathematical optimization problem
|
|
100
|
-
- Create a [`Calculation`][flixopt.calculation.Calculation] from your FlowSystem and choose a Solver
|
|
101
|
-
- ...The Calculation is translated internaly to a mathematical optimization problem...
|
|
102
|
-
- ...and solved by the chosen solver.
|
|
103
|
-
3. Analyze the results
|
|
104
|
-
- The results are stored in a [`CalculationResults`][flixopt.results.CalculationResults] object
|
|
105
|
-
- This object can be saved to file and reloaded from file, retaining all information about the calculation
|
|
106
|
-
- As it contains the used [`FlowSystem`][flixopt.flow_system.FlowSystem], it can be used to start a new calculation
|
|
107
|
-
|
|
108
|
-
<figure markdown>
|
|
109
|
-

|
|
110
|
-
<figcaption>Conceptual Usage and IO operations of FlixOpt</figcaption>
|
|
111
|
-
</figure>
|
|
112
|
-
|
|
113
|
-
## Advanced Usage
|
|
114
|
-
As flixopt is build on [linopy](https://github.com/PyPSA/linopy), any model created with FlixOpt can be extended or modified using the great [linopy API](https://linopy.readthedocs.io/en/latest/api.html).
|
|
115
|
-
This allows to adjust your model to very specific requirements without loosing the convenience of FlixOpt.
|
|
116
|
-
|
|
117
|
-
<!--## Next Steps-->
|
|
118
|
-
<!---->
|
|
119
|
-
<!--Now that you understand the basic concepts, learn more about each one:-->
|
|
120
|
-
<!---->
|
|
121
|
-
<!--- [FlowSystem](api/flow_system.md) - Time series and system organization-->
|
|
122
|
-
<!--- [Components](api/components.md) - Available component types and how to use them-->
|
|
123
|
-
<!--- [Effects](apieffects.md) - Costs, emissions, and other impacts-->
|
|
124
|
-
<!--- [Calculation Modes](api/calculation.md) - Different approaches to solving your model-->
|
flixopt/config.yaml
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# Default configuration of flixopt
|
|
2
|
-
config_name: flixopt # Name of the config file. This has no effect on the configuration itself.
|
|
3
|
-
logging:
|
|
4
|
-
level: INFO
|
|
5
|
-
file: flixopt.log
|
|
6
|
-
rich: false # logging output is formatted using rich. This is only advisable when using a proper terminal
|
|
7
|
-
modeling:
|
|
8
|
-
BIG: 10000000 # 1e notation not possible in yaml
|
|
9
|
-
EPSILON: 0.00001
|
|
10
|
-
BIG_BINARY_BOUND: 100000
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: flixopt
|
|
3
|
-
Version: 2.2.0rc2
|
|
4
|
-
Summary: Vector based energy and material flow optimization framework in Python.
|
|
5
|
-
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>
|
|
6
|
-
Maintainer-email: Felix Bumann <felixbumann387@gmail.com>, Peter Stange <peter.stange@tu-dresden.de>
|
|
7
|
-
License: MIT License
|
|
8
|
-
Project-URL: homepage, https://tu-dresden.de/ing/maschinenwesen/iet/gewv/forschung/forschungsprojekte/flixopt
|
|
9
|
-
Project-URL: repository, https://github.com/flixOpt/flixopt
|
|
10
|
-
Project-URL: documentation, https://flixopt.github.io/flixopt/
|
|
11
|
-
Keywords: optimization,energy systems,numerical analysis
|
|
12
|
-
Classifier: Development Status :: 3 - Alpha
|
|
13
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
-
Classifier: Intended Audience :: Developers
|
|
19
|
-
Classifier: Intended Audience :: Science/Research
|
|
20
|
-
Classifier: Topic :: Scientific/Engineering
|
|
21
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
22
|
-
Requires-Python: >=3.10
|
|
23
|
-
Description-Content-Type: text/markdown
|
|
24
|
-
License-File: LICENSE
|
|
25
|
-
Requires-Dist: numpy<3,>=1.21.5
|
|
26
|
-
Requires-Dist: pandas<3,>=2.0.0
|
|
27
|
-
Requires-Dist: linopy<0.5.8,>=0.5.7
|
|
28
|
-
Requires-Dist: netcdf4<2,>=1.6.1
|
|
29
|
-
Requires-Dist: PyYAML<7,>=6.0.0
|
|
30
|
-
Requires-Dist: rich>=13.0.0
|
|
31
|
-
Requires-Dist: tomli>=2.0.1; python_version < "3.11"
|
|
32
|
-
Requires-Dist: highspy>=1.5.3
|
|
33
|
-
Requires-Dist: matplotlib<4.0.0,>=3.5.2
|
|
34
|
-
Requires-Dist: plotly<6.0.0,>=5.15.0
|
|
35
|
-
Provides-Extra: network-viz
|
|
36
|
-
Requires-Dist: dash>=3.0.0; extra == "network-viz"
|
|
37
|
-
Requires-Dist: dash-cytoscape>=1.0.0; extra == "network-viz"
|
|
38
|
-
Requires-Dist: dash-daq>=0.6.0; extra == "network-viz"
|
|
39
|
-
Requires-Dist: networkx>=3.0.0; extra == "network-viz"
|
|
40
|
-
Requires-Dist: werkzeug>=3.0.0; extra == "network-viz"
|
|
41
|
-
Provides-Extra: full
|
|
42
|
-
Requires-Dist: pyvis==0.3.2; extra == "full"
|
|
43
|
-
Requires-Dist: tsam<3.0.0,>=2.3.1; extra == "full"
|
|
44
|
-
Requires-Dist: scipy<2.0.0,>=1.15.1; extra == "full"
|
|
45
|
-
Requires-Dist: gurobipy>=10.0.0; extra == "full"
|
|
46
|
-
Requires-Dist: dash>=3.0.0; extra == "full"
|
|
47
|
-
Requires-Dist: dash-cytoscape>=1.0.0; extra == "full"
|
|
48
|
-
Requires-Dist: dash-daq>=0.6.0; extra == "full"
|
|
49
|
-
Requires-Dist: networkx>=3.0.0; extra == "full"
|
|
50
|
-
Requires-Dist: werkzeug>=3.0.0; extra == "full"
|
|
51
|
-
Provides-Extra: dev
|
|
52
|
-
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
53
|
-
Requires-Dist: ruff>=0.9.0; extra == "dev"
|
|
54
|
-
Requires-Dist: pre-commit>=4.0.0; extra == "dev"
|
|
55
|
-
Requires-Dist: pyvis==0.3.2; extra == "dev"
|
|
56
|
-
Requires-Dist: tsam<3.0.0,>=2.3.1; extra == "dev"
|
|
57
|
-
Requires-Dist: scipy<2.0.0,>=1.15.1; extra == "dev"
|
|
58
|
-
Requires-Dist: gurobipy>=10.0.0; extra == "dev"
|
|
59
|
-
Requires-Dist: dash>=3.0.0; extra == "dev"
|
|
60
|
-
Requires-Dist: dash-cytoscape>=1.0.0; extra == "dev"
|
|
61
|
-
Requires-Dist: dash-daq>=0.6.0; extra == "dev"
|
|
62
|
-
Requires-Dist: networkx>=3.0.0; extra == "dev"
|
|
63
|
-
Requires-Dist: werkzeug>=3.0.0; extra == "dev"
|
|
64
|
-
Provides-Extra: docs
|
|
65
|
-
Requires-Dist: mkdocs-material<10,>=9.0.0; extra == "docs"
|
|
66
|
-
Requires-Dist: mkdocstrings-python>=1.0.0; extra == "docs"
|
|
67
|
-
Requires-Dist: mkdocs-table-reader-plugin>=2.0.0; extra == "docs"
|
|
68
|
-
Requires-Dist: mkdocs-gen-files>=0.4.0; extra == "docs"
|
|
69
|
-
Requires-Dist: mkdocs-include-markdown-plugin>=6.0.0; extra == "docs"
|
|
70
|
-
Requires-Dist: mkdocs-literate-nav>=0.6.0; extra == "docs"
|
|
71
|
-
Requires-Dist: markdown-include>=0.8.0; extra == "docs"
|
|
72
|
-
Requires-Dist: pymdown-extensions>=10.0.0; extra == "docs"
|
|
73
|
-
Requires-Dist: pygments>=2.14.0; extra == "docs"
|
|
74
|
-
Requires-Dist: mike>=2.0.0; extra == "docs"
|
|
75
|
-
Dynamic: license-file
|
|
76
|
-
|
|
77
|
-
# FlixOpt: Energy and Material Flow Optimization Framework
|
|
78
|
-
|
|
79
|
-
[](https://flixopt.github.io/flixopt/latest/)
|
|
80
|
-
[](https://github.com/flixOpt/flixopt/actions/workflows/python-app.yaml)
|
|
81
|
-
[](https://pypi.org/project/flixopt/)
|
|
82
|
-
[](https://pypi.org/project/flixopt/)
|
|
83
|
-
[](https://opensource.org/licenses/MIT)
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## 🚀 Purpose
|
|
88
|
-
|
|
89
|
-
**flixopt** is a Python-based optimization framework designed to tackle energy and material flow problems using mixed-integer linear programming (MILP).
|
|
90
|
-
|
|
91
|
-
**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.
|
|
92
|
-
|
|
93
|
-
**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.
|
|
94
|
-
|
|
95
|
-
**flixopt** provides a user-friendly interface with options for advanced users.
|
|
96
|
-
|
|
97
|
-
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).
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## 🌟 Key Features
|
|
102
|
-
|
|
103
|
-
- **High-level Interface** with low-level control
|
|
104
|
-
- User-friendly interface for defining flow systems
|
|
105
|
-
- Pre-defined components like CHP, Heat Pump, Cooling Tower, etc.
|
|
106
|
-
- Fine-grained control for advanced configurations
|
|
107
|
-
|
|
108
|
-
- **Investment Optimization**
|
|
109
|
-
- Combined dispatch and investment optimization
|
|
110
|
-
- Size optimization and discrete investment decisions
|
|
111
|
-
- Combined with On/Off variables and constraints
|
|
112
|
-
|
|
113
|
-
- **Effects, not only Costs --> Multi-criteria Optimization**
|
|
114
|
-
- flixopt abstracts costs as so called 'Effects'. This allows to model costs, CO2-emissions, primary-energy-demand or area-demand at the same time.
|
|
115
|
-
- Effects can interact with each other(e.g., specific CO2 costs)
|
|
116
|
-
- Any of these `Effects` can be used as the optimization objective.
|
|
117
|
-
- A **Weigted Sum** of Effects can be used as the optimization objective.
|
|
118
|
-
- Every Effect can be constrained ($\epsilon$-constraint method).
|
|
119
|
-
|
|
120
|
-
- **Calculation Modes**
|
|
121
|
-
- **Full** - Solve the model with highest accuracy and computational requirements.
|
|
122
|
-
- **Segmented** - Speed up solving by using a rolling horizon.
|
|
123
|
-
- **Aggregated** - Speed up solving by identifying typical periods using [TSAM](https://github.com/FZJ-IEK3-VSA/tsam). Suitable for large models.
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
## 📦 Installation
|
|
128
|
-
|
|
129
|
-
Install FlixOpt via pip.
|
|
130
|
-
`pip install flixopt`
|
|
131
|
-
With [HiGHS](https://github.com/ERGO-Code/HiGHS?tab=readme-ov-file) included out of the box, flixopt is ready to use..
|
|
132
|
-
|
|
133
|
-
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)).
|
|
134
|
-
`pip install "flixopt[full]"`
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## 📚 Documentation
|
|
139
|
-
|
|
140
|
-
The documentation is available at [https://flixopt.github.io/flixopt/latest/](https://flixopt.github.io/flixopt/latest/)
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## 🎯️ Solver Integration
|
|
145
|
-
|
|
146
|
-
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:
|
|
147
|
-
|
|
148
|
-
- [Gurobi](https://www.gurobi.com/)
|
|
149
|
-
- [CBC](https://github.com/coin-or/Cbc)
|
|
150
|
-
- [GLPK](https://www.gnu.org/software/glpk/)
|
|
151
|
-
- [CPLEX](https://www.ibm.com/analytics/cplex-optimizer)
|
|
152
|
-
|
|
153
|
-
For detailed licensing and installation instructions, refer to the respective solver documentation.
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## 🛠 Development Setup
|
|
158
|
-
Look into our docs for [development setup](https://flixopt.github.io/flixopt/latest/contribute/)
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## 📖 Citation
|
|
163
|
-
|
|
164
|
-
If you use FlixOpt in your research or project, please cite the following:
|
|
165
|
-
|
|
166
|
-
- **Main Citation:** [DOI:10.18086/eurosun.2022.04.07](https://doi.org/10.18086/eurosun.2022.04.07)
|
|
167
|
-
- **Short Overview:** [DOI:10.13140/RG.2.2.14948.24969](https://doi.org/10.13140/RG.2.2.14948.24969)
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
docs/examples/00-Minimal Example.md,sha256=TjtnI8o96YNOCFwRC8BSXFGoVqfB53BtvOG4b29FwkQ,80
|
|
2
|
-
docs/examples/01-Basic Example.md,sha256=sZHonC6A_wtZ2IEy_6BAMY8wViyIcivmcj8GYIZ_qck,78
|
|
3
|
-
docs/examples/02-Complex Example.md,sha256=5cczYkXFpzpQTNp9dkmOEdTXxoWLETKty417q6MyT8s,287
|
|
4
|
-
docs/examples/03-Calculation Modes.md,sha256=FZPBXmrkir6QhQsiXwWp2sOOntIIkODCgh3lVqOrP6w,231
|
|
5
|
-
docs/examples/index.md,sha256=KwXrsxxiHk563bny4I4B2X_CfPNiSXx8TsfI671MLdg,179
|
|
6
|
-
docs/faq/contribute.md,sha256=CL7Z85zyPes1Kl16_8oWLU2RTTbMdPfhmvt4tsnkikU,2508
|
|
7
|
-
docs/faq/index.md,sha256=MH_SPZllm_5npxPP6DHXbJlpLXZc-nbWTFJvMmZYz9Q,50
|
|
8
|
-
docs/images/architecture_flixOpt-pre2.0.0.png,sha256=9RWSA3vys588aadr2437zor-_-xBTQNQ0bAf8xGcu5g,70605
|
|
9
|
-
docs/images/architecture_flixOpt.png,sha256=KjN1bJwESbkHmTW7UsJ7dZyiKZlTO7Dx20dg8KlR1HU,260219
|
|
10
|
-
docs/images/flixopt-icon.svg,sha256=_1a6bk2pDOVEy233LC1nM6jZ35NdzD8Hd3UqGxW1Xpg,135341
|
|
11
|
-
docs/javascripts/mathjax.js,sha256=LJDaO5MM_5W8gI5-S5SiZ17qeMgeoVJO-inMyBNy7UE,402
|
|
12
|
-
docs/user-guide/index.md,sha256=TBO7lk13M95w2A9WiT5asfZn9oU9GZ1O0XW9eUm5GLo,7450
|
|
13
|
-
docs/user-guide/Mathematical Notation/Bus.md,sha256=pqjGa3PZBSmuO4YR44bK21bMmRcWC8dkzP3z0XX-PJw,1613
|
|
14
|
-
"docs/user-guide/Mathematical Notation/Effects, Penalty & Objective.md",sha256=OZnpxhX0R6NpJNP-FJ4g3lXWTRlv-Hhpp484Wits-ZI,5664
|
|
15
|
-
docs/user-guide/Mathematical Notation/Flow.md,sha256=wqUgP_SntSyzcJNxbkxa2TmApqpPaq6GZ_Qk_qcAAlw,1095
|
|
16
|
-
docs/user-guide/Mathematical Notation/LinearConverter.md,sha256=9oFHIA3-QLSOV-QQ3a6je7kcIluJGZH8qtgquf5zieE,1322
|
|
17
|
-
docs/user-guide/Mathematical Notation/Piecewise.md,sha256=GgTQ7dVTTb0lq14GFuuZeGYrUXtMy1wkztJLIVchchw,1993
|
|
18
|
-
docs/user-guide/Mathematical Notation/Storage.md,sha256=Zk5Irnr4bxIqI2KL2wcbAg8PdFDGTxhDFlRrnvjK6Bk,2200
|
|
19
|
-
docs/user-guide/Mathematical Notation/index.md,sha256=2d6k4zbKET1kg7zBt1fEdKsG8jM5j2IIe6yclMTUlDw,1254
|
|
20
|
-
docs/user-guide/Mathematical Notation/others.md,sha256=z6LOzcnvfI-1qQx0Fg7Q6wSK9tAzH2d34KbW4lYNyCE,48
|
|
21
|
-
flixopt/__init__.py,sha256=yW3zslmBnNDYoYTGUq1XkBL7UqpP9O1iDV1d3V00iyM,721
|
|
22
|
-
flixopt/aggregation.py,sha256=xgQu2U5YEbtdDAEMjWiuP9uo_KjhzC95VNmY4ZcSX3I,16939
|
|
23
|
-
flixopt/calculation.py,sha256=pj8nvAG3Vv6NHNyvhU3YbrMDogClFni5CfuJk4631Fw,19914
|
|
24
|
-
flixopt/commons.py,sha256=6exWKBgcWCUjcqolw1kG6Aee4bm_6DF1kTrSUzZbs1M,1353
|
|
25
|
-
flixopt/components.py,sha256=N5_xmhFtOjCJnNl-o_V12lvUxp5tUyuGQRgkUVaNnuk,36868
|
|
26
|
-
flixopt/config.py,sha256=Kt8QYk7hX5qHcQUtfgjM862C6SQr4K2lDvtk_LLER8Y,9085
|
|
27
|
-
flixopt/config.yaml,sha256=imzAnnhcJhIfKNTTXFB5Td7Pvk5ARn5j720k-oGGRug,392
|
|
28
|
-
flixopt/core.py,sha256=vaIBRQE0w9Ro5Xe_jWHKXMLRenSS2P1Tpy9-geTuWcE,38103
|
|
29
|
-
flixopt/effects.py,sha256=7kwZwfv3oRmkzc30kdjeOyB4qnyA9zxsPun1ysQdDxM,16662
|
|
30
|
-
flixopt/elements.py,sha256=S89IykQmXxKTtfNn8HW6fWLdb64UePaY0vaittCAJ2M,28153
|
|
31
|
-
flixopt/features.py,sha256=AI3pW8UbyYLZFDIiPtexmNRkLT7UU-ckmcse9lWRPgw,46263
|
|
32
|
-
flixopt/flow_system.py,sha256=Gowg5k7LWlF6VYRHtrIbKVCKWKMrzlZQtBCfdeEq4jQ,19607
|
|
33
|
-
flixopt/interface.py,sha256=Be3IWcYCLATDCoTliiv6Ky1V_srn1KiCHY3tBriVd_U,22631
|
|
34
|
-
flixopt/io.py,sha256=2QKdtu2-mkzSGBIqHtUcF9UaG32nq9qcIRxZghf1hLw,11284
|
|
35
|
-
flixopt/linear_converters.py,sha256=ej5V_ML_3m1k9HbDnuey6pHEpQtguYkxBXHxWyE9sq0,10936
|
|
36
|
-
flixopt/network_app.py,sha256=oVdARrTDV43H5ZAypJP3dmIL4A9x-Y3ec0zZC5gS8rA,28019
|
|
37
|
-
flixopt/plotting.py,sha256=wUwBSQxxwy1uui-mi2hgj6h__O6EvxCnocIbX0ewpMk,54111
|
|
38
|
-
flixopt/results.py,sha256=GKSZmz0GCuJwspTC8Ot6MOKinvy_mhnDXCafb_f7uVY,35161
|
|
39
|
-
flixopt/solvers.py,sha256=k1bSoiXec3asWED70-erXkgtpn2C8KRBfSZj0FLviSM,2436
|
|
40
|
-
flixopt/structure.py,sha256=CZIz_8UVF56BT4tiDQYzfH4WCR-yaiZHW0--u6olHx4,26281
|
|
41
|
-
flixopt/utils.py,sha256=f-_vFDvvG27-c_VMpzkv3lb79Yny4rvoSmemushbzhU,1687
|
|
42
|
-
flixopt-2.2.0rc2.dist-info/licenses/LICENSE,sha256=HKsZnbrM_3Rvnr_u9cWSG90cBsj5_slaqI_z_qcxnGI,1118
|
|
43
|
-
pics/architecture_flixOpt-pre2.0.0.png,sha256=9RWSA3vys588aadr2437zor-_-xBTQNQ0bAf8xGcu5g,70605
|
|
44
|
-
pics/architecture_flixOpt.png,sha256=KjN1bJwESbkHmTW7UsJ7dZyiKZlTO7Dx20dg8KlR1HU,260219
|
|
45
|
-
pics/flixOpt_plotting.jpg,sha256=zn7ZPAtXm5eRTxtOj86e4-PPhHpCar1jqGh7vMBgQGY,518862
|
|
46
|
-
pics/flixopt-icon.svg,sha256=_1a6bk2pDOVEy233LC1nM6jZ35NdzD8Hd3UqGxW1Xpg,135341
|
|
47
|
-
pics/pics.pptx,sha256=ImWeGGvjtWJ6BGruipsnZYmWtHj5sWdbw1NSFePbkC8,683344
|
|
48
|
-
scripts/extract_release_notes.py,sha256=3UUE4hWhdd2t2m2x0ZpchGP-A0MvfqO2Wc5EdNN-fgE,1249
|
|
49
|
-
scripts/gen_ref_pages.py,sha256=AYRtXyz78x5I_Hn0oRtGVbTxgLLj2QNyRX6vWRefPjc,1960
|
|
50
|
-
tests/ressources/Zeitreihen2020.csv,sha256=kbsDTKZS0iUsNZAS7m3DohzZI_OHHWe44s3GwLvcTLw,1918412
|
|
51
|
-
flixopt-2.2.0rc2.dist-info/METADATA,sha256=OVQsScG4XvEoQVhF3m3qde_FmII3gGFHVRhcwjHklc0,8232
|
|
52
|
-
flixopt-2.2.0rc2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
53
|
-
flixopt-2.2.0rc2.dist-info/top_level.txt,sha256=DEuo4R1z7GmEp5R3pjbQEJbaPRjKHFvNX2ceiBnVOL0,32
|
|
54
|
-
flixopt-2.2.0rc2.dist-info/RECORD,,
|
|
Binary file
|
pics/architecture_flixOpt.png
DELETED
|
Binary file
|
pics/flixOpt_plotting.jpg
DELETED
|
Binary file
|