Skip to content

Releases: oemof/oemof-solph

v0.6.4: Saturating Storage

17 Apr 06:59
ae793f4

Choose a tag to compare

API changes

  • Model.solve() now directly returns the optimisation Results. (For some time, they will be backwards compatible with the old meta_results.)

New features

  • Mipgap is calculated in the meta results
  • The GenericStorage now allows reducing the inflow based on the storage_level. The feature does not work with all investments, yet. See documentation for details.

Documentation

  • Fix Furo error when displaying the table of contents of the result handling tutorial.
  • Use solph.Results in the Results section of the documentation, in examples (partally), and tutorials (all of them), where previously solph.processing.results was used. (Documentation of the processing module is still available as part of the API reference.)

Bug fixes

  • Remove pydot usage from tutorial scripts. As pydot is not named as a dependency and the scripts do not actually use the generated dot-file, the only effect was that the scripts often do not work.

Contributors

  • Jonas Freißmann
  • Lena Rosin
  • Patrik Schönfeldt
  • Uwe Krien

Acknowledgements

Thanks to the participants of the seminar "Future Power Supply" at Oldenburg University for feedback about the tutorials.

Automatic Git changelog

Full Changelog: v0.6.3...v0.6.4

v0.6.3: Get Results

19 Feb 09:44
7761ddb

Choose a tag to compare

API changes

  • You can now access results using Results.get(key, default).
    This is planned to replace Results.to_df(key).

New features

  • Introduced input validation for nominal_capacity.
  • Argument infer_last_interval of EnergySystem now works even if freq of a
    DatetimeIndex is not explicitly set. This is particularly the case if
    equally sampled data is read in from a file.

Documentation

  • A tutorial focusing on time indexes and aggregation is added.

Contributors

  • Uwe Krien
  • Patrik Schönfeldt
  • Maximilian Hillen
  • Eva Schischke

Automatic Git changelog

Full Changelog: v0.6.2...v0.6.3

v0.6.2: Robust Results

29 Jan 19:51
9972438

Choose a tag to compare

API changes

  • The class solph.Results is no longer marked as experimental.
  • The Flow parameter bidirectional now raises a FutureWarning, as it is to be removed in a following version. (You can still set a negative minimum, which is now explicitly marked experimental - but has never been officially stable.)
  • The Flow parameters min and max have been renamed to minimum and maximum, respectively. The old parameters are still available but raise a FutureWarning. Please use the new parameter names in future code.

New features

  • Classes Flow, NonConvex, and Investment now use custom_properties in the way that Node classes (e.g. Bus, or Converter) do.

Documentation

  • The Flow parameters minimum and maximum are now listed with their default values of 0 and 1, respectively, in the Flow API documentation.

Bug fixes

  • Fixed that processing.results failed when using Pandas 3 with TSAM.

Other changes

  • Support Python 3.14 instead of Python 3.10.

Contributors

  • Patrik Schönfeldt
  • Lennart Schürmann
  • Stephan Günther
  • Antonella Giannitelli
  • Maximilian Hillen

Automatic Git changelog

Full Changelog: v0.6.1...v0.6.2

v0.6.1: Fractal Fun

17 Nov 16:29
1132942

Choose a tag to compare

API changes

  • GenericStorage requires explicitly set Investment objects if the invest_relation
    keywords are used. Automatic creation of the Investment objects is removed.

New features

  • Two new keys added to Results class (experimental) to calculate variable costs and
    investment costs via results["variable_costs"] and results["investment_costs"].
  • Nodes (buses and components) can now have a parent_node and create subnode s.
    This allows constructing nested structures in the energy system graph.

Documentation

  • Add documentation of Results class.

Bug fixes

  • Setting invest_relation_input_output now actually creates the relational constraint.

Other changes

  • Experimental component SinkDSM (unmaintained) has been removed
  • Unmaintained, non-working functionality for three-phase electricity has been removed.
  • Make claer InvestNonConvexFlowBlock and NonConvexFlowBlock are parallel structures and the former is no specialised version of the latter. In particular, the set NONCONVEX_FLOWS is now called FIXED_CAPACITY_NONCONVEX_FLOWS.

Contributors

  • Patrik Schönfeldt
  • Eva Schischke
  • Lennart Schürmann (UMSICHT)
  • Uwe Krien
  • Antonella Giannitelli
  • Pierre Francois
  • Francesco Witte

Acknowledgements

Work of PS was funded by the German Federal Ministry of Research, Technology
and Space (BMFTR) within the project "WärmewendeNordwest" (grant no 03SF0624L).

Automatic Git changelog

Full Changelog: v0.6.0...v0.6.1

v0.6.0

06 Jun 10:13

Choose a tag to compare

API changes

  • Costs for energy storage are now defined for N-1 points in time (initial time step is neglected). This is because with a balanced storage, content of the initial and the first time step (which is effectively the same) had double weight before. Also, if the initial storage level is defined, the costs just offset the objective value without changing anything else.
  • Tansitional wrappers that still allowed to use Transformer and OffsetTransformer have been removed. Use of the new names (Converter and OffsetConverter) is now obligatory.
  • Tansitional wrappers that still allowed to use investment, summed_min, and summed_max as arguments to initialise a Flow have been removed. Use of the new names (nominal_capacity, full_load_time_min, and full_load_time_max) is now obligatory.
  • Rename custom_attributes to custom_properties for all Nodes. Setting the oemof.network.Node.custom_properties using an argument called "custom_attributes" was rather confusing. Additionally, the class Bus already called the argument "custom_properties".
  • The parameters GenericStorage.nominal_storage_capacity and Flow.nominal_value are now both called nominal_capacity.
  • Initialisation of an EnergySystem can now be done using any index consisting of increasing numbers (not only timestamps). This is to prepare the removal of the parameter timeincrement (now deprecated).
  • The default of EnergySystem(infer_last_interval) is now False. (This was required to allow arbitrary numeric intervals.)

New features

  • Add a new Results class (experimental)
  • Add time-series-agrgregation mode (experimental)

Documentation

  • Completely reworked the design of the documentation.
  • Added introductory tutorials as getting started material.

Bug fixes

  • Remove unneeded use of gurobi from examples.
  • Fixed storage costs for initial storage level.

Other changes

  • Model.solve() will now fail, if solver status is nonoptimal. We added new keyword allow_nonoptimal to deactivate this behaviour.

Contributors

  • Pierre Francois Bachibouzouk
  • Uwe Krien
  • Patrik Schönfeldt
  • Cord Kaldemeyer
  • Hendrik Huyskens
  • Franscesco Witte
  • Malte Fritz
  • Julian Endres
  • Julian Endres
  • Lennart Schürmann
  • Eva Schischke (fist contribution)
  • Simon Günther
  • Johannes Kochems

Acknowledgements

Work of PS was funded by the German Federal Ministry of Research, Technology
and Space (BMFTR) within the project "WärmewendeNordwest" (grant no 03SF0624L).

Automatic Git changelog

Full Changelog: v0.5.7...v0.6.0

v0.6.0 RC1

06 Jun 09:49

Choose a tag to compare

v0.6.0 RC1 Pre-release
Pre-release

API changes

  • Costs for energy storage are now defined for N-1 points in time (initial time step is neglected). This is because with a balanced storage, content of the initial and the first time step (which is effectively the same) had double weight before. Also, if the initial storage level is defined, the costs just offset the objective value without changing anything else.
  • Tansitional wrappers that still allowed to use Transformer and OffsetTransformer have been removed. Use of the new names (Converter and OffsetConverter) is now obligatory.
  • Tansitional wrappers that still allowed to use investment, summed_min, and summed_max as arguments to initialise a Flow have been removed. Use of the new names (nominal_capacity, full_load_time_min, and full_load_time_max) is now obligatory.
  • Rename custom_attributes to custom_properties for all Nodes. Setting the oemof.network.Node.custom_properties using an argument called "custom_attributes" was rather confusing. Additionally, the class Bus already called the argument "custom_properties".
  • The parameters GenericStorage.nominal_storage_capacity and Flow.nominal_value are now both called nominal_capacity.
  • Initialisation of an EnergySystem can now be done using any index consisting of increasing numbers (not only timestamps). This is to prepare the removal of the parameter timeincrement (now deprecated).
  • The default of EnergySystem(infer_last_interval) is now False. (This was required to allow arbitrary numeric intervals.)

New features

  • Add a new Results class (experimental)
  • Add time-series-agrgregation mode (experimental)

Documentation

  • Completely reworked the design of the documentation.
  • Added introductory tutorials as getting started material.

Bug fixes

  • Remove unneeded use of gurobi from examples.
  • Fixed storage costs for initial storage level.

Other changes

  • Model.solve() will now fail, if solver status is nonoptimal. We added new keyword allow_nonoptimal to deactivate this behaviour.

Contributors

  • Pierre Francois Bachibouzouk
  • Uwe Krien
  • Patrik Schönfeldt
  • Cord Kaldemeyer
  • Hendrik Huyskens
  • Franscesco Witte
  • Malte Fritz
  • Julian Endres
  • Julian Endres
  • Lennart Schürmann
  • Eva Schischke (fist contribution)
  • Simon Günther
  • Johannes Kochems

Acknowledgements

Work of PS was funded by the German Federal Ministry of Research, Technology
and Space (BMFTR) within the project "WärmewendeNordwest" (grant no 03SF0624L).

Automatic Git changelog

Full Changelog: v0.5.7...v0.6.0

v0.6.0a4

30 Apr 18:46

Choose a tag to compare

v0.6.0a4 Pre-release
Pre-release

What's Changed

  • Fix/storage costs for initial level by @p-snft in #1094
  • Replace constraint tests by @p-snft in #1080
  • Adjust indexing for content of InvestStorageBlock by @p-snft in #1039
  • Remove internal discounting for NonConvexFlow by @p-snft in #1110
  • Make invest relations iterable by @nailend in #1063
  • Merge revision/include v0 5 fixes by @p-snft in #1120
  • Change version from v2 to v4 for artifact upload by @fwitte in #1123
  • Fix/v0.5 fixes in dev by @p-snft in #1125
  • Fix/links by @p-snft in #1144
  • Revision/rename nominal value by @p-snft in #1114
  • Rename custom_attributes to custom_properties for Nodes by @p-snft in #1145
  • Revision/remove v0.4 compatibility wrappers by @p-snft in #1112
  • Remove internal discounting functionality by @p-snft in #1111
  • Fix LaTeX code in docstring of GenericStorageBlock by @lensum in #1149
  • Fix bugs in parameter as dict by @uvchik in #1152
  • Add kwarg fail_on_infeasable in model.solve by @esske in #1139
  • Merge dev into integrate_TSAM by @p-snft in #1154
  • Add new tutorial example (using NamedTuple as label) by @p-snft in #1041
  • Improve documentation of examples for GenericStorage with Investment by @lensum in #1023
  • Add SCIP open source solver by @ckaldemeyer in #927
  • Integrate TSAM mode in oemof.solph by @henhuy in #980
  • Produce images of examples energysystems and check that they run by @Bachibouzouk in #1170
  • Remove GenericStorageBlock.init_content by @p-snft in #1180
  • Fix bug where InvestNonConvexFlowBlock does not eliminate Investment offset when no investment is made by @maltefritz in #1173
  • Add a new Results class by @p-snft in #1181
  • Fix InvestNonConvexFlowBlock set definition by nonconvex parameter by @jfreissmann in #1184
  • Rename storage content variables by @p-snft in #1182
  • Integrate v0.5.7 by @p-snft in #1191

New Contributors

Full Changelog: v0.5.7...v0.6.0a4

v0.5.7

25 Apr 09:40
ab83844

Choose a tag to compare

New features

  • Introduce option Model.solve(allow_nonoptimal=False) that raises an error if no optimal solution is found. (Backported from v0.6.)

Bug fixes

  • storage_costs are now considered also for GenericStorage with a capacity that is subject to an Investment.

Known issues

  • Indexing of storage with capacity investment is off by one.
  • Related: Storage limits not applied for last time step.
  • Some links in the documentation are no longer valid.

Contributors

  • Eva Schischke
  • Patrik Schönfeldt

Full Changelog: v0.5.6...v0.5.7

v0.6.0a3

24 Mar 13:11
f78b4e9

Choose a tag to compare

v0.6.0a3 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: v0.6.0a2...v0.6.0a3

v0.5.6: Numpy2 compatibility

26 Nov 16:00
193ab62

Choose a tag to compare

What's Changed

  • Fix/numpy2 compatibility by @p-snft in #1113
  • Use Python 3.10 for RTD builds

(Note: This tag has been recreated to allow building the docs.)

Full Changelog: v0.5.5...v0.5.6