Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
setbranchrule.h
Go to the documentation of this file.
1
33#pragma once
34
37
38namespace abacus {
39
40
42class SetBranchRule : public BranchRule {
43public:
44
46
52 : BranchRule(master), variable_(variable), status_(status) { }
53
54
55 virtual ~SetBranchRule() { }
56
57
59
67 friend std::ostream &operator<<(std::ostream &out, const SetBranchRule &rhs);
68
69
71 /*!*
72 * \return 0 If the subproblem can be modified according to the branching rule.
73 * \return 1 If a contradiction occurs.
74 *
75 * \param sub The subproblem being modified.
76 */
77 virtual int extract(Sub *sub) override;
78
79
81
88 virtual void extract(LpSub *lp) override;
89
90
91 virtual void unExtract(LpSub *lp) override;
92
93
95
98 virtual bool branchOnSetVar() override {
99 return true;
100 }
101
102
104 bool setToUpperBound() const {
106 }
107
108
110 int variable() const {
111 return variable_;
112 }
113
114
115private:
118
123 double oldLpBound_;
124};
125
126}
Base class for branching rules.
Abstract base class for all branching rules.
Definition branchrule.h:59
STATUS
The enumeration defining the different statuses of variables from the point of view of fixing and set...
Definition fsvarstat.h:50
@ SetToUpperBound
The variable is set to its upper bound.
Definition fsvarstat.h:54
The linear program of a subproblem.
Definition lpsub.h:61
The master of the optimization.
Definition master.h:69
Implements a branching rule for setting a binary variable to its lower or upper bound.
double oldLpBound_
The bound of the branching variable in the LP before it is temporarily modified for testing the quali...
virtual void extract(LpSub *lp) override
Overloaded to modify directly the linear programming relaxation.
virtual void unExtract(LpSub *lp) override
Should undo the modifictions of the linear programming relaxtion |lp|.
int variable() const
Returns the number of the branching variable.
virtual int extract(Sub *sub) override
Modifies a subproblem by setting the branching variable.
SetBranchRule(Master *master, int variable, FSVarStat::STATUS status)
Creates a branching rule for setting binary variable according to status.
int variable_
The branching variable.
friend std::ostream & operator<<(std::ostream &out, const SetBranchRule &rhs)
Output operator for set branching rules.
FSVarStat::STATUS status_
The status of the branching variable.
virtual bool branchOnSetVar() override
Redefined for returning true, as this branching rule is setting a binary variable.
bool setToUpperBound() const
Returns true if the branching variable is set to the upper bound, false otherwise.
The subproblem.
Definition sub.h:68
status of fixed and set variables.