Skip to content

Commit b326abc

Browse files
committed
Update CHANGELOG.md
1 parent cc3dbd4 commit b326abc

1 file changed

Lines changed: 55 additions & 68 deletions

File tree

CHANGELOG.md

Lines changed: 55 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -30,40 +30,16 @@ Please remove all irrelevant sections before releasing.
3030
Until here -->
3131

3232
## [Unreleased] - ????-??-??
33+
Multi-Period and stochastic modeling is coming to flixopt in this release.
3334

34-
### Changed
35-
* **BREAKING**: `relative_minimum_charge_state` and `relative_maximum_charge_state` don't have an extra timestep anymore. The final charge state can now be constrained by parameters `relative_minimum_final_charge_state` and `relative_maximum_final_charge_state` instead
36-
* **BREAKING**: Calculation.do_modeling() now returns the Calculation object instead of its linopy.Model
37-
* **BREAKING**: Renamed class `SystemModel` to `FlowSystemModel`
38-
* **BREAKING**: Renamed class `Model` to `Submodel`
39-
* **BREAKING**: Renamed `mode` parameter in plotting methods to `style`
40-
* FlowSystems can not be shared across multiple Calculations anymore. A copy of the FlowSystem is created instead, making every Calculation independent
41-
* Each Subcalculation in `SegmentedCalculation` now has its own distinct `FlowSystem` object
42-
* Type system overhaul - added clear separation between temporal and non-temporal data throughout codebase for better clarity
43-
* Enhanced FlowSystem interface with improved `__repr__()` and `__str__()` methods
44-
* Improved Model Structure - Views and organisation is now divided into:
45-
* Model: The main Model (linopy.Model) that is used to create and store the variables and constraints for the flow_system.
46-
* Submodel: The base class for all submodels. Each is a subset of the Model, for simpler acess and clearer code.
47-
*
48-
49-
#### Internal:
50-
* **BREAKING**: Calculation.do_modeling() now returns the Calculation object instead of its linopy.Model
51-
* **BREAKING**: Renamed class `SystemModel` to `FlowSystemModel`
52-
* **BREAKING**: Renamed class `Model` to `Submodel`
53-
* FlowSystem data management simplified - removed `time_series_collection` pattern in favor of direct timestep properties
54-
* Change modeling hierarchy to allow for more flexibility in future development. This leads to minimal changes in the access and creation of Submodels and their variables.
55-
* Added new module `.modeling`that contains Modelling primitives and utilities
56-
57-
58-
### Added
59-
* FlowSystem Restoring: The used FlowSystem will now get restired from the results (lazily). ALll Parameters can be safely acessed anytime after the solve.
60-
* FLowResults added as a new class to store the results of Flows. They can now be accessed directly.
61-
* Added precomputed DataArrays for `size`s, `flow_rate`s and `flow_hour`s.
62-
* Added `effects_per_component()`-Dataset to Results that stores the direct (and indirect) effects of each component. This greatly improves the evaluation of the impact of individual Components, even with many and complex effects.
63-
* Improved filter methods for Results
35+
In this release, we introduce the following new features:
36+
#### Multi-period-support
37+
A flixopt model might be modeled with a "year" dimension.
38+
This enables to model transformation pathways over multiple years.
6439

65-
#### Scenarios
66-
Scenarios are a new feature of flixopt. They can be used to model uncertainties in the flow system, such as:
40+
#### Stochastic modeling
41+
A flixopt model can be modeled with a scenario dimension.
42+
Scenarios can be weighted and variables can be equated across scenarios. This enables to model uncertainties in the flow system, such as:
6743
* Different demand profiles
6844
* Different price forecasts
6945
* Different weather conditions
@@ -74,64 +50,75 @@ Common use cases are:
7450

7551
The weighted sum of the total objective effect of each scenario is used as the objective of the optimization.
7652

77-
#### Years (Investment periods)
78-
A flixopt model might be modeled with a "year" dimension.
79-
This enables to model transformation pathways over multiple years.
80-
81-
%%%%% TODO: New Interfaces to model sizes changing over time, annuity, etc.
82-
8353
#### Improved Data handling: IO, resampling and more through xarray
84-
* Complete serialization infrastructure through `Interface` base class
85-
* IO for all Interfaces and the FlowSystem with round-trip serialization support
86-
* Automatic DataArray extraction and restoration
87-
* NetCDF export/import capabilities for all Interface objects and FlowSystem
88-
* JSON export for documentation purposes
89-
* Recursive handling of nested Interface objects
54+
* IO for all Interfaces and the FlowSystem with round-trip serialization support
55+
* NetCDF export/import capabilities for all Interface objects and FlowSystem
56+
* JSON export for documentation purposes
57+
* Recursive handling of nested Interface objects
9058
* FlowSystem data manipulation methods
9159
* `sel()` and `isel()` methods for temporal data selection
9260
* `resample()` method for temporal resampling
9361
* `copy()` method to create a copy of a FlowSystem, including all underlying Elements and their data
9462
* `__eq__()` method for FlowSystem comparison
95-
* Storage component enhancements
96-
* `relative_minimum_final_charge_state` parameter for final state control
97-
* `relative_maximum_final_charge_state` parameter for final state control
63+
9864
* Core data handling improvements
9965
* `get_dataarray_stats()` function for statistical summaries
10066
* Enhanced `DataConverter` class with better TimeSeriesData support
101-
* Internal: Enhanced data handling methods
102-
* `fit_to_model_coords()` method for data alignment
103-
* `fit_effects_to_model_coords()` method for effect data processing
104-
* `connect_and_transform()` method replacing several operations
105-
106-
#### Internal: Improved Model organisation and access
107-
* Clearer separation between the main Model and "Submodels"
108-
* Improved access to the Submodels and their variables, constraints and submodels
109-
* Added __repr__() for Submodels to easily inspect its content
11067

11168

112-
#### Other new features
69+
### Added
70+
* FlowSystem Restoring: The used FlowSystem will now get restired from the results (lazily). ALll Parameters can be safely acessed anytime after the solve.
71+
* FLowResults added as a new class to store the results of Flows. They can now be accessed directly.
72+
* Added precomputed DataArrays for `size`s, `flow_rate`s and `flow_hour`s.
73+
* Added `effects_per_component()`-Dataset to Results that stores the direct (and indirect) effects of each component. This greatly improves the evaluation of the impact of individual Components, even with many and complex effects.
74+
* Improved filter methods for Results
11375
* Balanced storage - Storage charging and discharging sizes can now be forced to be equal in when optimizing their size.
114-
115-
#### Examples:
11676
* Added Example for 2-stage Investment decisions leveraging the resampling of a FlowSystem
77+
* New Storage Parameter: `relative_minimum_final_charge_state` and `relative_maximum_final_charge_state` parameter for final state control
11778

79+
### Changed
80+
* **BREAKING**: `relative_minimum_charge_state` and `relative_maximum_charge_state` don't have an extra timestep anymore. The final charge state can now be constrained by parameters `relative_minimum_final_charge_state` and `relative_maximum_final_charge_state` instead
81+
* **BREAKING**: Renamed class `SystemModel` to `FlowSystemModel`
82+
* **BREAKING**: Renamed class `Model` to `Submodel`
83+
* **BREAKING**: Renamed `mode` parameter in plotting methods to `style`
84+
* FlowSystems can not be shared across multiple Calculations anymore. A copy of the FlowSystem is created instead, making every Calculation independent
85+
* Each Subcalculation in `SegmentedCalculation` now has its own distinct `FlowSystem` object
86+
* Type system overhaul - added clear separation between temporal and non-temporal data throughout codebase for better clarity
87+
* Enhanced FlowSystem interface with improved `__repr__()` and `__str__()` methods
88+
* Improved Model Structure - Views and organisation is now divided into:
89+
* Model: The main Model (linopy.Model) that is used to create and store the variables and constraints for the flow_system.
90+
* Submodel: The base class for all submodels. Each is a subset of the Model, for simpler acess and clearer code.
91+
92+
### Deprecated
93+
* The `agg_group` and `agg_weight` parameters of `TimeSeriesData` are deprecated and will be removed in a future version. Use `aggregation_group` and `aggregation_weight` instead.
94+
* The `active_timesteps` parameter of `Calculation` is deprecated and will be removed in a future version. Use the new `sel(time=...)` method on the FlowSystem instead.
95+
* The assignment of Bus Objects to Flow.bus is deprecated and will be removed in a future version. Use the label of the Bus instead.
96+
* The usage of Effects objects in Dicts to assign shares to Effects is deprecated and will be removed in a future version. Use the label of the Effect instead.
97+
98+
### Removed
11899

119100
### Fixed
120101
* Enhanced NetCDF I/O with proper attribute preservation for DataArrays
121102
* Improved error handling and validation in serialization processes
122103
* Better type consistency across all framework components
123104

124-
125-
### Know Issues
126-
* Plotly >= 6 may raise errors if "nbformat" is not installed. We pinned plotly to <6, but this may be fixed in the future.
105+
### Known issues
127106
* IO for single Interfaces/Elemenets to Datasets might not work properly if the Interface/Element is not part of a fully transformed and connected FlowSystem. This arrises from Numeric Data not being stored as xr.DataArray by the user. To avoid this, always use the `to_dataset()` on Elements inside a FlowSystem thats connected and transformed.
128107

129-
130-
### Deprecated
131-
* The `agg_group` and `agg_weight` parameters of `TimeSeriesData` are deprecated and will be removed in a future version. Use `aggregation_group` and `aggregation_weight` instead.
132-
* The `active_timesteps` parameter of `Calculation` is deprecated and will be removed in a future version. Use the new `sel(time=...)` method on the FlowSystem instead.
133-
* The assignment of Bus Objects to Flow.bus is deprecated and will be removed in a future version. Use the label of the Bus instead.
134-
* The usage of Effects objects in Dicts to assign shares to Effects is deprecated and will be removed in a future version. Use the label of the Effect instead.
108+
### *Development*
109+
* **BREAKING**: Calculation.do_modeling() now returns the Calculation object instead of its linopy.Model
110+
* **BREAKING**: Renamed class `SystemModel` to `FlowSystemModel`
111+
* **BREAKING**: Renamed class `Model` to `Submodel`
112+
* FlowSystem data management simplified - removed `time_series_collection` pattern in favor of direct timestep properties
113+
* Change modeling hierarchy to allow for more flexibility in future development. This leads to minimal changes in the access and creation of Submodels and their variables.
114+
* Added new module `.modeling`that contains Modelling primitives and utilities
115+
* Clearer separation between the main Model and "Submodels"
116+
* Improved access to the Submodels and their variables, constraints and submodels
117+
* Added __repr__() for Submodels to easily inspect its content
118+
* Enhanced data handling methods
119+
* `fit_to_model_coords()` method for data alignment
120+
* `fit_effects_to_model_coords()` method for effect data processing
121+
* `connect_and_transform()` method replacing several operations
135122

136123

137124
## [2.1.9] - 2025-09-23

0 commit comments

Comments
 (0)