diff --git a/CHANGELOG.md b/CHANGELOG.md index 58b7675d..414258d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ - Solution quality regression when using lots of skills (#1193) - Invalid route reached by `PriorityReplace` (#1162) +- Account for gain and assigned tasks to pick priority-improving moves (#1212) - Crash due to wrong delivery values in some validity checks (#1164) - Crash when input is valid JSON but not an object (#1172) - Capacity array check consistency (#1086) diff --git a/src/algorithms/local_search/local_search.cpp b/src/algorithms/local_search/local_search.cpp index 9f683ccb..f19034bd 100644 --- a/src/algorithms/local_search/local_search.cpp +++ b/src/algorithms/local_search/local_search.cpp @@ -415,6 +415,7 @@ void LocalSearch(1)); Priority best_priority = 0; + auto best_removal = std::numeric_limits::max(); while (best_gain.cost > 0 || best_priority > 0) { if (_deadline.has_value() && _deadline.value() < utils::now()) { @@ -1838,7 +1839,7 @@ void LocalSearch::max(); + best_removal = std::numeric_limits::max(); best_gain = Eval(); Index best_source = 0; Index best_target = 0; @@ -1949,6 +1950,7 @@ void LocalSearch::max(); best_ops[v_rank] = std::vector>(_nb_vehicles); } @@ -1991,6 +1993,7 @@ void LocalSearch::max(); best_ops[v][v] = std::unique_ptr(); s_t_pairs.emplace_back(v, v); }