2525import java .util .Map ;
2626import java .util .Set ;
2727import java .util .concurrent .CompletableFuture ;
28- import java .util .concurrent .Executors ;
29- import java .util .concurrent .Future ;
3028import java .util .concurrent .atomic .AtomicReference ;
3129
3230import 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