diff --git a/.~lock.trainees.csv# b/.~lock.trainees.csv# deleted file mode 100644 index 082f3b6..0000000 --- a/.~lock.trainees.csv# +++ /dev/null @@ -1 +0,0 @@ -,ross,maverick.fritz.box,22.05.2020 22:23,file:///home/ross/.config/libreoffice/4; \ No newline at end of file diff --git a/PFEco_ZOP37987XU_en-GB.pdf b/PFEco_ZOP37987XU_en-GB.pdf new file mode 100644 index 0000000..dd60d15 Binary files /dev/null and b/PFEco_ZOP37987XU_en-GB.pdf differ diff --git a/current.log b/current.log index 4313bdf..a17063b 100644 --- a/current.log +++ b/current.log @@ -1,156 +1,143 @@ -Solver command line: ['/usr/bin/cbc', '-seconds', '10200', '-allow', '2000', '-printingOptions', 'all', '-import', '/tmp/tmpkbbun619.pyomo.lp', '-stat=1', '-solve', '-solu', '/tmp/tmpkbbun619.pyomo.soln'] +Solver command line: ['/usr/bin/cbc', '-seconds', '10200', '-allow', '2000', '-printingOptions', 'all', '-import', '/tmp/tmpm6w5veoc.pyomo.lp', '-stat=1', '-solve', '-solu', '/tmp/tmpm6w5veoc.pyomo.soln'] Welcome to the CBC MILP Solver Version: 2.9.9 Build Date: Aug 7 2019 -command line - /usr/bin/cbc -seconds 10200 -allow 2000 -printingOptions all -import /tmp/tmpkbbun619.pyomo.lp -stat=1 -solve -solu /tmp/tmpkbbun619.pyomo.soln (default strategy 1) +command line - /usr/bin/cbc -seconds 10200 -allow 2000 -printingOptions all -import /tmp/tmpm6w5veoc.pyomo.lp -stat=1 -solve -solu /tmp/tmpm6w5veoc.pyomo.soln (default strategy 1) seconds was changed from 1e+100 to 10200 allowableGap was changed from 1e-10 to 2000 Option for printingOptions changed from normal to all -Presolve 51518 (-72663) rows, 21211 (-76730) columns and 209445 (-787248) elements +Presolve is modifying 45 integer bounds and re-presolving +Presolve 91797 (-157476) rows, 38070 (-156947) columns and 411077 (-1586052) elements Statistics for presolved model -Original problem has 97028 integers (96096 of which binary) -Presolved problem has 20875 integers (20459 of which binary) -==== 19514 zero objective 4 different -19514 variables have objective of 0 -1233 variables have objective of 1 +Original problem has 194104 integers (192192 of which binary) +Presolved problem has 37736 integers (36799 of which binary) +==== 34972 zero objective 5 different +34972 variables have objective of 0 +2173 variables have objective of 1 48 variables have objective of 10 -416 variables have objective of 20 -==== absolute objective values 4 different -19514 variables have objective of 0 -1233 variables have objective of 1 +832 variables have objective of 20 +45 variables have objective of 1000 +==== absolute objective values 5 different +34972 variables have objective of 0 +2173 variables have objective of 1 48 variables have objective of 10 -416 variables have objective of 20 -==== for integers 19322 zero objective 3 different -19322 variables have objective of 0 -1137 variables have objective of 1 -416 variables have objective of 20 -==== for integers absolute objective values 3 different -19322 variables have objective of 0 -1137 variables have objective of 1 -416 variables have objective of 20 +832 variables have objective of 20 +45 variables have objective of 1000 +==== for integers 34782 zero objective 4 different +34782 variables have objective of 0 +2077 variables have objective of 1 +832 variables have objective of 20 +45 variables have objective of 1000 +==== for integers absolute objective values 4 different +34782 variables have objective of 0 +2077 variables have objective of 1 +832 variables have objective of 20 +45 variables have objective of 1000 ===== end objective counts -Problem has 51518 rows, 21211 columns (1697 with objective) and 209445 elements -There are 1649 singletons with objective +Problem has 91797 rows, 38070 columns (3098 with objective) and 411077 elements +There are 3003 singletons with objective Column breakdown: -752 of type 0.0->inf, 0 of type 0.0->up, 0 of type lo->inf, +1226 of type 0.0->inf, 45 of type 0.0->up, 0 of type lo->inf, 0 of type lo->up, 0 of type free, 0 of type fixed, -0 of type -inf->0.0, 0 of type -inf->up, 20459 of type 0.0->1.0 +0 of type -inf->0.0, 0 of type -inf->up, 36799 of type 0.0->1.0 Row breakdown: -2273 of type E 0.0, 676 of type E 1.0, 208 of type E -1.0, -378 of type E other, 0 of type G 0.0, 52 of type G 1.0, -43 of type G other, 3411 of type L 0.0, 41843 of type L 1.0, -2634 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, +4203 of type E 0.0, 1352 of type E 1.0, 415 of type E -1.0, +612 of type E other, 0 of type G 0.0, 104 of type G 1.0, +147 of type G other, 6233 of type L 0.0, 74257 of type L 1.0, +4474 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, 0 of type Free -Continuous objective value is 2592.5 - 16.65 seconds -Cgl0002I 71445 variables fixed -Cgl0003I 0 fixed, 416 tightened bounds, 34673 strengthened rows, 40175 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 7041 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 2803 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 708 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 2 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 1 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 1 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 1 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 1 strengthened rows, 0 substitutions -Cgl0004I processed model has 18110 rows, 13274 columns (12938 integer (12522 of which binary)) and 109434 elements -Cbc0038I Initial state - 1221 integers unsatisfied sum - 351.402 -Cbc0038I Pass 1: (30.58 seconds) suminf. 155.95883 (336) obj. 5432.65 iterations 6635 -Cbc0038I Pass 2: (30.65 seconds) suminf. 142.79755 (306) obj. 5456.2 iterations 563 -Cbc0038I Pass 3: (30.69 seconds) suminf. 137.30963 (290) obj. 5386.89 iterations 259 -Cbc0038I Pass 4: (30.72 seconds) suminf. 137.30963 (290) obj. 5386.89 iterations 1 -Cbc0038I Pass 5: (30.75 seconds) suminf. 122.80963 (261) obj. 5401.39 iterations 61 -Cbc0038I Pass 6: (30.78 seconds) suminf. 109.80963 (235) obj. 5414.39 iterations 52 -Cbc0038I Pass 7: (30.82 seconds) suminf. 99.30963 (214) obj. 5424.89 iterations 76 -Cbc0038I Pass 8: (30.85 seconds) suminf. 94.30963 (204) obj. 5429.89 iterations 23 -Cbc0038I Pass 9: (30.88 seconds) suminf. 85.30963 (186) obj. 5438.89 iterations 44 -Cbc0038I Pass 10: (30.91 seconds) suminf. 78.30963 (172) obj. 5445.89 iterations 37 -Cbc0038I Pass 11: (30.94 seconds) suminf. 64.21464 (142) obj. 5454.39 iterations 83 -Cbc0038I Pass 12: (30.97 seconds) suminf. 63.71079 (139) obj. 5454.39 iterations 34 -Cbc0038I Pass 13: (31.00 seconds) suminf. 54.21079 (120) obj. 5454.89 iterations 81 -Cbc0038I Pass 14: (31.03 seconds) suminf. 54.21079 (120) obj. 5454.89 iterations 19 -Cbc0038I Pass 15: (31.07 seconds) suminf. 53.21079 (118) obj. 5455.39 iterations 30 -Cbc0038I Pass 16: (31.10 seconds) suminf. 53.21079 (118) obj. 5455.39 iterations 33 -Cbc0038I Pass 17: (31.13 seconds) suminf. 51.71079 (115) obj. 5455.39 iterations 30 -Cbc0038I Pass 18: (31.16 seconds) suminf. 51.71079 (115) obj. 5455.39 iterations 32 -Cbc0038I Pass 19: (31.19 seconds) suminf. 48.71079 (109) obj. 5455.39 iterations 67 -Cbc0038I Pass 20: (31.22 seconds) suminf. 48.71079 (109) obj. 5455.39 iterations 24 -Cbc0038I Pass 21: (31.25 seconds) suminf. 46.21079 (104) obj. 5455.39 iterations 47 -Cbc0038I Pass 22: (31.29 seconds) suminf. 46.21079 (104) obj. 5455.39 iterations 38 -Cbc0038I Pass 23: (31.32 seconds) suminf. 46.21079 (104) obj. 5455.39 iterations 33 -Cbc0038I Pass 24: (31.39 seconds) suminf. 34.01332 (85) obj. 6407.55 iterations 843 -Cbc0038I Pass 25: (31.45 seconds) suminf. 33.38400 (83) obj. 6693.38 iterations 513 -Cbc0038I Pass 26: (31.46 seconds) suminf. 33.38400 (83) obj. 6693.38 iterations 0 -Cbc0038I Pass 27: (31.49 seconds) suminf. 31.78323 (80) obj. 6694.38 iterations 61 -Cbc0038I Pass 28: (31.52 seconds) suminf. 31.78323 (80) obj. 6694.38 iterations 28 -Cbc0038I Pass 29: (31.55 seconds) suminf. 31.78323 (80) obj. 6694.38 iterations 6 -Cbc0038I Pass 30: (31.58 seconds) suminf. 31.78323 (80) obj. 6694.38 iterations 24 +Continuous objective value is 88705 - 311.62 seconds +Cgl0002I 146180 variables fixed +Cgl0003I 0 fixed, 886 tightened bounds, 60816 strengthened rows, 72653 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 12803 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 5063 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 1246 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 124 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 39 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 12 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions +Cgl0004I processed model has 32168 rows, 23613 columns (23279 integer (22357 of which binary)) and 207354 elements +Cbc0038I Initial state - 2853 integers unsatisfied sum - 812.953 +Cbc0038I Pass 1: (614.50 seconds) suminf. 303.71315 (784) obj. 94457.9 iterations 25547 +Cbc0038I Pass 2: (616.54 seconds) suminf. 246.96572 (624) obj. 94464.9 iterations 5046 +Cbc0038I Pass 3: (617.40 seconds) suminf. 229.71702 (542) obj. 94934.5 iterations 2529 +Cbc0038I Pass 4: (617.60 seconds) suminf. 221.76593 (533) obj. 94952.5 iterations 624 +Cbc0038I Pass 5: (617.66 seconds) suminf. 220.47567 (528) obj. 95079.9 iterations 38 +Cbc0038I Pass 6: (617.74 seconds) suminf. 216.81379 (520) obj. 95225.9 iterations 184 +Cbc0038I Pass 7: (617.78 seconds) suminf. 216.31379 (519) obj. 95226.4 iterations 9 +Cbc0038I Pass 8: (617.83 seconds) suminf. 208.31379 (503) obj. 95234.4 iterations 32 +Cbc0038I Pass 9: (617.88 seconds) suminf. 196.31379 (479) obj. 95246.4 iterations 44 +Cbc0038I Pass 10: (617.93 seconds) suminf. 187.31379 (461) obj. 95255.4 iterations 30 +Cbc0038I Pass 11: (617.98 seconds) suminf. 177.31379 (441) obj. 95265.4 iterations 40 +Cbc0038I Pass 12: (618.03 seconds) suminf. 172.31379 (431) obj. 95270.4 iterations 16 +Cbc0038I Pass 13: (618.08 seconds) suminf. 161.31379 (409) obj. 95281.4 iterations 43 +Cbc0038I Pass 14: (618.12 seconds) suminf. 152.31379 (391) obj. 95290.4 iterations 28 +Cbc0038I Pass 15: (618.17 seconds) suminf. 144.31379 (375) obj. 95298.4 iterations 27 +Cbc0038I Pass 16: (618.22 seconds) suminf. 139.31379 (365) obj. 95303.4 iterations 23 +Cbc0038I Pass 17: (618.27 seconds) suminf. 138.81379 (364) obj. 95303.9 iterations 1 +Cbc0038I Pass 18: (618.32 seconds) suminf. 133.81379 (354) obj. 95308.9 iterations 20 +Cbc0038I Pass 19: (618.37 seconds) suminf. 122.31379 (331) obj. 95316.9 iterations 60 +Cbc0038I Pass 20: (618.42 seconds) suminf. 121.81379 (330) obj. 95317.4 iterations 7 +Cbc0038I Pass 21: (618.51 seconds) suminf. 117.02460 (316) obj. 95348.4 iterations 201 +Cbc0038I Pass 22: (618.57 seconds) suminf. 116.96789 (308) obj. 95347.4 iterations 38 +Cbc0038I Pass 23: (618.79 seconds) suminf. 115.01019 (313) obj. 95358.3 iterations 575 +Cbc0038I Pass 24: (618.88 seconds) suminf. 114.72221 (315) obj. 95351.2 iterations 181 +Cbc0038I Pass 25: (618.93 seconds) suminf. 108.72221 (303) obj. 95357.2 iterations 26 +Cbc0038I Pass 26: (618.98 seconds) suminf. 108.72221 (303) obj. 95357.2 iterations 13 +Cbc0038I Pass 27: (619.03 seconds) suminf. 99.72221 (285) obj. 95366.2 iterations 36 +Cbc0038I Pass 28: (619.07 seconds) suminf. 99.72221 (285) obj. 95366.2 iterations 8 +Cbc0038I Pass 29: (619.13 seconds) suminf. 90.22221 (266) obj. 95375.7 iterations 58 +Cbc0038I Pass 30: (619.18 seconds) suminf. 90.22221 (266) obj. 95375.7 iterations 11 Cbc0038I No solution found this major pass -Cbc0038I Before mini branch and bound, 11535 integers at bound fixed and 115 continuous of which 24 were internal integer and 0 internal continuous -Cbc0038I Mini branch and bound did not improve solution (31.61 seconds) -Cbc0038I After 31.61 seconds - Feasibility pump exiting - took 2.82 seconds -Cbc0031I 483 added rows had average density of 39.521739 -Cbc0013I At root node, 483 cuts changed objective from 2690 to 3117.1725 in 20 passes -Cbc0014I Cut generator 0 (Probing) - 5548 row cuts average 2.0 elements, 0 column cuts (0 active) in 8.493 seconds - new frequency is 1 -Cbc0014I Cut generator 1 (Gomory) - 2183 row cuts average 97.8 elements, 0 column cuts (0 active) in 6.516 seconds - new frequency is 1 -Cbc0014I Cut generator 2 (Knapsack) - 4111 row cuts average 2.2 elements, 0 column cuts (0 active) in 0.425 seconds - new frequency is 1 -Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.432 seconds - new frequency is -100 -Cbc0014I Cut generator 4 (MixedIntegerRounding2) - 2790 row cuts average 23.5 elements, 0 column cuts (0 active) in 0.577 seconds - new frequency is 1 -Cbc0014I Cut generator 5 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.116 seconds - new frequency is -100 -Cbc0014I Cut generator 6 (TwoMirCuts) - 2887 row cuts average 32.5 elements, 0 column cuts (0 active) in 4.257 seconds - new frequency is 1 -Cbc0010I After 0 nodes, 1 on tree, 1e+50 best solution, best possible 3117.1725 (161.21 seconds) -Cbc0010I After 100 nodes, 60 on tree, 1e+50 best solution, best possible 3117.1725 (568.76 seconds) -Cbc0010I After 200 nodes, 111 on tree, 1e+50 best solution, best possible 3117.1725 (847.95 seconds) -Cbc0010I After 300 nodes, 163 on tree, 1e+50 best solution, best possible 3117.1725 (1116.36 seconds) -Cbc0010I After 400 nodes, 215 on tree, 1e+50 best solution, best possible 3117.1725 (1357.97 seconds) -Cbc0010I After 500 nodes, 266 on tree, 1e+50 best solution, best possible 3117.1725 (1525.26 seconds) -Cbc0010I After 600 nodes, 316 on tree, 1e+50 best solution, best possible 3117.1725 (1671.45 seconds) -Cbc0010I After 700 nodes, 367 on tree, 1e+50 best solution, best possible 3117.1725 (1874.27 seconds) -Cbc0010I After 800 nodes, 419 on tree, 1e+50 best solution, best possible 3117.1725 (2033.39 seconds) -Cbc0010I After 900 nodes, 466 on tree, 1e+50 best solution, best possible 3117.1725 (2189.03 seconds) -Cbc0010I After 1000 nodes, 518 on tree, 1e+50 best solution, best possible 3117.1725 (2327.79 seconds) -Cbc0010I After 1100 nodes, 616 on tree, 1e+50 best solution, best possible 3126.9955 (2600.73 seconds) -Cbc0010I After 1200 nodes, 716 on tree, 1e+50 best solution, best possible 3126.9955 (2639.75 seconds) -Cbc0010I After 1300 nodes, 816 on tree, 1e+50 best solution, best possible 3126.9955 (2703.37 seconds) -Cbc0010I After 1400 nodes, 916 on tree, 1e+50 best solution, best possible 3126.9955 (2795.95 seconds) -Cbc0010I After 1500 nodes, 1016 on tree, 1e+50 best solution, best possible 3126.9955 (2869.50 seconds) -Cbc0010I After 1600 nodes, 1116 on tree, 1e+50 best solution, best possible 3126.9955 (2933.50 seconds) -Cbc0010I After 1700 nodes, 1216 on tree, 1e+50 best solution, best possible 3126.9955 (2989.15 seconds) -Cbc0010I After 1800 nodes, 1316 on tree, 1e+50 best solution, best possible 3126.9955 (3039.58 seconds) -Cbc0010I After 1900 nodes, 1416 on tree, 1e+50 best solution, best possible 3126.9955 (3051.57 seconds) -Cbc0010I After 2000 nodes, 1516 on tree, 1e+50 best solution, best possible 3126.9955 (3075.06 seconds) -Cbc0010I After 2100 nodes, 1616 on tree, 1e+50 best solution, best possible 3126.9955 (3088.92 seconds) -Cbc0010I After 2200 nodes, 1716 on tree, 1e+50 best solution, best possible 3126.9955 (3129.25 seconds) -Cbc0004I Integer solution of 3274.7611 found after 1698960 iterations and 2300 nodes (3165.29 seconds) -Cbc0010I After 2300 nodes, 1812 on tree, 3274.7611 best solution, best possible 3126.9955 (3165.30 seconds) -Cbc0038I Full problem 18110 rows 13274 columns, reduced to 2471 rows 1761 columns -Cbc0011I Exiting as integer gap of 147.76564 less than 2000 or 0%% -Cbc0001I Search completed - best objective 3274.761142346083, took 1699719 iterations and 2301 nodes (3188.36 seconds) -Cbc0032I Strong branching done 20596 times (1700881 iterations), fathomed 0 nodes and fixed 0 variables -Cbc0035I Maximum depth 1298, 0 variables fixed on reduced cost -Cuts at root node changed objective from 2690 to 3117.17 -Probing was tried 2476 times and created 106374 cuts of which 0 were active after adding rounds of cuts (31.229 seconds) -Gomory was tried 2476 times and created 6574 cuts of which 0 were active after adding rounds of cuts (116.921 seconds) -Knapsack was tried 2476 times and created 68190 cuts of which 0 were active after adding rounds of cuts (36.017 seconds) -Clique was tried 20 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.432 seconds) -MixedIntegerRounding2 was tried 2476 times and created 30603 cuts of which 0 were active after adding rounds of cuts (48.780 seconds) -FlowCover was tried 20 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.116 seconds) -TwoMirCuts was tried 2476 times and created 22706 cuts of which 0 were active after adding rounds of cuts (28.675 seconds) -ImplicationCuts was tried 65 times and created 19542 cuts of which 0 were active after adding rounds of cuts (0.166 seconds) +Cbc0038I Before mini branch and bound, 20085 integers at bound fixed and 96 continuous of which 58 were internal integer and 0 internal continuous +Cbc0038I Mini branch and bound did not improve solution (619.23 seconds) +Cbc0038I After 619.24 seconds - Feasibility pump exiting - took 27.95 seconds +Cbc0031I 1749 added rows had average density of 22.426529 +Cbc0013I At root node, 1749 cuts changed objective from 88900 to 89247.95 in 20 passes +Cbc0014I Cut generator 0 (Probing) - 11218 row cuts average 2.0 elements, 0 column cuts (665 active) in 5.055 seconds - new frequency is 1 +Cbc0014I Cut generator 1 (Gomory) - 7011 row cuts average 41.5 elements, 0 column cuts (0 active) in 33.366 seconds - new frequency is 1 +Cbc0014I Cut generator 2 (Knapsack) - 8333 row cuts average 2.3 elements, 0 column cuts (0 active) in 1.082 seconds - new frequency is 1 +Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 3.225 seconds - new frequency is -100 +Cbc0014I Cut generator 4 (MixedIntegerRounding2) - 4621 row cuts average 19.4 elements, 0 column cuts (0 active) in 1.674 seconds - new frequency is 1 +Cbc0014I Cut generator 5 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.253 seconds - new frequency is -100 +Cbc0014I Cut generator 6 (TwoMirCuts) - 6583 row cuts average 23.1 elements, 0 column cuts (0 active) in 28.714 seconds - new frequency is -100 +Cbc0010I After 0 nodes, 1 on tree, 1e+50 best solution, best possible 89247.95 (2119.82 seconds) +Cbc0010I After 100 nodes, 66 on tree, 1e+50 best solution, best possible 89247.95 (3253.27 seconds) +Cbc0010I After 200 nodes, 120 on tree, 1e+50 best solution, best possible 89247.95 (4380.79 seconds) +Cbc0010I After 300 nodes, 171 on tree, 1e+50 best solution, best possible 89247.95 (5166.78 seconds) +Cbc0010I After 400 nodes, 221 on tree, 1e+50 best solution, best possible 89247.95 (6169.85 seconds) +Cbc0010I After 500 nodes, 274 on tree, 1e+50 best solution, best possible 89247.95 (7003.81 seconds) +Cbc0010I After 600 nodes, 323 on tree, 1e+50 best solution, best possible 89247.95 (7792.60 seconds) +Cbc0010I After 700 nodes, 376 on tree, 1e+50 best solution, best possible 89247.95 (8625.47 seconds) +Cbc0010I After 800 nodes, 426 on tree, 1e+50 best solution, best possible 89247.95 (9424.74 seconds) +Cbc0020I Exiting on maximum time +Cbc0005I Partial search - best objective 1e+50 (best possible 89247.95), took 3002327 iterations and 861 nodes (9924.36 seconds) +Cbc0032I Strong branching done 18012 times (1649417 iterations), fathomed 0 nodes and fixed 0 variables +Cbc0035I Maximum depth 151, 0 variables fixed on reduced cost +Cuts at root node changed objective from 88900 to 89247.9 +Probing was tried 530 times and created 44659 cuts of which 665 were active after adding rounds of cuts (14.113 seconds) +Gomory was tried 530 times and created 12643 cuts of which 0 were active after adding rounds of cuts (121.794 seconds) +Knapsack was tried 530 times and created 29869 cuts of which 0 were active after adding rounds of cuts (14.460 seconds) +Clique was tried 20 times and created 0 cuts of which 0 were active after adding rounds of cuts (3.225 seconds) +MixedIntegerRounding2 was tried 530 times and created 40532 cuts of which 0 were active after adding rounds of cuts (25.301 seconds) +FlowCover was tried 20 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.253 seconds) +TwoMirCuts was tried 20 times and created 6583 cuts of which 0 were active after adding rounds of cuts (28.714 seconds) +ImplicationCuts was tried 35 times and created 7645 cuts of which 0 were active after adding rounds of cuts (0.112 seconds) -Result - Optimal solution found (within gap tolerance) +Result - Stopped on time limit -Objective value: 3274.76114235 -Lower bound: 3126.996 -Gap: 0.05 -Enumerated nodes: 2301 -Total iterations: 1699719 -Time (CPU seconds): 3189.68 -Time (Wallclock seconds): 3193.13 +No feasible solution found +Lower bound: 89247.950 +Enumerated nodes: 861 +Total iterations: 3002327 +Time (CPU seconds): 9924.39 +Time (Wallclock seconds): 17775.29 -Total time (CPU seconds): 3191.71 (Wallclock seconds): 3195.33 +Total time (CPU seconds): 9933.15 (Wallclock seconds): 17784.41 diff --git a/extended proc nights only.log b/extended proc nights only.log index aaf4c5d..edf1fa1 100644 --- a/extended proc nights only.log +++ b/extended proc nights only.log @@ -1,125 +1,126 @@ -Solver command line: ['/usr/bin/cbc', '-seconds', '10200', '-allow', '2000', '-printingOptions', 'all', '-import', '/tmp/tmpkbdsvsfl.pyomo.lp', '-stat=1', '-solve', '-solu', '/tmp/tmpkbdsvsfl.pyomo.soln'] +Solver command line: ['/usr/bin/cbc', '-seconds', '10200', '-allow', '2000', '-printingOptions', 'all', '-import', '/tmp/tmp0n10b5sx.pyomo.lp', '-stat=1', '-solve', '-solu', '/tmp/tmp0n10b5sx.pyomo.soln'] Welcome to the CBC MILP Solver Version: 2.9.9 Build Date: Aug 7 2019 -command line - /usr/bin/cbc -seconds 10200 -allow 2000 -printingOptions all -import /tmp/tmpkbdsvsfl.pyomo.lp -stat=1 -solve -solu /tmp/tmpkbdsvsfl.pyomo.soln (default strategy 1) +command line - /usr/bin/cbc -seconds 10200 -allow 2000 -printingOptions all -import /tmp/tmp0n10b5sx.pyomo.lp -stat=1 -solve -solu /tmp/tmp0n10b5sx.pyomo.soln (default strategy 1) seconds was changed from 1e+100 to 10200 allowableGap was changed from 1e-10 to 2000 Option for printingOptions changed from normal to all -Presolve 15576 (-101189) rows, 12120 (-10453) columns and 82539 (-204706) elements +Presolve 15737 (-101268) rows, 12164 (-10505) columns and 89244 (-198481) elements Statistics for presolved model -Original problem has 22044 integers (21216 of which binary) -Presolved problem has 11784 integers (11360 of which binary) -==== 11560 zero objective 4 different +Original problem has 22140 integers (21216 of which binary) +Presolved problem has 11828 integers (11360 of which binary) +==== 11560 zero objective 5 different 11560 variables have objective of 0 96 variables have objective of 1 48 variables have objective of 10 416 variables have objective of 20 -==== absolute objective values 4 different +44 variables have objective of 1000 +==== absolute objective values 5 different 11560 variables have objective of 0 96 variables have objective of 1 48 variables have objective of 10 416 variables have objective of 20 -==== for integers 11368 zero objective 2 different +44 variables have objective of 1000 +==== for integers 11368 zero objective 3 different 11368 variables have objective of 0 416 variables have objective of 20 -==== for integers absolute objective values 2 different +44 variables have objective of 1000 +==== for integers absolute objective values 3 different 11368 variables have objective of 0 416 variables have objective of 20 +44 variables have objective of 1000 ===== end objective counts -Problem has 15576 rows, 12120 columns (560 with objective) and 82539 elements +Problem has 15737 rows, 12164 columns (604 with objective) and 89244 elements There are 512 singletons with objective Column breakdown: -760 of type 0.0->inf, 0 of type 0.0->up, 0 of type lo->inf, +804 of type 0.0->inf, 0 of type 0.0->up, 0 of type lo->inf, 0 of type lo->up, 0 of type free, 0 of type fixed, 0 of type -inf->0.0, 0 of type -inf->up, 11360 of type 0.0->1.0 Row breakdown: 2281 of type E 0.0, 0 of type E 1.0, 208 of type E -1.0, 326 of type E other, 0 of type G 0.0, 52 of type G 1.0, -0 of type G other, 2270 of type L 0.0, 9030 of type L 1.0, -1409 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, +66 of type G other, 2270 of type L 0.0, 9030 of type L 1.0, +1504 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, 0 of type Free -Continuous objective value is 2560 - 9.87 seconds +Continuous objective value is 20560 - 4.75 seconds Cgl0002I 9517 variables fixed -Cgl0003I 0 fixed, 416 tightened bounds, 9800 strengthened rows, 49679 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 2540 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 1884 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 568 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 113 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 82 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 77 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 71 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 67 strengthened rows, 0 substitutions -Cgl0004I processed model has 3086 rows, 3046 columns (2710 integer (2294 of which binary)) and 25548 elements -Cbc0038I Initial state - 146 integers unsatisfied sum - 37.469 -Cbc0038I Pass 1: (11.59 seconds) suminf. 0.47173 (2) obj. 4275.76 iterations 590 -Cbc0038I Pass 2: (11.59 seconds) suminf. 0.47173 (2) obj. 4275.76 iterations 8 -Cbc0038I Pass 3: (11.60 seconds) suminf. 0.00000 (0) obj. 4323.8 iterations 9 -Cbc0038I Solution found of 4323.8 -Cbc0038I Relaxing continuous gives 3974.12 -Cbc0038I Cleaned solution of 3974.12 -Cbc0038I Before mini branch and bound, 2559 integers at bound fixed and 136 continuous of which 33 were internal integer and 0 internal continuous -Cbc0038I Full problem 3086 rows 3046 columns, reduced to 52 rows 49 columns -Cbc0038I Mini branch and bound did not improve solution (11.63 seconds) -Cbc0038I Freeing continuous variables gives a solution of 3974.12 -Cbc0038I Round again with cutoff of 3832.71 -Cbc0038I Pass 4: (11.66 seconds) suminf. 1.45488 (8) obj. 3832.71 iterations 29 -Cbc0038I Pass 5: (11.68 seconds) suminf. 0.64928 (9) obj. 3832.71 iterations 261 -Cbc0038I Pass 6: (11.69 seconds) suminf. 1.21829 (7) obj. 3832.71 iterations 255 -Cbc0038I Pass 7: (11.70 seconds) suminf. 1.09024 (5) obj. 3832.71 iterations 15 -Cbc0038I Pass 8: (11.71 seconds) suminf. 0.00000 (0) obj. 3832.71 iterations 166 -Cbc0038I Solution found of 3832.71 -Cbc0038I Relaxing continuous gives 3698.04 -Cbc0038I Cleaned solution of 3698.04 -Cbc0038I Before mini branch and bound, 2549 integers at bound fixed and 132 continuous of which 33 were internal integer and 0 internal continuous -Cbc0038I Full problem 3086 rows 3046 columns, reduced to 89 rows 86 columns -Cbc0038I Mini branch and bound did not improve solution (11.78 seconds) -Cbc0038I Freeing continuous variables gives a solution of 3698.04 -Cbc0038I Round again with cutoff of 3470.43 -Cbc0038I Pass 9: (11.83 seconds) suminf. 5.71444 (21) obj. 3470.43 iterations 178 -Cbc0038I Pass 10: (11.84 seconds) suminf. 3.39913 (21) obj. 3470.43 iterations 246 -Cbc0038I Pass 11: (11.85 seconds) suminf. 3.15309 (17) obj. 3470.43 iterations 120 -Cbc0038I Pass 12: (11.88 seconds) suminf. 5.18611 (29) obj. 3470.43 iterations 504 -Cbc0038I Pass 13: (11.88 seconds) suminf. 5.34128 (30) obj. 3470.43 iterations 94 -Cbc0038I Pass 14: (11.89 seconds) suminf. 4.85719 (30) obj. 3470.43 iterations 43 -Cbc0038I Pass 15: (11.90 seconds) suminf. 5.46620 (24) obj. 3470.43 iterations 214 -Cbc0038I Pass 16: (11.91 seconds) suminf. 4.67465 (26) obj. 3470.43 iterations 60 -Cbc0038I Pass 17: (11.93 seconds) suminf. 6.52181 (26) obj. 3470.43 iterations 326 -Cbc0038I Pass 18: (11.94 seconds) suminf. 4.39105 (26) obj. 3470.43 iterations 206 -Cbc0038I Pass 19: (11.97 seconds) suminf. 7.16407 (27) obj. 3470.43 iterations 519 -Cbc0038I Pass 20: (11.98 seconds) suminf. 5.57749 (32) obj. 3470.43 iterations 187 -Cbc0038I Pass 21: (12.00 seconds) suminf. 6.06664 (26) obj. 3470.43 iterations 331 -Cbc0038I Pass 22: (12.00 seconds) suminf. 4.83984 (24) obj. 3470.43 iterations 162 -Cbc0038I Pass 23: (12.01 seconds) suminf. 4.04829 (26) obj. 3470.43 iterations 67 -Cbc0038I Pass 24: (12.04 seconds) suminf. 7.50683 (27) obj. 3470.43 iterations 490 -Cbc0038I Pass 25: (12.05 seconds) suminf. 5.92024 (32) obj. 3470.43 iterations 191 -Cbc0038I Pass 26: (12.07 seconds) suminf. 8.83513 (32) obj. 3470.43 iterations 403 -Cbc0038I Pass 27: (12.08 seconds) suminf. 6.60367 (33) obj. 3470.43 iterations 119 -Cbc0038I Pass 28: (12.09 seconds) suminf. 6.03597 (37) obj. 3470.43 iterations 149 -Cbc0038I Pass 29: (12.12 seconds) suminf. 10.65699 (43) obj. 3470.43 iterations 543 -Cbc0038I Pass 30: (12.13 seconds) suminf. 8.00683 (34) obj. 3470.43 iterations 164 -Cbc0038I Pass 31: (12.14 seconds) suminf. 7.15875 (36) obj. 3470.43 iterations 65 -Cbc0038I Pass 32: (12.15 seconds) suminf. 6.24921 (32) obj. 3470.43 iterations 230 -Cbc0038I Pass 33: (12.16 seconds) suminf. 5.53806 (32) obj. 3470.43 iterations 85 -Cbc0038I Pass 34: (12.19 seconds) suminf. 7.17468 (31) obj. 3470.43 iterations 481 -Cbc0038I Pass 35: (12.20 seconds) suminf. 5.57660 (28) obj. 3470.43 iterations 141 -Cbc0038I Pass 36: (12.22 seconds) suminf. 8.67998 (30) obj. 3470.43 iterations 375 -Cbc0038I Pass 37: (12.23 seconds) suminf. 5.94849 (31) obj. 3470.43 iterations 188 -Cbc0038I Pass 38: (12.24 seconds) suminf. 5.30715 (31) obj. 3470.43 iterations 76 +Cgl0003I 0 fixed, 460 tightened bounds, 9843 strengthened rows, 49529 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 2599 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 1911 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 665 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 100 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 79 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 70 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 66 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 63 strengthened rows, 0 substitutions +Cgl0004I processed model has 3181 rows, 3090 columns (2754 integer (2294 of which binary)) and 26196 elements +Cbc0038I Initial state - 162 integers unsatisfied sum - 41.8313 +Cbc0038I Pass 1: (6.59 seconds) suminf. 1.16667 (4) obj. 22353.8 iterations 808 +Cbc0038I Pass 2: (6.59 seconds) suminf. 0.00000 (0) obj. 22385 iterations 32 +Cbc0038I Solution found of 22385 +Cbc0038I Relaxing continuous gives 22385 +Cbc0038I Cleaned solution of 22385 +Cbc0038I Before mini branch and bound, 2586 integers at bound fixed and 130 continuous of which 41 were internal integer and 0 internal continuous +Cbc0038I Full problem 3181 rows 3090 columns, reduced to 129 rows 101 columns +Cbc0038I Mini branch and bound improved solution from 22385 to 21920.6 (6.67 seconds) +Cbc0038I Round again with cutoff of 21784.5 +Cbc0038I Pass 3: (6.71 seconds) suminf. 7.02421 (26) obj. 21784.5 iterations 240 +Cbc0038I Pass 4: (6.72 seconds) suminf. 4.32325 (20) obj. 21784.5 iterations 123 +Cbc0038I Pass 5: (6.74 seconds) suminf. 0.69467 (4) obj. 21784.5 iterations 351 +Cbc0038I Pass 6: (6.75 seconds) suminf. 0.14629 (1) obj. 21784.5 iterations 250 +Cbc0038I Solution found of 21784.5 +Cbc0038I Branch and bound needed to clear up 1 general integers +Cbc0038I Full problem 3182 rows 3090 columns, reduced to 0 rows 0 columns +Cbc0038I Cleaned solution of 21638.2 +Cbc0038I Before mini branch and bound, 2568 integers at bound fixed and 122 continuous of which 39 were internal integer and 0 internal continuous +Cbc0038I Full problem 3181 rows 3090 columns, reduced to 151 rows 128 columns +Cbc0038I Mini branch and bound improved solution from 21638.2 to 21616.2 (6.87 seconds) +Cbc0038I Round again with cutoff of 21405 +Cbc0038I Pass 7: (6.91 seconds) suminf. 10.98499 (55) obj. 21405 iterations 188 +Cbc0038I Pass 8: (6.92 seconds) suminf. 9.55630 (52) obj. 21405 iterations 117 +Cbc0038I Pass 9: (6.95 seconds) suminf. 8.90783 (49) obj. 21405 iterations 431 +Cbc0038I Pass 10: (6.96 seconds) suminf. 7.98721 (43) obj. 21405 iterations 149 +Cbc0038I Pass 11: (6.97 seconds) suminf. 8.08478 (51) obj. 21405 iterations 96 +Cbc0038I Pass 12: (7.00 seconds) suminf. 8.71224 (43) obj. 21405 iterations 380 +Cbc0038I Pass 13: (7.01 seconds) suminf. 7.30491 (47) obj. 21405 iterations 117 +Cbc0038I Pass 14: (7.04 seconds) suminf. 7.76633 (40) obj. 21405 iterations 478 +Cbc0038I Pass 15: (7.05 seconds) suminf. 6.78055 (42) obj. 21405 iterations 125 +Cbc0038I Pass 16: (7.07 seconds) suminf. 9.57295 (41) obj. 21405 iterations 417 +Cbc0038I Pass 17: (7.08 seconds) suminf. 5.24976 (38) obj. 21405 iterations 136 +Cbc0038I Pass 18: (7.11 seconds) suminf. 10.01788 (42) obj. 21405 iterations 530 +Cbc0038I Pass 19: (7.13 seconds) suminf. 5.89378 (32) obj. 21405 iterations 238 +Cbc0038I Pass 20: (7.14 seconds) suminf. 5.25441 (35) obj. 21405 iterations 92 +Cbc0038I Pass 21: (7.16 seconds) suminf. 8.72018 (38) obj. 21405 iterations 428 +Cbc0038I Pass 22: (7.17 seconds) suminf. 7.42416 (42) obj. 21405 iterations 141 +Cbc0038I Pass 23: (7.19 seconds) suminf. 5.80153 (30) obj. 21405 iterations 259 +Cbc0038I Pass 24: (7.20 seconds) suminf. 4.40055 (26) obj. 21405 iterations 112 +Cbc0038I Pass 25: (7.22 seconds) suminf. 8.37788 (34) obj. 21405 iterations 231 +Cbc0038I Pass 26: (7.23 seconds) suminf. 6.85498 (37) obj. 21405 iterations 164 +Cbc0038I Pass 27: (7.25 seconds) suminf. 10.56948 (37) obj. 21405 iterations 444 +Cbc0038I Pass 28: (7.26 seconds) suminf. 7.66748 (37) obj. 21405 iterations 160 +Cbc0038I Pass 29: (7.28 seconds) suminf. 11.59093 (41) obj. 21405 iterations 352 +Cbc0038I Pass 30: (7.30 seconds) suminf. 6.46883 (37) obj. 21405 iterations 248 +Cbc0038I Pass 31: (7.31 seconds) suminf. 5.79519 (37) obj. 21405 iterations 32 +Cbc0038I Pass 32: (7.33 seconds) suminf. 9.32073 (38) obj. 21405 iterations 391 +Cbc0038I Pass 33: (7.34 seconds) suminf. 8.05261 (34) obj. 21405 iterations 115 +Cbc0038I Pass 34: (7.35 seconds) suminf. 8.05261 (34) obj. 21405 iterations 6 +Cbc0038I Pass 35: (7.37 seconds) suminf. 4.85029 (18) obj. 21405 iterations 282 +Cbc0038I Pass 36: (7.38 seconds) suminf. 4.84264 (27) obj. 21405 iterations 97 Cbc0038I No solution found this major pass -Cbc0038I Before mini branch and bound, 2505 integers at bound fixed and 101 continuous of which 30 were internal integer and 0 internal continuous -Cbc0038I Full problem 3086 rows 3046 columns, reduced to 204 rows 208 columns -Cbc0038I Mini branch and bound did not improve solution (12.27 seconds) -Cbc0038I After 12.27 seconds - Feasibility pump exiting with objective of 3698.04 - took 0.73 seconds -Cbc0012I Integer solution of 3698.0376 found by feasibility pump after 0 iterations and 0 nodes (12.27 seconds) -Cbc0011I Exiting as integer gap of 1138.0376 less than 2000 or 0%% -Cbc0001I Search completed - best objective 3698.037618571474, took 0 iterations and 0 nodes (12.28 seconds) +Cbc0038I Before mini branch and bound, 2473 integers at bound fixed and 76 continuous of which 31 were internal integer and 0 internal continuous +Cbc0038I Full problem 3181 rows 3090 columns, reduced to 343 rows 338 columns +Cbc0038I Mini branch and bound did not improve solution (7.66 seconds) +Cbc0038I After 7.66 seconds - Feasibility pump exiting with objective of 21616.2 - took 1.13 seconds +Cbc0012I Integer solution of 21616.201 found by feasibility pump after 0 iterations and 0 nodes (7.67 seconds) +Cbc0011I Exiting as integer gap of 1056.2007 less than 2000 or 0%% +Cbc0001I Search completed - best objective 21616.20074048049, took 0 iterations and 0 nodes (7.67 seconds) Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost -Cuts at root node changed objective from 2560 to 2560 +Cuts at root node changed objective from 20560 to 20560 Probing was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds) Gomory was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds) Knapsack was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds) @@ -130,14 +131,14 @@ TwoMirCuts was tried 0 times and created 0 cuts of which 0 were active after add Result - Optimal solution found (within gap tolerance) -Objective value: 3698.03761857 -Lower bound: 2560.000 -Gap: 0.44 +Objective value: 21616.20074048 +Lower bound: 20560.000 +Gap: 0.05 Enumerated nodes: 0 Total iterations: 0 -Time (CPU seconds): 12.57 -Time (Wallclock seconds): 12.71 +Time (CPU seconds): 7.99 +Time (Wallclock seconds): 8.10 -Total time (CPU seconds): 13.37 (Wallclock seconds): 13.58 +Total time (CPU seconds): 8.80 (Wallclock seconds): 8.96 diff --git a/leave.py b/leave.py index ec1ec89..91fe128 100644 --- a/leave.py +++ b/leave.py @@ -27,7 +27,7 @@ def load_leave(Rota, file_name="leave.csv"): site_prefs[name] = [] # preferred site - if n == 5: + if n == 6: for i in range(len(r)): pref = r[i].lower() @@ -37,7 +37,7 @@ def load_leave(Rota, file_name="leave.csv"): site_prefs[order[i]].append("0") - if n > 6: + if n > 7: for i in range(len(r)): lower_item = r[i].lower() if lower_item != "": diff --git a/no nights.log b/no nights.log index 49ac694..c3819de 100644 --- a/no nights.log +++ b/no nights.log @@ -1,129 +1,132 @@ -Solver command line: ['/usr/bin/cbc', '-seconds', '10200', '-allow', '2000', '-printingOptions', 'all', '-import', '/tmp/tmpahus9y28.pyomo.lp', '-stat=1', '-solve', '-solu', '/tmp/tmpahus9y28.pyomo.soln'] +Solver command line: ['/usr/bin/cbc', '-seconds', '10200', '-allow', '2000', '-printingOptions', 'all', '-import', '/tmp/tmp5quhw7d5.pyomo.lp', '-stat=1', '-solve', '-solu', '/tmp/tmp5quhw7d5.pyomo.soln'] Welcome to the CBC MILP Solver Version: 2.9.9 Build Date: Aug 7 2019 -command line - /usr/bin/cbc -seconds 10200 -allow 2000 -printingOptions all -import /tmp/tmpahus9y28.pyomo.lp -stat=1 -solve -solu /tmp/tmpahus9y28.pyomo.soln (default strategy 1) +command line - /usr/bin/cbc -seconds 10200 -allow 2000 -printingOptions all -import /tmp/tmp5quhw7d5.pyomo.lp -stat=1 -solve -solu /tmp/tmp5quhw7d5.pyomo.soln (default strategy 1) seconds was changed from 1e+100 to 10200 allowableGap was changed from 1e-10 to 2000 Option for printingOptions changed from normal to all -Presolve 7772 (-24029) rows, 10426 (-66671) columns and 53720 (-385345) elements +Presolve 7827 (-24838) rows, 10352 (-66841) columns and 55572 (-385029) elements Statistics for presolved model -Original problem has 76280 integers (76128 of which binary) -Presolved problem has 10234 integers (10234 of which binary) -==== 9193 zero objective 2 different -9193 variables have objective of 0 +Original problem has 76376 integers (76128 of which binary) +Presolved problem has 10160 integers (10116 of which binary) +==== 9075 zero objective 3 different +9075 variables have objective of 0 1233 variables have objective of 1 -==== absolute objective values 2 different -9193 variables have objective of 0 +44 variables have objective of 1000 +==== absolute objective values 3 different +9075 variables have objective of 0 1233 variables have objective of 1 -==== for integers 9097 zero objective 2 different -9097 variables have objective of 0 +44 variables have objective of 1000 +==== for integers 8979 zero objective 3 different +8979 variables have objective of 0 1137 variables have objective of 1 -==== for integers absolute objective values 2 different -9097 variables have objective of 0 +44 variables have objective of 1000 +==== for integers absolute objective values 3 different +8979 variables have objective of 0 1137 variables have objective of 1 +44 variables have objective of 1000 ===== end objective counts -Problem has 7772 rows, 10426 columns (1233 with objective) and 53720 elements -There are 1233 singletons with objective +Problem has 7827 rows, 10352 columns (1277 with objective) and 55572 elements +There are 1234 singletons with objective Column breakdown: -192 of type 0.0->inf, 0 of type 0.0->up, 0 of type lo->inf, +236 of type 0.0->inf, 0 of type 0.0->up, 0 of type lo->inf, 0 of type lo->up, 0 of type free, 0 of type fixed, -0 of type -inf->0.0, 0 of type -inf->up, 10234 of type 0.0->1.0 +0 of type -inf->0.0, 0 of type -inf->up, 10116 of type 0.0->1.0 Row breakdown: 0 of type E 0.0, 676 of type E 1.0, 0 of type E -1.0, 148 of type E other, 0 of type G 0.0, 0 of type G 1.0, -43 of type G other, 3411 of type L 0.0, 1089 of type L 1.0, -2405 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, +74 of type G other, 3411 of type L 0.0, 1089 of type L 1.0, +2429 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, 0 of type Free -Continuous objective value is 512.5 - 0.24 seconds -Cgl0002I 61928 variables fixed -Cgl0003I 0 fixed, 0 tightened bounds, 2270 strengthened rows, 4 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 320 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 320 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 320 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 320 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 320 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 320 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 320 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 320 strengthened rows, 0 substitutions -Cgl0004I processed model has 7725 rows, 10424 columns (10232 integer (10232 of which binary)) and 53732 elements -Cbc0038I Initial state - 529 integers unsatisfied sum - 224.918 -Cbc0038I Pass 1: (1.64 seconds) suminf. 189.00000 (378) obj. 628.389 iterations 1696 -Cbc0038I Pass 2: (1.65 seconds) suminf. 186.00000 (372) obj. 628.389 iterations 82 -Cbc0038I Pass 3: (1.66 seconds) suminf. 186.00000 (372) obj. 628.389 iterations 39 -Cbc0038I Pass 4: (1.68 seconds) suminf. 186.00000 (372) obj. 628.389 iterations 32 -Cbc0038I Pass 5: (1.69 seconds) suminf. 186.00000 (372) obj. 628.389 iterations 38 -Cbc0038I Pass 6: (1.71 seconds) suminf. 186.00000 (372) obj. 628.389 iterations 31 -Cbc0038I Pass 7: (1.73 seconds) suminf. 186.00000 (372) obj. 628.389 iterations 34 -Cbc0038I Pass 8: (1.74 seconds) suminf. 186.00000 (372) obj. 628.389 iterations 39 -Cbc0038I Pass 9: (1.76 seconds) suminf. 185.50000 (371) obj. 628.889 iterations 36 -Cbc0038I Pass 10: (1.77 seconds) suminf. 185.50000 (371) obj. 628.889 iterations 36 -Cbc0038I Pass 11: (1.79 seconds) suminf. 185.50000 (371) obj. 628.889 iterations 40 -Cbc0038I Pass 12: (1.80 seconds) suminf. 185.50000 (371) obj. 628.889 iterations 40 -Cbc0038I Pass 13: (1.82 seconds) suminf. 94.50000 (189) obj. 696.889 iterations 449 -Cbc0038I Pass 14: (1.84 seconds) suminf. 94.50000 (189) obj. 696.889 iterations 77 -Cbc0038I Pass 15: (1.85 seconds) suminf. 94.50000 (189) obj. 696.889 iterations 48 -Cbc0038I Pass 16: (1.87 seconds) suminf. 94.50000 (189) obj. 696.889 iterations 51 -Cbc0038I Pass 17: (1.89 seconds) suminf. 94.50000 (189) obj. 696.889 iterations 48 -Cbc0038I Pass 18: (1.90 seconds) suminf. 94.50000 (189) obj. 696.889 iterations 33 -Cbc0038I Pass 19: (1.93 seconds) suminf. 71.00000 (142) obj. 773.037 iterations 532 -Cbc0038I Pass 20: (1.95 seconds) suminf. 69.50000 (139) obj. 773.537 iterations 252 -Cbc0038I Pass 21: (1.96 seconds) suminf. 69.50000 (139) obj. 773.537 iterations 31 -Cbc0038I Pass 22: (1.98 seconds) suminf. 69.50000 (139) obj. 773.537 iterations 39 -Cbc0038I Pass 23: (1.99 seconds) suminf. 69.50000 (139) obj. 773.537 iterations 47 -Cbc0038I Pass 24: (2.01 seconds) suminf. 69.50000 (139) obj. 773.537 iterations 44 -Cbc0038I Pass 25: (2.02 seconds) suminf. 69.00000 (138) obj. 774.037 iterations 34 -Cbc0038I Pass 26: (2.04 seconds) suminf. 69.00000 (138) obj. 774.037 iterations 24 -Cbc0038I Pass 27: (2.06 seconds) suminf. 61.50000 (123) obj. 809.99 iterations 474 -Cbc0038I Pass 28: (2.08 seconds) suminf. 60.00000 (120) obj. 810.99 iterations 241 -Cbc0038I Pass 29: (2.10 seconds) suminf. 59.50000 (119) obj. 810.99 iterations 42 -Cbc0038I Pass 30: (2.11 seconds) suminf. 59.00000 (118) obj. 811.49 iterations 33 +Continuous objective value is 24512.5 - 0.21 seconds +Cgl0002I 62046 variables fixed +Cgl0003I 0 fixed, 44 tightened bounds, 2204 strengthened rows, 4 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 355 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 355 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 355 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 355 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 355 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 355 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 355 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 355 strengthened rows, 0 substitutions +Cgl0004I processed model has 7749 rows, 10350 columns (10158 integer (10114 of which binary)) and 53656 elements +Cbc0038I Initial state - 575 integers unsatisfied sum - 217.378 +Cbc0038I Pass 1: (1.62 seconds) suminf. 154.59951 (343) obj. 27638.4 iterations 1610 +Cbc0038I Pass 2: (1.64 seconds) suminf. 150.30245 (326) obj. 27640.2 iterations 273 +Cbc0038I Pass 3: (1.66 seconds) suminf. 147.69308 (319) obj. 27641.4 iterations 22 +Cbc0038I Pass 4: (1.67 seconds) suminf. 147.19308 (318) obj. 27641.9 iterations 11 +Cbc0038I Pass 5: (1.69 seconds) suminf. 147.19308 (318) obj. 27641.9 iterations 10 +Cbc0038I Pass 6: (1.70 seconds) suminf. 147.19308 (318) obj. 27641.9 iterations 13 +Cbc0038I Pass 7: (1.71 seconds) suminf. 147.19308 (318) obj. 27641.9 iterations 7 +Cbc0038I Pass 8: (1.74 seconds) suminf. 67.43186 (154) obj. 27736.3 iterations 621 +Cbc0038I Pass 9: (1.76 seconds) suminf. 64.57084 (150) obj. 27736.3 iterations 285 +Cbc0038I Pass 10: (1.77 seconds) suminf. 64.07084 (149) obj. 27736.8 iterations 20 +Cbc0038I Pass 11: (1.79 seconds) suminf. 64.07084 (149) obj. 27736.8 iterations 17 +Cbc0038I Pass 12: (1.81 seconds) suminf. 40.43564 (93) obj. 30810 iterations 662 +Cbc0038I Pass 13: (1.83 seconds) suminf. 35.97334 (79) obj. 30809.1 iterations 310 +Cbc0038I Pass 14: (1.85 seconds) suminf. 35.32090 (77) obj. 30808.5 iterations 115 +Cbc0038I Pass 15: (1.86 seconds) suminf. 35.32090 (77) obj. 30808.5 iterations 13 +Cbc0038I Pass 16: (1.89 seconds) suminf. 31.10628 (71) obj. 30831.4 iterations 436 +Cbc0038I Pass 17: (1.91 seconds) suminf. 28.38627 (63) obj. 30831.7 iterations 264 +Cbc0038I Pass 18: (1.92 seconds) suminf. 28.38627 (63) obj. 30831.7 iterations 10 +Cbc0038I Pass 19: (1.95 seconds) suminf. 27.68563 (67) obj. 33850.2 iterations 499 +Cbc0038I Pass 20: (1.97 seconds) suminf. 24.38695 (61) obj. 33848.9 iterations 353 +Cbc0038I Pass 21: (1.98 seconds) suminf. 24.38695 (61) obj. 33848.9 iterations 15 +Cbc0038I Pass 22: (2.01 seconds) suminf. 30.48628 (81) obj. 30869.8 iterations 508 +Cbc0038I Pass 23: (2.03 seconds) suminf. 24.30037 (63) obj. 30868.6 iterations 402 +Cbc0038I Pass 24: (2.04 seconds) suminf. 23.64792 (61) obj. 30868.6 iterations 106 +Cbc0038I Pass 25: (2.06 seconds) suminf. 23.64792 (61) obj. 30868.6 iterations 11 +Cbc0038I Pass 26: (2.07 seconds) suminf. 23.64792 (61) obj. 30868.6 iterations 7 +Cbc0038I Pass 27: (2.09 seconds) suminf. 23.64792 (61) obj. 30868.6 iterations 7 +Cbc0038I Pass 28: (2.10 seconds) suminf. 23.64792 (61) obj. 30868.6 iterations 8 +Cbc0038I Pass 29: (2.13 seconds) suminf. 26.92915 (69) obj. 30885.7 iterations 500 +Cbc0038I Pass 30: (2.15 seconds) suminf. 22.98162 (57) obj. 30883.7 iterations 358 Cbc0038I No solution found this major pass -Cbc0038I Before mini branch and bound, 9441 integers at bound fixed and 63 continuous -Cbc0038I Mini branch and bound did not improve solution (2.13 seconds) -Cbc0038I After 2.41 seconds - Feasibility pump exiting - took 0.85 seconds -Cbc0031I 206 added rows had average density of 105.54854 -Cbc0013I At root node, 206 cuts changed objective from 610 to 620.91644 in 10 passes -Cbc0014I Cut generator 0 (Probing) - 1641 row cuts average 2.0 elements, 0 column cuts (0 active) in 2.903 seconds - new frequency is 1 -Cbc0014I Cut generator 1 (Gomory) - 1003 row cuts average 506.7 elements, 0 column cuts (0 active) in 0.518 seconds - new frequency is 1 -Cbc0014I Cut generator 2 (Knapsack) - 751 row cuts average 2.0 elements, 0 column cuts (0 active) in 0.080 seconds - new frequency is 1 -Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.006 seconds - new frequency is -100 -Cbc0014I Cut generator 4 (MixedIntegerRounding2) - 708 row cuts average 17.6 elements, 0 column cuts (0 active) in 0.128 seconds - new frequency is 1 -Cbc0014I Cut generator 5 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.046 seconds - new frequency is -100 -Cbc0014I Cut generator 6 (TwoMirCuts) - 1300 row cuts average 46.7 elements, 0 column cuts (0 active) in 0.451 seconds - new frequency is 1 -Cbc0010I After 0 nodes, 1 on tree, 1e+50 best solution, best possible 620.91644 (8.63 seconds) -Cbc0012I Integer solution of 631.71534 found by DiveCoefficient after 5804 iterations and 2 nodes (9.26 seconds) -Cbc0012I Integer solution of 625.71534 found by DiveCoefficient after 6183 iterations and 2 nodes (9.57 seconds) -Cbc0038I Full problem 7725 rows 10424 columns, reduced to 60 rows 66 columns -Cbc0012I Integer solution of 623.71534 found by RINS after 6183 iterations and 2 nodes (9.65 seconds) -Cbc0011I Exiting as integer gap of 2.7989071 less than 2000 or 0%% -Cbc0001I Search completed - best objective 623.7153428828003, took 6473 iterations and 3 nodes (10.15 seconds) -Cbc0032I Strong branching done 46 times (993 iterations), fathomed 0 nodes and fixed 0 variables +Cbc0038I Before mini branch and bound, 8851 integers at bound fixed and 52 continuous of which 1 were internal integer and 0 internal continuous +Cbc0038I Mini branch and bound did not improve solution (2.16 seconds) +Cbc0038I After 2.16 seconds - Feasibility pump exiting - took 0.63 seconds +Cbc0031I 286 added rows had average density of 62.944056 +Cbc0013I At root node, 286 cuts changed objective from 24610 to 24622.081 in 10 passes +Cbc0014I Cut generator 0 (Probing) - 1922 row cuts average 2.0 elements, 0 column cuts (159 active) in 2.822 seconds - new frequency is 1 +Cbc0014I Cut generator 1 (Gomory) - 1274 row cuts average 400.3 elements, 0 column cuts (0 active) in 0.708 seconds - new frequency is 1 +Cbc0014I Cut generator 2 (Knapsack) - 886 row cuts average 2.0 elements, 0 column cuts (0 active) in 0.092 seconds - new frequency is 1 +Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.008 seconds - new frequency is -100 +Cbc0014I Cut generator 4 (MixedIntegerRounding2) - 853 row cuts average 18.3 elements, 0 column cuts (0 active) in 0.120 seconds - new frequency is 1 +Cbc0014I Cut generator 5 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.035 seconds - new frequency is -100 +Cbc0014I Cut generator 6 (TwoMirCuts) - 1710 row cuts average 55.1 elements, 0 column cuts (0 active) in 0.606 seconds - new frequency is -100 +Cbc0010I After 0 nodes, 1 on tree, 1e+50 best solution, best possible 24622.081 (9.22 seconds) +Cbc0012I Integer solution of 24635.948 found by DiveCoefficient after 7043 iterations and 2 nodes (10.11 seconds) +Cbc0038I Full problem 7749 rows 10350 columns, reduced to 97 rows 104 columns +Cbc0012I Integer solution of 24631.88 found by RINS after 7043 iterations and 2 nodes (10.21 seconds) +Cbc0011I Exiting as integer gap of 9.7989071 less than 2000 or 0%% +Cbc0001I Search completed - best objective 24631.87982535435, took 7429 iterations and 3 nodes (11.05 seconds) +Cbc0032I Strong branching done 46 times (885 iterations), fathomed 0 nodes and fixed 0 variables Cbc0035I Maximum depth 3, 0 variables fixed on reduced cost -Cuts at root node changed objective from 610 to 620.916 -Probing was tried 16 times and created 2012 cuts of which 0 were active after adding rounds of cuts (2.933 seconds) -Gomory was tried 16 times and created 1015 cuts of which 0 were active after adding rounds of cuts (0.573 seconds) -Knapsack was tried 16 times and created 889 cuts of which 0 were active after adding rounds of cuts (0.120 seconds) -Clique was tried 10 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.006 seconds) -MixedIntegerRounding2 was tried 16 times and created 772 cuts of which 0 were active after adding rounds of cuts (0.202 seconds) -FlowCover was tried 10 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.046 seconds) -TwoMirCuts was tried 16 times and created 1389 cuts of which 0 were active after adding rounds of cuts (0.575 seconds) -ImplicationCuts was tried 6 times and created 637 cuts of which 0 were active after adding rounds of cuts (0.008 seconds) +Cuts at root node changed objective from 24610 to 24622.1 +Probing was tried 16 times and created 2343 cuts of which 159 were active after adding rounds of cuts (2.857 seconds) +Gomory was tried 16 times and created 1308 cuts of which 0 were active after adding rounds of cuts (0.774 seconds) +Knapsack was tried 16 times and created 1113 cuts of which 0 were active after adding rounds of cuts (0.136 seconds) +Clique was tried 10 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.008 seconds) +MixedIntegerRounding2 was tried 16 times and created 1038 cuts of which 0 were active after adding rounds of cuts (0.188 seconds) +FlowCover was tried 10 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.035 seconds) +TwoMirCuts was tried 10 times and created 1710 cuts of which 0 were active after adding rounds of cuts (0.606 seconds) +ImplicationCuts was tried 6 times and created 898 cuts of which 0 were active after adding rounds of cuts (0.009 seconds) Result - Optimal solution found (within gap tolerance) -Objective value: 623.71534288 -Lower bound: 620.916 +Objective value: 24631.87982535 +Lower bound: 24622.081 Gap: 0.00 Enumerated nodes: 3 -Total iterations: 6473 -Time (CPU seconds): 10.46 -Time (Wallclock seconds): 10.62 +Total iterations: 7429 +Time (CPU seconds): 11.34 +Time (Wallclock seconds): 11.52 -Total time (CPU seconds): 11.50 (Wallclock seconds): 11.72 +Total time (CPU seconds): 12.37 (Wallclock seconds): 12.60 diff --git a/no twighlights.log b/no twighlights.log index ac9d217..fea16e0 100644 --- a/no twighlights.log +++ b/no twighlights.log @@ -1,154 +1,133 @@ -Solver command line: ['/usr/bin/cbc', '-seconds', '10200', '-allow', '2000', '-printingOptions', 'all', '-import', '/tmp/tmp1ops1_px.pyomo.lp', '-stat=1', '-solve', '-solu', '/tmp/tmp1ops1_px.pyomo.soln'] +Solver command line: ['/usr/bin/cbc', '-seconds', '10200', '-allow', '2000', '-printingOptions', 'all', '-import', '/tmp/tmp4622w1mq.pyomo.lp', '-stat=1', '-solve', '-solu', '/tmp/tmp4622w1mq.pyomo.soln'] Welcome to the CBC MILP Solver Version: 2.9.9 Build Date: Aug 7 2019 -command line - /usr/bin/cbc -seconds 10200 -allow 2000 -printingOptions all -import /tmp/tmp1ops1_px.pyomo.lp -stat=1 -solve -solu /tmp/tmp1ops1_px.pyomo.soln (default strategy 1) +command line - /usr/bin/cbc -seconds 10200 -allow 2000 -printingOptions all -import /tmp/tmp4622w1mq.pyomo.lp -stat=1 -solve -solu /tmp/tmp4622w1mq.pyomo.soln (default strategy 1) seconds was changed from 1e+100 to 10200 allowableGap was changed from 1e-10 to 2000 Option for printingOptions changed from normal to all -Presolve 28199 (-94822) rows, 15531 (-47274) columns and 126932 (-441217) elements +Presolve 28387 (-94874) rows, 15575 (-47326) columns and 134926 (-433703) elements Statistics for presolved model -Original problem has 62084 integers (61152 of which binary) -Presolved problem has 15195 integers (14771 of which binary) -==== 13834 zero objective 4 different +Original problem has 62180 integers (61152 of which binary) +Presolved problem has 15239 integers (14771 of which binary) +==== 13834 zero objective 5 different 13834 variables have objective of 0 1233 variables have objective of 1 48 variables have objective of 10 416 variables have objective of 20 -==== absolute objective values 4 different +44 variables have objective of 1000 +==== absolute objective values 5 different 13834 variables have objective of 0 1233 variables have objective of 1 48 variables have objective of 10 416 variables have objective of 20 -==== for integers 13642 zero objective 3 different +44 variables have objective of 1000 +==== for integers 13642 zero objective 4 different 13642 variables have objective of 0 1137 variables have objective of 1 416 variables have objective of 20 -==== for integers absolute objective values 3 different +44 variables have objective of 1000 +==== for integers absolute objective values 4 different 13642 variables have objective of 0 1137 variables have objective of 1 416 variables have objective of 20 +44 variables have objective of 1000 ===== end objective counts -Problem has 28199 rows, 15531 columns (1697 with objective) and 126932 elements +Problem has 28387 rows, 15575 columns (1741 with objective) and 134926 elements There are 1649 singletons with objective Column breakdown: -760 of type 0.0->inf, 0 of type 0.0->up, 0 of type lo->inf, +804 of type 0.0->inf, 0 of type 0.0->up, 0 of type lo->inf, 0 of type lo->up, 0 of type free, 0 of type fixed, 0 of type -inf->0.0, 0 of type -inf->up, 14771 of type 0.0->1.0 Row breakdown: 2281 of type E 0.0, 156 of type E 1.0, 208 of type E -1.0, 378 of type E other, 0 of type G 0.0, 52 of type G 1.0, -10 of type G other, 3411 of type L 0.0, 20252 of type L 1.0, -1451 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, +99 of type G other, 3411 of type L 0.0, 20252 of type L 1.0, +1550 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, 0 of type Free -Continuous objective value is 2592.5 - 11.74 seconds +Continuous objective value is 20592.5 - 24.71 seconds Cgl0002I 42189 variables fixed -Cgl0003I 0 fixed, 416 tightened bounds, 21262 strengthened rows, 39927 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 7087 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 3304 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 1761 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 428 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 88 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 26 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 12 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 5 strengthened rows, 0 substitutions -Cgl0004I processed model has 11087 rows, 7586 columns (7250 integer (6834 of which binary)) and 64778 elements -Cbc0038I Initial state - 1148 integers unsatisfied sum - 308.884 -Cbc0038I Pass 1: (21.79 seconds) suminf. 132.59090 (279) obj. 5166.99 iterations 4283 -Cbc0038I Pass 2: (21.83 seconds) suminf. 115.67073 (242) obj. 5159.78 iterations 309 -Cbc0038I Pass 3: (21.85 seconds) suminf. 113.67073 (238) obj. 5160.78 iterations 31 -Cbc0038I Pass 4: (21.87 seconds) suminf. 113.67073 (238) obj. 5160.78 iterations 12 -Cbc0038I Pass 5: (21.95 seconds) suminf. 38.72216 (89) obj. 6688.77 iterations 808 -Cbc0038I Pass 6: (22.01 seconds) suminf. 36.92756 (85) obj. 6555.73 iterations 474 -Cbc0038I Pass 7: (22.03 seconds) suminf. 36.92756 (85) obj. 6555.73 iterations 10 -Cbc0038I Pass 8: (22.14 seconds) suminf. 24.16606 (61) obj. 8376.93 iterations 1047 -Cbc0038I Pass 9: (22.23 seconds) suminf. 16.50851 (48) obj. 8704.88 iterations 674 -Cbc0038I Pass 10: (22.25 seconds) suminf. 16.50851 (48) obj. 8704.88 iterations 13 -Cbc0038I Pass 11: (22.27 seconds) suminf. 16.50851 (48) obj. 8704.88 iterations 3 -Cbc0038I Pass 12: (22.40 seconds) suminf. 26.69535 (68) obj. 9870.32 iterations 955 -Cbc0038I Pass 13: (22.50 seconds) suminf. 19.06151 (47) obj. 9797.91 iterations 677 -Cbc0038I Pass 14: (22.53 seconds) suminf. 17.20639 (42) obj. 9806.96 iterations 17 -Cbc0038I Pass 15: (22.55 seconds) suminf. 17.20639 (42) obj. 9806.96 iterations 3 -Cbc0038I Pass 16: (22.66 seconds) suminf. 20.38749 (54) obj. 10625.8 iterations 839 -Cbc0038I Pass 17: (22.75 seconds) suminf. 14.70685 (43) obj. 10596 iterations 647 -Cbc0038I Pass 18: (22.78 seconds) suminf. 14.70685 (43) obj. 10596 iterations 10 -Cbc0038I Pass 19: (22.80 seconds) suminf. 14.70685 (43) obj. 10596 iterations 4 -Cbc0038I Pass 20: (22.89 seconds) suminf. 19.17471 (57) obj. 12932.5 iterations 775 -Cbc0038I Pass 21: (22.98 seconds) suminf. 15.37252 (43) obj. 12953.2 iterations 639 -Cbc0038I Pass 22: (23.00 seconds) suminf. 15.37252 (43) obj. 12953.2 iterations 4 -Cbc0038I Pass 23: (23.10 seconds) suminf. 16.75837 (44) obj. 12897.3 iterations 828 -Cbc0038I Pass 24: (23.21 seconds) suminf. 13.15520 (36) obj. 12961 iterations 711 -Cbc0038I Pass 25: (23.23 seconds) suminf. 13.15520 (36) obj. 12961 iterations 11 -Cbc0038I Pass 26: (23.40 seconds) suminf. 11.82435 (44) obj. 14112.4 iterations 1106 -Cbc0038I Pass 27: (23.49 seconds) suminf. 10.72764 (34) obj. 14134.8 iterations 599 -Cbc0038I Pass 28: (23.51 seconds) suminf. 10.72764 (34) obj. 14134.8 iterations 11 -Cbc0038I Pass 29: (23.64 seconds) suminf. 17.99600 (56) obj. 14340.5 iterations 874 -Cbc0038I Pass 30: (23.77 seconds) suminf. 14.85158 (56) obj. 14491.8 iterations 795 +Cgl0003I 0 fixed, 460 tightened bounds, 21305 strengthened rows, 39902 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 7082 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 3236 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 1799 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 554 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 182 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 58 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 8 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 1 strengthened rows, 0 substitutions +Cgl0004I processed model has 11176 rows, 7630 columns (7294 integer (6834 of which binary)) and 65662 elements +Cbc0038I Initial state - 1272 integers unsatisfied sum - 345.392 +Cbc0038I Pass 1: (35.73 seconds) suminf. 113.12521 (252) obj. 23011.9 iterations 5369 +Cbc0038I Pass 2: (35.85 seconds) suminf. 97.50022 (201) obj. 23201.6 iterations 870 +Cbc0038I Pass 3: (35.87 seconds) suminf. 95.58058 (197) obj. 23202.6 iterations 25 +Cbc0038I Pass 4: (35.89 seconds) suminf. 85.08058 (176) obj. 23213.1 iterations 57 +Cbc0038I Pass 5: (35.92 seconds) suminf. 78.58058 (163) obj. 23219.6 iterations 36 +Cbc0038I Pass 6: (35.94 seconds) suminf. 64.58058 (135) obj. 23233.6 iterations 97 +Cbc0038I Pass 7: (35.96 seconds) suminf. 64.58058 (135) obj. 23233.6 iterations 6 +Cbc0038I Pass 8: (36.08 seconds) suminf. 34.06646 (85) obj. 24847.8 iterations 1105 +Cbc0038I Pass 9: (36.15 seconds) suminf. 26.58390 (62) obj. 24673.7 iterations 546 +Cbc0038I Pass 10: (36.18 seconds) suminf. 26.58390 (62) obj. 24673.7 iterations 5 +Cbc0038I Pass 11: (36.29 seconds) suminf. 16.54140 (51) obj. 25574.8 iterations 909 +Cbc0038I Pass 12: (36.41 seconds) suminf. 10.80399 (31) obj. 25515.6 iterations 770 +Cbc0038I Pass 13: (36.43 seconds) suminf. 10.80399 (31) obj. 25515.6 iterations 3 +Cbc0038I Pass 14: (36.57 seconds) suminf. 19.12809 (55) obj. 26023.3 iterations 1016 +Cbc0038I Pass 15: (36.66 seconds) suminf. 10.94444 (31) obj. 25923.3 iterations 649 +Cbc0038I Pass 16: (36.68 seconds) suminf. 10.44444 (30) obj. 25923.8 iterations 1 +Cbc0038I Pass 17: (36.70 seconds) suminf. 5.44444 (20) obj. 25926.3 iterations 31 +Cbc0038I Pass 18: (36.73 seconds) suminf. 5.44444 (20) obj. 25926.3 iterations 7 +Cbc0038I Pass 19: (36.78 seconds) suminf. 4.17600 (12) obj. 26246.2 iterations 331 +Cbc0038I Pass 20: (36.81 seconds) suminf. 2.66667 (6) obj. 26350.4 iterations 105 +Cbc0038I Pass 21: (36.83 seconds) suminf. 2.66667 (6) obj. 26350.4 iterations 16 +Cbc0038I Pass 22: (36.86 seconds) suminf. 2.66667 (6) obj. 26350.4 iterations 3 +Cbc0038I Pass 23: (36.88 seconds) suminf. 2.66667 (6) obj. 26350.4 iterations 7 +Cbc0038I Pass 24: (37.01 seconds) suminf. 16.76409 (51) obj. 28258.2 iterations 1003 +Cbc0038I Pass 25: (37.12 seconds) suminf. 13.24188 (36) obj. 28181.6 iterations 787 +Cbc0038I Pass 26: (37.15 seconds) suminf. 6.74188 (23) obj. 28185.6 iterations 37 +Cbc0038I Pass 27: (37.20 seconds) suminf. 6.74844 (20) obj. 28510 iterations 249 +Cbc0038I Pass 28: (37.25 seconds) suminf. 4.15076 (14) obj. 28507.6 iterations 169 +Cbc0038I Pass 29: (37.29 seconds) suminf. 4.09423 (10) obj. 28559.1 iterations 216 +Cbc0038I Pass 30: (37.32 seconds) suminf. 4.09423 (10) obj. 28559.1 iterations 2 Cbc0038I No solution found this major pass -Cbc0038I Before mini branch and bound, 5653 integers at bound fixed and 69 continuous of which 21 were internal integer and 0 internal continuous -Cbc0038I Full problem 11087 rows 7586 columns, reduced to 1871 rows 1255 columns -Cbc0038I Mini branch and bound did not improve solution (26.95 seconds) -Cbc0038I After 26.95 seconds - Feasibility pump exiting - took 6.14 seconds -Cbc0031I 447 added rows had average density of 32.127517 -Cbc0013I At root node, 447 cuts changed objective from 2690 to 3121.695 in 20 passes -Cbc0014I Cut generator 0 (Probing) - 6559 row cuts average 2.0 elements, 0 column cuts (0 active) in 2.643 seconds - new frequency is 1 -Cbc0014I Cut generator 1 (Gomory) - 2557 row cuts average 138.4 elements, 0 column cuts (0 active) in 5.190 seconds - new frequency is 1 -Cbc0014I Cut generator 2 (Knapsack) - 5220 row cuts average 2.3 elements, 0 column cuts (0 active) in 0.336 seconds - new frequency is 1 +Cbc0038I Before mini branch and bound, 5714 integers at bound fixed and 81 continuous of which 13 were internal integer and 0 internal continuous +Cbc0038I Mini branch and bound did not improve solution (37.33 seconds) +Cbc0038I After 37.33 seconds - Feasibility pump exiting - took 3.14 seconds +Cbc0012I Integer solution of 21710.37 found by DiveCoefficient after 96696 iterations and 0 nodes (139.21 seconds) +Cbc0031I 493 added rows had average density of 27.168357 +Cbc0013I At root node, 493 cuts changed objective from 20690 to 21122.861 in 20 passes +Cbc0014I Cut generator 0 (Probing) - 5984 row cuts average 2.2 elements, 0 column cuts (1 active) in 2.579 seconds - new frequency is 1 +Cbc0014I Cut generator 1 (Gomory) - 2351 row cuts average 148.1 elements, 0 column cuts (0 active) in 5.389 seconds - new frequency is 1 +Cbc0014I Cut generator 2 (Knapsack) - 4692 row cuts average 2.3 elements, 0 column cuts (0 active) in 0.332 seconds - new frequency is 1 Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.328 seconds - new frequency is -100 -Cbc0014I Cut generator 4 (MixedIntegerRounding2) - 3145 row cuts average 21.5 elements, 0 column cuts (0 active) in 0.380 seconds - new frequency is 1 +Cbc0014I Cut generator 4 (MixedIntegerRounding2) - 2821 row cuts average 21.4 elements, 0 column cuts (0 active) in 0.354 seconds - new frequency is 1 Cbc0014I Cut generator 5 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.074 seconds - new frequency is -100 -Cbc0014I Cut generator 6 (TwoMirCuts) - 2969 row cuts average 28.4 elements, 0 column cuts (0 active) in 2.594 seconds - new frequency is 1 -Cbc0010I After 0 nodes, 1 on tree, 1e+50 best solution, best possible 3121.695 (134.65 seconds) -Cbc0010I After 100 nodes, 61 on tree, 1e+50 best solution, best possible 3121.695 (388.01 seconds) -Cbc0010I After 200 nodes, 114 on tree, 1e+50 best solution, best possible 3121.695 (548.61 seconds) -Cbc0010I After 300 nodes, 167 on tree, 1e+50 best solution, best possible 3121.695 (714.25 seconds) -Cbc0010I After 400 nodes, 219 on tree, 1e+50 best solution, best possible 3121.695 (850.98 seconds) -Cbc0010I After 500 nodes, 272 on tree, 1e+50 best solution, best possible 3121.695 (956.51 seconds) -Cbc0010I After 600 nodes, 321 on tree, 1e+50 best solution, best possible 3121.695 (1064.45 seconds) -Cbc0010I After 700 nodes, 370 on tree, 1e+50 best solution, best possible 3121.695 (1210.80 seconds) -Cbc0010I After 800 nodes, 420 on tree, 1e+50 best solution, best possible 3121.695 (1331.75 seconds) -Cbc0010I After 900 nodes, 473 on tree, 1e+50 best solution, best possible 3121.695 (1441.13 seconds) -Cbc0010I After 1000 nodes, 523 on tree, 1e+50 best solution, best possible 3121.695 (1535.55 seconds) -Cbc0010I After 1100 nodes, 621 on tree, 1e+50 best solution, best possible 3154.71 (1882.42 seconds) -Cbc0010I After 1200 nodes, 721 on tree, 1e+50 best solution, best possible 3154.71 (2048.07 seconds) -Cbc0010I After 1300 nodes, 821 on tree, 1e+50 best solution, best possible 3154.71 (2190.34 seconds) -Cbc0010I After 1400 nodes, 921 on tree, 1e+50 best solution, best possible 3154.71 (2267.84 seconds) -Cbc0010I After 1500 nodes, 1021 on tree, 1e+50 best solution, best possible 3154.71 (2330.02 seconds) -Cbc0010I After 1600 nodes, 1121 on tree, 1e+50 best solution, best possible 3154.71 (2362.29 seconds) -Cbc0010I After 1700 nodes, 1221 on tree, 1e+50 best solution, best possible 3154.71 (2375.36 seconds) -Cbc0010I After 1800 nodes, 1321 on tree, 1e+50 best solution, best possible 3154.71 (2402.68 seconds) -Cbc0010I After 1900 nodes, 1421 on tree, 1e+50 best solution, best possible 3154.71 (2419.25 seconds) -Cbc0010I After 2000 nodes, 1521 on tree, 1e+50 best solution, best possible 3154.71 (2425.78 seconds) -Cbc0004I Integer solution of 3299.5061 found after 1845451 iterations and 2030 nodes (2428.00 seconds) -Cbc0038I Full problem 11087 rows 7586 columns, reduced to 2259 rows 1474 columns -Cbc0011I Exiting as integer gap of 144.79613 less than 2000 or 0%% -Cbc0001I Search completed - best objective 3299.506146440773, took 1848260 iterations and 2031 nodes (2446.82 seconds) -Cbc0032I Strong branching done 21594 times (1847065 iterations), fathomed 0 nodes and fixed 0 variables -Cbc0035I Maximum depth 1028, 0 variables fixed on reduced cost -Cuts at root node changed objective from 2690 to 3121.7 -Probing was tried 2211 times and created 139387 cuts of which 0 were active after adding rounds of cuts (21.905 seconds) -Gomory was tried 2211 times and created 8280 cuts of which 0 were active after adding rounds of cuts (67.476 seconds) -Knapsack was tried 2211 times and created 93728 cuts of which 0 were active after adding rounds of cuts (26.333 seconds) +Cbc0014I Cut generator 6 (TwoMirCuts) - 2740 row cuts average 32.6 elements, 0 column cuts (0 active) in 2.648 seconds - new frequency is 1 +Cbc0011I Exiting as integer gap of 587.50832 less than 2000 or 0%% +Cbc0001I Search completed - best objective 21710.36981896341, took 96696 iterations and 0 nodes (139.23 seconds) +Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost +Cuts at root node changed objective from 20690 to 21122.9 +Probing was tried 20 times and created 5984 cuts of which 1 were active after adding rounds of cuts (2.579 seconds) +Gomory was tried 20 times and created 2351 cuts of which 0 were active after adding rounds of cuts (5.389 seconds) +Knapsack was tried 20 times and created 4692 cuts of which 0 were active after adding rounds of cuts (0.332 seconds) Clique was tried 20 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.328 seconds) -MixedIntegerRounding2 was tried 2211 times and created 37351 cuts of which 0 were active after adding rounds of cuts (25.142 seconds) +MixedIntegerRounding2 was tried 20 times and created 2821 cuts of which 0 were active after adding rounds of cuts (0.354 seconds) FlowCover was tried 20 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.074 seconds) -TwoMirCuts was tried 2211 times and created 34927 cuts of which 0 were active after adding rounds of cuts (20.102 seconds) -ImplicationCuts was tried 73 times and created 35397 cuts of which 0 were active after adding rounds of cuts (0.288 seconds) +TwoMirCuts was tried 20 times and created 2740 cuts of which 0 were active after adding rounds of cuts (2.648 seconds) Result - Optimal solution found (within gap tolerance) -Objective value: 3299.50614644 -Lower bound: 3154.710 -Gap: 0.05 -Enumerated nodes: 2031 -Total iterations: 1848260 -Time (CPU seconds): 2447.82 -Time (Wallclock seconds): 40349.19 +Objective value: 21710.36981896 +Lower bound: 21122.861 +Gap: 0.03 +Enumerated nodes: 0 +Total iterations: 96696 +Time (CPU seconds): 140.60 +Time (Wallclock seconds): 140.91 -Total time (CPU seconds): 2449.20 (Wallclock seconds): 40350.67 +Total time (CPU seconds): 142.01 (Wallclock seconds): 142.41 diff --git a/no weekends.log b/no weekends.log index 74dbd4d..6d90d8c 100644 --- a/no weekends.log +++ b/no weekends.log @@ -1,97 +1,127 @@ -Solver command line: ['/usr/bin/cbc', '-seconds', '10200', '-allow', '2000', '-printingOptions', 'all', '-import', '/tmp/tmpg9k4n7yb.pyomo.lp', '-stat=1', '-solve', '-solu', '/tmp/tmpg9k4n7yb.pyomo.soln'] +Solver command line: ['/usr/bin/cbc', '-seconds', '10200', '-allow', '2000', '-printingOptions', 'all', '-import', '/tmp/tmp30uhrly7.pyomo.lp', '-stat=1', '-solve', '-solu', '/tmp/tmp30uhrly7.pyomo.soln'] Welcome to the CBC MILP Solver Version: 2.9.9 Build Date: Aug 7 2019 -command line - /usr/bin/cbc -seconds 10200 -allow 2000 -printingOptions all -import /tmp/tmpg9k4n7yb.pyomo.lp -stat=1 -solve -solu /tmp/tmpg9k4n7yb.pyomo.soln (default strategy 1) +command line - /usr/bin/cbc -seconds 10200 -allow 2000 -printingOptions all -import /tmp/tmp30uhrly7.pyomo.lp -stat=1 -solve -solu /tmp/tmp30uhrly7.pyomo.soln (default strategy 1) seconds was changed from 1e+100 to 10200 allowableGap was changed from 1e-10 to 2000 Option for printingOptions changed from normal to all -Presolve 42174 (-75751) rows, 17808 (-39901) columns and 170470 (-545319) elements +Presolve is modifying 44 integer bounds and re-presolving +Presolve 41862 (-76927) rows, 17778 (-40027) columns and 176583 (-540886) elements Statistics for presolved model -Original problem has 56988 integers (56160 of which binary) -Presolved problem has 17472 integers (17048 of which binary) -==== 17248 zero objective 4 different -17248 variables have objective of 0 +Original problem has 57084 integers (56160 of which binary) +Presolved problem has 17442 integers (16930 of which binary) +==== 17174 zero objective 5 different +17174 variables have objective of 0 96 variables have objective of 1 48 variables have objective of 10 416 variables have objective of 20 -==== absolute objective values 4 different -17248 variables have objective of 0 +44 variables have objective of 1000 +==== absolute objective values 5 different +17174 variables have objective of 0 96 variables have objective of 1 48 variables have objective of 10 416 variables have objective of 20 -==== for integers 17056 zero objective 2 different -17056 variables have objective of 0 +44 variables have objective of 1000 +==== for integers 16982 zero objective 3 different +16982 variables have objective of 0 416 variables have objective of 20 -==== for integers absolute objective values 2 different -17056 variables have objective of 0 +44 variables have objective of 1000 +==== for integers absolute objective values 3 different +16982 variables have objective of 0 416 variables have objective of 20 +44 variables have objective of 1000 ===== end objective counts -Problem has 42174 rows, 17808 columns (560 with objective) and 170470 elements +Problem has 41862 rows, 17778 columns (604 with objective) and 176583 elements There are 512 singletons with objective Column breakdown: -760 of type 0.0->inf, 0 of type 0.0->up, 0 of type lo->inf, +804 of type 0.0->inf, 44 of type 0.0->up, 0 of type lo->inf, 0 of type lo->up, 0 of type free, 0 of type fixed, -0 of type -inf->0.0, 0 of type -inf->up, 17048 of type 0.0->1.0 +0 of type -inf->0.0, 0 of type -inf->up, 16930 of type 0.0->1.0 Row breakdown: -2281 of type E 0.0, 520 of type E 1.0, 208 of type E -1.0, +2325 of type E 0.0, 520 of type E 1.0, 208 of type E -1.0, 326 of type E other, 0 of type G 0.0, 52 of type G 1.0, -33 of type G other, 2270 of type L 0.0, 35028 of type L 1.0, -1456 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, +107 of type G other, 2270 of type L 0.0, 34501 of type L 1.0, +1553 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, 0 of type Free -Continuous objective value is 2560 - 24.20 seconds -Cgl0002I 38773 variables fixed -Cgl0003I 0 fixed, 416 tightened bounds, 26485 strengthened rows, 49102 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 3627 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 1395 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 599 strengthened rows, 0 substitutions -Cgl0003I 0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions +Continuous objective value is 44560 - 27.12 seconds +Cgl0002I 38891 variables fixed +Cgl0003I 0 fixed, 460 tightened bounds, 26152 strengthened rows, 48849 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 3518 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 1397 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 605 strengthened rows, 0 substitutions +Cgl0003I 0 fixed, 0 tightened bounds, 16 strengthened rows, 0 substitutions Cgl0003I 0 fixed, 0 tightened bounds, 5 strengthened rows, 0 substitutions Cgl0003I 0 fixed, 0 tightened bounds, 3 strengthened rows, 0 substitutions -Cgl0004I processed model has 9381 rows, 8734 columns (8398 integer (7982 of which binary)) and 64789 elements -Cbc0038I Initial state - 321 integers unsatisfied sum - 91.7677 -Cbc0038I Pass 1: (28.38 seconds) suminf. 2.86955 (8) obj. 4945.48 iterations 1696 -Cbc0038I Pass 2: (28.40 seconds) suminf. 3.40577 (10) obj. 5000.2 iterations 23 -Cbc0038I Pass 3: (28.41 seconds) suminf. 2.34720 (10) obj. 5037.45 iterations 132 -Cbc0038I Pass 4: (28.43 seconds) suminf. 0.68053 (6) obj. 5205.81 iterations 14 -Cbc0038I Pass 5: (28.43 seconds) suminf. 0.68053 (6) obj. 5205.81 iterations 0 -Cbc0038I Pass 6: (28.45 seconds) suminf. 0.66667 (2) obj. 4934.07 iterations 151 -Cbc0038I Solution found of 4934.07 +Cgl0004I processed model has 9404 rows, 8703 columns (8367 integer (7864 of which binary)) and 64624 elements +Cbc0038I Initial state - 446 integers unsatisfied sum - 119.977 +Cbc0038I Pass 1: (35.49 seconds) suminf. 10.30843 (35) obj. 58951.9 iterations 2259 +Cbc0038I Pass 2: (35.50 seconds) suminf. 3.00622 (10) obj. 58889.6 iterations 186 +Cbc0038I Pass 3: (35.52 seconds) suminf. 0.66667 (2) obj. 59258.5 iterations 91 +Cbc0038I Solution found of 59258.5 Cbc0038I Branch and bound needed to clear up 2 general integers -Cbc0038I Full problem 9381 rows 8734 columns, reduced to 58 rows 112 columns +Cbc0038I Full problem 9404 rows 8703 columns, reduced to 62 rows 120 columns Cbc0038I Mini branch and bound could not fix general integers Cbc0038I No solution found this major pass -Cbc0038I Before mini branch and bound, 8060 integers at bound fixed and 137 continuous of which 30 were internal integer and 0 internal continuous -Cbc0038I Full problem 9381 rows 8734 columns, reduced to 135 rows 145 columns -Cbc0038I Mini branch and bound did not improve solution (29.22 seconds) -Cbc0038I After 29.22 seconds - Feasibility pump exiting - took 1.01 seconds -Cbc0012I Integer solution of 4162.5731 found by DiveCoefficient after 0 iterations and 0 nodes (29.38 seconds) -Cbc0011I Exiting as integer gap of 1602.5731 less than 2000 or 0%% -Cbc0001I Search completed - best objective 4162.57311524356, took 0 iterations and 0 nodes (29.39 seconds) -Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost -Cuts at root node changed objective from 2560 to 2560 -Probing was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds) -Gomory was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds) -Knapsack was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds) -Clique was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds) -MixedIntegerRounding2 was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds) -FlowCover was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds) -TwoMirCuts was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds) +Cbc0038I Before mini branch and bound, 7881 integers at bound fixed and 132 continuous of which 42 were internal integer and 0 internal continuous +Cbc0038I Full problem 9404 rows 8703 columns, reduced to 455 rows 386 columns +Cbc0038I Mini branch and bound did not improve solution (36.38 seconds) +Cbc0038I After 36.38 seconds - Feasibility pump exiting - took 1.23 seconds +Cbc0012I Integer solution of 55029.278 found by DiveCoefficient after 0 iterations and 0 nodes (36.89 seconds) +Cbc0038I Full problem 9404 rows 8703 columns, reduced to 603 rows 567 columns +Cbc0012I Integer solution of 51918.015 found by RINS after 0 iterations and 0 nodes (37.47 seconds) +Cbc0031I 187 added rows had average density of 77.86631 +Cbc0013I At root node, 187 cuts changed objective from 44560 to 44980.528 in 20 passes +Cbc0014I Cut generator 0 (Probing) - 118 row cuts average 13.6 elements, 1 column cuts (50 active) in 0.705 seconds - new frequency is -100 +Cbc0014I Cut generator 1 (Gomory) - 675 row cuts average 183.0 elements, 0 column cuts (0 active) in 2.686 seconds - new frequency is 1 +Cbc0014I Cut generator 2 (Knapsack) - 24 row cuts average 14.4 elements, 0 column cuts (0 active) in 0.127 seconds - new frequency is -100 +Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.100 seconds - new frequency is -100 +Cbc0014I Cut generator 4 (MixedIntegerRounding2) - 1276 row cuts average 48.9 elements, 0 column cuts (0 active) in 0.366 seconds - new frequency is 1 +Cbc0014I Cut generator 5 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.096 seconds - new frequency is -100 +Cbc0014I Cut generator 6 (TwoMirCuts) - 944 row cuts average 90.7 elements, 0 column cuts (0 active) in 0.978 seconds - new frequency is 1 +Cbc0010I After 0 nodes, 1 on tree, 51918.015 best solution, best possible 44980.528 (60.08 seconds) +Cbc0038I Full problem 9404 rows 8703 columns, reduced to 1009 rows 1004 columns +Cbc0038I Full problem 9404 rows 8703 columns, reduced to 926 rows 930 columns +Cbc0010I After 100 nodes, 63 on tree, 51918.015 best solution, best possible 44980.528 (136.65 seconds) +Cbc0038I Full problem 9404 rows 8703 columns, reduced to 1016 rows 1009 columns +Cbc0010I After 200 nodes, 117 on tree, 51918.015 best solution, best possible 44980.528 (156.62 seconds) +Cbc0038I Full problem 9404 rows 8703 columns, reduced to 935 rows 959 columns +Cbc0010I After 300 nodes, 165 on tree, 51918.015 best solution, best possible 44980.528 (179.26 seconds) +Cbc0038I Full problem 9404 rows 8703 columns, reduced to 821 rows 866 columns +Cbc0010I After 400 nodes, 218 on tree, 51918.015 best solution, best possible 44980.528 (199.05 seconds) +Cbc0038I Full problem 9404 rows 8703 columns, reduced to 861 rows 909 columns +Cbc0010I After 500 nodes, 269 on tree, 51918.015 best solution, best possible 44980.528 (219.81 seconds) +Cbc0038I Full problem 9404 rows 8703 columns, reduced to 842 rows 881 columns +Cbc0012I Integer solution of 45266.296 found by RINS after 145821 iterations and 600 nodes (242.28 seconds) +Cbc0010I After 600 nodes, 313 on tree, 45266.296 best solution, best possible 44980.528 (242.28 seconds) +Cbc0011I Exiting as integer gap of 285.76789 less than 2000 or 0%% +Cbc0001I Search completed - best objective 45266.29573234134, took 147113 iterations and 601 nodes (243.50 seconds) +Cbc0032I Strong branching done 3174 times (148138 iterations), fathomed 0 nodes and fixed 0 variables +Cbc0035I Maximum depth 116, 3 variables fixed on reduced cost +Cuts at root node changed objective from 44560 to 44980.5 +Probing was tried 20 times and created 119 cuts of which 49 were active after adding rounds of cuts (0.705 seconds) +Gomory was tried 305 times and created 736 cuts of which 0 were active after adding rounds of cuts (9.070 seconds) +Knapsack was tried 20 times and created 24 cuts of which 0 were active after adding rounds of cuts (0.127 seconds) +Clique was tried 20 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.100 seconds) +MixedIntegerRounding2 was tried 305 times and created 5890 cuts of which 0 were active after adding rounds of cuts (3.934 seconds) +FlowCover was tried 20 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.096 seconds) +TwoMirCuts was tried 305 times and created 2080 cuts of which 0 were active after adding rounds of cuts (3.452 seconds) +ImplicationCuts was tried 30 times and created 15 cuts of which 0 were active after adding rounds of cuts (0.021 seconds) Result - Optimal solution found (within gap tolerance) -Objective value: 4162.57311524 -Lower bound: 2560.000 -Gap: 0.63 -Enumerated nodes: 0 -Total iterations: 0 -Time (CPU seconds): 29.88 -Time (Wallclock seconds): 30.09 +Objective value: 45266.29573234 +Lower bound: 44980.528 +Gap: 0.01 +Enumerated nodes: 601 +Total iterations: 147113 +Time (CPU seconds): 244.03 +Time (Wallclock seconds): 244.42 -Total time (CPU seconds): 31.28 (Wallclock seconds): 31.62 +Total time (CPU seconds): 246.17 (Wallclock seconds): 246.64 diff --git a/shifts.py b/shifts.py index 82ad588..fb0a335 100644 --- a/shifts.py +++ b/shifts.py @@ -31,7 +31,7 @@ bank_holidays = BankHolidays() bank_holiday_map = {} for bank_holiday in bank_holidays.get_holidays(): bank_holiday_map[bank_holiday['date']] = bank_holiday['title'] -# see BankHolidays source file for more methods and arguments… +# see BankHolidays source file for more methods and arguments class SingleShift(object): @@ -92,7 +92,9 @@ class RotaBuilder(object): balance_offset_modifier=1, ltft_balance_offset=4, max_night_frequency=2, - max_weekend_frequency=2): + max_weekend_frequency=2, + use_previous_shifts=True, + ): print("Start time: {}".format(datetime.datetime.now())) @@ -104,6 +106,8 @@ class RotaBuilder(object): self.weeks_days_product = list(itertools.product(self.weeks, days)) + self.use_previous_shifts = use_previous_shifts + if start_date.weekday() != 0: raise ValueError("Start date {} must be a Mon (not a {})".format( start_date.isoformat(), days[start_date.weekday()])) @@ -644,6 +648,12 @@ class RotaBuilder(object): full_time_equivalent_joined * worker.fte_adj) + if self.use_previous_shifts: + if shift in worker.previous_shifts: + worked, allocated = worker.previous_shifts[shift] + target_shifts = target_shifts + allocated - worked + + worker.shift_target_number[shift.name] = target_shifts if shift.hard_constrain_shift: diff --git a/test.py b/test.py index de30921..a6e8461 100644 --- a/test.py +++ b/test.py @@ -24,7 +24,7 @@ allow = 2000 sites = ("truro", "exeter", "torquay", "barnstaple", "plymouth") -Rota = RotaBuilder(datetime.date(2020, 9, 7), +Rota = RotaBuilder(datetime.date(2021, 3, 8), weeks_to_rota=weeks_to_rota, balance_offset_modifier=1, max_weekend_frequency=2, @@ -37,7 +37,7 @@ Rota.constraint_options["constrain_time_off_after_nights"] = True Rota.constraint_options["balance_nights_across_sites"] = True Rota.constraint_options["balance_blocks"] = True Rota.constraint_options["balance_weekends"] = True -Rota.constraint_options["avoid_st1_first_month"] = True +Rota.constraint_options["avoid_st1_first_month"] = False Rota.constraint_options["max_weekends"] = 10 Rota.constraint_options["prevent_monday_and_tuesday_after_full_weekends"] = [ "truro", "torquay", "exeter" @@ -55,36 +55,41 @@ Rota.add_shifts( "torquay_twilight", 12.5, days[:4], + balance_offset=4, assign_as_block=True), SingleShift(("plymouth", ), "plymouth_twilight", 12.5, days[:5], + balance_offset=4, workers_required=1, constraints=["max_2_consecutive_shifts_per_week"]), SingleShift(("exeter", ), "weekend_exeter", 12.5, days[4:], + balance_offset=4, rota_on_nwds=True, force_as_block=True), SingleShift(("truro", ), "weekend_truro", 12.5, days[4:], - balance_offset=1, + balance_offset=4, rota_on_nwds=True, force_as_block=True), SingleShift(("torquay", ), "weekend_torquay", 12.5, days[4:], + balance_offset=4, rota_on_nwds=True, force_as_block=True), SingleShift(("plymouth", ), "weekend_plymouth1", 8, days[5:], + balance_offset=4, workers_required=1, rota_on_nwds=True, force_as_block=True), @@ -92,6 +97,7 @@ Rota.add_shifts( "weekend_plymouth2", 8, days[5:], + balance_offset=4, workers_required=1, rota_on_nwds=True, force_as_block=True), @@ -123,7 +129,7 @@ Rota.add_shifts( use_test_workers = False -load_leave = True +load_leave = False Rota.build_shifts_and_workers() if load_leave: @@ -192,7 +198,7 @@ else: for row in reader: n = n + 1 - name, site, grade, fte, nwd, end_date, oop, extra = row + name, site, grade, fte, nwd, end_date, oop, twi, twi_we, night, night_we, extra = row # Ignore trainees if fte == 0 (what are they doing here anyway) if int(fte) < 1: @@ -202,7 +208,28 @@ else: end_date = end_date if end_date else None oop = oop.split("-") if oop else None + previous_shifts = {} + if twi: + worked = twi.split(" ")[0] + allocated = twi.split(" ")[1][1:-1] + previous_shifts["{}_twilight".format(site.lower())] = (worked, allocated) + if twi_we: + worked = twi_we.split(" ")[0] + allocated = twi_we.split(" ")[1][1:-1] + previous_shifts["weekend_{}".format(site.lower())] = (worked, allocated) + if night: + worked = night.split(" ")[0] + allocated = night.split(" ")[1][1:-1] + previous_shifts["night_weekday".format(site.lower())] = (worked, allocated) + if night_we: + worked = night_we.split(" ")[0] + allocated = night_we.split(" ")[1][1:-1] + previous_shifts["night_weekend".format(site.lower())] = (worked, allocated) + + leave_requests = [] + work_requests = [] + site_pref = 1 if load_leave: if name not in leave: raise ValueError( @@ -254,7 +281,8 @@ else: oop, not_available_to_work=leave_requests, work_requests=work_requests, - night_at_derriford=site_pref)) + night_at_derriford=site_pref, + previous_shifts=previous_shifts)) print("Building model") Rota.build_shifts_and_workers() diff --git a/workers.py b/workers.py index 63dbaa8..5a340a0 100644 --- a/workers.py +++ b/workers.py @@ -20,6 +20,7 @@ class Worker: pref_not_to_work=None, work_requests=None, night_at_derriford=0, + previous_shifts={} ): self.id = id self.name = name @@ -32,6 +33,8 @@ class Worker: self.proportion_rota_to_work = 1 self.night_at_derriford = night_at_derriford + self.previous_shifts = previous_shifts + self.shift_target_number = defaultdict(int) days_to_work = Rota.rota_days_length