Releases: oemof/oemof-solph
Releases · oemof/oemof-solph
v0.5.5
What's Changed
- Add length check (setting it) for sequences by @p-snft in #1117
(fixes FakeSequences Not Iterating Correctly)
Full Changelog: v0.5.4...v0.5.5
v0.5.4
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
API changes
- The
OffsetConverter
expects two dictionaries now instead of thecoefficient
tuple. These are,conversion_factors
with the slope relative to theNonConvex
flow, andnormed_offsets
with the normed offsets relative to theNonConvex
flow. - The
NonConvex
attribute must be specified for one ofFlow
at the inlets or outlets of theOffsetConverter
.min
,max
andnominal_value
have to be specified for the sameFlow
.
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 theNonConvex
input given themin
,max
and the respective efficiencies/ratios, i.e.slope_offset_from_nonconvex_input
andslope_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
v0.5.2 - next network
API changes
- New bool attribute
use_remaining_value
ofoemof.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
API changes
- The component
Transformer
is renamed toConverter
.
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 argumentinvestment
is now deprecated. Instead,
nominal_value
andnominal_storage_capacity
accept anInvestment
object. - Change investment for experimental :class:
oemof.solph.components.experimental._sink_dsm.SinkDSM
: Remove
obsolete parametersflex_share_down
andflex_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
andTIMEINDEX
in :class:oemof.solph.models.Model
. - Index all investment-related variables with
PERIODS
and flow variable withTIMEINDEX
, which
is a tuple of periods and timesteps. - Add lifetime tracking for investment options by introducing the attributes
lifetime
andage
. - 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
andinterest_rate
for individual investment objects (options.Investment).
- You can change from standard model to multi-period model by defining the newly introduced
- Add
storage_level_constraint
that allows to set flows from/to storage (in)active based on storage content. Model
now accepts a list ofEnergySystem
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
API changes
- The component
Transformer
is renamed toConverter
.
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 argumentinvestment
is now deprecated. Instead,
nominal_value
andnominal_storage_capacity
accept anInvestment
object. - Change investment for experimental :class:
oemof.solph.components.experimental._sink_dsm.SinkDSM
: Remove
obsolete parametersflex_share_down
andflex_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
andTIMEINDEX
in :class:oemof.solph.models.Model
. - Index all investment-related variables with
PERIODS
and flow variable withTIMEINDEX
, which
is a tuple of periods and timesteps. - Add lifetime tracking for investment options by introducing the attributes
lifetime
andage
. - 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
andinterest_rate
for individual investment objects (options.Investment).
- You can change from standard model to multi-period model by defining the newly introduced
- Add
storage_level_constraint
that allows to set flows from/to storage (in)active based on storage content. Model
now accepts a list ofEnergySystem
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
v0.5.1
API changes
- Unify API for constant sized objects and sizing of investment. For both,
Flow
and
GenericStorage
, the argumentinvestment
is now deprecated. Instead,
nominal_value
andnominal_storage_capacity
accept anInvestment
object. - Change investment for experimental :class:
oemof.solph.components.experimental._sink_dsm.SinkDSM
: Remove
obsolete parametersflex_share_down
andflex_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
andTIMEINDEX
in :class:oemof.solph.models.Model
. - Index all investment-related variables with
PERIODS
and flow variable withTIMEINDEX
, which
is a tuple of periods and timesteps. - Add lifetime tracking for investment options by introducing the attributes
lifetime
andage
. - 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
andinterest_rate
for individual investment objects (options.Investment).
- You can change from standard model to multi-period model by defining the newly introduced
- 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
v0.5.0 (February 3rd, 2023)
API changes
- Parts of the energy system graph are now clearly structured into
buses
,components
, andflows
. - 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_min
andsummed_max
now have the more descriptive namesfull_load_time_min
andfull_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 forFlow
s. Inactivity costs is a cost for times where a Flow is not operated. - It is now possible to optimise the size of
Flow
s that have a status variable. Internally, this is done by theInvestNonConvexFlowBlock
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
v0.5.1
API changes
- Unify API for constant sized objects and sizing of investment. For both,
Flow
and
GenericStorage
, the argumentinvestment
is now deprecated. Instead,
nominal_value
andnominal_storage_capacity
accept anInvestment
object. - Change investment for experimental :class:
oemof.solph.components.experimental._sink_dsm.SinkDSM
: Remove
obsolete parametersflex_share_down
andflex_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
andTIMEINDEX
in :class:oemof.solph.models.Model
. - Index all investment-related variables with
PERIODS
and flow variable withTIMEINDEX
, which
is a tuple of periods and timesteps. - Add lifetime tracking for investment options by introducing the attributes
lifetime
andage
. - 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
andinterest_rate
for individual investment objects (options.Investment).
- You can change from standard model to multi-period model by defining the newly introduced
- 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
v0.4.5
Reliable refresh (January 23rd, 2023)
New features
- Allow to exclude attrs from
parameter_as_dict
#825
Bug fixes
- Remove not working
gradient_cost
from Flow - Exclude attrs
from parameter_as_dict
#824 - Fixed check for callables in
processing.parameter_as_dict
#823 - Refactored assertion error in
Link
component into suspicious warning #834 - Remove
Link
limit direction #896 - Fix links in setup.py #803
Testing
Node.registry
has been removed fromoemof.network
. All nodes have to be
added to the energysystem explicitely. The tests have been adapted.
Contributors
- Hendrik Huyskens
- Uwe Krien
- Jann Launer
- Patrik Schönfeld
- Francesco Witte