@@ -363,7 +363,7 @@ void HighsMipSolver::run() {
363363 mipdata_->lps .emplace_back (mipdata_->lp , i);
364364 mipdata_->cutpools .emplace_back (numCol (),
365365 options_mip_->mip_pool_age_limit ,
366- options_mip_->mip_pool_soft_limit , i);
366+ options_mip_->mip_pool_soft_limit , i + 1 );
367367 mipdata_->conflictpools .emplace_back (5 * options_mip_->mip_pool_age_limit ,
368368 options_mip_->mip_pool_soft_limit );
369369 mipdata_->workers .emplace_back (
@@ -721,6 +721,7 @@ void HighsMipSolver::run() {
721721 // due to parallelism)
722722 // TODO MT: Change the if statement
723723 // if (mipdata_->hasMultipleWorkers() && num_search_indices == 0) {
724+ syncSolutions ();
724725 if (mipdata_->hasMultipleWorkers () &&
725726 (num_search_indices == 0 || search_indices[0 ] != 0 )) {
726727 double prev_lower_bound = mipdata_->lower_bound ;
@@ -1153,6 +1154,7 @@ void HighsMipSolver::run() {
11531154 // printf("popping node from nodequeue (length = %" HIGHSINT_FORMAT ")\n",
11541155 // (HighsInt)nodequeue.size());
11551156 std::vector<HighsInt> search_indices = getSearchIndicesWithNoNodes ();
1157+ // TODO MT: Remove this line
11561158 if (search_indices[0 ] != 0 ) break ;
11571159 // if (search_indices.size() >= mip_search_concurrency) break;
11581160
@@ -1174,6 +1176,7 @@ void HighsMipSolver::run() {
11741176
11751177 bool infeasible = separateAndStoreBasis (search_indices);
11761178 if (infeasible) break ;
1179+ syncSolutions ();
11771180 } // while(!mipdata_->nodequeue.empty())
11781181 analysis_.mipTimerStop (kMipClockNodeSearch );
11791182 if (analysis_.analyse_mip_time ) {
0 commit comments