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 named Converter.
  • You can now combine Investment and OffsetConverter.
  • Having energy stored in a GenericStorage can now have a cost.
  • You can now give an Investment object as the nominal_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, and flows. 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_minand summed_max now have the more descriptive names full_load_time_min and full_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 for Flows. 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.

Continue reading “oemof.solph v0.5 released”

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 to approach
    • Renamed approaches interval to oemof and delay to DIW
    • Added modelling approach DLR (PhD thesis of Hans Christian Gils 2015)
    • Included load shedding
    • Introduced recovery_time in DIW approach
    • Introduced shift_time and other parameters for DLR approach
    • Included investments in DSM
    • Normalized keyword arguments demand, capapcity_up and capacity_down

Further, some smaller changes made it into the release:

  • Check number of Flow s in GenericStorage
  • Allow conversion factor of zero for GenericTransformer
  • Split code into submodules
  • Move CI-Tests from Travis to github