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.
© Copyright 2026 Paperzz