branching

25
Tobias Achterberg Konrad-Zuse-Zentrum für Informationstechnik Berlin [email protected] Branching SCIP Workshop at ZIB October 2007

Upload: tavia

Post on 08-Jan-2016

39 views

Category:

Documents


0 download

DESCRIPTION

Branching. SCIP Workshop at ZIB October 2007. Branching. current solution is infeasible. Branching on Variables. split problems into sub problems to cut off current solution. Branching. current solution is infeasible. Branching on Constraints. - PowerPoint PPT Presentation

TRANSCRIPT

Tobias AchterbergKonrad-Zuse-Zentrum für Informationstechnik [email protected]

Branching

SCIP Workshop at ZIB

October 2007

2

Branching

current solution is infeasible

3

Branching on Variables

split problems into sub problems to cut off current solution

4

Branching

current solution is infeasible

5

Branching on Constraints

split problems into subproblems to cut off current solution

6

Branching in SCIP

in constraint handlers and branching rules

„last resort“ for dealing with infeasible node solutions no domain propagation or cuts available/desired

split current problem into any number of subproblems (children) such that each child is „more restricted“ than current

problem(„children become smaller“)

at least one child has the same optimum value as the current problem(„optimal solution is not lost“)

7

Implementing Branching Rules in SCIP

1.create child nodeSCIPcreateChild(scip, &node, prio);

2.modify child nodeSCIPaddConsNode(scip, node, cons, NULL);SCIPchgVarLbNode(scip, node, var, newlb);SCIPchgVarUbNode(scip, node, var, newub);

3.if more children needed, goto 1.

4.set result code*result = SCIP_BRANCHED;

8

Branching on Variables in SCIP

CallingSCIPbranchVar(scip, var, ...)

is shortcut for:SCIP_NODE* node;SCIP_Real x = SCIPvarGetLPSol(var);

SCIPcreateChild(scip, &node, downprio);SCIPchgVarUbNode(scip, node, var, floor(x));SCIPcreateChild(scip, &node, upprio);SCIPchgVarLbNode(scip, node, var, ceil(x));

node selection priorities are automatically calculated by child selection rule

9

Example: Random Branching

SCIP_DECL_BRANCHEXECLP(branchExeclpRandom){

SCIP_BRANCHRULEDATA* branchruledata;SCIP_VAR** lpcands;int nlpcands;int k;

branchruledata = SCIPbranchruleGetData(branchrule);SCIP_CALL(SCIPgetLPBranchCands(scip, &lpcands,

NULL, NULL, NULL, &nlpcands));k = SCIPgetRandomInt(0, nlpcands-1,

&branchruledata->randseed);SCIP_CALL(SCIPbranchVar(scip, lpcands[k],

NULL, NULL, NULL));*result = SCIP_BRANCHED;return SCIP_OKAY;

}

10

Branching Rules for MIP

most common MIP branching rules branch on variables: two children

split domain of single variable into two parts

choose variable with fractional LP value such that LP solution changes in both children

remaining choices: which fractional variable to branch on?

which of the two children to process next related to node selection strategy

11

Branching Variable Selection

most fractional branching choose variable with fractional value closest to 0.5

full strong branching solve the LP relaxations for all possible branchings

choose the variable that yields largest LP objectives

strong branching only apply strong branching on some candidates

only perform a limited number of simplex iterations

12

Pseudo Costs

c = 2

LP relaxation yields lower bound

13

Pseudo Costs

c = 2x3 = 7.3

LP relaxation yields lower bound

integer variable has fractional LP value

14

Pseudo Costs

c = 2x3 ≤ 7 x3 8

LP relaxation yields lower bound

integer variable has fractional LP value

branching decomposes problem into subproblems

x3 = 7.3

15

Pseudo Costs

LP relaxation yields lower bound

integer variable has fractional LP value

branching decomposes problem into subproblems

LP relaxation is solved for subproblems

c = 2

c = 5x3 ≤ 7 x3 8

x3 = 7.3

16

Pseudo Costs

history of objective changes caused by branching on specific variable

objective gain per unit:

down/upwards pseudo costs j-, j

+:

average of all objective gains per unit

c = 2

c = 5x3 ≤ 7 x3 8

x3 = 7.3

103.0

3

73.7

253

17

Pseudo Cost Branching

choose variable with largest estimated LP objective gain:

What to do if pseudo costs are uninitialized? pure pseudo cost branching

use average pseudo costs over all variables, or

pseudo cost with strong branching initialization apply strong branching to initialize pseudo costs

jjjjjj ff 1,

1 j

18

Reliability Branching

choose variable with largest estimated LP objective gain:

pseudo costs are unreliable, if number of updates is small:

apply strong branching on unreliable candidates psc with strong branching initialization:

(full) strong branching:

reasonable value:

jjjjjj ff 1,

rel,min jj

1rel rel8rel

19

Branching in SAT

„Strong Branching“ equivalent: apply domain propagation on all potential

subproblems

choose variable which leads to largest number of inferences

Conflict Activity choose variable that is contained in many

recently generated conflict clauses

„recently“: exponentially decreasing importance of older conflict clauses

20

Hybrid Reliability/Inference Branching

Reliability Value pseudo costs

strong branching on unreliable candidates

Inference History like pseudo costs, but for number of inferences

due to branching on a variable

Conflict Score number of conflicts for which branching on this

variable was part of the conflict reason

exponentially decreasing weight for older conflicts

21

Computational Results: nodes

643

528

1076

25

35

198

127

109

317

100

0

200

400

600

800

1000

1200randommost infleast inffull strongstrongpseudo costpsc str initreliabilityinferencehybrid

244 instances

shifted geometric nodes

ratio to „hybrid“ in percent

22

Computational Results: time

326

319

441

195

144

133

108

106

195

100

0

50

100

150

200

250

300

350

400

450randommost infleast inffull strongstrongpseudo costpsc str initreliabilityinferencehybrid

244 instances

shifted geometric time

ratio to „hybrid“ in percent

23

Branching Score Functions

pseudo costs yield LP objective gain estimates for both branching directions

how to combine the two values into a single score? current approach: weighted sum

new approach: product

jjjjjs ,max1,min

,max,max jjjs

24

Computational Results

129

114 129

137

175

100

0

20

40

60

80

100

120

140

160

180

min (1)weighted (1/ 6)weighted (1/ 3)average (1/ 2)max (0)product

25

Comparison to CPLEX and CBC

ratios to CPLEX 10.1 nodes time

SCIP/CPX 0.67 1.50

SCIP/Soplex 0.65 3.61

CBC/CLP 4.22 9.28

40

.3

27

.0

26

.3

17

0.1

41

.7 62

.5

15

0.4

38

7.1

0

50

100

150

200

250

300

350

400

nodes (x100) time (s)

CPLEXSCIP/CPXSCIP/SPXCBC

1.5x slower

3.6x slower

9.3x slower