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

Fairness of allocation in times of scarcity #726

Closed
SouthEndMusic opened this issue Nov 2, 2023 · 1 comment · Fixed by #751
Closed

Fairness of allocation in times of scarcity #726

SouthEndMusic opened this issue Nov 2, 2023 · 1 comment · Fixed by #751
Labels
allocation Allocation layer

Comments

@SouthEndMusic
Copy link
Collaborator

SouthEndMusic commented Nov 2, 2023

Now that allocation is back to an LP solve per priority (#699), fairness in allocation has to be rethought.

On way to do it is to introduce a new variable $M$ to maximize, so the objective function becomes simply

$$ \max M $$

with either constraints

$$ M \le F_{\hat{i}\hat{j}} \quad \forall (\hat{i},\hat{j}) \in \hat{E}_S : \hat{j} \in \hat{U}_S, $$

so the objective is to maximize the minimum flow to a user, or

$$ M \le \frac{F_{\hat{i}\hat{j}}}{d^p_j(t)} \quad \forall (\hat{i},\hat{j}) \in \hat{E}_S : \hat{j} \in \hat{U}_S, $$

so the objective is to maximize the minimum demand fraction allocated to the users.

A problem with this is that this method doesn't 'care' about water that cannot be distributed fairly, so not all available water is distributed.

This isssue has been scheduled to be discussed with members of the RTC-Tools team.

@SouthEndMusic SouthEndMusic added needs-refinement Issues that are too large and need refinement allocation Allocation layer labels Nov 2, 2023
@github-project-automation github-project-automation bot moved this to To do in Ribasim Nov 2, 2023
@SouthEndMusic SouthEndMusic removed the needs-refinement Issues that are too large and need refinement label Nov 6, 2023
@SouthEndMusic
Copy link
Collaborator Author

This issue has been discussed with the RTC-Tools team, concluding that the objective for allocation flows for a given priority $p$ can have the following forms.

  1. All deviations from the demand flow have the same weight:

$$ \min \sum_{(\hat{i},\hat{j}) \in \hat{E}_S : \hat{j} \in \hat{U}_S} \left|F_{\hat{i}\hat{j}} - d^p_j(t) \right| $$

  1. The same as 1 but quadratic:

$$ \min \sum_{(\hat{i},\hat{j}) \in \hat{E}_S : \hat{j} \in \hat{U}_S} \left(F_{\hat{i}\hat{j}} - d^p_j(t) \right)^2 $$

  1. The same as 1 but demand fraction deviations are minimized:

$$ \min \sum_{(\hat{i},\hat{j}) \in \hat{E}_S : \hat{j} \in \hat{U}_S} \left|1 - \frac{F_{\hat{i}\hat{j}}}{d^p_j(t)} \right| $$

  1. The same as 2 but scaled by the demands:

$$ \min \sum_{(\hat{i},\hat{j}) \in \hat{E}_S : \hat{j} \in \hat{U}_S} \frac{\left(F_{\hat{i}\hat{j}} - d^p_j(t) \right)^2}{d^p_j(t)} $$

If desired we could support custom weights for these terms as input from the modeller.

This was referenced Nov 7, 2023
@SouthEndMusic SouthEndMusic moved this from To do to 🏗 In progress in Ribasim Nov 8, 2023
@SouthEndMusic SouthEndMusic moved this from 🏗 In progress to Sprint backlog in Ribasim Nov 8, 2023
@SouthEndMusic SouthEndMusic moved this from Sprint backlog to 🏗 In progress in Ribasim Nov 8, 2023
@visr visr closed this as completed in #751 Nov 20, 2023
visr added a commit that referenced this issue Nov 20, 2023
Fixes #726.

---------

Co-authored-by: Martijn Visser <[email protected]>
Co-authored-by: Maarten Pronk <[email protected]>
@github-project-automation github-project-automation bot moved this from 🏗 In progress to ✅ Done in Ribasim Nov 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
allocation Allocation layer
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

1 participant