Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conditional (triggered) control #13

Closed
visr opened this issue Oct 28, 2022 · 6 comments
Closed

Conditional (triggered) control #13

visr opened this issue Oct 28, 2022 · 6 comments
Assignees
Labels
control Rule based control of physical layer needs-refinement Issues that are too large and need refinement

Comments

@visr
Copy link
Member

visr commented Oct 28, 2022

Based on flow or concentration in one location, adjust one of the steering mechanisms.

Examples:

  • Close Haringvliet to maintain flow on Nieuwe Waterweg
  • Stop intake Gouda when salt concentration breaches treshold
  • reduce outflow Afsluitdijk based on Lobith discharge (forecast)

or more general:

  • choose a different RatingTable
  • choose a different pump capacity

condition can be local or elsewhere and may, for boundary conditions, be based on a timestep in future (e.g. Lobith discharge 10 days ahead)

condition can be based on a combination of time, and multiple parameters

condition should be evaluated on discrete moments

@visr visr added the control Rule based control of physical layer label Oct 28, 2022
@gijsber gijsber added this to Ribasim Nov 14, 2022
@visr visr self-assigned this Nov 15, 2022
@visr visr moved this to 🔲 Todo in Ribasim Nov 15, 2022
@visr visr moved this from 🔲 Todo to 🏗 In progress in Ribasim Nov 15, 2022
@gijsber gijsber moved this from 🏗 In progress to Paused in Ribasim Dec 20, 2022
@visr visr moved this from Paused to 🔲 Todo in Ribasim Jan 23, 2023
@gijsber gijsber changed the title control triggers conditional (triggered) control Mar 1, 2023
@gijsber gijsber added this to the Sprint 23.3 increment milestone Mar 1, 2023
@gijsber
Copy link
Contributor

gijsber commented Mar 7, 2023

As indicated by waterboards, they typically have
(1) Vaste stuwen met klepstand die wel door het jaar heen aangepast kan worden
(2) Automatische peilgestuurde stuwen waarbij binnen het jaar het peil kan veranderen, inclusief een bereik.
(3) Automatische debietgestuurde stuwen, inclusief een bereik.

On the component side this may dealt with as follows:
(1) can probably be dealt with by a timedependent ratingTable.
(2) can probably be dealt with with our LevelControl component (if not, what does it do ?)
(3) this may need a different kind of connector (FlowControl) as I wonder whether a controlleable RatingTable (e.g. RatingTable x applied given some observation) can cope with this need.

@gijsber
Copy link
Contributor

gijsber commented Apr 6, 2023

Start small and then expand:
[ ] one condition changes a parameterized dataset:

  • pump flow (block function)
  • FractionalFlow switch
  • QH-tabel switch
    [ ] one condition + time indicator change a parameterized dataset
    [ ] two conditions change a parameterized dataset
    [ ] two conditions + time indicator change a parameterized dataset

This can then be extended to more complex situations like.
[ ] more complex conditional structures
[ ] PID controller
[ ] linear interpolation of a condition-pumpflow lookup functie voor de pumpcontroller

@gijsber
Copy link
Contributor

gijsber commented May 12, 2023

Design decisions after discussion 11 May 2023:

  • parameterized dataset should stay fixed for the next timestep
  • a control-rule can only switch datasets within a node type. In other words, it can change from one Qh-table to another Qh-table, but not from a set Flow to a QH-table.
  • a control rule can only affect the parameterization of one node

Recommendation:

  • seperate data structure from control mechanism
  • try to keep simple rules like abstraction stops at the lowest implementation level (ie in the physical layer outside the control layer)
  • try to make a decision layer (on top of the physical control layer) for the prioritization of abstractions. This layer would assess what abstactions would fit the physical situation and erduce those abstractions that have lowest priority.
  • it would be nice if we could offer a plugin-framework such that users can make more advanced control formulations

To decide and investigate:

  • How many conditions do we allow
  • how to keep the system stable

@Hofer-Julian Hofer-Julian changed the title conditional (triggered) control Conditional (triggered) control May 15, 2023
@SnippenE SnippenE moved this from 🏗 In progress to Sprint backlog in Ribasim May 25, 2023
@SnippenE SnippenE added the needs-refinement Issues that are too large and need refinement label May 25, 2023
@evetion
Copy link
Member

evetion commented May 30, 2023

We're gonna implement the most simple control system. 1 obs to 1 action.

  • New input type
  • New network

New Issues:

@evetion
Copy link
Member

evetion commented Jun 8, 2023

See #293 for an initial refinment after the first PoC

@evetion
Copy link
Member

evetion commented Jun 19, 2023

Closed by #274

@evetion evetion closed this as completed Jun 19, 2023
@github-project-automation github-project-automation bot moved this from 🏗 In progress to ✅ Done in Ribasim Jun 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
control Rule based control of physical layer needs-refinement Issues that are too large and need refinement
Projects
Archived in project
Development

No branches or pull requests

5 participants