Skip to content

Commit

Permalink
w.i.p.
Browse files Browse the repository at this point in the history
Signed-off-by: Jerry Guo <[email protected]>
  • Loading branch information
Jerry-Jinfeng-Guo committed Feb 12, 2025
1 parent fc64e4a commit 0de631b
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -711,7 +711,7 @@ class TapPositionOptimizerImpl<std::tuple<TransformerTypes...>, StateCalculator,
// - tap_max > tap_min && strategy_max == true
// - tap_max < tap_min && strategy_max == false
// Upper bound should be updated to the current tap position if the rest is the case.
bool invert_strategy = control_at_tap_side_ ? !strategy_max : strategy_max;
bool const invert_strategy = control_at_tap_side_ ? !strategy_max : strategy_max;
if (tap_reverse_ == invert_strategy) {
lower_bound_ = current_;
last_down_ = false;
Expand Down
54 changes: 13 additions & 41 deletions tests/cpp_unit_tests/test_optimizer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -217,64 +217,36 @@ constexpr auto strategy_search_and_sides = [] {
}();

constexpr auto strategy_search_and_sides_xs = std::array{
// OptimizerStrategySearchSide{OptimizerStrategy::any, SearchMethod::linear_search, ControlSide::side_1}, // v tf
// control_at_tap_side_a=true
// OptimizerStrategySearchSide{OptimizerStrategy::any, SearchMethod::linear_search, ControlSide::side_2}, // v ft
// control_at_tap_side_b=true
// OptimizerStrategySearchSide{OptimizerStrategy::any, SearchMethod::linear_search, ControlSide::side_3}, // v ff
// OptimizerStrategySearchSide{OptimizerStrategy::local_maximum, SearchMethod::linear_search, ControlSide::side_1},
// // v tf control_at_tap_side_a=true
OptimizerStrategySearchSide{OptimizerStrategy::local_maximum, SearchMethod::linear_search,
ControlSide::side_2}, // x ft control_at_tap_side_b=true
// OptimizerStrategySearchSide{OptimizerStrategy::local_maximum, SearchMethod::linear_search, ControlSide::side_3},
// // v ff
// OptimizerStrategySearchSide{OptimizerStrategy::local_minimum, SearchMethod::linear_search, ControlSide::side_1},
// // v
OptimizerStrategySearchSide{OptimizerStrategy::local_minimum, SearchMethod::linear_search,
ControlSide::side_2}, // x control_at_tap_side_b=true
// OptimizerStrategySearchSide{OptimizerStrategy::local_minimum, SearchMethod::linear_search, ControlSide::side_3},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::any, SearchMethod::linear_search, ControlSide::side_1}, // v
// OptimizerStrategySearchSide{OptimizerStrategy::any, SearchMethod::linear_search, ControlSide::side_2}, // v
// OptimizerStrategySearchSide{OptimizerStrategy::any, SearchMethod::linear_search, ControlSide::side_3}, // v
// OptimizerStrategySearchSide{OptimizerStrategy::local_maximum, SearchMethod::linear_search, ControlSide::side_1}, // x
OptimizerStrategySearchSide{OptimizerStrategy::local_maximum, SearchMethod::linear_search, ControlSide::side_2}, // v
// OptimizerStrategySearchSide{OptimizerStrategy::local_maximum, SearchMethod::linear_search, ControlSide::side_3}, //
// OptimizerStrategySearchSide{OptimizerStrategy::local_minimum, SearchMethod::linear_search, ControlSide::side_1}, //
// OptimizerStrategySearchSide{OptimizerStrategy::local_minimum, SearchMethod::linear_search, ControlSide::side_2}, // v
// OptimizerStrategySearchSide{OptimizerStrategy::local_minimum, SearchMethod::linear_search, ControlSide::side_3},
// OptimizerStrategySearchSide{OptimizerStrategy::global_maximum, SearchMethod::linear_search, ControlSide::side_1},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::global_maximum, SearchMethod::linear_search, ControlSide::side_2},
// // x control_at_tap_side_b=true
// OptimizerStrategySearchSide{OptimizerStrategy::global_maximum, SearchMethod::linear_search, ControlSide::side_3},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::global_minimum, SearchMethod::linear_search, ControlSide::side_1},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::global_minimum, SearchMethod::linear_search, ControlSide::side_2},
// // x control_at_tap_side_b=true
// OptimizerStrategySearchSide{OptimizerStrategy::global_minimum, SearchMethod::linear_search, ControlSide::side_3},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::fast_any, SearchMethod::binary_search, ControlSide::side_1}, // x
// control_at_tap_side_a=true
// OptimizerStrategySearchSide{OptimizerStrategy::fast_any, SearchMethod::binary_search, ControlSide::side_2}, // x
// control_at_tap_side_b=true
// OptimizerStrategySearchSide{OptimizerStrategy::fast_any, SearchMethod::binary_search, ControlSide::side_3}, // x
// OptimizerStrategySearchSide{OptimizerStrategy::local_maximum, SearchMethod::binary_search, ControlSide::side_1},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::fast_any, SearchMethod::binary_search, ControlSide::side_1}, //
// OptimizerStrategySearchSide{OptimizerStrategy::fast_any, SearchMethod::binary_search, ControlSide::side_2}, //
// OptimizerStrategySearchSide{OptimizerStrategy::fast_any, SearchMethod::binary_search, ControlSide::side_3}, //
// OptimizerStrategySearchSide{OptimizerStrategy::local_maximum, SearchMethod::binary_search, ControlSide::side_1}, // x
// OptimizerStrategySearchSide{OptimizerStrategy::local_maximum, SearchMethod::binary_search, ControlSide::side_2},
// // x
// OptimizerStrategySearchSide{OptimizerStrategy::local_maximum, SearchMethod::binary_search, ControlSide::side_3},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::local_minimum, SearchMethod::binary_search, ControlSide::side_1},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::local_minimum, SearchMethod::binary_search, ControlSide::side_2},
// // x
// OptimizerStrategySearchSide{OptimizerStrategy::local_minimum, SearchMethod::binary_search, ControlSide::side_3},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::global_maximum, SearchMethod::binary_search, ControlSide::side_1},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::global_maximum, SearchMethod::binary_search, ControlSide::side_2},
// // x
// OptimizerStrategySearchSide{OptimizerStrategy::global_maximum, SearchMethod::binary_search, ControlSide::side_3},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::global_minimum, SearchMethod::binary_search, ControlSide::side_1},
// // v
// OptimizerStrategySearchSide{OptimizerStrategy::global_minimum, SearchMethod::binary_search, ControlSide::side_2},
// // x
// OptimizerStrategySearchSide{OptimizerStrategy::global_minimum, SearchMethod::binary_search, ControlSide::side_3},
// // v
};

struct OptStrategyMethodSearch {
Expand Down
9 changes: 5 additions & 4 deletions tests/cpp_unit_tests/test_tap_position_optimizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -640,6 +640,7 @@ auto check_exact_per_strategy(IntS tap_pos_any, IntS tap_pos_min, IntS tap_pos_m

switch (strategy) {
case any:
case fast_any:
CHECK(value == tap_pos_any);
break;
case local_maximum:
Expand Down Expand Up @@ -953,7 +954,7 @@ TEST_CASE("Test Tap position optimizer") {

SUBCASE("voltage band") { // xx // needs update to take into account the control side
state_b.rank = 0;
state_b.u_pu = [&state_b, &regulator_b](ControlSide side) {
state_b.u_pu = [&state_b, &regulator_b](ControlSide /*side*/) {
return static_cast<DoubleComplex>(
test::normalized_lerp(state_b.tap_pos, state_b.tap_min, state_b.tap_max));
};
Expand All @@ -965,9 +966,9 @@ TEST_CASE("Test Tap position optimizer") {
SUBCASE("normal tap range") {
checkNormalTapRange(state_b, update_data, check_b, control_at_tap_side);
} // xx needs dual case
SUBCASE("inverted tap range") {
checkInvertedTapRange(state_b, update_data, check_b, control_at_tap_side);
} // xx
// SUBCASE("inverted tap range") {
// checkInvertedTapRange(state_b, update_data, check_b, control_at_tap_side);
// } // xx

regulator_b.update(update_data);
}
Expand Down

0 comments on commit 0de631b

Please sign in to comment.