-
Notifications
You must be signed in to change notification settings - Fork 4
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
Add RA usage limit on the number of applicable elementary actions per TSO #1009
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
# Conflicts: # data/crac/crac-api/src/main/java/com/powsybl/openrao/data/cracapi/RaUsageLimits.java
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
# Conflicts: # ra-optimisation/search-tree-rao/src/main/java/com/powsybl/openrao/searchtreerao/searchtree/algorithms/SearchTree.java # ra-optimisation/search-tree-rao/src/main/java/com/powsybl/openrao/searchtreerao/searchtree/algorithms/SearchTreeBloomer.java # ra-optimisation/search-tree-rao/src/test/java/com/powsybl/openrao/searchtreerao/searchtree/algorithms/SearchTreeBloomerTest.java
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
# Conflicts: # ra-optimisation/search-tree-rao/src/main/java/com/powsybl/openrao/searchtreerao/linearoptimisation/algorithms/fillers/RaUsageLimitsFiller.java
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
...ybl/openrao/searchtreerao/linearoptimisation/algorithms/fillers/RaUsageLimitsFillerTest.java
Outdated
Show resolved
Hide resolved
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
# Conflicts: # data/crac/crac-impl/src/test/java/com/powsybl/openrao/data/cracimpl/utils/ExhaustiveCracCreation.java
...-io/crac-io-json/src/test/java/com/powsybl/openrao/data/craciojson/CracImportExportTest.java
Outdated
Show resolved
Hide resolved
data/crac/crac-api/src/main/java/com/powsybl/openrao/data/cracapi/RaUsageLimits.java
Outdated
Show resolved
Hide resolved
for (String tso : maxElementaryActionsPerTso.keySet()) { | ||
for (PstRangeAction pstRangeAction : pstRangeActionsPerTso.getOrDefault(tso, Set.of())) { | ||
// use pre-perimeter tap because PST's tap may be different from the initial tap after previous perimeter | ||
int initialTap = prePerimeterRangeActionSetpoints.getTap(pstRangeAction); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if we want this to work in second preventif, we'll need to check the tap of the preventive variable (see how we compute relative taps for inspiration)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it would probably be worth creating a test case for this
OpenRaoMPConstraint maxElementaryActionsConstraint = linearProblem.addTsoMaxElementaryActionsConstraint(0, maxElementaryActionsPerTso.get(tso), tso, state); | ||
for (PstRangeAction pstRangeAction : pstRangeActionsPerTso.getOrDefault(tso, Set.of())) { | ||
// use pre-perimeter tap because PST's tap may be different from the initial tap after previous perimeter | ||
int initialTap = prePerimeterRangeActionSetpoints.getTap(pstRangeAction); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same here for 2P
...sybl/openrao/searchtreerao/searchtree/algorithms/MaximumNumberOfElementaryActionsFilter.java
Show resolved
Hide resolved
And the tap of PstRangeAction "pst_fr" should be 10 in preventive | ||
And the worst margin is 7.0 MW | ||
|
||
# TODO: second prev |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do the todo, some with global optimisation and some without
Signed-off-by: Thomas Bouquet <thomas.bouquet@rte-france.com>
Please check if the PR fulfills these requirements
What kind of change does this PR introduce?
This PR introduced a new RA usage limit called
max-elementary-actions-per-tso
. An elementary action is defined as follows:For CSA, TSOs may want to limit the number of elementary actions they will use for curative remedial actions.
In this example, the TSO can apply at most 3 elementary actions during the preventive optimization. This may be for example:
What is the new behavior (if this is a feature change)?
The limit has been defined in the CRAC API and the CRAC creation parameters. In the optimization, this limit is a constraint that appears both in the search tree bloomer (for network actions) and in the linear programming model (for PSTs' taps).
Does this PR introduce a breaking change or deprecate an API?