Skip to content

Commit

Permalink
some next steps, compiling but segfaults atm
Browse files Browse the repository at this point in the history
  • Loading branch information
galabovaa committed Feb 4, 2025
1 parent 6e33512 commit 76ac625
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 15 deletions.
18 changes: 14 additions & 4 deletions src/mip/HighsMipSolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -285,19 +285,27 @@ void HighsMipSolver::run() {
// accumulating pointers to the all the HighsSearch instances
// (master and workers) in concurrent_searches, allowing loops
// over all concurrent searches to be simplified
std::vector<HighsMipSolver> worker_mipsolvers;
// std::vector<HighsMipSolver> worker_mipsolvers;
std::vector<HighsMipWorker> mipworkers;

std::vector<HighsSearch> worker_searches;
std::vector<HighsLpRelaxation> worker_lps;
std::vector<HighsSearch*> concurrent_searches;
concurrent_searches.push_back(&master_search);
for (HighsInt iSearch = 0; iSearch < num_worker; iSearch++) {
worker_mipsolvers.push_back(HighsMipSolver{*this});

// worker_mipsolvers.push_back(HighsMipSolver{*this});
mipworkers.push_back(HighsMipWorker(*this));

// worker_mipsolvers.push_back(HighsMipSolver{callback_,
// options_mip_, model_});
//
// worker_mipsolvers.push_back(HighsMipSolver{*callback_,
// *options_mip_, *model_, null_solution, false, 0});
HighsMipSolver& worker_mipsolver = worker_mipsolvers[iSearch];

// HighsMipSolver& worker_mipsolver = worker_mipsolvers[iSearch];
HighsMipSolver& worker_mipsolver = mipworkers[iSearch].getMipSolver();

worker_mipsolver.rootbasis = this->rootbasis;
HighsPseudocostInitialization pscostinit(mipdata_->pseudocost, 1);
worker_mipsolver.pscostinit = &pscostinit;
Expand All @@ -312,7 +320,9 @@ void HighsMipSolver::run() {
concurrent_searches.push_back(&worker_searches[iSearch]);
}

assert(worker_mipsolvers.size() == num_worker);
// assert(worker_mipsolvers.size() == num_worker);
assert(mipworkers.size() == num_worker);

assert(worker_searches.size() == num_worker);
assert(concurrent_searches.size() == mip_search_concurrency);

Expand Down
25 changes: 14 additions & 11 deletions src/mip/HighsMipWorker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,19 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "mip/HighsMipWorker.h"

HighsMipWorker::HighsMipWorker(const HighsMipSolver& mipsolver)
: mipsolver_(mipsolver),
HighsMipWorker::HighsMipWorker(const HighsMipSolver& mipsolver__)
: mipsolver_(mipsolver__),
lprelaxation_(mipsolver__),
cutpool_(mipsolver__.numCol(), mipsolver__.options_mip_->mip_pool_age_limit,
mipsolver__.options_mip_->mip_pool_soft_limit),
conflictpool_(5 * mipsolver__.options_mip_->mip_pool_age_limit,
mipsolver__.options_mip_->mip_pool_soft_limit),
cliquetable_(mipsolver__.numCol()),
mipsolver(mipsolver__),
pseudocost(mipsolver),
search_(mipsolver, pseudocost) {}

cutpool_(mipsolver.numCol(), mipsolver.options_mip_->mip_pool_age_limit,
mipsolver.options_mip_->mip_pool_soft_limit),

conflictPool_(5 * mipsolver.options_mip_->mip_pool_age_limit,

mipsolver.options_mip_->mip_pool_soft_limit),

cliquetable_(mipsolver.numCol()),

lprelaxation_(mipsolver) {}
HighsMipSolver& HighsMipWorker::getMipSolver() {
return mipsolver;
}
9 changes: 9 additions & 0 deletions src/mip/HighsMipWorker.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,19 @@ class HighsMipWorker {
HighsCutPool cutpool_;
HighsConflictPool conflictpool_;
HighsCliqueTable cliquetable_;

// Not sure if this should be here or elsewhere.
HighsMipSolver mipsolver;

// Not sure if this should be here or in HighsSearch.
HighsPseudocost pseudocost;

HighsSearch search_;

public:
HighsMipWorker(const HighsMipSolver& mipsolver);

HighsMipSolver& getMipSolver();
};

#endif
3 changes: 3 additions & 0 deletions src/mip/HighsSearch.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ class HighsCliqueTable;

class HighsSearch {
HighsMipSolver& mipsolver;
// replace HighsMipSolver with HighsMipWorker
// HighsMipWorker& mipworker;

HighsLpRelaxation* lp;
HighsDomain localdom;
HighsPseudocost& pseudocost;
Expand Down

0 comments on commit 76ac625

Please sign in to comment.