Skip to content

Commit 88dab8f

Browse files
refacto: PostPerimeterSensitivityAnalysis remove unecessary future (#1585)
* refacto simple Signed-off-by: CHEN Roxane <roxane.chen@rte-france.com> Co-authored-by: Godelaine <godelaine.demontmorillon@rte-france.com>
1 parent 97e6372 commit 88dab8f

3 files changed

Lines changed: 37 additions & 53 deletions

File tree

ra-optimisation/search-tree-rao/src/main/java/com/powsybl/openrao/searchtreerao/castor/algorithm/CastorContingencyScenarios.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -205,18 +205,15 @@ private PostPerimeterResult getResultPostState(State state, Network networkClone
205205
.filter(s -> s.getInstant().comesAfter(state.getInstant()))
206206
.forEach(statesToConsider::add);
207207
PostPerimeterSensitivityAnalysis postPerimeterSensitivityAnalysis = new PostPerimeterSensitivityAnalysis(crac, statesToConsider, raoParameters, toolProvider);
208-
try {
209-
return postPerimeterSensitivityAnalysis.runBasedOnInitialPreviousAndOptimizationResults(
210-
networkClone,
211-
initialSensitivityOutput,
212-
CompletableFuture.completedFuture(prePerimeterSensitivityOutput),
213-
stateTree.getOperatorsNotSharingCras(),
214-
optimizationResult,
215-
new AppliedRemedialActions()).get();
216-
} catch (InterruptedException | ExecutionException e) {
217-
Thread.currentThread().interrupt();
218-
throw new OpenRaoException(String.format("Error while running sensi after state %s", state.getId()), e);
219-
}
208+
209+
return postPerimeterSensitivityAnalysis.runBasedOnInitialPreviousAndOptimizationResults(
210+
networkClone,
211+
initialSensitivityOutput,
212+
prePerimeterSensitivityOutput,
213+
stateTree.getOperatorsNotSharingCras(),
214+
optimizationResult,
215+
new AppliedRemedialActions());
216+
220217
}
221218

222219
private PrePerimeterSensitivityAnalysis getPreCurativePerimeterSensitivityAnalysis(Perimeter curativePerimeter) {

ra-optimisation/search-tree-rao/src/main/java/com/powsybl/openrao/searchtreerao/castor/algorithm/CastorFullOptimization.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
package com.powsybl.openrao.searchtreerao.castor.algorithm;
99

10-
import com.powsybl.openrao.commons.OpenRaoException;
1110
import com.powsybl.openrao.data.crac.api.Crac;
1211
import com.powsybl.openrao.data.crac.api.Instant;
1312
import com.powsybl.openrao.data.crac.api.State;
@@ -278,14 +277,8 @@ public CompletableFuture<RaoResult> run() {
278277

279278
private PostPerimeterResult computePostPreventiveResult(ToolProvider toolProvider, PrePerimeterResult initialOutput, OptimizationResult preventiveResult) {
280279
PostPerimeterResult postPreventiveResult;
281-
try {
282-
postPreventiveResult = new PostPerimeterSensitivityAnalysis(crac, crac.getFlowCnecs(), crac.getRangeActions(), raoParameters, toolProvider)
283-
.runBasedOnInitialPreviousAndOptimizationResults(network, initialOutput, CompletableFuture.completedFuture(initialOutput), Collections.emptySet(), preventiveResult, null)
284-
.get();
285-
} catch (InterruptedException | ExecutionException e) {
286-
Thread.currentThread().interrupt();
287-
throw new OpenRaoException("Exception during post preventive sensitivity analysis", e);
288-
}
280+
postPreventiveResult = new PostPerimeterSensitivityAnalysis(crac, crac.getFlowCnecs(), crac.getRangeActions(), raoParameters, toolProvider)
281+
.runBasedOnInitialPreviousAndOptimizationResults(network, initialOutput, initialOutput, Collections.emptySet(), preventiveResult, null);
289282
return postPreventiveResult;
290283
}
291284

ra-optimisation/search-tree-rao/src/main/java/com/powsybl/openrao/searchtreerao/castor/algorithm/PostPerimeterSensitivityAnalysis.java

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525
import java.util.Map;
2626
import java.util.Set;
2727
import java.util.concurrent.CompletableFuture;
28-
import java.util.concurrent.Executors;
29-
import java.util.concurrent.Future;
3028
import java.util.concurrent.atomic.AtomicReference;
3129

3230
import static com.powsybl.openrao.commons.logs.OpenRaoLoggerProvider.TECHNICAL_LOGS;
@@ -62,9 +60,9 @@ public PostPerimeterSensitivityAnalysis(Crac crac,
6260
* <li> the optimizationResult of the given perimeter for action cost </li>
6361
* </ul>
6462
*/
65-
public Future<PostPerimeterResult> runBasedOnInitialPreviousAndOptimizationResults(Network network,
63+
public PostPerimeterResult runBasedOnInitialPreviousAndOptimizationResults(Network network,
6664
FlowResult initialFlowResult,
67-
Future<PrePerimeterResult> previousResultsFuture,
65+
PrePerimeterResult previousResultsFuture,
6866
Set<String> operatorsNotSharingCras,
6967
OptimizationResult optimizationResult,
7068
AppliedRemedialActions appliedCurativeRemedialActions) {
@@ -78,36 +76,32 @@ public Future<PostPerimeterResult> runBasedOnInitialPreviousAndOptimizationResul
7876
sensitivityComputer.compute(network);
7977
flowResult.set(sensitivityComputer.getBranchResult(network));
8078
sensitivityResult.set(sensitivityComputer.getSensitivityResult());
79+
} else {
80+
flowResult.set(previousResultsFuture);
81+
sensitivityResult.set(previousResultsFuture);
8182
}
8283

83-
// Thread is executed once previousResultsFuture is fetched
84-
return Executors.newSingleThreadExecutor().submit(() -> {
85-
if (!actionWasTaken) {
86-
flowResult.set(previousResultsFuture.get());
87-
sensitivityResult.set(previousResultsFuture.get());
88-
}
89-
ObjectiveFunction objectiveFunction = ObjectiveFunction.build(
90-
flowCnecs,
91-
toolProvider.getLoopFlowCnecs(flowCnecs),
92-
initialFlowResult,
93-
previousResultsFuture.get(),
94-
operatorsNotSharingCras,
95-
raoParameters,
96-
optimizationResult.getActivatedRangeActionsPerState().keySet()
97-
);
98-
99-
ObjectiveFunctionResult objectiveFunctionResult = objectiveFunction.evaluate(
100-
flowResult.get(),
101-
new RemedialActionActivationResultImpl(optimizationResult, optimizationResult)
102-
);
103-
104-
return new PostPerimeterResult(optimizationResult, new PrePerimeterSensitivityResultImpl(
105-
flowResult.get(),
106-
sensitivityResult.get(),
107-
RangeActionSetpointResultImpl.buildWithSetpointsFromNetwork(network, rangeActions),
108-
objectiveFunctionResult
109-
));
110-
});
84+
ObjectiveFunction objectiveFunction = ObjectiveFunction.build(
85+
flowCnecs,
86+
toolProvider.getLoopFlowCnecs(flowCnecs),
87+
initialFlowResult,
88+
previousResultsFuture,
89+
operatorsNotSharingCras,
90+
raoParameters,
91+
optimizationResult.getActivatedRangeActionsPerState().keySet()
92+
);
93+
94+
ObjectiveFunctionResult objectiveFunctionResult = objectiveFunction.evaluate(
95+
flowResult.get(),
96+
new RemedialActionActivationResultImpl(optimizationResult, optimizationResult)
97+
);
98+
99+
return new PostPerimeterResult(optimizationResult, new PrePerimeterSensitivityResultImpl(
100+
flowResult.get(),
101+
sensitivityResult.get(),
102+
RangeActionSetpointResultImpl.buildWithSetpointsFromNetwork(network, rangeActions),
103+
objectiveFunctionResult
104+
));
111105
}
112106

113107
/**

0 commit comments

Comments
 (0)