14#ifndef MINOTAURRELIABILITYBRANCHER_H
15#define MINOTAURRELIABILITYBRANCHER_H
23typedef Engine* EnginePtr;
133 BrCandPtr findBestCandidate_(
const double objval,
double cutoff,
145 void findCandidates_();
161 void getPCScore_(
BrCandPtr cand,
double *ch_down,
double *ch_up,
170 double getScore_(
const double & up_score,
const double & down_score);
186 bool shouldPrune_(
const double &chcutoff,
const double &change,
197 void strongBranch_(
BrCandPtr cand,
double & obj_up,
double & obj_down,
210 void updatePCost_(
const int &i,
const double &new_cost,
211 DoubleVector &cost, UIntVector &count);
228 void useStrongBranchInfo_(
BrCandPtr cand,
const double & chcutoff,
229 double & change_up,
double & change_down,
241 void writeScore_(
BrCandPtr cand,
double score,
double change_up,
250 void writeScores_(std::ostream &out);
262 HandlerVector handlers_;
268 UIntVector lastStrBranched_;
283 UInt maxStrongCands_;
286 const static std::string me_;
298 DoubleVector pseudoDown_;
301 DoubleVector pseudoUp_;
307 std::vector<BrCandPtr> relCands_;
322 UIntVector timesDown_;
340 std::vector<BrCandPtr> unrelCands_;
Declare the base class Brancher for finding and creating branches in Branch-and-Bound.
Base class for describing candidates for branching on a node in branch-and-bound.
Definition: BrCand.h:32
A brancher is used to find suitable branches for a given node. e.g. LexicoBrancher....
Definition: Brancher.h:33
Definition: Environment.h:28
Definition: Relaxation.h:53
A class to select a variable for branching using reliability branching.
Definition: ReliabilityBrancher.h:36
void setTrustCutoff(bool val)
Set value of trustCutoff parameter.
Definition: ReliabilityBrancher.cpp:400
UInt getThresh() const
Return the threshhold value.
Definition: ReliabilityBrancher.cpp:379
std::string getName() const
Return the name of this brancher.
Definition: ReliabilityBrancher.cpp:348
ReliabilityBrancher(EnvPtr env, HandlerVector &handlers)
Construct using an environment pointer and handlers.
Definition: ReliabilityBrancher.cpp:43
void setMaxDepth(UInt k)
Set the depth at which we stop strong branching.
Definition: ReliabilityBrancher.cpp:415
bool getTrustCutoff()
Return value of trustCutoff parameter.
Definition: ReliabilityBrancher.cpp:338
void setIterLim(UInt k)
Set iteration limit of engine.
Definition: ReliabilityBrancher.cpp:410
void setMinNodeDist(UInt k)
Don't do strong branching on a cand if we did it 'k' nodes or less ago.
Definition: ReliabilityBrancher.cpp:420
void writeStats(std::ostream &out) const
Write statistics.
Definition: ReliabilityBrancher.cpp:629
Branches findBranches(RelaxationPtr rel, NodePtr node, ConstSolutionPtr sol, SolutionPoolPtr s_pool, BrancherStatus &br_status, ModVector &mods)
Find a branching candidate.
Definition: ReliabilityBrancher.cpp:161
void initialize(RelaxationPtr rel)
Initialize data structures.
Definition: ReliabilityBrancher.cpp:384
void updateAfterSolve(NodePtr node, ConstSolutionPtr sol)
Update pseudo-costs after LP is solved.
Definition: ReliabilityBrancher.cpp:508
UInt getIterLim()
Get iteration limit of engine.
Definition: ReliabilityBrancher.cpp:343
~ReliabilityBrancher()
Destroy.
Definition: ReliabilityBrancher.cpp:69
void setThresh(UInt k)
Set reliability threshhold.
Definition: ReliabilityBrancher.cpp:425
void setEngine(EnginePtr engine)
Set engine.
Definition: ReliabilityBrancher.cpp:405
Definition: SolutionPool.h:28
Definition: Solution.h:30
Definition: ActiveNodeStore.h:20
BrancherStatus
What can a brancher do to a node in branch-and-bound.
Definition: Types.h:193
unsigned int UInt
Unsigned integer.
Definition: Types.h:30
EngineStatus
Different status that an external engine may report.
Definition: Types.h:176
Definition: ReliabilityBrancher.h:25
UInt iters
Number of times an unexpected engine status was met.
Definition: ReliabilityBrancher.h:29
UInt engProbs
Number of times called to find a branching candidate.
Definition: ReliabilityBrancher.h:28
UInt calls
Number of times variable bounds were changed.
Definition: ReliabilityBrancher.h:27
double strTime
Number of times strong branching on a variable.
Definition: ReliabilityBrancher.h:31
UInt strBrCalls
Number of iterations in strong-branching.
Definition: ReliabilityBrancher.h:30