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

Method currentNodeToQueue

highs/mip/HighsSearch.cpp:719–744  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

717}
718
719void HighsSearch::currentNodeToQueue(HighsNodeQueue& nodequeue) {
720 auto oldchangedcols = localdom.getChangedCols().size();
721 bool prune = nodestack.back().lower_bound > getCutoffBound();
722 if (!prune) {
723 localdom.propagate();
724 localdom.clearChangedCols(oldchangedcols);
725 prune = localdom.infeasible();
726 if (prune)
727 localdom.conflictAnalysis(getConflictPool(), mipworker.getGlobalDomain(),
728 pseudocost);
729 }
730 if (!prune) {
731 std::vector<HighsInt> branchPositions;
732 auto domchgStack = localdom.getReducedDomainChangeStack(branchPositions);
733 double tmpTreeWeight = nodequeue.emplaceNode(
734 std::move(domchgStack), std::move(branchPositions),
735 std::max(nodestack.back().lower_bound,
736 localdom.getObjectiveLowerBound()),
737 nodestack.back().estimate, getCurrentDepth());
738 if (countTreeWeight) treeweight += tmpTreeWeight;
739 } else {
740 mipsolver.mipdata_->debugSolution.nodePruned(localdom);
741 if (countTreeWeight) treeweight += std::ldexp(1.0, 1 - getCurrentDepth());
742 }
743 nodestack.back().opensubtrees = 0;
744}
745
746void HighsSearch::openNodesToQueue(HighsNodeQueue& nodequeue) {
747 if (nodestack.empty()) return;

Callers 1

runMethod · 0.80

Calls 9

propagateMethod · 0.80
clearChangedColsMethod · 0.80
infeasibleMethod · 0.80
conflictAnalysisMethod · 0.80
emplaceNodeMethod · 0.80
sizeMethod · 0.45
nodePrunedMethod · 0.45

Tested by

no test coverage detected