Skip to content

Commit

Permalink
master worker initialized in mipdata deque from mipsolver just before…
Browse files Browse the repository at this point in the history
… restart.
  • Loading branch information
galabovaa committed Feb 24, 2025
1 parent 0d4d922 commit 32bfbf2
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 11 deletions.
45 changes: 37 additions & 8 deletions src/mip/HighsMipSolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -172,14 +172,18 @@ void HighsMipSolver::run() {
"MIP-Timing: %11.2g - completed setup\n", timer_.read());

// Initialize master worker.
HighsMipWorker master_worker(*this, mipdata_->lp);
// HighsMipWorker master_worker(*this, mipdata_->lp);

mipdata_->workers.emplace_back(*this, mipdata_->lp);
// workers.emplace_back(mipsolver, lp);

// mipdata_->lps.push_back(mipdata_->lp);
// mipdata_->workers.push_back(HighsMipWorker(*this, mipdata_->lps.back()));
// mipdata_->workers.emplace_back(*this, mipdata_->lps.at(0));
HighsMipWorker& master_worker = mipdata_->workers.at(0);

// mipdata_->workers.emplace(mipdata_->workers.end(), HighsMipWorker(*this, mipdata_->lps.back()));
// Now the worker lives in mipdata.
// The master worker is used in evaluateRootNode.

// HighsMipWorker& master_worker = mipdata_->workers.at(0);
// HighsMipWorker& master_worker = mipdata_->workers.at(0);

restart:
if (modelstatus_ == HighsModelStatus::kNotset) {
Expand Down Expand Up @@ -232,20 +236,45 @@ void HighsMipSolver::run() {
return;
}

printf(
"MIPSOLVER mipdata lp deque member with address %p, %d "
"columns, and %d rows\n",
(void*)&mipdata_->lps.at(0), int(mipdata_->lps.at(0).getLpSolver().getNumCol()),
int(mipdata_->lps.at(0).getLpSolver().getNumRow()));

printf( "Passed to search atm: \n");

printf( "MIPSOLVER mipdata lp ref with address %p, %d "
"columns, and %d rows\n",
(void*)&mipdata_->lp, int(mipdata_->lp.getLpSolver().getNumCol()),
int(mipdata_->lp.getLpSolver().getNumRow()));



std::shared_ptr<const HighsBasis> basis;
// HighsSearch search{*this, mipdata_->pseudocost};

// mipdata_->lps.push_back(mipdata_->lp);
// mipdata_->workers.push_back(HighsMipWorker(*this, mipdata_->lps.back()));

// HighsSearch& search = *mipdata_->workers[0].search_ptr_.get();

// they should live in the same space so the pointers don't get confused.
// HighsMipWorker master_worker(*this, mipdata_->lp);
// HighsSearch& search = *master_worker.search_ptr_.get();

// This version works during refactor with the master pseudocost.
// valgrind OK.
HighsSearch search{master_worker, mipdata_->pseudocost};


// This search is from the worker and will use the worker pseudocost.
// HighsSearch& search = *mipdata_->workers[0].search_ptr_.get();

// fails in a submip .
// printf(
// "MIPSOLVER Search has lp member in constructor of mipworker with address %p, %d "
// "columns, and %d rows\n",
// (void*)&search.lp, int(search.lp->getLpSolver().getNumCol()),
// int(search.lp->getLpSolver().getNumRow()));

mipdata_->debugSolution.registerDomain(search.getLocalDomain());
// HighsSeparation sepa(*this);
HighsSeparation sepa(master_worker);
Expand Down
3 changes: 0 additions & 3 deletions src/mip/HighsMipSolverData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,7 @@ HighsMipSolverData::HighsMipSolverData(HighsMipSolver& mipsolver)
domain.addCutpool(cutpool);
domain.addConflictPool(conflictPool);

// workers.emplace(workers.end(), HighsMipWorker(mipsolver, lps.back()));

// ig:here
// workers.emplace_back(std::move(HighsMipWorker(mipsolver, lp)));
// workers.emplace_back(mipsolver, lp);

}
Expand Down
9 changes: 9 additions & 0 deletions src/mip/HighsMipWorker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,20 @@ HighsMipWorker::HighsMipWorker(const HighsMipSolver& mipsolver__,
search_ptr_->setLpRelaxation(&lprelaxation_);

printf(
"lprelax_ parameter address in constructor of mipworker %p, %d columns, and "
"%d rows\n",
(void*)&lprelax_, int(lprelax_.getLpSolver().getNumCol()),
int(lprelax_.getLpSolver().getNumRow()));

printf(
"lprelaxation_ address in constructor of mipworker %p, %d columns, and "
"%d rows\n",
(void*)&lprelaxation_, int(lprelaxation_.getLpSolver().getNumCol()),
int(lprelaxation_.getLpSolver().getNumRow()));

// HighsSearch has its own relaxation initialized no nullptr.
search_ptr_->setLpRelaxation(&lprelaxation_);

printf(
"Search has lp member in constructor of mipworker with address %p, %d "
"columns, and %d rows\n",
Expand Down

0 comments on commit 32bfbf2

Please sign in to comment.