Skip to content

Commit 8d94caa

Browse files
committed
made some changes for setpoint results to get from postTopo rather than initial (which was failing)
Signed-off-by: Philippe Edwards <philippe.edwards@rte-france.com>
1 parent 6abf7f8 commit 8d94caa

2 files changed

Lines changed: 21 additions & 6 deletions

File tree

  • ra-optimisation/search-tree-rao/src/main/java/com/powsybl/openrao/searchtreerao/marmot
  • tests/src/test/resources/com/powsybl/openrao/tests/features/epic93_redispatching

ra-optimisation/search-tree-rao/src/main/java/com/powsybl/openrao/searchtreerao/marmot/Marmot.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,8 @@ private static LinearOptimizationResult optimizeLinearRemedialActions(
402402
ObjectiveFunction objectiveFunction) {
403403

404404
// -- Build IteratingLinearOptimizerInterTemporalInput
405-
TemporalData<OptimizationPerimeter> optimizationPerimeterPerTimestamp = computeOptimizationPerimetersPerTimestamp(raoInput.getRaoInputs().map(RaoInput::getCrac), initialResults, consideredCnecs);
405+
// Need to use postTopoResults to build perimeter because initialResults does not contain range action setpoints
406+
TemporalData<OptimizationPerimeter> optimizationPerimeterPerTimestamp = computeOptimizationPerimetersPerTimestamp(raoInput.getRaoInputs().map(RaoInput::getCrac), postTopoResults, consideredCnecs);
406407
// no objective function defined in individual IteratingLinearOptimizerInputs as it is global
407408
Map<OffsetDateTime, IteratingLinearOptimizerInput> linearOptimizerInputPerTimestamp = new HashMap<>();
408409
raoInput.getRaoInputs().getTimestamps().forEach(timestamp -> linearOptimizerInputPerTimestamp.put(timestamp, IteratingLinearOptimizerInput.create()
@@ -411,7 +412,7 @@ private static LinearOptimizationResult optimizeLinearRemedialActions(
411412
.withInitialFlowResult(initialResults.getData(timestamp).orElseThrow())
412413
.withPrePerimeterFlowResult(initialResults.getData(timestamp).orElseThrow())
413414
.withPreOptimizationFlowResult(postTopoResults.getData(timestamp).orElseThrow())
414-
.withPrePerimeterSetpoints(initialResults.getData(timestamp).orElseThrow())
415+
.withPrePerimeterSetpoints(postTopoResults.getData(timestamp).orElseThrow()) //use postTopoResults because initial does not contain setpoints
415416
.withPreOptimizationSensitivityResult(postTopoResults.getData(timestamp).orElseThrow())
416417
.withPreOptimizationAppliedRemedialActions(curativeRemedialActions.getData(timestamp).orElseThrow())
417418
.withToolProvider(ToolProvider.buildFromRaoInputAndParameters(raoInput.getRaoInputs().getData(timestamp).orElseThrow(), parameters))
@@ -454,17 +455,17 @@ private static boolean doesPrePerimeterSetpointRespectRange(RangeAction<?> range
454455
}
455456
}
456457

457-
private static TemporalData<OptimizationPerimeter> computeOptimizationPerimetersPerTimestamp(TemporalData<Crac> cracs, TemporalData<PrePerimeterResult> prePerimeterResults, TemporalData<Set<String>> consideredCnecs) {
458+
private static TemporalData<OptimizationPerimeter> computeOptimizationPerimetersPerTimestamp(TemporalData<Crac> cracs, TemporalData<? extends RangeActionSetpointResult> prePerimeterSetpointResults, TemporalData<Set<String>> consideredCnecs) {
458459
TemporalData<OptimizationPerimeter> optimizationPerimeters = new TemporalDataImpl<>();
459460
cracs.getTimestamps().forEach(timestamp -> {
460461
Crac crac = cracs.getData(timestamp).orElseThrow();
461-
PrePerimeterResult prePerimeterResult = prePerimeterResults.getData(timestamp).orElseThrow();
462+
RangeActionSetpointResult prePerimeterSetpointResult = prePerimeterSetpointResults.getData(timestamp).orElseThrow();
462463
optimizationPerimeters.add(timestamp, new PreventiveOptimizationPerimeter(
463464
crac.getPreventiveState(),
464465
MarmotUtils.getFilteredCnecs(crac, consideredCnecs.getData(timestamp).orElseThrow()),
465466
new HashSet<>(),
466467
new HashSet<>(),
467-
crac.getRangeActions(crac.getPreventiveState(), UsageMethod.AVAILABLE).stream().filter(rangeAction -> doesPrePerimeterSetpointRespectRange(rangeAction, prePerimeterResult)).collect(Collectors.toSet())
468+
crac.getRangeActions(crac.getPreventiveState(), UsageMethod.AVAILABLE).stream().filter(rangeAction -> doesPrePerimeterSetpointRespectRange(rangeAction, prePerimeterSetpointResult)).collect(Collectors.toSet())
468469
));
469470
});
470471
return optimizationPerimeters;

tests/src/test/resources/com/powsybl/openrao/tests/features/epic93_redispatching/US93_2.feature

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ Feature: US 93.1: power gradient constraints
5656
When I launch marmot
5757

5858
@fast @rao @dc @redispatching @preventive-only
59-
Scenario: US 93.2.2: Test for CORE IDCC 3
59+
Scenario: US 93.2.3: Test for CORE IDCC 3
6060
Given network files are in folder "20240926-FID2-620-v4-10V1001C--00264T-to-10V1001C--00085T"
6161
Given crac file is "20240926-FSC-ID2-CB-v1-10V1001C--00264T-to-10XFR-RTE------Q.xml"
6262
Given ics static file is "_10V1001C–00275O_CSA-COMRA-RDSTATIC-D_CORE-20240926-V001_.csv"
@@ -70,6 +70,20 @@ Feature: US 93.1: power gradient constraints
7070
| 2024-09-26 02:30 | 20240926_0230_2D4_UX0_FEXPORTGRIDMODEL_CGM_10V1001C--00264T.uct |
7171
When I launch marmot
7272

73+
74+
@fast @rao @dc @redispatching @preventive-only
75+
Scenario: US 93.2.2: Test for CORE IDCC 1 TS
76+
Given network files are in folder "20240926-FID2-620-v4-10V1001C--00264T-to-10V1001C--00085T"
77+
Given crac file is "20240926-FSC-ID2-CB-v1-10V1001C--00264T-to-10XFR-RTE------Q.xml"
78+
Given ics static file is "_10V1001C–00275O_CSA-COMRA-RDSTATIC-D_CORE-20240926-V001_.csv"
79+
Given ics series file is "_10V1001C–00275O_CSA-COMRA-RDSERIES-D_CORE-20240926-V001_.csv"
80+
Given ics gsk file is "_10V1001C--00275O_CSA-INDRA-GSK-D_D2-20240602-V004_.csv"
81+
Given configuration file is "epic93/RaoParameters_minCost_megawatt_dc.json"
82+
Given intertemporal rao inputs are:
83+
| Timestamp | Network |
84+
| 2024-09-26 00:30 | 20240926_0030_2D4_UX0_FEXPORTGRIDMODEL_CGM_10V1001C--00264T.uct |
85+
When I launch marmot
86+
7387
@fast @rao @dc @redispatching @preventive-only
7488
Scenario: US 93.2.4: Test for core idcc 0602
7589
Given network files are in folder "20240602-FID2-620-v4-10V1001C--00264T-to-10V1001C--00085T"

0 commit comments

Comments
 (0)