Skip to content

Releases: oemof/oemof-solph

v0.5.6: Numpy2 compatibility

26 Nov 16:00
193ab62
Compare
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

v0.5.5

29 Aug 11:29
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.5.4...v0.5.5

v0.5.4

19 Aug 08:22
Compare
Choose a tag to compare

What's Changed

  • Allow sinks/sources to have multiple inputs/outputs by @p-snft in #1088
  • Introduce variable for storage losses by @p-snft in #1090
  • Display inline math correctly and hint towards the usage of the inbuilt slope and offset calculation methods by @fwitte in #1092
  • Pandas warnings fixes by @uvchik in #1089
  • Replace _Sequence by _FakeSequence by @p-snft in #1101
  • Allow lower limit for generic_integral_limit by @p-snft in #1097
  • Formulate full_load_time docstring specific for energy by @p-snft in #1096

Full Changelog: v0.5.3...v0.5.4

Consistent Converters

25 Jun 09:20
Compare
Choose a tag to compare

API changes

  • The OffsetConverter expects two dictionaries now instead of the coefficient tuple. These are, conversion_factors with the slope relative to the NonConvex flow, and normed_offsets with the normed offsets relative to the NonConvex flow.
  • The NonConvex attribute must be specified for one of Flow at the inlets or outlets of the OffsetConverter. min, max and nominal_value have to be specified for the same Flow.

New features

  • OffsetConverter can now handle multiple inputs and outputs
  • There are two methods available for the OffsetConverter to calculate the slope and normed offset relative to the NonConvex input given the min, max and the respective efficiencies/ratios, i.e. slope_offset_from_nonconvex_input and slope_offset_from_nonconvex_output.

Bug fixes

  • Fix custom attributes of Sink, Source, GenericCHP and Converter components not being properly passed to base Node class

Other changes

  • Unified (usage) documentation for OffsetConverter
  • Remove approach to model cellular systems (was more confusing than it helped)
  • Refine indexing of flows (period index was not needed).

Known issues

  • Incompatible to numpy >= 2.0.0. This is because of Pyomo, but we have to enforce a lower version in our package.

Contributors

  • Lennart Schürmann
  • Richard Keil
  • Francesco Witte
  • Patrik Schönfeldt

Next Network

12 Jan 13:58
Compare
Choose a tag to compare

v0.5.2 - next network

API changes

  • New bool attribute use_remaining_value of oemof.solph.EnergySystem
  • Use list for period definition in multi-period investment optimization.

New features

  • Allow for evaluating differences in the remaining vs. the original value
    for multi-period investments.
  • Allow to define minimum up- and down-time per time step

Bug fixes

  • Fix handling of investment annuities and fixed costs for multi-period models:
    Limit to costs that occur within the optimization horizon to prevent a
    bias towards investments happening earlier in the optimization horizon.
  • Fix bugs in multi-period documentation.
  • Fix minimum uptime being relevant for initial downtime (and vice versa).
  • Fix duplicated discounting of fixed costs for multi-period investment

Other changes

  • Improved compatibility with upcoming oemof.network

Known issues

  • Documentation, example and API of OffsetConverter are inconsistent
    and might not work as expected.

Contributors

  • Patrik Schönfeldt
  • Johannes Kochems
  • Julian Endres
  • Hendrik Huyskens
  • Raul Ciria Aylagas

v0.5.1: Compliant Converter

31 Aug 10:23
Compare
Choose a tag to compare

API changes

  • The component Transformer is renamed to Converter.
    When people hear "transformer", they think of electrical devices.
    However, the Transformer is neither meant to be (only) electrical
    nor bidirectional (as electrical transformers typically are).
    Thus, the more generic term "converter" is now used.
    (Note that we always had the argument "conversion_factor".)
  • Unify API for constant sized objects and sizing of investment. For both, Flow and
    GenericStorage, the argument investment is now deprecated. Instead,
    nominal_value and nominal_storage_capacity accept an Investment object.
  • Change investment for experimental :class:oemof.solph.components.experimental._sink_dsm.SinkDSM: Remove
    obsolete parameters flex_share_down and flex_share_up.
  • Mainline link component :class:oemof.solph.components._link.Link from experimental.

New features

  • Add option to run multi-period (dynamic) investment models with oemof.solph as an experimental feature:
    • You can change from standard model to multi-period model by defining the newly introduced periods
      attribute of your energy system. Be aware that it is experimental as of now. periods is a dictionary
      mapping the periods you want to model (usually years) to pandas.date_range objects.
    • Add attributes periods to :class:oemof.solph._energy_system.EnergySystem.
    • Introduce new Pyomo Sets PERIODS and TIMEINDEX in :class:oemof.solph.models.Model.
    • Index all investment-related variables with PERIODS and flow variable with TIMEINDEX, which
      is a tuple of periods and timesteps.
    • Add lifetime tracking for investment options by introducing the attributes lifetime and age.
    • Add new investment-related variables total holding the total capacity, old holding capacity
      to be decommissioned, old_exo (for exogenous) holding existing capacity to be decommissioned and
      old_end holding model-endogenously installed capacity to be decommissioned after its lifetime.
    • Include discounting and calculating annuities in the objective function terms. Introduce attribute discount_rate
      of :class:oemof.solph.models.Model and interest_rate for individual investment objects (options.Investment).
  • Add storage_level_constraint that allows to set flows from/to storage (in)active based on storage content.
  • Model now accepts a list of EnergySystem objects, which allows for modelling of cellular energysystems.

Documentation

  • See extensive documentation in user guide and API reference for the new (experimental) multi-period feature.
  • Be more strict about about oemof (meta package) oemof.solph (this package).
  • Improved presentation of examples as part of the documentation.

Bug fixes

  • Fixed error when calling oemof_installation_test as console script.
  • Corrected several typos in the docs.
  • Periods with multiple period lengths are now supported in multi-period investment.
  • Add missing 'custom_attributes' for the link component

Testing

  • Add tests for experimental SinkDSM component.
  • Add tests for multi-period investment.

Contributors

  • Johannes Kochems
  • Patrik Schönfeldt
  • Tobi Rohrer
  • Julian Endres
  • Jann Launer
  • Lennart Schürmann

Compliant Converter

16 Aug 08:40
Compare
Choose a tag to compare
Compliant Converter Pre-release
Pre-release

API changes

  • The component Transformer is renamed to Converter.
    When people hear "transformer", they think of electrical devices.
    However, the Transformer is neither meant to be (only) electrical
    nor bidirectional (as electrical transformers typically are).
    Thus, the more generic term "converter" is now used.
    (Note that we always had the argument "conversion_factor".)
  • Unify API for constant sized objects and sizing of investment. For both, Flow and
    GenericStorage, the argument investment is now deprecated. Instead,
    nominal_value and nominal_storage_capacity accept an Investment object.
  • Change investment for experimental :class:oemof.solph.components.experimental._sink_dsm.SinkDSM: Remove
    obsolete parameters flex_share_down and flex_share_up.
  • Mainline link component :class:oemof.solph.components._link.Link from experimental.

New features

  • Add option to run multi-period (dynamic) investment models with oemof.solph as an experimental feature:
    • You can change from standard model to multi-period model by defining the newly introduced periods
      attribute of your energy system. Be aware that it is experimental as of now. periods is a dictionary
      mapping the periods you want to model (usually years) to pandas.date_range objects.
    • Add attributes periods to :class:oemof.solph._energy_system.EnergySystem.
    • Introduce new Pyomo Sets PERIODS and TIMEINDEX in :class:oemof.solph.models.Model.
    • Index all investment-related variables with PERIODS and flow variable with TIMEINDEX, which
      is a tuple of periods and timesteps.
    • Add lifetime tracking for investment options by introducing the attributes lifetime and age.
    • Add new investment-related variables total holding the total capacity, old holding capacity
      to be decommissioned, old_exo (for exogenous) holding existing capacity to be decommissioned and
      old_end holding model-endogenously installed capacity to be decommissioned after its lifetime.
    • Include discounting and calculating annuities in the objective function terms. Introduce attribute discount_rate
      of :class:oemof.solph.models.Model and interest_rate for individual investment objects (options.Investment).
  • Add storage_level_constraint that allows to set flows from/to storage (in)active based on storage content.
  • Model now accepts a list of EnergySystem objects, which allows for modelling of cellular energysystems.

Documentation

  • See extensive documentation in user guide and API reference for the new (experimental) multi-period feature.
  • Be more strict about about oemof (meta package) oemof.solph (this package).
  • Improved presentation of examples as part of the documentation.

Bug fixes

  • Fixed error when calling oemof_installation_test as console script.
  • Corrected several typos in the docs.
  • Periods with multiple period lengths are now supported in multi-period investment.
  • Add missing 'custom_attributes' for the link component

Testing

  • Add tests for experimental SinkDSM component.
  • Add tests for multi-period investment.

Contributors

  • Johannes Kochems
  • Patrik Schönfeldt
  • Tobi Rohrer
  • Julian Endres
  • Jann Launer
  • Lennart Schürmann

v0.5.1.dev2

29 Jun 19:16
3947141
Compare
Choose a tag to compare
v0.5.1.dev2 Pre-release
Pre-release

v0.5.1

API changes

  • Unify API for constant sized objects and sizing of investment. For both, Flow and
    GenericStorage, the argument investment is now deprecated. Instead,
    nominal_value and nominal_storage_capacity accept an Investment object.
  • Change investment for experimental :class:oemof.solph.components.experimental._sink_dsm.SinkDSM: Remove
    obsolete parameters flex_share_down and flex_share_up.
  • Mainline link component :class:oemof.solph.components._link.Link from experimental.

New features

  • Add option to run multi-period (dynamic) investment models with oemof.solph as an experimental feature:
    • You can change from standard model to multi-period model by defining the newly introduced periods
      attribute of your energy system. Be aware that it is experimental as of now. periods is a dictionary
      mapping the periods you want to model (usually years) to pandas.date_range objects.
    • Add attributes periods to :class:oemof.solph._energy_system.EnergySystem.
    • Introduce new Pyomo Sets PERIODS and TIMEINDEX in :class:oemof.solph.models.Model.
    • Index all investment-related variables with PERIODS and flow variable with TIMEINDEX, which
      is a tuple of periods and timesteps.
    • Add lifetime tracking for investment options by introducing the attributes lifetime and age.
    • Add new investment-related variables total holding the total capacity, old holding capacity
      to be decommissioned, old_exo (for exogenous) holding existing capacity to be decommissioned and
      old_end holding model-endogenously installed capacity to be decommissioned after its lifetime.
    • Include discounting and calculating annuities in the objective function terms. Introduce attribute discount_rate
      of :class:oemof.solph.models.Model and interest_rate for individual investment objects (options.Investment).
  • Add storage_level_constraint that allows to set flows from/to storage (in)active based on storage content.

Documentation

  • See extensive documentation in user guide and API reference for the new (experimental) multi-period feature.
  • Be more strict about about oemof (meta package) oemof.solph (this package).

Bug fixes

  • Fixed error when calling oemof_installation_test as console script.
  • Corrected several typos in the docs.

Testing

  • Add tests for experimental SinkDSM component.

Contributors

  • Johannes Kochems
  • Patrik Schönfeldt
  • Tobi Rohrer
  • Julian Endres
  • Jann Launer
  • Lennart Schürmann

v0.5.0: Rigorous refactoring

23 Jun 14:32
aaf1f5c
Compare
Choose a tag to compare

v0.5.0 (February 3rd, 2023)

API changes

  • Parts of the energy system graph are now clearly structured into buses, components, and flows.
  • Public and private API are be more distinguished now. ('_' signifies private, public API is defined in init files.)
  • Experimental code is now sitting in submodules called experimental (replaces "custom").
  • The flow arguments summed_minand summed_max now have the more descriptive names full_load_time_min and full_load_time_max.
  • Keyword arguments are now explicit. Among other things, this will catch typos. Custom attributes can be added using the argument custom_attributes. Those will be passed down the class hierachy and can (possibly) be handled in parent classes.

New features

  • Add inactivity_costs as an option for Flows. Inactivity costs is a cost for times where a Flow is not operated.
  • It is now possible to optimise the size of Flows that have a status variable. Internally, this is done by the InvestNonConvexFlowBlock which provides the possibility to perform capacity optimization of assets considering their min/max loads, as well as their operation status.

Documentation

  • Examples are added to the documentation.

Testing

  • Discontinued usage of Nose, as it is deprecated in Pytest <https://docs.pytest.org/en/stable/deprecations.html#support-for-tests-written-for-nose>.

Known issues

  • The format of the examples could be improved.

Note

  • Tags v0.5.0, v0.5.0a, and v0.5.0b have identical source code.
  • The tag has been adjusted to have a working DOI for this code.

Contributors

  • Patrik Schönfeldt
  • Uwe Krien
  • Saeed Sayadi
  • Pierre-François Duc
  • Johannes Kochems
  • Johannes Röder
  • David Fuhrländer
  • "lensum"
  • Jan Launner
  • Hendrik Huyskens
  • Ekaterina Zolotarevskaia
  • Sarah Berendes
  • Francesco Witte

v0.5.1.dev1

23 Jun 13:42
bcf1153
Compare
Choose a tag to compare
v0.5.1.dev1 Pre-release
Pre-release

v0.5.1

API changes

  • Unify API for constant sized objects and sizing of investment. For both, Flow and
    GenericStorage, the argument investment is now deprecated. Instead,
    nominal_value and nominal_storage_capacity accept an Investment object.
  • Change investment for experimental :class:oemof.solph.components.experimental._sink_dsm.SinkDSM: Remove
    obsolete parameters flex_share_down and flex_share_up.

New features

  • Add option to run multi-period (dynamic) investment models with oemof.solph as an experimental feature:
    • You can change from standard model to multi-period model by defining the newly introduced periods
      attribute of your energy system. Be aware that it is experimental as of now. periods is a dictionary
      mapping the periods you want to model (usually years) to pandas.date_range objects.
    • Add attributes periods to :class:oemof.solph._energy_system.EnergySystem.
    • Introduce new Pyomo Sets PERIODS and TIMEINDEX in :class:oemof.solph.models.Model.
    • Index all investment-related variables with PERIODS and flow variable with TIMEINDEX, which
      is a tuple of periods and timesteps.
    • Add lifetime tracking for investment options by introducing the attributes lifetime and age.
    • Add new investment-related variables total holding the total capacity, old holding capacity
      to be decommissioned, old_exo (for exogenous) holding existing capacity to be decommissioned and
      old_end holding model-endogenously installed capacity to be decommissioned after its lifetime.
    • Include discounting and calculating annuities in the objective function terms. Introduce attribute discount_rate
      of :class:oemof.solph.models.Model and interest_rate for individual investment objects (options.Investment).
  • Add storage_level_constraint that allows to set flows from/to storage (in)active based on storage content.

Documentation

  • See extensive documentation in user guide and API reference for the new (experimental) multi-period feature.

Bug fixes

  • Fixed error when calling oemof_installation_test as console script.
  • Corrected several typos in the docs.

Testing

  • Add tests for experimental SinkDSM component.

Contributors

  • Patrik Schönfeldt
  • Johannes Kochems
  • Tobi Rohrer
  • Patrik Schönfeldt
  • Julian Endres
  • Jann Launer