View code on Github

v0.26: relaxed scheduling, cleaner asset pages

Our dashboard with
Our dashboard shows asset tree structures an links to the asset pages

Version v0.26 of FlexMeasures makes the scheduler more flexible for edge situations (in which the target might be just out of reach, or not all targets can be satisfied). This is an important step in scheduling that behaves according to the priorities of each site.

Also, the UI for showing assets got an important update - we split the overloaded asset page into several pages. This improves browsing and loading times.

See the changelog for a complete list of improvements (50 PRs!).

Let's dive int the two main features!

Relaxed scheduling

You can tell FlexMeasures to find an optimal schedule within a list of contraints (e.g. grid constraints, minimum fill level of EV batteries etc.). Sometimes the perfect solution does not exist. FlexMeasures should still present a schedule that is the best it can do. But which goal/constraint is most important? We are working on letting the user decide.

Let us consider a simple example: In the V2G Liberty project (which uses FlexMeasures as a scheduling backend), the user can give a minimal charge level, for when they plan longer trips. FlexMeasure should attempt to reach this target, but sometimes the user might have given FlexMeasures too little time to accomplish that.

Here is a visualization:

The V2GLiberty app, showing FlexMeasures' schedule (orange) and the minimal-charge window (blue)

Here, the minimal charge window cannot be reached, but FlexMeasures will reach the minimal level as early as possible. In earlier version of the FlexMeasures scheduler, it might have told you that no valid solution exists. But of course, here the user wants it to try.

If there are multiple competing goals/constraints, it becomes a matter of priority. In FlexMeasures, penalties can now be set for any breaches of these goals/constrains, which is a way for the system operator to determine which of them matters more than others.

We have 3 types of relaxations (each in two directions) whose prices can all be set in the flex-context and flex-model:

  • site-consumption-capacity / site-production-capacity
  • soc-minima / soc-maxima (for each device)
  • consumption-capacity / production-capacity (for each device)

For instance, there is a site-consumption-breach-price attribute in the flex-context, where you could tell FlexMeasures that site-consumption-capacity is a soft constraint, but how important it is to you. You could set it to 1000 EUR/MW (if your optimization problem uses EUR as target). You could think of the setting as a (contractual) penalty. The setting can even be a sensor, so the penalties can vary over the time of day!

This work (most of it) was done in Pull Requests 1300 and  1405.

Cleaner asset pages - and a bonus

The asset is our central data type. They have sensors, or even sub-assets ― they are the building blocks of site structures in FlexMeasures. Until now, FlexMeasures had one asset page in the UI, where the user could:

  • look at (and edit) graphs
  • edit asset properties
  • see the asset connectivity status
  • see the audit log

Recently, we added the capability to edit the flex context. It became a bit much, and the page also tool longer to load.

We separated the page into dedicated pages, for easier and faster navigation, and we added a context view, for when an asset hierarchy is build to model a site:

Also nice: users can select their favorite asset page, so when they visit the asset, they always see that view first (per default it is the context page).

And: we worked on the breadcrumbs for asset hierarchy, solving a few UX problems.

This work (most of it) was done in Pull Requests 1387, 1410, 1470 and 1416.