MCPcopy Create free account
hub / github.com/ERGO-Code/HiGHS / installNode

Method installNode

highs/mip/HighsSearch.cpp:848–872  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

846}
847
848void HighsSearch::installNode(HighsNodeQueue::OpenNode&& node) {
849 localdom.setDomainChangeStack(node.domchgstack, node.branchings);
850 bool globalSymmetriesValid = true;
851 if (mipsolver.mipdata_->globalOrbits) {
852 // if global orbits have been computed we check whether they are still valid
853 // in this node
854 const auto& domchgstack = localdom.getDomainChangeStack();
855 for (HighsInt i : localdom.getBranchingPositions()) {
856 HighsInt col = domchgstack[i].column;
857 if (getSymmetries().columnPosition[col] == -1) continue;
858
859 if (!getDomain().isBinary(col) ||
860 (domchgstack[i].boundtype == HighsBoundType::kLower &&
861 domchgstack[i].boundval == 1.0)) {
862 globalSymmetriesValid = false;
863 break;
864 }
865 }
866 }
867 nodestack.emplace_back(
868 node.lower_bound, node.estimate, nullptr,
869 globalSymmetriesValid ? mipsolver.mipdata_->globalOrbits : nullptr);
870 subrootsol.clear();
871 depthoffset = node.depth - 1;
872}
873
874HighsSearch::NodeResult HighsSearch::evaluateNode() {
875 assert(!nodestack.empty());

Callers 1

runMethod · 0.80

Calls 3

setDomainChangeStackMethod · 0.80
isBinaryMethod · 0.80
clearMethod · 0.45

Tested by

no test coverage detected