diff --git a/src/mip/HighsMipSolver.cpp b/src/mip/HighsMipSolver.cpp index 3d089c7926..5753a07eb2 100644 --- a/src/mip/HighsMipSolver.cpp +++ b/src/mip/HighsMipSolver.cpp @@ -298,13 +298,13 @@ void HighsMipSolver::run() { // Possibly apply primal heuristics if (considerHeuristics && mipdata_->moreHeuristicsAllowed()) { analysis_.mipTimerStart(kMipClockEvaluateNode); - const HighsSearch::NodeResult evaluate_node_result = - parallel_search.search.evaluateNode(); + parallel_search.evaluate_node_result = parallel_search.search.evaluateNode(); analysis_.mipTimerStop(kMipClockEvaluateNode); - if (evaluate_node_result == HighsSearch::NodeResult::kSubOptimal) { + if (parallel_search.evaluate_node_result == HighsSearch::NodeResult::kSubOptimal) { + printf("HighsMipSolver::run() evaluate_node_result == HighsSearch::NodeResult::kSubOptimal\n"); assert(345==678); - break; + continue; } if (parallel_search.search.currentNodePruned()) { @@ -334,6 +334,8 @@ void HighsMipSolver::run() { } } } + if (multiple_search[0].evaluate_node_result == HighsSearch::NodeResult::kSubOptimal) break; + considerHeuristics = false; if (mipdata_->domain.infeasible()) break;