flixopt 2.1.0__py3-none-any.whl → 2.1.2__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.

Potentially problematic release.


This version of flixopt might be problematic. Click here for more details.

flixopt/components.py CHANGED
@@ -43,7 +43,10 @@ class LinearConverter(Component):
43
43
  label: The label of the Element. Used to identify it in the FlowSystem
44
44
  inputs: The input Flows
45
45
  outputs: The output Flows
46
- on_off_parameters: Information about on and off states. See class OnOffParameters.
46
+ on_off_parameters: Information about on and off state of LinearConverter.
47
+ Component is On/Off, if all connected Flows are On/Off. This induces an On-Variable (binary) in all Flows!
48
+ If possible, use OnOffParameters in a single Flow instead to keep the number of binary variables low.
49
+ See class OnOffParameters.
47
50
  conversion_factors: linear relation between flows.
48
51
  Either 'conversion_factors' or 'piecewise_conversion' can be used!
49
52
  piecewise_conversion: Define a piecewise linear relation between flow rates of different flows.
@@ -488,7 +491,7 @@ class StorageModel(ComponentModel):
488
491
  self.add(
489
492
  self._model.add_constraints(
490
493
  charge_state.isel(time=slice(1, None))
491
- == charge_state.isel(time=slice(None, -1)) * (1 - rel_loss * hours_per_step)
494
+ == charge_state.isel(time=slice(None, -1)) * ((1 - rel_loss) ** hours_per_step)
492
495
  + charge_rate * eff_charge * hours_per_step
493
496
  - discharge_rate * eff_discharge * hours_per_step,
494
497
  name=f'{self.label_full}|charge_state',
flixopt/elements.py CHANGED
@@ -47,8 +47,8 @@ class Component(Element):
47
47
  inputs: input flows.
48
48
  outputs: output flows.
49
49
  on_off_parameters: Information about on and off state of Component.
50
- Component is On/Off, if all connected Flows are On/Off.
51
- Induces On-Variable in all FLows!
50
+ Component is On/Off, if all connected Flows are On/Off. This induces an On-Variable (binary) in all Flows!
51
+ If possible, use OnOffParameters in a single Flow instead to keep the number of binary variables low.
52
52
  See class OnOffParameters.
53
53
  prevent_simultaneous_flows: Define a Group of Flows. Only one them can be on at a time.
54
54
  Induces On-Variable in all Flows! If possible, use OnOffParameters in a single Flow instead.
@@ -193,7 +193,8 @@ class Flow(Element):
193
193
  (relative_minimum and relative_maximum are ignored)
194
194
  used for fixed load or supply profiles, i.g. heat demand, wind-power, solarthermal
195
195
  If the load-profile is just an upper limit, use relative_maximum instead.
196
- previous_flow_rate: previous flow rate of the component.
196
+ previous_flow_rate: previous flow rate of the flow. Used to determine if and how long the
197
+ flow is already on / off. If None, the flow is considered to be off for one timestep.
197
198
  meta_data: used to store more information about the Element. Is not used internally, but saved in the results. Only use python native types.
198
199
  """
199
200
  super().__init__(label, meta_data=meta_data)
flixopt/results.py CHANGED
@@ -343,7 +343,7 @@ class _ElementResults:
343
343
  """
344
344
  if self._calculation_results.model is None:
345
345
  raise ValueError('The linopy model is not available.')
346
- return self._calculation_results.model.constraints[self._variable_names]
346
+ return self._calculation_results.model.constraints[self._constraint_names]
347
347
 
348
348
  def filter_solution(self, variable_dims: Optional[Literal['scalar', 'time']] = None) -> xr.Dataset:
349
349
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flixopt
3
- Version: 2.1.0
3
+ Version: 2.1.2
4
4
  Summary: Vector based energy and material flow optimization framework in Python.
5
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
6
  Maintainer-email: Felix Bumann <felixbumann387@gmail.com>, Peter Stange <peter.stange@tu-dresden.de>
@@ -22,40 +22,40 @@ Classifier: License :: OSI Approved :: MIT License
22
22
  Requires-Python: >=3.10
23
23
  Description-Content-Type: text/markdown
24
24
  License-File: LICENSE
25
- Requires-Dist: numpy>=1.21.5
26
- Requires-Dist: PyYAML>=6.0
27
- Requires-Dist: linopy>=0.5.1
28
- Requires-Dist: netcdf4>=1.6.1
29
- Requires-Dist: rich>=13.0.1
25
+ Requires-Dist: numpy<3,>=1.21.5
26
+ Requires-Dist: pandas<3,>=2.0.0
27
+ Requires-Dist: linopy<0.6.0,>=0.5.1
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"
30
32
  Requires-Dist: highspy>=1.5.3
31
- Requires-Dist: pandas<3,>=2
32
- Requires-Dist: matplotlib>=3.5.2
33
- Requires-Dist: plotly>=5.15
34
- Requires-Dist: tomli>=2.0.1
33
+ Requires-Dist: matplotlib<4.0.0,>=3.5.2
34
+ Requires-Dist: plotly<6.0.0,>=5.15.0
35
35
  Provides-Extra: dev
36
- Requires-Dist: pytest; extra == "dev"
37
- Requires-Dist: ruff; extra == "dev"
36
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
37
+ Requires-Dist: ruff>=0.9.0; extra == "dev"
38
38
  Requires-Dist: pyvis==0.3.1; extra == "dev"
39
- Requires-Dist: tsam>=2.3.1; extra == "dev"
40
- Requires-Dist: scipy>=1.15.1; extra == "dev"
41
- Requires-Dist: gurobipy>=10.0; extra == "dev"
39
+ Requires-Dist: tsam<3.0.0,>=2.3.1; extra == "dev"
40
+ Requires-Dist: scipy<2.0.0,>=1.15.1; extra == "dev"
41
+ Requires-Dist: gurobipy>=10.0.0; extra == "dev"
42
42
  Provides-Extra: full
43
43
  Requires-Dist: pyvis==0.3.1; extra == "full"
44
- Requires-Dist: tsam>=2.3.1; extra == "full"
45
- Requires-Dist: scipy>=1.15.1; extra == "full"
46
- Requires-Dist: streamlit>=1.44.0; extra == "full"
47
- Requires-Dist: gurobipy>=10.0; extra == "full"
44
+ Requires-Dist: tsam<3.0.0,>=2.3.1; extra == "full"
45
+ Requires-Dist: scipy<2.0.0,>=1.15.1; extra == "full"
46
+ Requires-Dist: streamlit<2.0.0,>=1.44.0; extra == "full"
47
+ Requires-Dist: gurobipy>=10.0.0; extra == "full"
48
48
  Provides-Extra: docs
49
- Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
50
- Requires-Dist: mkdocstrings-python; extra == "docs"
51
- Requires-Dist: mkdocs-table-reader-plugin; extra == "docs"
52
- Requires-Dist: mkdocs-gen-files; extra == "docs"
53
- Requires-Dist: mkdocs-include-markdown-plugin; extra == "docs"
54
- Requires-Dist: mkdocs-literate-nav; extra == "docs"
55
- Requires-Dist: markdown-include; extra == "docs"
56
- Requires-Dist: pymdown-extensions; extra == "docs"
57
- Requires-Dist: pygments; extra == "docs"
58
- Requires-Dist: mike; extra == "docs"
49
+ Requires-Dist: mkdocs-material<10,>=9.0.0; extra == "docs"
50
+ Requires-Dist: mkdocstrings-python>=1.0.0; extra == "docs"
51
+ Requires-Dist: mkdocs-table-reader-plugin>=2.0.0; extra == "docs"
52
+ Requires-Dist: mkdocs-gen-files>=0.4.0; extra == "docs"
53
+ Requires-Dist: mkdocs-include-markdown-plugin>=6.0.0; extra == "docs"
54
+ Requires-Dist: mkdocs-literate-nav>=0.6.0; extra == "docs"
55
+ Requires-Dist: markdown-include>=0.8.0; extra == "docs"
56
+ Requires-Dist: pymdown-extensions>=10.0.0; extra == "docs"
57
+ Requires-Dist: pygments>=2.14.0; extra == "docs"
58
+ Requires-Dist: mike<2,>=1.1.0; extra == "docs"
59
59
  Dynamic: license-file
60
60
 
61
61
  # FlixOpt: Energy and Material Flow Optimization Framework
@@ -9,11 +9,6 @@ docs/images/architecture_flixOpt-pre2.0.0.png,sha256=9RWSA3vys588aadr2437zor-_-x
9
9
  docs/images/architecture_flixOpt.png,sha256=KjN1bJwESbkHmTW7UsJ7dZyiKZlTO7Dx20dg8KlR1HU,260219
10
10
  docs/images/flixopt-icon.svg,sha256=_1a6bk2pDOVEy233LC1nM6jZ35NdzD8Hd3UqGxW1Xpg,135341
11
11
  docs/javascripts/mathjax.js,sha256=lkPNMk5XrDlyut9e5nGHgpN7gFl8OejpdJJ_gRW_14k,401
12
- docs/release-notes/_template.txt,sha256=j65E_FDxzimkcMXBrXyF6b2KPm0KAiQlGTxfhQHnN7c,496
13
- docs/release-notes/index.md,sha256=6VslOEfF3KQQCbntguRKz7uGWd_W_KIYotP8L1fzAeI,227
14
- docs/release-notes/v2.0.0.md,sha256=eauxvCH3O0B054vhbP0G8GdeF2LM__J57VAGYRFQzBg,4676
15
- docs/release-notes/v2.0.1.md,sha256=_0oqZjogRv_x6DToWih78uhHu65-J1tat5A1asYxg50,398
16
- docs/release-notes/v2.1.0.md,sha256=uUnlzG61rI2PYce1SxIySYOnW55e_vnJYJN7l8lcB8A,1325
17
12
  docs/user-guide/index.md,sha256=fxI_bMjz7czJ5aF_7D7l5rQVpc03WV2EAaBo9y3gB2g,7452
18
13
  docs/user-guide/Mathematical Notation/Bus.md,sha256=getjae_-rNTXbotO0euXwYCq2arBoayKsN9KeFb2u60,1612
19
14
  "docs/user-guide/Mathematical Notation/Effects, Penalty & Objective.md",sha256=RNqcJzNI1E-U01gaeoKu7m-7gjmtDWvjr2Y5JK9YgTA,5685
@@ -27,32 +22,32 @@ flixopt/__init__.py,sha256=F49OK5QLUnMGmsaKQ-G0dXsVuKr9Ow_pjM4KMSNZ918,614
27
22
  flixopt/aggregation.py,sha256=UaAYh34C4XhDgiSs4lm31XEMLr4YO5BzLKUAx4NQuyI,17002
28
23
  flixopt/calculation.py,sha256=1Hs9dc6eqdJoHT6Dd3NlwdRORFO2vKdKx38o95FPxJE,20016
29
24
  flixopt/commons.py,sha256=ZNlUN1z-h9OGHPo-s-n5OLlJaoPZKVGcAdRyGKpMk4M,1256
30
- flixopt/components.py,sha256=igiJdIcMA7o1QEjk0QDSCjNj0ADSXayd1xrJldA2ch4,28846
25
+ flixopt/components.py,sha256=7vI0IzWBLj81IErPllWHbMMqrrPlplYOPcH3aHvDbeY,29124
31
26
  flixopt/config.py,sha256=Kt8QYk7hX5qHcQUtfgjM862C6SQr4K2lDvtk_LLER8Y,9085
32
27
  flixopt/config.yaml,sha256=imzAnnhcJhIfKNTTXFB5Td7Pvk5ARn5j720k-oGGRug,392
33
28
  flixopt/core.py,sha256=JGsnw-VsNCQW2zDl0kMwhcPIzq08DJmcRQ02nLyDvIg,37633
34
29
  flixopt/effects.py,sha256=SGDIlo7VVIlMp-AeAyZx4CRJcUmpjFYqEq3lpBY8NEg,16662
35
- flixopt/elements.py,sha256=d3gyFbt2dwqcsf7wJK2Ex9AOTt6_sToI8cCqSb2-1Xo,26678
30
+ flixopt/elements.py,sha256=9P2uB3twwADf48Gx1xCluE-ZJCkzw0X7tYrtKEQOjk8,26932
36
31
  flixopt/features.py,sha256=sEtdj7BpaYS9a0XdhRUtdDFXWLdaGABRXdi5JOoLPb0,43919
37
32
  flixopt/flow_system.py,sha256=4D2u2ucLig0GbC7ksCuWXuZPZdkgDzPafv-GhjAxRyk,17479
38
33
  flixopt/interface.py,sha256=uXf6Z29OfHpIRsS1-oZZ6SSuy8FLe13FjtqzHPqzzQE,12088
39
34
  flixopt/io.py,sha256=2QKdtu2-mkzSGBIqHtUcF9UaG32nq9qcIRxZghf1hLw,11284
40
35
  flixopt/linear_converters.py,sha256=ej5V_ML_3m1k9HbDnuey6pHEpQtguYkxBXHxWyE9sq0,10936
41
36
  flixopt/plotting.py,sha256=wUwBSQxxwy1uui-mi2hgj6h__O6EvxCnocIbX0ewpMk,54111
42
- flixopt/results.py,sha256=gzf8M8Ig3uPjPSFRJeF--MrijbUyGkuF-SdVNRl7gnc,35159
37
+ flixopt/results.py,sha256=GKSZmz0GCuJwspTC8Ot6MOKinvy_mhnDXCafb_f7uVY,35161
43
38
  flixopt/solvers.py,sha256=k1bSoiXec3asWED70-erXkgtpn2C8KRBfSZj0FLviSM,2436
44
39
  flixopt/structure.py,sha256=QS0IFBHzdEMKYTgd6uosudhoDD4X0JcdF7LlS-XRacs,26295
45
40
  flixopt/utils.py,sha256=f-_vFDvvG27-c_VMpzkv3lb79Yny4rvoSmemushbzhU,1687
46
- flixopt-2.1.0.dist-info/licenses/LICENSE,sha256=HKsZnbrM_3Rvnr_u9cWSG90cBsj5_slaqI_z_qcxnGI,1118
41
+ flixopt-2.1.2.dist-info/licenses/LICENSE,sha256=HKsZnbrM_3Rvnr_u9cWSG90cBsj5_slaqI_z_qcxnGI,1118
47
42
  pics/architecture_flixOpt-pre2.0.0.png,sha256=9RWSA3vys588aadr2437zor-_-xBTQNQ0bAf8xGcu5g,70605
48
43
  pics/architecture_flixOpt.png,sha256=KjN1bJwESbkHmTW7UsJ7dZyiKZlTO7Dx20dg8KlR1HU,260219
49
44
  pics/flixOpt_plotting.jpg,sha256=zn7ZPAtXm5eRTxtOj86e4-PPhHpCar1jqGh7vMBgQGY,518862
50
45
  pics/flixopt-icon.svg,sha256=_1a6bk2pDOVEy233LC1nM6jZ35NdzD8Hd3UqGxW1Xpg,135341
51
46
  pics/pics.pptx,sha256=ImWeGGvjtWJ6BGruipsnZYmWtHj5sWdbw1NSFePbkC8,683344
47
+ scripts/extract_release_notes.py,sha256=0v8B9c6VXz55PJ0I08W7FdxGp7jEY5NOkrqMY6MNdYU,1249
52
48
  scripts/gen_ref_pages.py,sha256=AYRtXyz78x5I_Hn0oRtGVbTxgLLj2QNyRX6vWRefPjc,1960
53
- site/release-notes/_template.txt,sha256=j65E_FDxzimkcMXBrXyF6b2KPm0KAiQlGTxfhQHnN7c,496
54
49
  tests/ressources/Zeitreihen2020.csv,sha256=kbsDTKZS0iUsNZAS7m3DohzZI_OHHWe44s3GwLvcTLw,1918412
55
- flixopt-2.1.0.dist-info/METADATA,sha256=db6pwA2-_i00-KWJgBYbQzFQPZPZsab2oohuXjn2GHM,7155
56
- flixopt-2.1.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
57
- flixopt-2.1.0.dist-info/top_level.txt,sha256=U8aoMBkjiSFi7j4zgUOVgvgmyT5a1LnIArZI6TWdk-g,37
58
- flixopt-2.1.0.dist-info/RECORD,,
50
+ flixopt-2.1.2.dist-info/METADATA,sha256=bwiwG5v5T-LhmGRZVvRZJZrUclJwEW7j74v1s1Qfhdc,7343
51
+ flixopt-2.1.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
52
+ flixopt-2.1.2.dist-info/top_level.txt,sha256=DEuo4R1z7GmEp5R3pjbQEJbaPRjKHFvNX2ceiBnVOL0,32
53
+ flixopt-2.1.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -2,5 +2,4 @@ docs
2
2
  flixopt
3
3
  pics
4
4
  scripts
5
- site
6
5
  tests
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Extract release notes from CHANGELOG.md for a specific version.
4
+ Usage: python extract_release_notes.py <version>
5
+ """
6
+
7
+ import re
8
+ import sys
9
+ from pathlib import Path
10
+
11
+
12
+ def extract_release_notes(version: str) -> str:
13
+ """Extract release notes for a specific version from CHANGELOG.md"""
14
+ changelog_path = Path("CHANGELOG.md")
15
+
16
+ if not changelog_path.exists():
17
+ print("❌ Error: CHANGELOG.md not found", file=sys.stderr)
18
+ sys.exit(1)
19
+
20
+ content = changelog_path.read_text(encoding='utf-8')
21
+
22
+ # Pattern to match version section: ## [2.1.2] - 2025-06-14
23
+ pattern = rf'## \[{re.escape(version)}\] - [^\n]+\n(.*?)(?=\n## \[|\n\[Unreleased\]|\Z)'
24
+ match = re.search(pattern, content, re.DOTALL)
25
+
26
+ if not match:
27
+ print(f"❌ Error: No release notes found for version '{version}'", file=sys.stderr)
28
+ sys.exit(1)
29
+
30
+ return match.group(1).strip()
31
+
32
+
33
+ def main():
34
+ if len(sys.argv) != 2:
35
+ print("Usage: python extract_release_notes.py <version>")
36
+ print("Example: python extract_release_notes.py 2.1.2")
37
+ sys.exit(1)
38
+
39
+ version = sys.argv[1]
40
+ release_notes = extract_release_notes(version)
41
+ print(release_notes)
42
+
43
+
44
+ if __name__ == "__main__":
45
+ main()
@@ -1,32 +0,0 @@
1
- # Release v{version}
2
-
3
- **Release Date:** YYYY-MM-DD
4
-
5
- ## What's New
6
-
7
- * Feature 1 - Description
8
- * Feature 2 - Description
9
-
10
- ## Improvements
11
-
12
- * Improvement 1 - Description
13
- * Improvement 2 - Description
14
-
15
- ## Bug Fixes
16
-
17
- * Fixed issue with X
18
- * Resolved problem with Y
19
-
20
- ## Breaking Changes
21
-
22
- * Change 1 - Migration instructions
23
- * Change 2 - Migration instructions
24
-
25
- ## Deprecations
26
-
27
- * Feature X will be removed in v{next_version}
28
-
29
- ## Dependencies
30
-
31
- * Added dependency X v1.2.3
32
- * Updated dependency Y to v2.0.0
@@ -1,7 +0,0 @@
1
- # Release Notes
2
-
3
- This page provides links to release notes for all versions of flixopt.
4
-
5
- ## Latest Release
6
-
7
- * [v2.0.0](v2.0.0.md) - 29.03.2025 - Migration from pyomo to linopy. Alround improvements in performance and usability
@@ -1,93 +0,0 @@
1
- # Release v2.0.0
2
-
3
- **Release Date:** March 29, 2025
4
-
5
- ## 🚀 Major Framework Changes
6
-
7
- - **Migration from Pyomo to Linopy**: Completely rebuilt the optimization foundation to use Linopy instead of Pyomo
8
- - Significant performance improvements, especially for large models
9
- - Internal useage of linopys mathematical modeling language
10
- - **xarray-Based Data Architecture**: Redesigned data handling to rely on xarray.Dataset throughout the package for:
11
- - Improved solution representation and analysis
12
- - Enhanced time series management
13
- - Consistent serialization across all elements
14
- - Reduced file size and improved performance
15
- - **Saving and restoring unsolved Models**: The FlowSystem is now fully serializable and can be saved to a file.
16
- - Share your work with others by saving the FlowSystem to a file
17
- - Load a FlowSystem from a file to extend or modify your work
18
-
19
- ## 🔧 Key Improvements
20
-
21
- ### Model Handling
22
-
23
- - **Extend every flixopt model with the linopy language**: Add any additional constraint or variable to your flixopt model by using the linopy language.
24
- - **Full Model Export/Import**: As a result of the migration to Linopy, the linopy.Model can be exported before or after the solve.
25
- - **Improved Infeasible Model Handling**: Added better detection and reporting for infeasible optimization models
26
- - **Improved Model Documentation**: Every model can be documented in a .yaml file, containing human readable mathematical formulations of all variables and constraints. THis is used to document every Calculation.
27
-
28
- ### Calculation Results and documentation:
29
- The `CalculationResults` class has been completely redesigned to provide a more streamlined and intuitive interface.
30
- Accessing the results of a Calculation is now as simple as:
31
- ```python
32
- fx.FullCalculation('Sim1', flow_system)
33
- calculation.solve(fx.solvers.HighsSolver())
34
- calculation.results # This object can be entirely saved and reloaded to file without any information loss
35
- ```
36
- This access doesn't change if you save and load the results to a file or use them in your script directly!
37
-
38
- - **Improved Documentation**: The FlowSystem as well as a model Documentation is created for every model run.
39
- - **Results without saving to file**: The results of a Calculation can now be properly accessed without saving the results to a file first.
40
- - **Unified Solution exploration**: Every `Calculation` has a `Calculation.results` attribute, which accesses the solution. This can be saved and reloaded without any information loss.
41
- - **Improved Calculation Results**: The results of a Calculation are now more intuitive and easier to access. The `CalculationResults` class has been completely redesigned to provide a more streamlined and intuitive interface.
42
-
43
- ### Data Management & I/O
44
-
45
- - **Unified Serialization**: Standardized serialization and deserialization across all elements
46
- - **Compression Support**: Added data compression when saving results to reduce file size
47
- - **to_netcdf/from_netcdf Methods**: Added for FlowSystem and other core components
48
-
49
- ### Details
50
- #### TimeSeries Enhancements
51
-
52
- - **xarray Integration**: Redesigned TimeSeries to depend on xr.DataArray
53
- - **datatypes**: Added support for more datatypes, with methods for conversion to TimeSeries
54
- - **Improved TimeSeriesCollection**: Enhanced indexing, representation, and dataset conversion
55
- - **Simplified Time Management**: Removed period concepts and focused on timesteps for more intuitive time handling
56
-
57
- ## 📚 Documentation
58
-
59
- - Improved documentation of the FlixOpt API and mathematical formulations
60
- - **Google Style Docstrings**: Updated all docstrings to Google style format
61
-
62
- ## 🔄 Dependencies
63
-
64
- - **Linopy**: Added as the core dependency replacing Pyomo
65
- - **xarray**: Now a critical dependency for data handling and file I/O
66
- - **netcdf4**: Dependency for fast and efficient file I/O
67
-
68
- ### Dropped Dependencies
69
- - **pyomo**: Replaced by linopy as the modeling language
70
-
71
- ## 📋 Migration Notes
72
-
73
- This version represents a significant architecture change. If you're upgrading:
74
-
75
- - Code that directly accessed Pyomo models will need to be updated to work with Linopy
76
- - Data handling now uses xarray.Dataset throughout, which may require changes in how you interact with results
77
- - The way labels are constructed has changed throughout the system
78
- - The results of calculations are now handled differently, and may require changes in how you access results
79
- - The framework was renamed from flixOpt to flixopt. Use `import flixopt as fx`.
80
-
81
- For complete details, please refer to the full commit history.
82
-
83
- ## Installation
84
-
85
- ```bash
86
- pip install flixopt==2.0.0
87
- ```
88
-
89
- ## Upgrading
90
-
91
- ```bash
92
- pip install --upgrade flixopt
93
- ```
@@ -1,12 +0,0 @@
1
- # Release v2.0.1
2
-
3
- **Release Date:** 2025-04-10
4
-
5
- ## Improvements
6
-
7
- * Add logger warning if relative_minimum is used without on_off_parameters in Flow, as this prevents the flow_rate from switching "OFF"
8
-
9
- ## Bug Fixes
10
-
11
- * Replace "|" with "__" in filenames when saving figures, as "|" can lead to issues on windows
12
- * Fixed a Bug that prevented the load factor from working without InvestmentParameters
@@ -1,31 +0,0 @@
1
- # Release v2.1.0
2
-
3
- **Release Date:** 2025-04-11
4
-
5
- ## Improvements
6
-
7
- * Add logger warning if relative_minimum is used without on_off_parameters in Flow, as this prevents the flow_rate from switching "OFF"
8
- * Python 3.13 support added
9
- * Greatly improved internal testing infrastructure by leveraging linopy's testing framework
10
-
11
- ## Bug Fixes
12
-
13
- * Bugfixing the lower bound of `flow_rate` when using optional investments without OnOffParameters.
14
- * Fixes a Bug that prevented divest effects from working.
15
- * added lower bounds of 0 to two unbounded vars (only numerical better)
16
-
17
- ## Breaking Changes
18
-
19
- * We restructured the modeling of the On/Off state of FLows or Components. This leads to slightly renaming of variables and constraints.
20
-
21
- ### Variable renaming
22
- * "...|consecutive_on_hours" is now "...|ConsecutiveOn|hours"
23
- * "...|consecutive_off_hours" is now "...|ConsecutiveOff|hours"
24
-
25
- ### Constraint renaming
26
- * "...|consecutive_on_hours_con1" is now "...|ConsecutiveOn|con1"
27
- * "...|consecutive_on_hours_con2a" is now "...|ConsecutiveOn|con2a"
28
- * "...|consecutive_on_hours_con2b" is now "...|ConsecutiveOn|con2b"
29
- * "...|consecutive_on_hours_initial" is now "...|ConsecutiveOn|initial"
30
- * "...|consecutive_on_hours_minimum_duration" is now "...|ConsecutiveOn|minimum"
31
- The same goes for "...|consecutive_off..." --> "...|ConsecutiveOff|..."
@@ -1,32 +0,0 @@
1
- # Release v{version}
2
-
3
- **Release Date:** YYYY-MM-DD
4
-
5
- ## What's New
6
-
7
- * Feature 1 - Description
8
- * Feature 2 - Description
9
-
10
- ## Improvements
11
-
12
- * Improvement 1 - Description
13
- * Improvement 2 - Description
14
-
15
- ## Bug Fixes
16
-
17
- * Fixed issue with X
18
- * Resolved problem with Y
19
-
20
- ## Breaking Changes
21
-
22
- * Change 1 - Migration instructions
23
- * Change 2 - Migration instructions
24
-
25
- ## Deprecations
26
-
27
- * Feature X will be removed in v{next_version}
28
-
29
- ## Dependencies
30
-
31
- * Added dependency X v1.2.3
32
- * Updated dependency Y to v2.0.0