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
38#pragma GCC visibility push(default)
39namespace abacus {
40
41
43class SetBranchRule : public BranchRule {
44public:
45
47
53 : BranchRule(master), variable_(variable), status_(status) { }
54
55
56 virtual ~SetBranchRule() { }
57
58
60
68 friend std::ostream &operator<<(std::ostream &out, const SetBranchRule &rhs);
69
70
72 /*!*
73 * \return 0 If the subproblem can be modified according to the branching rule.
74 * \return 1 If a contradiction occurs.
75 *
76 * \param sub The subproblem being modified.
77 */
78 virtual int extract(Sub *sub) override;
79
80
82
89 virtual void extract(LpSub *lp) override;
90
91
92 virtual void unExtract(LpSub *lp) override;
93
94
96
99 virtual bool branchOnSetVar() override {
100 return true;
101 }
102
103
105 bool setToUpperBound() const {
107 }
108
109
111 int variable() const {
112 return variable_;
113 }
114
115
116private:
119
124 double oldLpBound_;
125};
126
127}
128#pragma GCC visibility pop
Base class for branching rules.
Abstract base class for all branching rules.
Definition branchrule.h:60
STATUS
The enumeration defining the different statuses of variables from the point of view of fixing and set...
Definition fsvarstat.h:51
@ SetToUpperBound
The variable is set to its upper bound.
Definition fsvarstat.h:55
The linear program of a subproblem.
Definition lpsub.h:62
The master of the optimization.
Definition master.h:70
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:69
status of fixed and set variables.