14#ifndef MINOTAURPARRELIABILITYBRANCHER_H
15#define MINOTAURPARRELIABILITYBRANCHER_H
18#include "ParTreeManager.h"
24typedef Engine* EnginePtr;
61 UIntVector timesUp, UIntVector timesDown,
62 DoubleVector pseudoUp, DoubleVector pseudoDown,
81 DoubleVector
getPCUp()
const {
return pseudoUp_; }
87 DoubleVector
getPCDown()
const {
return pseudoDown_; }
149 void setPCUp(DoubleVector psuedoUp) { pseudoUp_ = psuedoUp; };
155 void setPCDown(DoubleVector psuedoDown) { pseudoDown_ = psuedoDown; };
197 BrCandPtr findBestCandidate_(
const double objval,
double cutoff,
198 NodePtr node, DoubleVector pseudoUp,
199 DoubleVector pseudoDown,
UInt nodesProc);
210 void findCandidates_(UIntVector *timesUp, UIntVector *timesDown,
211 DoubleVector *pseudoUp, DoubleVector *pseudoDown,
228 void getPCScore_(
BrCandPtr cand,
double *ch_down,
double *ch_up,
229 double *score, DoubleVector pseudoUp, DoubleVector pseudoDown);
237 double getScore_(
const double & up_score,
const double & down_score);
253 bool shouldPrune_(
const double &chcutoff,
const double &change,
264 void strongBranch_(
BrCandPtr cand,
double & obj_up,
double & obj_down,
277 void updatePCost_(
const int &i,
const double &new_cost,
278 DoubleVector &cost, UIntVector &count);
295 void useStrongBranchInfo_(
BrCandPtr cand,
const double & chcutoff,
296 double & change_up,
double & change_down,
308 void writeScore_(
BrCandPtr cand,
double score,
double change_up,
317 void writeScores_(std::ostream &out);
329 HandlerVector handlers_;
335 UIntVector lastStrBranched_;
350 UInt maxStrongCands_;
353 const static std::string me_;
365 DoubleVector pseudoDown_;
368 DoubleVector pseudoUp_;
374 std::vector<BrCandPtr> relCands_;
389 UIntVector timesDown_;
407 std::vector<BrCandPtr> unrelCands_;
413typedef ParReliabilityBrancher* ParReliabilityBrancherPtr;
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
A class to select a variable for branching using reliability branching.
Definition: ParReliabilityBrancher.h:37
UIntVector getTimesDown() const
Definition: ParReliabilityBrancher.h:93
ParReliabilityBrancher(EnvPtr env, HandlerVector &handlers)
Construct using an environment pointer and handlers.
Definition: ParReliabilityBrancher.cpp:43
void setTimesDown(UIntVector timesDown)
Definition: ParReliabilityBrancher.h:161
UInt getThresh() const
Return the threshhold value.
Definition: ParReliabilityBrancher.cpp:408
DoubleVector getPCDown() const
Definition: ParReliabilityBrancher.h:87
void writeStats(std::ostream &out) const
Write statistics.
Definition: ParReliabilityBrancher.cpp:679
bool getTrustCutoff()
Return value of trustCutoff parameter.
Definition: ParReliabilityBrancher.cpp:361
void setPCDown(DoubleVector psuedoDown)
Definition: ParReliabilityBrancher.h:155
UInt getIterLim()
Get iteration limit of engine.
Definition: ParReliabilityBrancher.cpp:367
void setTrustCutoff(bool val)
Set value of trustCutoff parameter.
Definition: ParReliabilityBrancher.cpp:431
void initialize(RelaxationPtr rel)
Initialize data structures.
Definition: ParReliabilityBrancher.cpp:414
void setMinNodeDist(UInt k)
Don't do strong branching on a cand if we did it 'k' nodes or less ago.
Definition: ParReliabilityBrancher.cpp:455
void setIterLim(UInt k)
Set iteration limit of engine.
Definition: ParReliabilityBrancher.cpp:443
void setLastStrBranched(UIntVector lastStrBranched)
Return the vector of last strong branching information of candidates.
Definition: ParReliabilityBrancher.h:129
void setEngine(EnginePtr engine)
Set engine.
Definition: ParReliabilityBrancher.cpp:437
Branches findBranches(RelaxationPtr, NodePtr, ConstSolutionPtr, SolutionPoolPtr, BrancherStatus &, ModVector &)
Find a branching candidate.
Definition: ParReliabilityBrancher.h:53
void setPCUp(DoubleVector psuedoUp)
Definition: ParReliabilityBrancher.h:149
UIntVector getLastStrBranched()
Return the vector of last strong branching information of candidates.
Definition: ParReliabilityBrancher.h:72
DoubleVector getPCUp() const
Definition: ParReliabilityBrancher.h:81
void setTimesUp(UIntVector timesUp)
Definition: ParReliabilityBrancher.h:167
void setMaxDepth(UInt k)
Set the depth at which we stop strong branching.
Definition: ParReliabilityBrancher.cpp:449
void setThresh(UInt k)
Set reliability threshhold.
Definition: ParReliabilityBrancher.cpp:461
std::string getName() const
Return the name of this brancher.
Definition: ParReliabilityBrancher.cpp:373
UIntVector getTimesUp() const
Definition: ParReliabilityBrancher.h:99
void updateAfterSolve(NodePtr node, ConstSolutionPtr sol)
Update pseudo-costs after LP is solved.
Definition: ParReliabilityBrancher.cpp:544
~ParReliabilityBrancher()
Destroy.
Definition: ParReliabilityBrancher.cpp:70
Definition: Relaxation.h:53
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: ParReliabilityBrancher.h:26
UInt engProbs
Number of times called to find a branching candidate.
Definition: ParReliabilityBrancher.h:29
double strTime
Number of times strong branching on a variable.
Definition: ParReliabilityBrancher.h:32
UInt strBrCalls
Number of iterations in strong-branching.
Definition: ParReliabilityBrancher.h:31
UInt iters
Number of times an unexpected engine status was met.
Definition: ParReliabilityBrancher.h:30
UInt calls
Number of times variable bounds were changed.
Definition: ParReliabilityBrancher.h:28