Skip to content

Commit

Permalink
Updated from Publii
Browse files Browse the repository at this point in the history
  • Loading branch information
nhoening committed Jan 6, 2025
1 parent 481a369 commit 965e98f
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 8 deletions.

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions feed.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"url": "https://flexmeasures.io/024-more-expressive-congestion-modeling-data-dashboards/",
"title": "v0.24: more expressive congestion modeling, edit data dashboards",
"summary": "Version v0.24 of FlexMeasures adds more expressive power for behind-the-meter scheduling constraints, and it also lets you design your graph dashboard. And we completed pagination in the UI. This was…",
"content_html": "<div class=\"post__inner post__entry\">\n<p>Version v0.24 of FlexMeasures adds more expressive power for behind-the-meter scheduling constraints, and it also lets you design your graph dashboard. And we completed pagination in the UI.</p>\n<p>This was actually a larger release (~70 PRs, three new committers). <a href=\"https://flexmeasures.readthedocs.io/en/latest/changelog.html#v0-24-0-january-06-2025\" target=\"_blank\" rel=\"noopener noreferrer\">See the changelog</a> for a complete list.</p>\n<p>Let's dive in!</p>\n</div>\n<div class=\"post__inner post__entry\">\n<h2>Combine economic modelling options (e.g. peak costs &amp; prices)</h2>\n<p>Behind-the-meter orchestration can become a complex problem, with multiple optimization goals potentially competing. So far, FlexMeasures could model hard constraints (e.g. consumption limit) and an optimization signal, usually a price per kWh. Both of these examples are penalties or rewards for energy commitments, that influence in distinct ways how the FlexMeasures scheduler will optimize the aggregated energy profile of the site.</p>\n<p>But behind the meter, there are more intricate constraints, penalties and rewards, as different parties (e.g. the DSO, the day ahead market operator and the local business) have different ideas about how energy should be used. Especially the modeling of the congestion problem inspired us to extend how FlexMeasures can model the different needs.</p>\n<p>With 0.24, any number of commitments which have their own reward or penalties can be modeled in the same optimization, and the scheduler will try to get the best overall profile.</p>\n<p>This is a big step towards capturing more goals of behind-the-meter orchestration. It was not trivial to model this extension. From here on, FlexMeasures has much more expressive power!</p>\n<p>Here is an example, which is inspired from a situation with a highly congested grid (as we experience in The Netherlands). Note that in the main PR you find a test which models this example, as well). Suppose that within the same optimization of schedules, we want to:</p>\n<ul>\n<li>use a day-ahead tariff for pricing our energy purchasing -&gt; buy low, sell high</li>\n<li>model the DSO costs, as well (the DSO's monthly invoice depends on the highest peak) -&gt; modulate how high peaks get within the contracted capacity</li>\n<li>allow breaching the contracted consumption capacity, but incentivize the scheduler (with a penalty) to attempt avoiding this as much as possible</li>\n</ul>\n<figure class=\"post__image\"><img loading=\"lazy\" src=\"https://flexmeasures.io/media/posts/45/v0.24-commitments.drawio-2.png\" alt=\"Illustration of possible options for the FlexMeasures scheduler after v0.24 (not exhaustive, e.g. set points are not shown)\" width=\"879\" height=\"546\" sizes=\"(max-width: 48em) 100vw, 768px\" srcset=\"https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-xs.png 300w ,https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-sm.png 480w ,https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-md.png 768w ,https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-lg.png 1024w ,https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-xl.png 1360w ,https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-2xl.png 1600w\"><figcaption></figcaption></figure>\n<p>That last point seems counter-intuitive (allow breaching contracted capacity, but penalize it), but during simulations with different battery sizes, we found it invaluable that the contractual limits are not hard constraints, so we still get the best schedules, even on days where the battery cannot on its own keep the consumption within limits. Note that the <em>physical limits</em> can also be added, and should be hard constraints. </p>\n<p>The scheduler will take all these goals into consideration, using existing and new flex-context fields like <code class=\"notranslate\">site-peak-consumption-price</code>, <code class=\"notranslate\">site-peak-consumption-breach</code>and <code class=\"docutils literal notranslate\"><span class=\"pre\">site-peak-consumption-price</span></code> (check <a href=\"https://flexmeasures.readthedocs.io/en/latest/features/scheduling.html#the-flex-context\" target=\"_blank\" rel=\"noopener noreferrer\">the documentation</a> for details).</p>\n<p>Note that after the fact, the actual reporting of costs can represent what will actually be invoiced, e.g. energy purchasing (dynamic tariff) and peak costs by the DSO, but not the penalty used to avoid peak breaches.</p>\n<p>This work was done in Pull Requests <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1144\" target=\"_blank\" rel=\"noopener noreferrer\">1144</a> and <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1254\" target=\"_blank\" rel=\"noopener noreferrer\">1254</a>.</p>\n<h2>Editing your own graph dashboard in the UI</h2>\n<p>The asset page is where FlexMeasures shows you data (measurements, schedules, etc) in graphs. As your use cases and sites differ, your needs for this graph dashboard will differ. Previously, it was possible to configure different graphs and plots, but it required editing a JSON field. As of version 0.24, you can edit what you want to see right in the UI:</p>\n<figure class=\"post__image post__image--center\"><img loading=\"lazy\" src=\"https://flexmeasures.io/media/posts/45/screenshot-asset-editgraph.png\" alt=\"Editing the graph dashboard\" width=\"750\" height=\"550\" sizes=\"(max-width: 48em) 100vw, 768px\" srcset=\"https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-xs.png 300w ,https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-sm.png 480w ,https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-md.png 768w ,https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-lg.png 1024w ,https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-xl.png 1360w ,https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-2xl.png 1600w\"></figure>\n<p>This work was done in Pull Requests <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1212\" target=\"_blank\" rel=\"noopener noreferrer\">1212</a>, <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1145\" target=\"_blank\" rel=\"noopener noreferrer\">1145</a> and <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1152\" target=\"_blank\" rel=\"noopener noreferrer\">1152</a>.</p>\n<h2>More pagination in UI for faster browsing</h2>\n<p>When a lot of data is being shown, FlexMeasures' pages could get slow. In <a href=\"https://flexmeasures.io/023-data-insights-and-white-labelling/\">v0.23</a>, we already started adding pagination parameters to API endpoints for assets and users. This now includes also accounts and audit logs, and we finished our work on all FlexMeasures UI pages, so that they now only load small batches of entries at a time.</p>\n<p>This work was done in Pull Requests <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1115\" target=\"_blank\" rel=\"noopener noreferrer\">1115</a>, <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1116\" target=\"_blank\" rel=\"noopener noreferrer\">1116</a>, <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1143\" target=\"_blank\" rel=\"noopener noreferrer\">1143</a>, <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1201\" target=\"_blank\" rel=\"noopener noreferrer\">1201</a>, <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1274\" target=\"_blank\" rel=\"noopener noreferrer\">1274</a> and <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1282\" target=\"_blank\" rel=\"noopener noreferrer\">1282</a>.</p>\n</div>",
"content_html": "<div class=\"post__inner post__entry\">\n<p>Version v0.24 of FlexMeasures adds more expressive power for behind-the-meter scheduling constraints, and it also lets you design your graph dashboard. And we completed pagination in the UI.</p>\n<p>This was actually a larger release (~70 PRs, three new committers). <a href=\"https://flexmeasures.readthedocs.io/en/latest/changelog.html#v0-24-0-january-06-2025\" target=\"_blank\" rel=\"noopener noreferrer\">See the changelog</a> for a complete list.</p>\n<p>Let's dive in!</p>\n</div>\n<div class=\"post__inner post__entry\">\n<h2>Combine economic modelling options (e.g. peak costs &amp; prices)</h2>\n<p>Behind-the-meter orchestration can become a complex problem, with multiple optimization goals potentially competing. So far, FlexMeasures could model hard constraints (e.g. consumption limit) and an optimization signal, usually a price per kWh. Both of these examples are penalties or rewards for energy commitments, that influence in distinct ways how the FlexMeasures scheduler will optimize the aggregated energy profile of the site.</p>\n<p>But behind the meter, there are more intricate constraints, penalties and rewards, as different parties (e.g. the DSO, the day ahead market operator and the local business) have different ideas about how energy should be used. Especially the modeling of the congestion problem inspired us to extend how FlexMeasures can model the different needs.</p>\n<p>With 0.24, any number of commitments which have their own reward or penalties can be modeled in the same optimization, and the scheduler will try to get the best overall profile.</p>\n<p>This is a big step towards capturing more goals of behind-the-meter orchestration. It was not trivial to model this extension. From here on, FlexMeasures has much more expressive power!</p>\n<p>Here is an example, which is inspired from a situation with a highly congested grid (as we experience in The Netherlands). Note that in the main PR you find a test which models this example, as well). Suppose that within the same optimization of schedules, we want to:</p>\n<ul>\n<li>use a day-ahead tariff for pricing our energy purchasing -&gt; buy low, sell high</li>\n<li>model the DSO costs, as well (the DSO's monthly invoice depends on the highest peak) -&gt; modulate how high peaks get within the contracted capacity</li>\n<li>allow breaching the contracted consumption capacity, but incentivize the scheduler (with a penalty) to attempt avoiding this as much as possible</li>\n</ul>\n<figure class=\"post__image\"><img loading=\"lazy\" src=\"https://flexmeasures.io/media/posts/45/v0.24-commitments.drawio-2.png\" alt=\"Illustration of possible options for the FlexMeasures scheduler after v0.24 (not exhaustive, e.g. set points are not shown)\" width=\"879\" height=\"546\" sizes=\"(max-width: 48em) 100vw, 768px\" srcset=\"https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-xs.png 300w ,https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-sm.png 480w ,https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-md.png 768w ,https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-lg.png 1024w ,https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-xl.png 1360w ,https://flexmeasures.io/media/posts/45/responsive/v0.24-commitments.drawio-2-2xl.png 1600w\"><figcaption></figcaption></figure>\n<p>That last point seems counter-intuitive (allow breaching contracted capacity, but penalize it), but during simulations with different battery sizes, we found it invaluable that the contractual limits are not hard constraints, so we still get the best schedules, even on days where the battery cannot on its own keep the consumption within limits. Note that the <em>physical limits</em> can also be added, and should be hard constraints. </p>\n<p>The scheduler will take all these goals into consideration, using existing and new flex-context fields like <code class=\"notranslate\">site-peak-consumption-price</code>, <code class=\"notranslate\">site-peak-consumption-breach</code>and <code class=\"docutils literal notranslate\"><span class=\"pre\">site-peak-consumption</span></code> (check <a href=\"https://flexmeasures.readthedocs.io/en/latest/features/scheduling.html#the-flex-context\" target=\"_blank\" rel=\"noopener noreferrer\">the documentation</a> for details).</p>\n<p>Note that after the fact, the actual reporting of costs can represent what will actually be invoiced, e.g. energy purchasing (dynamic tariff) and peak costs by the DSO, but not the penalty used to avoid peak breaches.</p>\n<p>This work was done in Pull Requests <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1144\" target=\"_blank\" rel=\"noopener noreferrer\">1144</a> and <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1254\" target=\"_blank\" rel=\"noopener noreferrer\">1254</a>.</p>\n<h2>Editing your own graph dashboard in the UI</h2>\n<p>The asset page is where FlexMeasures shows you data (measurements, schedules, etc) in graphs. As your use cases and sites differ, your needs for this graph dashboard will differ. Previously, it was possible to configure different graphs and plots, but it required editing a JSON field. As of version 0.24, you can edit what you want to see right in the UI:</p>\n<figure class=\"post__image post__image--center\"><img loading=\"lazy\" src=\"https://flexmeasures.io/media/posts/45/screenshot-asset-editgraph.png\" alt=\"Editing the graph dashboard\" width=\"750\" height=\"550\" sizes=\"(max-width: 48em) 100vw, 768px\" srcset=\"https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-xs.png 300w ,https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-sm.png 480w ,https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-md.png 768w ,https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-lg.png 1024w ,https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-xl.png 1360w ,https://flexmeasures.io/media/posts/45/responsive/screenshot-asset-editgraph-2xl.png 1600w\"></figure>\n<p>This work was done in Pull Requests <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1212\" target=\"_blank\" rel=\"noopener noreferrer\">1212</a>, <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1145\" target=\"_blank\" rel=\"noopener noreferrer\">1145</a> and <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1152\" target=\"_blank\" rel=\"noopener noreferrer\">1152</a>.</p>\n<h2>More pagination in UI for faster browsing</h2>\n<p>When a lot of data is being shown, FlexMeasures' pages could get slow. In <a href=\"https://flexmeasures.io/023-data-insights-and-white-labelling/\">v0.23</a>, we already started adding pagination parameters to API endpoints for assets and users. This now includes also accounts and audit logs, and we finished our work on all FlexMeasures UI pages, so that they now only load small batches of entries at a time.</p>\n<p>This work was done in Pull Requests <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1115\" target=\"_blank\" rel=\"noopener noreferrer\">1115</a>, <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1116\" target=\"_blank\" rel=\"noopener noreferrer\">1116</a>, <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1143\" target=\"_blank\" rel=\"noopener noreferrer\">1143</a>, <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1201\" target=\"_blank\" rel=\"noopener noreferrer\">1201</a>, <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1274\" target=\"_blank\" rel=\"noopener noreferrer\">1274</a> and <a href=\"https://github.com/FlexMeasures/flexmeasures/pull/1282\" target=\"_blank\" rel=\"noopener noreferrer\">1282</a>.</p>\n</div>",
"image": "https://flexmeasures.io/media/posts/45/v0.24-commitments.drawio.png",
"author": {
"name": "SeitaBV"
Expand All @@ -23,7 +23,7 @@
"FlexMeasures Blog"
],
"date_published": "2025-01-03T14:16:04+01:00",
"date_modified": "2025-01-06T15:27:44+01:00"
"date_modified": "2025-01-06T16:27:28+01:00"
},
{
"id": "https://flexmeasures.io/a-new-vpp-algorithm-the-kiflin-project/",
Expand Down
Loading

0 comments on commit 965e98f

Please sign in to comment.