If a rough estimate for energy demands is just good enough, standard load profiles can be handy. To easily generate these kinds of profiles, we have the “demandlib” in the oemof cosmos. This week, we released a new iteration that includes profiles as defined by the VDI (Verband Deutscher Ingeneure, Association of German Engineers) and the updated profiles by the BDEW (Bundesverband der Energie- und Wasserwirtschaft, German Association of Energy and Water Industries).
Continue reading “Demandlib 0.2.2: VDI and BDEW25”Category: Releases
New solph release: v0.5.4
We released two new versions of solph. One is a stable maintenance release (solph 0.5.4 at PyPI, solph v0.5.4 at GitHub), the other is a packaged preview for the next release (solph 0.6.0a1 at PyPI). In the actual release features the following changes:
- Consistency
- Allow sinks/sources to have multiple inputs/outputs
- Allow lower limit for generic_integral_limit
- Fixes
- Display inline math correctly and hint towards the usage of the inbuilt slope and offset calculation methods (
OffsetConverter
) - Adapt to new Pandas API and fix warnings
- Formulate
full_load_time
docstring specific for energy
- Display inline math correctly and hint towards the usage of the inbuilt slope and offset calculation methods (
- Improvements “under the hood”
- Introduce variable for storage losses
- Replace _Sequence by _FakeSequence
We decided to have an alpha version packaged as well, which mostly changes the way storage_costs
are considered. Before, we took into account every time step, which eventually leads to double weighting of the initial/last time step if the storage is balanced (i.e. first and last time step are the same). As the previous implementation wasn’t really broken in all cases, the new way is not strictly a fix. And as it will lead to different results compared to the previous implementation, the change shouldn’t be part of the v0.5 release. So, if you want to consider storage costs, this release is just for you.
Solph v0.5.3 has landed
Today, we released a new version of solph (solph 0.5.3 at PyPI, solph v0.5.3 at GitHub). It adds one important feature, the OffsetConverter
now allows multiple inputs and multiple outputs. Still, it is mostly a maintenance release. As discussed in my thoughts on software maintenance, we are currently changing stuff “under the hood” to prepare for future changes. The decision to have a release was because we wanted to make sure that new installations do not have problems due to incompatible dependencies. As the latest versions of Pyomo and numpy are currently incompatible, we skipped a beta release. So in case you experience issues, please speak up.

Details on the new OffsetConverter
can be found in the documentation. The component makes it possible to create a Converter
with efficiencies depending on the part load condition. With the new formulation, the Flow
with the NonConvex
property is taken as reference, all other Flow
s are constrained with respect to this one. For consistence with “normal” Converter
s, the proportionality factor is called conversion_factor
, while the offset to model part-load efficiencies is expressed as a normed_offset
to facilitate investment optimisation.
solph v0.5.2: Next Network
Today, we had two new releases, oemof.network 0.5.0 (GitHub, PyPI) and oemof.solph 0.5.2 (GitHub, PyPI). The release of the first includes a lot of refactoring and cleaning. The code should now be a lot easier to understand and to maintain. We now use explicit keyword arguments also for network, so typos will be easy to find. Secondly, there is a (still experimental) API to get Nodes by label. At last, we now officially support an API to add Flows between existing Nodes. Using this API in solph, the Nodes might e.g. be Buses:
Continue reading “solph v0.5.2: Next Network”oemof.network v0.5.0a5 released
At the last user meeting, we decided that there should be more pre-releases. So, here we go: Today, there is a version “continuous clean-up” of oemof.network (github.com: oemof-network/v0.5.0a5, oemof.network · PyPI). As the code name suggests, it is mostly a clean-up without adding new functionality. However, the code quality improved quite a lot and we have prepared the deletion of code that is unused or seems to be unnecessary. So, please check out this alpha release to tell if we are wrong.
Update: Deprecating the use of network.Source and others in favour of network.Node only makes sense when the latter is really part of the public API. so, we’re at v0.5.0 alpha 5 already.
solph v0.5.1: Compliant Converter
Today, oemof.solph v0.5.1, code name “compilant converter” has been released. (Package at PyPI, Tag at GitHub). The most noteworthy addition is a new (still experimental) feature multi-period (dynamic) investment models. The code name refers to a small but maybe more evident change: The component Transformer
is renamed to Converter
. This is because people typically think of electrical devices when they hear the word “transformer”. However, as experienced users of our package know, 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”.) To maintain compatibility for v0.5.0, there is a transitional wrapper that still allows to name the component “Transformer”. It will keep telling you about the upcoming change, though. Another usability feature is the presentation of the examples as part of the documentation. Also, we fixed error when calling oemof_installation_test
as a console script. It turned out to confuse quite a few new users that it did not work as documented in the previous release.
We hope to have a fair balance between improvements in usability and new (experimental) features to make this an exciting release for all kinds of users. For us, it definitely is.
RC1 of solph 0.5.1
We have a release candidate for v0.5.1 (Package at PyPI, Tag at GitHub). There are some additions, but we also prepare for significant API changes that will come obligatory with v0.6. When upgrading from v0.5.0 to v0.5.1, there should be no changes required for you code. (This is not true if you use features that are explicitly marked “experimental”. Those may change without notice.)
Noticeable changes include:
- The component
Transformer
is now namedConverter
. - You can now combine
Investment
andOffsetConverter
. - Having energy stored in a
GenericStorage
can now have a cost. - You can now give an
Investment
object as thenominal_value
. We considered this more intuitive than working with two mutually exclusive different keyword arguments. - Tons of improvements in the (still experimental) MultiPeriod optimisation.
Again, there are transitional wrappers, so nothing should break when updating from v0.5.0, using the new API should be voluntary (you get a warning) for now. It would be nice if you test if your solph v0.5 code still works with this RC. We are aiming for a final release of v0.5.1 by the end of August.
oemof.solph v0.5 released
We are happy to announce oemof.solph v0.5.0 (codename “Rigorous refactoring”) . This release brings an extreme shift towards more user focused design:
- Clean definition of time indexes: You need N+1 points in time do define N time spans.
- Parts of the energy system graph are now clearly structured into
buses
,components
, andflows
. This adds some extra words to imports but makes the underlying logic more transparent. - Public and private API are be more distinguished now. (‘_’ signifies private, public API is defined in init files.)
- Experimental code is now sitting in sub-modules 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. This will make it easier to find the correct arguments and will also catch typos. Custom attributes can be added using the argument
custom_attributes
. Those will be passed down the class hierarchy and can (possibly) be handled in parent classes. - Add
inactivity_costs
as an option forFlow
s. Inactivity costs is a cost for times where a Flow is not operated. - Examples are added to the documentation. (The format of the examples could be improved, though.)
Besides these changes, there is one big thing that has happened “under the hood”. It is now possible to combine NonConvex
and Investment optimisation in the same Flow
.
oemof.tabular 0.0.3: New release on PyPI
We are happy to announce that we have released a new version of oemof.tabular. Oemof.tabular allows to create energy systems from tabular datapackages, which makes it easy to build models without writing a lot of code.
The focus of the release has been the adaption of tabular to oemof.solph 0.4.5. The following changes have been made:
- Adjusted to new oemof.solph structure.
- Allowed definition of costum foreign keys. Keys and related descriptors are now read from config files (.json) and can be adopted by setting environment variables using custom config files.
- Added constraint tests for most facades.
- Reduced number of imported packages.
- Cleaned up the badges in README.
- Moved CI services to GitHub actions.
The following issues have been fixed:
- Fixed Link by not setting constraints that limit direction.
- Fixed storage investment with existing capacities
- Introduced a conditional to fix error when running datapackages with expandable links.
- Fixed typo in the attribute
variable_costs
in facades.py. - Introduced marginal costs for both output flows instead of only one to avoid elimination of energy.
A detailed summary can be found here.
Solph 0.4.4: Capable Custom Components
Earlier this month, we released solph 0.4.4. It focuses on two new “custom components” (This is how we call in-developments components that are not yet part of the stable API.) There are:
- PiecewiseLinearTransformer. A transformer model with one input and one output and an arbitrary piecewise linear conversion function.
- Enhanced SinkDSM (sink allowing for demand side management)
- Renamed keyword argument
method
toapproach
- Renamed approaches
interval
tooemof
anddelay
toDIW
- Added modelling approach
DLR
(PhD thesis of Hans Christian Gils 2015) - Included load shedding
- Introduced
recovery_time
inDIW
approach - Introduced
shift_time
and other parameters forDLR
approach - Included investments in DSM
- Normalized keyword arguments
demand
,capapcity_up
andcapacity_down
- Renamed keyword argument
Further, some smaller changes made it into the release:
- Check number of
Flow
s inGenericStorage
- Allow conversion factor of zero for
GenericTransformer
- Split code into submodules
- Move CI-Tests from Travis to github