introduction to bcp -- mcf...
TRANSCRIPT
![Page 1: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/1.jpg)
Introduction to BCP – MCF Example
Laszlo Ladanyi1
Francois Margot2
July 18, 2006
1: IBM T.J. Watson Research Center
2: Tepper School of Business, Carnegie Mellon University
![Page 2: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/2.jpg)
BCP: Branch-Cut-Price
• Software for branch-and-cut-and-price
• Parallel code
• LP solver : Clp, Cplex, Xpress, . . .
• Most flexible in COIN-OR
• Research code (no stand-alone executable)
BCP code split into four directories: (see coin-Bcp/Bcp/src)
• include: all header files
• Tree Manager (TM): Maintain the LP associated with eachnode, manage cuts and variables
• Node level operations (LP): cutting, branching, heuristics,fixing, column generation
• Utilities (Member): code for interface between TM and LP,initialization
![Page 3: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/3.jpg)
BCP: Branch-Cut-Price
• Software for branch-and-cut-and-price
• Parallel code
• LP solver : Clp, Cplex, Xpress, . . .
• Most flexible in COIN-OR
• Research code (no stand-alone executable)
BCP code split into four directories: (see coin-Bcp/Bcp/src)
• include: all header files
• Tree Manager (TM): Maintain the LP associated with eachnode, manage cuts and variables
• Node level operations (LP): cutting, branching, heuristics,fixing, column generation
• Utilities (Member): code for interface between TM and LP,initialization
![Page 4: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/4.jpg)
Solver Initialization
Tree Manager Solver
• read data
• pack module data→
• unpack module data
• setup the LP solver
![Page 5: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/5.jpg)
Solver Initialization
Tree Manager Solver
• read data
• pack module data
→• unpack module data
• setup the LP solver
![Page 6: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/6.jpg)
Solver Initialization
Tree Manager Solver
• read data
• pack module data→
• unpack module data
• setup the LP solver
![Page 7: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/7.jpg)
Solver Initialization
Tree Manager Solver
• read data
• pack module data→
• unpack module data
• setup the LP solver
![Page 8: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/8.jpg)
Processing a node
Tree Manager Solver
• select node
• pack node LP data→
• unpack node LP data• solve• generate cuts/vars• branch• create LP data for sons
• unpack node LP datafor sons
←• pack node LP data forsons
• add sons to tree
![Page 9: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/9.jpg)
Processing a node
Tree Manager Solver
• select node
• pack node LP data
→• unpack node LP data• solve• generate cuts/vars• branch• create LP data for sons
• unpack node LP datafor sons
←• pack node LP data forsons
• add sons to tree
![Page 10: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/10.jpg)
Processing a node
Tree Manager Solver
• select node
• pack node LP data→
• unpack node LP data
• solve• generate cuts/vars• branch• create LP data for sons
• unpack node LP datafor sons
←• pack node LP data forsons
• add sons to tree
![Page 11: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/11.jpg)
Processing a node
Tree Manager Solver
• select node
• pack node LP data→
• unpack node LP data• solve• generate cuts/vars• branch• create LP data for sons
• unpack node LP datafor sons
←• pack node LP data forsons
• add sons to tree
![Page 12: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/12.jpg)
Processing a node
Tree Manager Solver
• select node
• pack node LP data→
• unpack node LP data• solve• generate cuts/vars• branch• create LP data for sons
• unpack node LP datafor sons
←
• pack node LP data forsons
• add sons to tree
![Page 13: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/13.jpg)
Processing a node
Tree Manager Solver
• select node
• pack node LP data→
• unpack node LP data• solve• generate cuts/vars• branch• create LP data for sons
• unpack node LP datafor sons
←• pack node LP data forsons
• add sons to tree
![Page 14: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/14.jpg)
Processing a node
Tree Manager Solver
• select node
• pack node LP data→
• unpack node LP data• solve• generate cuts/vars• branch• create LP data for sons
• unpack node LP datafor sons
←• pack node LP data forsons
• add sons to tree
![Page 15: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/15.jpg)
BCP Constraints/Variables
Types of Constraints/Variables:
• Core : present at all nodes
• Algorithmic : separation/generation algorithm
• Indexed : e.g. stored in a vector
Algorithmic constraints and variables are local
Representation: Constraints are stored as ranged constraints:
lb ≤ ax ≤ ub
with lb = −DBL MAX or ub = DBL MAX possible
![Page 16: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/16.jpg)
BCP Constraints/Variables
Types of Constraints/Variables:
• Core : present at all nodes
• Algorithmic : separation/generation algorithm
• Indexed : e.g. stored in a vector
Algorithmic constraints and variables are local
Representation: Constraints are stored as ranged constraints:
lb ≤ ax ≤ ub
with lb = −DBL MAX or ub = DBL MAX possible
![Page 17: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/17.jpg)
BCP Constraints/Variables
Types of Constraints/Variables:
• Core : present at all nodes
• Algorithmic : separation/generation algorithm
• Indexed : e.g. stored in a vector
Algorithmic constraints and variables are local
Representation: Constraints are stored as ranged constraints:
lb ≤ ax ≤ ub
with lb = −DBL MAX or ub = DBL MAX possible
![Page 18: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/18.jpg)
Implementing a Column Generation Application
Member:
• Read input
• Implement variables
TM:
• Set up the LP at the root node
• display of a solution
LP:
• Test feasibility of a solution
• Column generation method
• Computation of a lower bound
• Branching decision
![Page 19: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/19.jpg)
Col. Gen. Example: Multicommodity Flow (MCF-1)
• Directed graph G = (V ,E )
• N commodities
• (s i , t i ) : source-sink pair, i = 0, . . . ,N − 1
• d i : supply/demand vector for s i t i − flow , i = 0, . . . ,N − 1
For each arc e ∈ E :
• 0 : lower bound for total flow on arc
• ue : finite upper bound for total flow on arc (0 ≤ ue)
• we : unit cost (0 ≤ we)
![Page 20: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/20.jpg)
Col. Gen. Example: Multicommodity Flow (MCF-1)
• Directed graph G = (V ,E )
• N commodities
• (s i , t i ) : source-sink pair, i = 0, . . . ,N − 1
• d i : supply/demand vector for s i t i − flow , i = 0, . . . ,N − 1
For each arc e ∈ E :
• 0 : lower bound for total flow on arc
• ue : finite upper bound for total flow on arc (0 ≤ ue)
• we : unit cost (0 ≤ we)
![Page 21: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/21.jpg)
MCF: ILP Formulation
Solution:
• f i : s i t i -flow with supply/demand vector d i
•∑
i
f ie ≤ ue for all e ∈ E
ILP Formulation:
min∑
i
wT f i
∑i
f i ≤ u (1)∑e=(v ,w)∈E
f ie −
∑e=(w ,v)∈E
f ie = d i
v ∀v ∈ V ,∀i (2)
0 ≤ f i ≤ u ∀i (3)
f i integral ∀i (4)
![Page 22: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/22.jpg)
MCF: ILP Formulation
Solution:
• f i : s i t i -flow with supply/demand vector d i
•∑
i
f ie ≤ ue for all e ∈ E
ILP Formulation:
min∑
i
wT f i
∑i
f i ≤ u (1)∑e=(v ,w)∈E
f ie −
∑e=(w ,v)∈E
f ie = d i
v ∀v ∈ V ,∀i (2)
0 ≤ f i ≤ u ∀i (3)
f i integral ∀i (4)
![Page 23: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/23.jpg)
MCF: Input data
Class MCF data (see Member/MCF data.hpp):
• arcs : vector of struct (tail, head, lb, ub, weight)
• commodities : vector of struct (source, sink, demand)
• numarcs
• numnodes
• numcommodities
• Setup by MCF data::readDimacsFormat()
Parameter MCF AddDummySourceSinkArcs : Addnumcommodities dummy arcs with large weight to ensurefeasibility
![Page 24: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/24.jpg)
MCF: Input data
Class MCF data (see Member/MCF data.hpp):
• arcs : vector of struct (tail, head, lb, ub, weight)
• commodities : vector of struct (source, sink, demand)
• numarcs
• numnodes
• numcommodities
• Setup by MCF data::readDimacsFormat()
Parameter MCF AddDummySourceSinkArcs : Addnumcommodities dummy arcs with large weight to ensurefeasibility
![Page 25: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/25.jpg)
MCF: Master Problem
Master Problem:
• Column : s i t i -flow satisfying d i for some i
• F i : matrix of all generated s i t i -flows (+ dummy flow)
• λi : multiplier for generated s i t i -flows
Example: all arcs upper capacity 2, source = 0, sink = 3, d = 2.
![Page 26: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/26.jpg)
MCF: Master Problem
Master Problem:
• Column : s i t i -flow satisfying d i for some i
• F i : matrix of all generated s i t i -flows (+ dummy flow)
• λi : multiplier for generated s i t i -flows
Example: all arcs upper capacity 2, source = 0, sink = 3, d = 2.
01 002 012 013 023 003 2
![Page 27: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/27.jpg)
MCF: Master Problem
Master Problem:
• Column : s i t i -flow satisfying d i for some i
• F i : matrix of all generated s i t i -flows (+ dummy flow)
• λi : multiplier for generated s i t i -flows
Example: all arcs upper capacity 2, source = 0, sink = 3, d = 2.
01 0 102 0 112 0 113 0 023 0 103 2 0
![Page 28: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/28.jpg)
MCF: Master Problem
Master Problem:
• Column : s i t i -flow satisfying d i for some i
• F i : matrix of all generated s i t i -flows (+ dummy flow)
• λi : multiplier for generated s i t i -flows
Example: all arcs upper capacity 2, source = 0, sink = 3, d = 2.
01 0 1 202 0 1 012 0 1 213 0 0 023 0 1 203 2 0 0
![Page 29: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/29.jpg)
MCF: Master Problem
min∑
i
wTF iλi
∑i
F iλi ≤ u
(π)
(5)
eTλi = 1 ∀i
(ν i )
(6)
λi ≥ 0 ∀i (7)
F iλi integer ∀i (8)
![Page 30: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/30.jpg)
MCF: Master Problem
min∑
i
wTF iλi
∑i
F iλi ≤ u
(π)
(5)
eTλi = 1 ∀i
(ν i )
(6)
λi ≥ 0 ∀i (7)
F iλi integer ∀i (8)
[F 0 F 1 F 2
] λ0
λ1
λ2
≤ u 1T . .. 1T .. . 1T
λ0
λ1
λ2
= 1
![Page 31: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/31.jpg)
MCF: Master Problem
min∑
i
wTF iλi
∑i
F iλi ≤ u (π) (5)
eTλi = 1 ∀i (ν i ) (6)
λi ≥ 0 ∀i (7)
F iλi integer ∀i (8)
Pricing of feasible s i t i -flow f :
weight of flow : wT fdual activity: πT f + ν i
Reduced cost of flow f = wT f − πT f − ν i = (wT − πT )f − ν i
![Page 32: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/32.jpg)
Class MCF vars
MCF var:
• int commodity : index of commodity
• CoinPackedVector flow : positive flow on arcs
• weight: objective coefficient
See include/MCF var.hpp, Member/MCF var.cpp
MCF lp::vars to cols(): generate columns of the masterproblem for vars
![Page 33: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/33.jpg)
Class MCF vars
MCF var:
• int commodity : index of commodity
• CoinPackedVector flow : positive flow on arcs
• weight: objective coefficient
See include/MCF var.hpp, Member/MCF var.cpp
MCF lp::vars to cols(): generate columns of the masterproblem for vars
![Page 34: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/34.jpg)
MCF: Setting the Master at the Root
Variables:
• Dummy flow variables are algorithmic variables (λi0 ∀ i)
• All generated variables are algorithmic
Constraints:
• All constraints are core constraints
• Upper bound constraints: 0 ≤ ue ∀ e ∈ E
• Dummy upper bound constraints: dem(i)λi0 ≤ dem(i) ∀i
• Convexity constraints: λi0 = 1 ∀ i
See in TM/MCF tm.cpp:MCF tm::initialize coreMCF tm::create root
![Page 35: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/35.jpg)
MCF: Setting the Master at the Root
Variables:
• Dummy flow variables are algorithmic variables (λi0 ∀ i)
• All generated variables are algorithmic
Constraints:
• All constraints are core constraints
• Upper bound constraints: 0 ≤ ue ∀ e ∈ E
• Dummy upper bound constraints: dem(i)λi0 ≤ dem(i) ∀i
• Convexity constraints: λi0 = 1 ∀ i
See in TM/MCF tm.cpp:MCF tm::initialize coreMCF tm::create root
![Page 36: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/36.jpg)
Class MCF tm: Derived from BCP tm user
Data:
• MCF data data
Methods:
• pack module data() : pack data needed at the node level.Called once for each processor used as a solver.
• initialize core() : Transmit core constraints/variables toBCP.
• create root : set up the problem at the root node
• pack var algo() : pack algorithmic vars
• unpack var algo() : unpack algorithmic vars
• display feasible solution() : display solution
![Page 37: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/37.jpg)
Node operations
1. Initialize new node
2. Solve node LP
3. Test feasibility of node LP solution
4. Compute lower bound for node LP
5. Fathom node (if possible)
6. Perform fixing on vars
7. Update row effectiveness records
8. Generate cuts, Generate vars
9. Generate heuristic solution
10. Fathom node (if possible)
11. Decide to branch, fathom, or repeat loop
12. Add to node LP the cuts/vars generated, if loop is repeated
13. Purge cut pool, var pool
![Page 38: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/38.jpg)
Class MCF LP: Derived from BCP lp user
Data:
• OsiSolverInterface* cg lp: pointer on Osi LP solver usedfor column generation
• MCF data data: problem data
• vector<MCF branch decision>* branch history:branch history[i]: vector of branching decision involvingcommodity i (arc, lb, ub)
• map<int,double>* flows: flows[i]: map between indexof arc and positive flow for commodity i in LP solution
• BCP vec<BCP var*> gen vars: vector holding generated vars
• bool generated vars: indicator for success in columngeneration
See LP/MCF lp.cpp, include/MCF lp.hpp
![Page 39: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/39.jpg)
Class MCF LP: Derived from BCP lp user (cont)
Methods:
• unpack module data()
• pack var algo(), unpack var algo()
• initialize new search tree node() : Natural place forinitializing user defined variables of MCF lp.
• test feasibility(): Test feasibility of current LP solution.
• compute lower bound(): Lower bound on optimal value ofsubproblem
• generate vars in lp(): Pass new variables to BCP
• vars to cols() : Function generating a column from the varrepresentation
• select branching candidates() : Generate rules forcreating potential sons
![Page 40: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/40.jpg)
MCF: Computing a Lower Bound
Initially, lower bound of a node is set to the lower bound of itsfather
• Try to generate a variable with negative reduced cost
• If successful, lower bound is currently known lower bound
• If unsuccessful, lower bound is the current LP value
See MCF lp::compute lower bound() in LP/MCF lp.cpp
![Page 41: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/41.jpg)
MCF: Column Generation
• π, ν i : optimal dual solution of the Master
Column generation:
min(wT − πT )f i∑e=(w ,v)∈E
f ie −
∑e=(w ,v)∈E
f ie = d i
v ∀v ∈ V (9)
`i ≤ f i ≤ ui (10)
f i integral (11)
If solution is , then f i is the new column
Minimum cost flow problem ⇒ Solve as an LP
(see MCF lp::compute lower bound in LP/MCF lp.cpp)
![Page 42: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/42.jpg)
MCF: Column Generation
• π, ν i : optimal dual solution of the Master
Column generation:
min(wT − πT )f i − ν i∑e=(w ,v)∈E
f ie −
∑e=(w ,v)∈E
f ie = d i
v ∀v ∈ V (9)
`i ≤ f i ≤ ui (10)
f i integral (11)
If solution is negative , then f i is the new column
Minimum cost flow problem ⇒ Solve as an LP
(see MCF lp::compute lower bound in LP/MCF lp.cpp)
![Page 43: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/43.jpg)
MCF: Column Generation
• π, ν i : optimal dual solution of the Master
Column generation:
min(wT − πT )f i∑e=(w ,v)∈E
f ie −
∑e=(w ,v)∈E
f ie = d i
v ∀v ∈ V (9)
`i ≤ f i ≤ ui (10)
f i integral (11)
If solution is < ν i , then f i is the new column
Minimum cost flow problem ⇒ Solve as an LP
(see MCF lp::compute lower bound in LP/MCF lp.cpp)
![Page 44: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/44.jpg)
MCF: Column Generation
• π, ν i : optimal dual solution of the Master
Column generation:
min(wT − πT )f i∑e=(w ,v)∈E
f ie −
∑e=(w ,v)∈E
f ie = d i
v ∀v ∈ V (9)
`i ≤ f i ≤ ui (10)
f i integral (11)
If solution is < ν i , then f i is the new column
Minimum cost flow problem ⇒ Solve as an LP(see MCF lp::compute lower bound in LP/MCF lp.cpp)
![Page 45: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/45.jpg)
Branching
MCF lp::select branching candidates(): Called at the end ofeach iteration. Possible return values are:
• BCP DoNotBranch Fathomed : fathomed without branching
• BCP DoNotBranch : continue to work on this node
• BCP DoBranch : Branching must be done. Must create thecandidates
![Page 46: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/46.jpg)
MCF: Branching
• Solution of the Master is fractional
• No new column is generated
⇒ Must branch
Branching rule:
• Select an arc e (not dummy) and i with F iλi = z fractional
• First child: Use only columns where flow of i on e is > z
• Second child: Use only columns where flow of i on e is < z
• Need to know `ie and ui
e for all i and e for col. gen.
⇒ use branch history[i]
![Page 47: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/47.jpg)
MCF: Branching
• Solution of the Master is fractional
• No new column is generated
⇒ Must branch
Branching rule:
• Select an arc e (not dummy) and i with F iλi = z fractional
• First child: Use only columns where flow of i on e is > z
• Second child: Use only columns where flow of i on e is < z
• Need to know `ie and ui
e for all i and e for col. gen.
⇒ use branch history[i]
![Page 48: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/48.jpg)
MCF: Branching
• Solution of the Master is fractional
• No new column is generated
⇒ Must branch
Branching rule:
• Select an arc e (not dummy) and i with F iλi = z fractional
• First child: Use only columns where flow of i on e is > z
• Second child: Use only columns where flow of i on e is < z
• Need to know `ie and ui
e for all i and e for col. gen.
⇒ use branch history[i]
![Page 49: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/49.jpg)
MCF: Branching
• Solution of the Master is fractional
• No new column is generated
⇒ Must branch
Branching rule:
• Select an arc e (not dummy) and i with F iλi = z fractional
• First child: Use only columns where flow of i on e is > z
• Second child: Use only columns where flow of i on e is < z
• Need to know `ie and ui
e for all i and e for col. gen.⇒ use branch history[i]
![Page 50: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/50.jpg)
Class MCF branching var
MCF branching var:
• artificial variable used to keep branching history around
• weight 0
• coefficients 0
• upper: 1, lower 0: identify child
Data:
• commodity: commodity i used in branching
• arc index: arc e used in branching
• lb child0, ub child0, lb child1, ub child1: bounds forcommodity i on e in the children
See include/MCF var.hpp, Member/MCF var.cpp
![Page 51: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/51.jpg)
Class MCF branching var
MCF branching var:
• artificial variable used to keep branching history around
• weight 0
• coefficients 0
• upper: 1, lower 0: identify child
Data:
• commodity: commodity i used in branching
• arc index: arc e used in branching
• lb child0, ub child0, lb child1, ub child1: bounds forcommodity i on e in the children
See include/MCF var.hpp, Member/MCF var.cpp
![Page 52: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/52.jpg)
Branching object
MCF
Create the candidates using:BCP lp branching object::BCP lp branching object()Its relevant parameters are:
• int children : # children
2
• BCP vec<BCP var*> *new vars : vector for new vars
one new MCF branching var
• BCP vec<BCP cut*> *new cuts : vector for new cuts
NULL
• BCP vec<int> *fvp : vector for indices of variables whosebounds are changedNegative indices : vars from new vars,index −i − 1 corresponding to entry i
[-1, 4, 7]
• BCP vec<int> *fcp : vector for indices of cuts whosebounds are changed.Negative indices : cuts from new cuts,index −i − 1 corresponding to entry i
NULL
![Page 53: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/53.jpg)
Branching object MCF
Create the candidates using:BCP lp branching object::BCP lp branching object()Its relevant parameters are:
• int children : # children
2
• BCP vec<BCP var*> *new vars : vector for new vars
one new MCF branching var
• BCP vec<BCP cut*> *new cuts : vector for new cuts
NULL
• BCP vec<int> *fvp : vector for indices of variables whosebounds are changedNegative indices : vars from new vars,index −i − 1 corresponding to entry i
[-1, 4, 7]
• BCP vec<int> *fcp : vector for indices of cuts whosebounds are changed.Negative indices : cuts from new cuts,index −i − 1 corresponding to entry i
NULL
![Page 54: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/54.jpg)
Branching object MCF
Create the candidates using:BCP lp branching object::BCP lp branching object()Its relevant parameters are:
• int children : # children 2
• BCP vec<BCP var*> *new vars : vector for new vars
one new MCF branching var
• BCP vec<BCP cut*> *new cuts : vector for new cuts
NULL
• BCP vec<int> *fvp : vector for indices of variables whosebounds are changedNegative indices : vars from new vars,index −i − 1 corresponding to entry i
[-1, 4, 7]
• BCP vec<int> *fcp : vector for indices of cuts whosebounds are changed.Negative indices : cuts from new cuts,index −i − 1 corresponding to entry i
NULL
![Page 55: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/55.jpg)
Branching object MCF
Create the candidates using:BCP lp branching object::BCP lp branching object()Its relevant parameters are:
• int children : # children 2
• BCP vec<BCP var*> *new vars : vector for new varsone new MCF branching var
• BCP vec<BCP cut*> *new cuts : vector for new cuts
NULL
• BCP vec<int> *fvp : vector for indices of variables whosebounds are changedNegative indices : vars from new vars,index −i − 1 corresponding to entry i
[-1, 4, 7]
• BCP vec<int> *fcp : vector for indices of cuts whosebounds are changed.Negative indices : cuts from new cuts,index −i − 1 corresponding to entry i
NULL
![Page 56: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/56.jpg)
Branching object MCF
Create the candidates using:BCP lp branching object::BCP lp branching object()Its relevant parameters are:
• int children : # children 2
• BCP vec<BCP var*> *new vars : vector for new varsone new MCF branching var
• BCP vec<BCP cut*> *new cuts : vector for new cuts NULL
• BCP vec<int> *fvp : vector for indices of variables whosebounds are changedNegative indices : vars from new vars,index −i − 1 corresponding to entry i
[-1, 4, 7]
• BCP vec<int> *fcp : vector for indices of cuts whosebounds are changed.Negative indices : cuts from new cuts,index −i − 1 corresponding to entry i
NULL
![Page 57: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/57.jpg)
Branching object MCF
Create the candidates using:BCP lp branching object::BCP lp branching object()Its relevant parameters are:
• int children : # children 2
• BCP vec<BCP var*> *new vars : vector for new varsone new MCF branching var
• BCP vec<BCP cut*> *new cuts : vector for new cuts NULL
• BCP vec<int> *fvp : vector for indices of variables whosebounds are changedNegative indices : vars from new vars,index −i − 1 corresponding to entry i [-1, 4, 7]
• BCP vec<int> *fcp : vector for indices of cuts whosebounds are changed.Negative indices : cuts from new cuts,index −i − 1 corresponding to entry i
NULL
![Page 58: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/58.jpg)
Branching object MCF
Create the candidates using:BCP lp branching object::BCP lp branching object()Its relevant parameters are:
• int children : # children 2
• BCP vec<BCP var*> *new vars : vector for new varsone new MCF branching var
• BCP vec<BCP cut*> *new cuts : vector for new cuts NULL
• BCP vec<int> *fvp : vector for indices of variables whosebounds are changedNegative indices : vars from new vars,index −i − 1 corresponding to entry i [-1, 4, 7]
• BCP vec<int> *fcp : vector for indices of cuts whosebounds are changed.Negative indices : cuts from new cuts,index −i − 1 corresponding to entry i NULL
![Page 59: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/59.jpg)
Branching object (cont)
MCF
• BCP vec<double> *fvb : vector for lower/upper bounds foreach vars in fvp, for each child
[0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1]
• BCP vec<double> *fcb : vector for lower/upper bounds foreach constraint in fcp, for each child
NULL
• 4 additional parameters (implied parts)
NULL
Pass NULL for irrelevant parameters
![Page 60: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/60.jpg)
Branching object (cont)MCF
• BCP vec<double> *fvb : vector for lower/upper bounds foreach vars in fvp, for each child[0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1]
• BCP vec<double> *fcb : vector for lower/upper bounds foreach constraint in fcp, for each child
NULL
• 4 additional parameters (implied parts)
NULL
Pass NULL for irrelevant parameters
![Page 61: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/61.jpg)
Branching object (cont)MCF
• BCP vec<double> *fvb : vector for lower/upper bounds foreach vars in fvp, for each child[0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1]
• BCP vec<double> *fcb : vector for lower/upper bounds foreach constraint in fcp, for each child NULL
• 4 additional parameters (implied parts)
NULL
Pass NULL for irrelevant parameters
![Page 62: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/62.jpg)
Branching object (cont)MCF
• BCP vec<double> *fvb : vector for lower/upper bounds foreach vars in fvp, for each child[0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1]
• BCP vec<double> *fcb : vector for lower/upper bounds foreach constraint in fcp, for each child NULL
• 4 additional parameters (implied parts)NULL
Pass NULL for irrelevant parameters
![Page 63: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/63.jpg)
Branching object: Forced vs. Implied
Forced changes:
• Used during strong branching
• Sent to the tree manager if branching object is selected
• Used in the children if branching object is selected
Implied changes:
• Used during strong branching
• NOT Sent to the tree manager if branching object is selected
• NOT Used in the children if branching object is selected
Many implied changes ⇒ storing them is costly.If implied changes are used, implement them also inMCF lp:: initialize new search tree node()
![Page 64: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/64.jpg)
Branching object: Forced vs. Implied
Forced changes:
• Used during strong branching
• Sent to the tree manager if branching object is selected
• Used in the children if branching object is selected
Implied changes:
• Used during strong branching
• NOT Sent to the tree manager if branching object is selected
• NOT Used in the children if branching object is selected
Many implied changes ⇒ storing them is costly.If implied changes are used, implement them also inMCF lp:: initialize new search tree node()
![Page 65: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/65.jpg)
Branching object: Forced vs. Implied
Forced changes:
• Used during strong branching
• Sent to the tree manager if branching object is selected
• Used in the children if branching object is selected
Implied changes:
• Used during strong branching
• NOT Sent to the tree manager if branching object is selected
• NOT Used in the children if branching object is selected
Many implied changes ⇒ storing them is costly.If implied changes are used, implement them also inMCF lp:: initialize new search tree node()
![Page 66: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/66.jpg)
MCF: Parameter File
Predefined parameters:Class MCF par (see include/MCF par.hpp)Class BCP lp par Class BCP tm par
Some parameters with their default values:
• MCF AddDummySourceSinkArcs: 1
• MCF InputFilename: small
• BCP VerbosityShutUp: 0
• BCP MaxRunTime : 3600
• BCP Granularity : 1e-8
• BCP IntegerTolerance : 1e-5
• BCP TreeSearchStrategy : 1// 0: Best Bound 1: BFS 2: DFS
![Page 67: Introduction to BCP -- MCF Examplearchive.dimacs.rutgers.edu/Workshops/COIN/slides/bcp_tutorial.pdf · Node operations 1. Initialize new node 2. Solve node LP 3. Test feasibility](https://reader030.vdocument.in/reader030/viewer/2022040311/5d62a8af88c99309088bb627/html5/thumbnails/67.jpg)
MCF: Parameter File
Predefined parameters:Class MCF par (see include/MCF par.hpp)Class BCP lp par Class BCP tm par
Some parameters with their default values:
• MCF AddDummySourceSinkArcs: 1
• MCF InputFilename: small
• BCP VerbosityShutUp: 0
• BCP MaxRunTime : 3600
• BCP Granularity : 1e-8
• BCP IntegerTolerance : 1e-5
• BCP TreeSearchStrategy : 1// 0: Best Bound 1: BFS 2: DFS