FICO Xpress

FICO Xpress-Optimizer
Tips & Tricks
Michael Perregaard
Xpress Optimization
FICO
July 4, 2013
This presentation is provided for the recipient only and cannot be
reproduced or shared without Fair Isaac Corporation's express consent.
© 2013 Fair Isaac Corporation.
Agenda
» Tuning at a glance
» Local search heuristics
» Big-M and numerical considerations
2
© 2013 Fair Isaac Corporation.
Tuning at a glance
» Getting the most of the root
» Local search heuristics
» Faster time to first solution
3
© 2013 Fair Isaac Corporation.
When is more cutting useful?
Look for:
» Large initial jump in bound
» Steady amount of cuts added
and deleted each round.
Xpress will balance number of cuts
vs. difficulty of reoptimizing.
Limited information about problem
difficulty ⇒ conservative balance.
Try increasing cutting effort.
4
© 2013 Fair Isaac Corporation.
Its Type
BestSoln
BestBound
+
-4250519213. -983637913.7
+
-4186315351. -983637913.7
1 K -4186315351. -2301857560.
2 K -4186315351. -2444516200.
3 K -4186315351. -2479120937.
4 K -4186315351. -2486387651.
5 K -4186315351. -2495870770.
6 K -4186315351. -2499894845.
7 K -4186315351. -2530679455.
8 K -4186315351. -2558599588.
9 K -4186315351. -2559826384.
10 K -4186315351. -2560764573.
11 K -4186315351. -2562043326.
12 K -4186315351. -2562823109.
13 K -4186315351. -2566225685.
14 K -4186315351. -2567461141.
15 K -4186315351. -2568398670.
16 K -4186315351. -2568819556.
17 K -4186315351. -2570860713.
18 K -4186315351. -2571188037.
19 K -4186315351. -2575283602.
20 K -4186315351. -2587960341.
21 G -4186315351. -2648093977.
22 G -4186315351. -2650667951.
+
-3800944066. -2650667951.
Heuristic search started
+
-3772166776. -2650667951.
+
-3764255053. -2650667951.
+
-3752301973. -2650667951.
+
-3738515951. -2650667951.
Heuristic search stopped
Sols
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
4
5
6
7
Add
Del
734
510
447
389
370
363
342
347
332
320
312
304
299
306
301
295
290
281
276
277
262
287
0
173
353
302
342
351
311
354
311
301
301
291
293
315
293
286
284
266
269
511
8
558
Gap
76.86%
76.50%
45.01%
41.61%
40.78%
40.61%
40.38%
40.28%
39.55%
38.88%
38.85%
38.83%
38.80%
38.78%
38.70%
38.67%
38.65%
38.64%
38.59%
38.58%
38.48%
38.18%
36.74%
36.68%
30.26%
29.73%
29.58%
29.36%
29.10%
Bound
Solution
When is more cutting useful? (2)
Options to adjust cutting:
CUTSTRATEGY
1 – Light
2 – Medium
3 – Aggressive
CUTFACTOR
Amount of cuts to add as a ratio to
problem size.
If pattern persists with large
CUTFACTOR ⇒ Check model!
Its Type
BestSoln
BestBound
+
-4250519213. -983637913.7
+
-4186315351. -983637913.7
1 K -4186315351. -2500370863.
2 K -4186315351. -2791609815.
3 K -4186315351. -3016999540.
4 K -4186315351. -3082444620.
+
-4040363392. -3082444620.
5 K -4040363392. -3113506948.
6 K -4040363392. -3169276693.
+
-3962671021. -3169276693.
7 K -3962671021. -3223811699.
+
-3870579468. -3223811699.
8 K -3870579468. -3260401683.
9 K -3870579468. -3292624285.
+
-3807733718. -3292624285.
10 K -3807733718. -3321348229.
11 K -3807733718. -3345734362.
12 K -3807733718. -3366892320.
13 K -3807733718. -3384543366.
+
-3803423497. -3384543366.
14 K -3803423497. -3400353812.
15 K -3803423497. -3413070439.
+
-3746982101. -3413070439.
16 K -3746982101. -3421885848.
17 K -3746982101. -3429939240.
18 K -3746982101. -3437132243.
19 K -3746982101. -3441666577.
+
-3744370125. -3441666577.
20 K -3744370125. -3445582328.
21 G -3744370125. -3449689105.
+
-3736290067. -3449689105.
22 G -3736290067. -3453218384.
Heuristic search started
+
-3716768564. -3453218384.
+
-3672553225. -3453218384.
+
-3606609863. -3453218384.
Heuristic search stopped
Sols
1
2
2
2
2
2
3
3
3
4
4
5
5
5
6
6
6
6
6
7
7
7
8
8
8
8
8
9
9
9
10
10
11
12
13
Add
Del
1574
2207
3113
3969
0
730
1755
2889
3974
4389
3810
3837
4595
4305
4544
4486
4468
4399
4428
4401
4332
4305
4341
4360
4229
4266
4292
4265
4272
4225
4245
4243
4234
4204
4215
4240
4219
4160
4193
4184
7561
789
3642
7043
Gap
76.86%
76.50%
40.27%
33.32%
27.93%
26.37%
23.71%
22.94%
21.56%
20.02%
18.65%
16.71%
15.76%
14.93%
13.53%
12.77%
12.13%
11.58%
11.11%
11.01%
10.60%
10.26%
8.91%
8.68%
8.46%
8.27%
8.15%
8.08%
7.98%
7.87%
7.67%
7.58%
7.09%
5.97%
4.25%
Bound
Solution
5
© 2013 Fair Isaac Corporation.
Local search heuristics
Its Type
+
» Fairly hard example
» Good solution found only after an
expensive dive (1115 seconds)
» No solution from default local
search heuristic.
» Very large number of fractionals
⇒ expensive dive.
1 K
2 K
3 K
4 K
5 K
6 K
7 K
8 K
9 K
10 K
11 K
12 K
13 K
14 K
15 K
16 K
17 K
18 K
19 K
20 K
21 G
22 G
Heuristic
Heuristic
» Displays insufficient cutting
pattern ⇒ more cutting
*
Node
10
100
1000
1100
1200
1300
1400
1500
1600
1700
1800
1900
2000
2100
2200
2300
2400
2500
2593
2600
2700
BestSoln
BestBound
85721.42547 259919.9722
85721.42547 222010.4124
85721.42547 212181.8743
85721.42547 206933.6130
85721.42547 202409.6647
85721.42547 201321.2042
85721.42547 199328.4627
85721.42547 197905.0897
85721.42547 195326.0936
85721.42547 193235.9371
85721.42547 191875.8302
85721.42547 190856.1540
85721.42547 190018.5124
85721.42547 189220.0989
85721.42547 188576.1382
85721.42547 188084.7881
85721.42547 187549.7688
85721.42547 186905.5866
85721.42547 186566.3344
85721.42547 186175.9806
85721.42547 185841.7512
85721.42547 185698.5214
85721.42547 185592.8059
search started
search stopped
Sols
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
Add
Del
5644
4856
4365
4064
3889
3723
3595
3450
3332
3215
3129
3040
2964
2907
2852
2782
2737
2697
2644
2609
2576
2514
0
3675
3628
3612
3628
3474
3403
3231
3155
3041
3000
2906
2850
2822
2769
2676
2669
2639
2563
4892
191
4576
Gap
203.21%
158.99%
147.52%
141.40%
136.12%
134.86%
132.53%
130.87%
127.86%
125.42%
123.84%
122.65%
121.67%
120.74%
119.99%
119.41%
118.79%
118.04%
117.64%
117.19%
116.80%
116.63%
116.51%
GInf
0
9385
9381
8910
8683
8817
8564
8541
8435
8274
8228
8271
8145
8144
8134
8154
8180
8058
8008
8030
8023
7957
7950
Time
3
5
7
9
11
13
14
16
19
21
23
25
27
30
32
34
36
38
41
44
46
47
48
BestSoln
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
118692.1888
118692.1888
118692.1888
Sols Active
2
9
2
11
2
11
2
11
2
11
2
11
2
11
2
11
2
11
2
11
2
11
2
11
2
11
2
11
2
11
2
11
2
11
2
11
3
11
3
2503
3
2436
Depth
3
93
978
1077
1174
1273
1370
1469
1567
1666
1762
1862
1960
2059
2156
2256
2354
2452
2546
2534
38
Gap
112.16%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
112.02%
53.12%
53.12%
53.04%
GInf
7753
6160
2240
2150
1976
1737
1593
1369
1251
1121
972
826
711
606
482
343
230
109
0
19
6818
Time
105
405
932
949
963
976
988
1000
1010
1021
1032
1042
1053
1064
1076
1088
1097
1107
1115
1115
1221
BestBound
181865.1723
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181743.4441
181651.5632
Bound
Solution
6
© 2013 Fair Isaac Corporation.
Local search heuristics (2)
Its Type
+
» More cutting closes extra 15% gap.
» Cost of more cutting increases
» Cut time: 1000%
» Dive time: 300%
» Lots of unused cores during root
cutting ⇒ run some heuristics!
1 K
2 K
3 K
4 K
5 K
6 K
7 K
8 K
9 K
10 K
11 K
12 K
13 K
14 K
15 K
16 K
17 K
18 K
19 K
20 K
21 G
22 G
Heuristic
Heuristic
Node
*
1
10
100
1000
1100
1200
1300
1400
1500
1600
1700
1800
1900
2000
2100
2118
BestSoln
BestBound
85721.42547 259919.9722
85721.42547 215749.5949
85721.42547 199067.0404
85721.42547 191383.0788
85721.42547 187006.2010
85721.42547 183415.3693
85721.42547 181223.1303
85721.42547 179280.5796
85721.42547 177785.2811
85721.42547 176501.7417
85721.42547 175161.4849
85721.42547 174418.9195
85721.42547 173839.5447
85721.42547 173408.4199
85721.42547 173026.4395
85721.42547 172465.6433
85721.42547 172088.4114
85721.42547 171727.4647
85721.42547 171275.2717
85721.42547 171055.8979
85721.42547 170793.3325
85721.42547 170720.3398
85721.42547 170678.2946
search started
search stopped
Sols
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
Add
Del
19253
17380
16621
16125
15804
15550
15355
15194
15077
15004
14935
14887
14800
14752
14677
14624
14585
14569
14569
14529
14512
14393
0
14571
15482
15381
15323
15168
15064
14951
14902
14894
14832
14814
14670
14680
14565
14545
14526
14546
14568
28136
819
27557
BestSoln
BestBound
Sols Active
85721.42547 170678.2946
2
85721.42547 168883.3574
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
85721.42547 168834.7753
2
131667.1282 168834.7753
3
Gap
203.21%
151.69%
132.23%
123.26%
118.16%
113.97%
111.41%
109.14%
107.40%
105.90%
104.34%
103.47%
102.80%
102.29%
101.85%
101.19%
100.75%
100.33%
99.80%
99.55%
99.24%
99.16%
99.11%
GInf
0
9385
8134
8013
8100
8085
8192
8162
8177
8067
7855
7909
7923
7819
7817
7841
7808
7934
7915
7805
7828
7736
7773
Time
6
9
13
19
27
42
64
90
110
141
167
199
229
260
291
322
356
394
430
466
507
531
547
Depth
Gap
GInf
Time
2
1
99.11%
7528
579
9
3
97.01%
7190
779
11
91
96.96%
6321
2077
11
979
96.96%
1960
3072
11
1076
96.96%
1643
3084
11
1175
96.96%
1413
3094
11
1275
96.96%
1129
3104
11
1373
96.96%
1011
3114
11
1473
96.96%
804
3123
11
1572
96.96%
674
3132
11
1669
96.96%
484
3141
11
1767
96.96%
357
3150
11
1866
96.96%
220
3158
11
1963
96.96%
148
3167
11
2062
96.96%
27
3174
11
2081
28.23%
0
3175
Bound
Solution
7
© 2013 Fair Isaac Corporation.
Local search heuristics (3)
Its Type
+
+
+
» Too many solutions to display.
» Root gap closed 99% ⇒ 35%
» Root time increased only 15%.
» Root time is half of default dive,
yet gap 35% vs. 55%
1
K
2
K
3
K
4
K
5
K
6
K
7
K
8
K
9
K
10
:
K
:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
BestSoln
85721.42547
90000.64588
91086.99167
91086.99167
95505.23153
95804.47124
95804.47124
97388.66319
97617.75731
98622.05064
100018.5994
100018.5994
100995.4391
102107.6976
102684.1541
103162.7936
103162.7936
104756.9173
105377.9658
105643.3327
105775.3515
105775.3515
107339.0227
108141.0890
108921.2408
108921.2408
111310.3088
111310.3088
112151.2191
112951.8316
113555.2075
113555.2075
114077.9032
114224.0544
114710.3149
114924.4436
114924.4436
115272.2809
115338.8048
115423.8874
115956.9447
116024.5061
116024.5061
:
BestBound
259919.9722
259919.9722
259919.9722
215749.5949
215749.5949
215749.5949
199067.0404
199067.0404
199067.0404
199067.0404
199067.0404
191383.0788
191383.0788
191383.0788
191383.0788
191383.0788
187006.2010
187006.2010
187006.2010
187006.2010
187006.2010
183415.3693
183415.3693
183415.3693
183415.3693
181223.1303
181223.1303
179280.5796
179280.5796
179280.5796
179280.5796
177785.2811
177785.2811
177785.2811
177785.2811
177785.2811
176501.7417
176501.7417
176501.7417
176501.7417
176501.7417
176501.7417
175161.4849
:
Sols
2
3
4
4
5
6
6
7
8
9
10
10
11
12
13
14
14
15
16
17
18
18
19
20
21
21
22
22
23
24
25
25
26
27
28
29
29
30
31
32
33
34
34
:
Add
Del
19253
0
17380
14571
16621
15482
16125
15381
15804
15323
15550
15168
15355
15064
15194
14951
15077
14902
15004
:
14894
:
Gap
203.21%
188.80%
185.35%
136.86%
125.90%
125.20%
107.78%
104.40%
103.93%
101.85%
99.03%
91.35%
89.50%
87.43%
86.38%
85.52%
81.27%
78.51%
77.46%
77.02%
76.80%
73.40%
70.87%
69.61%
68.39%
66.38%
62.81%
61.06%
59.86%
58.72%
57.88%
56.56%
55.85%
55.65%
54.99%
54.70%
53.58%
53.12%
53.03%
52.92%
52.21%
52.12%
50.97%
:
GInf
0
0
0
9385
0
0
8134
0
0
0
0
8013
0
0
0
0
8100
0
0
0
0
8085
0
0
0
8192
0
8162
0
0
0
8177
0
0
0
0
8067
0
0
0
0
0
7855
:
Time
7
12
12
12
18
18
18
26
26
26
27
27
38
38
38
38
39
56
56
56
56
56
80
80
80
81
109
109
133
133
133
134
169
169
169
169
170
199
199
199
199
199
199
:
Bound
Solution
8
© 2013 Fair Isaac Corporation.
Local search heuristic options
HEURTHREADS
Specify number of threads for heuristics on the root.
HEURSEARCHROOTSELECT
HEURSEARCHTREESELECT
Select additional local search heuristics
HEURSEARCHFREQ
How frequently to run local search heuristics in the tree.
HEURSEARCHEFFORT
Adjust overall effort level in local search heuristics.
9
© 2013 Fair Isaac Corporation.
Local search heuristic options (2)
HEURSEARCHROOTSELECT/
HEURSEARCHTREESELECT
Bits control which local search heuristics to use. All based on solving
reduced MIPs.
Bit
Heuristic
1 Default
Sets up a fairly large MIP and solves it. As simple as it gets.
2
Randomized, repeatable heuristic. Focused around LP relaxation.
3
Randomized, repeatable heuristic. Focused around MIP solution.
» Proximity Search «
4
Combines multiple MIP solutions
5
Local search on infeasible/partial user solutions.
Heuristics help little on time to optimality (~25% average) ⇒ most
expensive heuristics off by default.
10
© 2013 Fair Isaac Corporation.
Repeating root cutting/heuristics
» Set MAXNODE=-1 to stop after
cutting but before branching.
» Call MIPOPTIMIZE again to
repeat cutting and heuristics!
» Useful for customizing:
» Ordering of cut rounds.
» Ordering of cuts vs. heuristics.
» Repetitions of heuristics.
» Example: Local search heuristics
can work better before cutting.
Use ROOTPRESOLVE=1 as a
cheap way to repeat search
heuristics once.
11
© 2013 Fair Isaac Corporation.
Default:
Starting root cutting & heuristics
Its Type
1 K
2 K
3 K
4 K
5 K
6 K
7 K
8 K
9 K
10 K
11 K
12 K
13 K
14 K
15 K
16 K
17 K
Heuristic
Heuristic
Heuristic
Heuristic
BestSoln
BestBound
55581.55251
55609.06206
55624.34677
55632.25340
55643.40177
55661.50597
55668.08555
55670.94873
55671.98606
55672.31507
55672.96342
55672.96650
55672.97482
55672.99570
55673.02173
55673.15323
55673.15323
search started
search stopped
started
complete
Sols
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Add
28
12
15
34
37
83
61
34
27
15
9
8
7
12
11
4
0
Del
0
16
10
14
31
36
73
56
33
24
10
9
8
6
11
9
6
Gap
GInf
289
293
275
299
291
300
287
288
291
262
253
316
251
318
296
299
254
Time
0
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
Disabling cutting in first pass:
Starting root cutting & heuristics
Its Type
BestSoln
BestBound
Sols
Heuristic search started
Heuristic search stopped
Heuristic started
Heuristic complete
+
56761.00000 55535.43639
1
*** Maximum nodes ***
Time: 2
[xpress miplib2003] covercuts=-1
[xpress miplib2003] gomcuts=-1
[xpress miplib2003] global
Add
Del
Gap
GInf
Time
2.16%
0
2
Gap
2.08%
2.01%
1.99%
1.97%
1.93%
1.88%
1.88%
1.87%
1.87%
1.87%
1.87%
GInf
289
262
252
281
297
288
307
322
321
321
320
Time
1
1
1
1
1
1
1
2
2
2
2
1.49%
1.46%
1.07%
0
0
0
2
2
2
Starting root cutting & heuristics
Its Type
1 K
2 K
3 K
4 K
5 K
6 K
7 K
8 K
9 K
10 K
11 K
Heuristic
+
+
+
Heuristic
Heuristic
Heuristic
BestSoln
BestBound
56761.00000 55582.45954
56761.00000 55620.57050
56761.00000 55631.76334
56761.00000 55641.69105
56761.00000 55668.04467
56761.00000 55692.00769
56761.00000 55696.14654
56761.00000 55698.17200
56761.00000 55698.22850
56761.00000 55698.23488
56761.00000 55698.23488
search started
56539.00000 55698.23488
56524.00000 55698.23488
56302.00000 55698.23488
search stopped
started
complete
Sols
1
1
1
1
1
1
1
1
1
1
1
2
3
4
Add
20
18
13
25
16
108
56
47
4
4
0
Del
0
8
16
12
23
13
98
46
40
3
4
Repeating root cutting/heuristics (2)
» Default root solve:
» Up to 20 rounds of cuts.
» Diving heuristics.
» One local search heuristic.
Not always enough
⇒ use MAXNODE=-1 to do
more
Starting root cutting & heuristics
Its Type
BestSoln
BestBound
1 K
-114264.3168
2 K
-113157.4219
3 K
-112684.3327
4 K
-112668.5777
5 K
-112663.6056
6 K
-112630.2671
7 K
-112617.8155
8 K
-112548.0085
9 K
-112504.1729
10 K
-112492.6127
11 K
-112457.1183
12 K
-112424.8480
13 K
-112325.2000
14 K
-112239.7084
15 K
-112128.4871
16 K
-112001.1721
17 K
-111952.8082
18 K
-111867.5766
19 K
-111667.7201
20 K
-111435.4119
21 G
-111247.3776
22 G
-110978.2828
23 G
-110962.8408
Heuristic search started
Heuristic search stopped
Sols
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Add
530
364
382
302
324
299
77
81
81
30
63
67
236
173
21
201
196
453
377
140
96
80
187
Del
0
501
344
371
286
312
288
86
80
78
32
59
69
230
166
24
203
208
448
486
24
103
266
Gap
GInf
273
265
313
318
354
331
329
332
350
295
331
316
371
388
357
380
299
326
341
312
465
343
441
Time
3
3
4
4
4
4
4
5
5
5
5
5
5
5
5
5
6
6
6
6
6
6
7
Bound
12
© 2013 Fair Isaac Corporation.
Repeating root cutting/heuristics (3)
Repeatedly run:
» 2 cut rounds
» Local search heuristic
Starting root cutting & heuristics
Its Type
BestSoln
BestBound
1 K
-114275.7468
2 K
-113420.8103
Heuristic search started
Heuristic search stopped
Sols
0
0
Add
456
401
Del
0
793
Gap
GInf
273
367
Time
3
3
Del
2
539
Gap
GInf
411
244
Time
1
1
Del
8
427
Gap
GInf
328
352
Time
0
0
Cuts in the matrix
: 64
Cut elements in the matrix : 1510
*** Maximum nodes ***
Time: 4
*** Search unfinished ***
Time: 4
Number of integer feasible solutions found is 0
Best bound is -113420.8103
Starting root cutting & heuristics
Use Optimizer commands:
> COVERCUTS=2
> GOMCUTS=0
> MAXNODE=-1
> MIPOPTIMIZE
> MIPOPTIMIZE
> MIPOPTIMIZE
> MIPOPTIMIZE
…
13
© 2013 Fair Isaac Corporation.
Its Type
BestSoln
BestBound
1 K
-113158.2489
2 K
-112919.5524
Heuristic search started
Heuristic search stopped
Sols
0
0
Add
376
185
Cuts in the matrix
: 84
Cut elements in the matrix : 2010
*** Maximum nodes ***
Time: 3
*** Search unfinished ***
Time: 3
Number of integer feasible solutions found is 0
Best bound is -112919.5524
Starting root cutting & heuristics
Its Type
BestSoln
BestBound
1 K
-112902.6920
2 K
-112885.4780
Heuristic search started
Heuristic search stopped
Sols
0
0
Add
208
260
.
.
.
Bound
Solution
Tuning tree search
Its Type
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K
G
G
BestSoln
-873269.3080
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
BestBound
259919.9722
259919.9722
222010.4124
212181.8743
206933.6130
202409.6647
201321.2042
199328.4627
197905.0897
195326.0936
193235.9371
191875.8302
190856.1540
190018.5124
189220.0989
188576.1382
188084.7881
187549.7688
186905.5866
186566.3344
186175.9806
185841.7512
185698.5214
185592.8059
Sols
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
Node
10
100
1000
1500
2000
2480
2500
3000
3500
4000
4500
5000
5308
5500
6000
6500
7000
7500
BestSoln
85721.42547
85721.42547
85721.42547
85721.42547
85721.42547
129996.4670
129996.4670
129996.4670
129996.4670
129996.4670
129996.4670
129996.4670
132640.9433
132640.9433
132640.9433
132640.9433
132640.9433
132640.9433
BestBound
184884.0100
184798.2873
184798.2873
184798.2873
184798.2873
184798.2873
184798.2873
184771.2723
184771.2723
184771.2723
184771.2723
184771.2723
184771.2723
184771.2723
184771.2723
184702.2109
184702.2109
184702.2109
+
+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
» Large number of fractionals ⇒
expensive strong branching.
» Alternative to lots of heuristics ⇒
tune for quick branching.
» Reduce cutting
» Disable strong branching
» Use quick branch selection.
» Solutions will be found quicker,
but bound is usually worse.
» First dive 40% of default time.
+
+
Add
Del
0
3675
3628
3612
3628
3474
3403
3231
3155
3041
3000
2906
2850
2822
2769
2676
2669
2639
2563
4892
191
4576
Gap
1.1e+06
203.21%
158.99%
147.52%
141.40%
136.12%
134.86%
132.53%
130.87%
127.86%
125.42%
123.84%
122.65%
121.67%
120.74%
119.99%
119.41%
118.79%
118.04%
117.64%
117.19%
116.80%
116.63%
116.51%
GInf
0
0
9385
9381
8910
8683
8817
8564
8541
8435
8274
8228
8271
8145
8144
8134
8154
8180
8058
8008
8030
8023
7957
7950
Time
4
6
7
9
11
12
14
15
17
19
20
22
24
26
28
30
31
33
35
36
39
41
42
43
5644
4856
4365
4064
3889
3723
3595
3450
3332
3215
3129
3040
2964
2907
2852
2782
2737
2697
2644
2609
2576
2514
Sols Active
2
9
2
11
2
11
2
11
2
11
3
11
3
2307
3
1964
3
1964
3
1964
3
1964
3
1964
4
1964
4
4147
4
3647
4
3251
4
3251
4
3251
Depth
3
92
983
1459
1941
2396
2126
161
656
1149
1631
2126
2424
1829
2070
108
605
1088
Gap
115.68%
115.58%
115.58%
115.58%
115.58%
42.16%
42.16%
42.14%
42.14%
42.14%
42.14%
42.14%
39.30%
39.30%
39.30%
39.25%
39.25%
39.25%
GInf
7717
6146
2431
1465
789
0
582
5582
3347
2091
1211
551
0
983
624
6013
3555
2101
Time
63
133
312
369
421
473
473
561
658
739
796
852
885
885
885
957
1052
1132
Bound
Solution
14
© 2013 Fair Isaac Corporation.
Tuning tree search options
Variable selection based on pseudo costs, initialized using strong
branching.
Basic variable selection procedure:
1. Pre-filter candidate set using very cheap estimates.
SBSELECT: determines filter size.
2. Evaluate and rank selected subset carefully.
SBESTIMATE: local ranking function
3. Initialize pseudo costs using strong branching, as required.
SBBEST: Number of variables to strong branch on.
SBITERLIMIT: LP iteration limit for strong branching.
4. Select highest ranked candidate using pseudo costs and local rank.
SBEFFORT: Adjustment of overall process.
Setting SBBEST/SBITERLIMIT=0 disables step 3.
15
© 2013 Fair Isaac Corporation.
Tuning tree search options (2)
SBESTIMATE options
Value
Method
1
Transformed distance measure. Expensive
2
Simplex tableau based. Expensive
3
Probing/logical implications
4
Probing/logical implications
5
Simple row change measure. Very quick
6
Row influence measure. Very quick
» Optimizer automatically attempts to use the best function for a
given problem.
» Try disabling strong branching and test each SBESTIMATE
method in turn. Often improves bound raising when pseudo
costs not working well.
» Use SBBEST=0 and option 5/6 for fast dives.
16
© 2013 Fair Isaac Corporation.
Big-M and numerical considerations
» Dangers of small numbers
» Dangers of large numbers
» Getting the expected answer
17
© 2013 Fair Isaac Corporation.
A “bad” example
𝑚𝑖𝑛
𝑠. 𝑡.
−𝑥1 + 𝑏
𝑥1 ≤ 𝑥2
𝑥2 ≤ 108 𝑏
𝑏 𝑏𝑖𝑛𝑎𝑟𝑦
Scaling attempts to make largest element 1 in any row or column.
𝑚𝑖𝑛
𝑠. 𝑡.
−𝑥1 + 𝑏
𝑥1 ≤ 𝑥2
10−8 𝑥2 ≤ 𝑏
𝑏 𝑏𝑖𝑛𝑎𝑟𝑦
Introduces element of 10−8 . Too small to pivot on ⇒ unbounded.
18
© 2013 Fair Isaac Corporation.
Big-M and tolerances
𝑥 ≤𝑀∙𝑏
1/𝑀 ∙ 𝑥 ≤ 𝑏
original
scaled
Tolerances:
»
MIPTOL (𝜀𝑀𝐼𝑃 = 5 ∙ 10−6 )
»
FEASTOL (𝜀𝐹𝐸𝐴𝑆 = 10−6 )
Valid solution: Any that satisfies constraints within tolerances
“True” constraint: 1/𝑀 ∙ 𝑥 ≤
With 𝑏 ≅ 0:
0 + 𝜀𝑀𝐼𝑃 , 1 −𝜀𝑀𝐼𝑃 + 𝜀𝐹𝐸𝐴𝑆
𝑥 ≤ 𝑀(𝜀𝑀𝐼𝑃 + 𝜀𝐹𝐸𝐴𝑆 )
Example: 𝑀 = 108 ⇒ 𝑥 ≤ 108 ∙ 6 ∙ 10−6 = 600 is feasible
19
© 2013 Fair Isaac Corporation.
106 rule
double precision floating point “budget”
errors
𝜀𝐹𝐸𝐴𝑆𝑇𝑂𝐿
20
0
» Largest value:
106
» Smallest value:
10−6
» Largest row/column ratio:
106
© 2013 Fair Isaac Corporation.
106
Options
» Presolve works on unscaled problem ⇒ scale it:
setparam(“XPRS_SCALING”, getparam(“XPRS_SCALING”)+512)
» Instead of big-M:
use indicators:
𝑎𝑥 ≤ 𝑏 + 𝑀𝑦
𝑦 = 0 ⇒ 𝑎𝑥 ≤ 𝑏
In Mosel:
indicator(-1, y, a*x <= b)
» Use indicators whenever big-M is not known or is not small
21
© 2013 Fair Isaac Corporation.
THANK YOU
Michael Perregaard
[email protected]
July 4, 2013
This presentation is provided for the recipient only and cannot be
reproduced or shared without Fair Isaac Corporation's express consent.
22
© 2013 Fair Isaac Corporation.