Loading [MathJax]/extensions/tex2jax.js

Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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.