Abstract
This paper describes three presolving techniques for solving mixed integer programming problems (MIPs) that were implemented in the academic MIP solver SCIP. The task of presolving is to reduce the problem size and strengthen the formulation, mainly by eliminating redundant information and exploiting problem structures. The first method fixes continuous singleton columns and extends results known from duality fixing. The second analyzes and exploits pairwise dominance relations between variables, whereas the third detects isolated subproblems and solves them independently. The performance of the presented techniques is demonstrated on two MIP test sets. One contains all benchmark instances from the last three MIPLIB versions, while the other consists of real-world supply chain management problems. The computational results show that the combination of all three presolving techniques almost halves the solving time for the considered supply chain management problems. For the MIPLIB instances we obtain a speedup of 20 % on affected instances while not degrading the performance on the remaining problems.
Similar content being viewed by others
Notes
Assuming that no empty constraints exist; otherwise, the number of edges is still not larger than z.
See, e.g., the markshare instances [1] contained in MIPLIB 2003 that are hard to solve for state-of-the-art solvers although having only 60 variables.
References
Aardal, K., Bixby, R.E., Hurkens, C.A.J., Lenstra, A.K., Smeltink, J.W.: Market split and basis reduction: towards a solution of the Cornuéjols–Dawande instances. INFORMS J. Comput. 12(3), 192–202 (2000)
Achterberg, T.: Constraint Integer Programming. PhD thesis, Technische Universität Berlin (2007)
Achterberg, T.: SCIP: solving constraint integer programs. Math. Program. Comput. 1(1), 1–41 (2009)
Achterberg, T., Koch, T., Martin, A.: MIPLIB 2003. Oper. Res. Lett. 34(4), 1–12 (2006)
Andersen, E.D., Andersen, K.D.: Presolving in linear programming. Math. Program. 71, 221–245 (1995)
Atamtürk, A., Nemhauser, G.L., Savelsbergh, M.W.P.: Conflict graphs in solving integer programming problems. Eur. J. Oper. Res. 121(1), 40–55 (2000)
Atamtürk, A., Savelsbergh, M.W.P.: Integer-programming software systems. Ann. Oper. Res. 140, 67–124 (2005)
Babayev, D.A., Mardanov, S.S.: Reducing the number of variables in integer and linear programming problems. Comput. Optim. Appl. 3(2), 99–109 (1994)
Bixby, R.E., Ceria, S., McZeal, C.M., Savelsbergh, M.W.P.: An updated mixed integer programming library: MIPLIB 3.0. Optima 58, 12–15 (1998)
Bixby, R.E., Rothberg, E.: Progress in computational mixed integer programming-a look back from the other side of the tipping point. Ann. Oper. Res. 149, 37–41 (2007)
Bixby, R.E., Wagner, D.K.: A note on detecting simple redundancies in linear systems. Oper. Res. Lett. 6(1), 15–17 (1987)
Borndörfer, R.: Aspects of set packing, partitioning, and covering. PhD thesis, Technische Universität Berlin (1998)
Brearley, A.L., Mitra, G., Williams, H.P.: Analysis of mathematical programming problems prior to applying the simplex algorithm. Math. Program. 8, 54–83 (1975)
Crowder, H., Johnson, E.L., Padberg, M.: Solving large-scale zero-one linear programming problems. Oper. Res. 31(5), 803–834 (1983)
Dantzig, G.B.: Discrete-variable extremum problems. Oper. Res. 5(2), 266–277 (1957)
Daskalakis, C., Karp, R.M., Mossel, E., Riesenfeld, S., Verbin, E.L.: Sorting and selection in posets. In: SODA ’09: Proceedings of the Nineteenth Annual ACM–SIAM Symposium on Discrete Algorithms, pp. 392–401. Society for Industrial and Applied Mathematics, Philadelphia (2009)
Fügenschuh, A., Martin, A.: Computational integer programming and cutting planes. In: Aardal, K., Nemhauser, G.L., Weismantel, R. (eds.) Discrete Optimization. Handbooks in Operations Research and Management Science, vol. 12, chap. 2, pp. 69–122. Elsevier, Amsterdam (2005)
Guignard, M., Spielberg, K.: Logical reduction methods in zero-one programming: minimal preferred variables. Oper. Res. 29(1), 49–74 (1981)
Hoffman, K.L., Padberg, M.: Improving LP-representations of zero-one linear programs for branch-and-cut. ORSA J. Comput. 3(2), 121–134 (1991)
Hopcroft, J., Tarjan, R.: Algorithm 447: efficient algorithms for graph manipulation. Commun. ACM 16(6), 372–378 (1973)
Johnson, E.L., Suhl, U.H.: Experiments in integer programming. Discrete Appl. Math. 2(1), 39–55 (1980)
Koch, T., Achterberg, T., Andersen, E., Bastert, O., Berthold, T., Bixby, R.E., Danna, E., Gamrath, G., Gleixner, A.M., Heinz, S., Lodi, A., Mittelmann, H., Ralphs, T., Salvagnin, D., Steffy, D.E., Wolter, K.: MIPLIB 2010. Math. Program. Comput. 3(2), 103–163 (2011)
Mahajan, A.: Presolving mixed-integer linear programs. In: Cochran, J.J., Cox, L.A., Keskinocak, P., Kharoufeh, J.P., Smith, J.C. (eds) Wiley Encyclopedia of Operations Research and Management Science, pp. 4141–4149. Wiley, New York (2011)
Nemhauser, G.L., Wolsey, L.A.: Integer and Combinatorial Optimization. Wiley, New York (1988)
Savelsbergh, M.W.P.: Preprocessing and probing techniques for mixed integer programming problems. ORSA J. Comput. 6, 445–454 (1994)
Suhl, U., Szymanski, R.: Supernode processing of mixed-integer models. Comput. Optim. Appl. 3(4), 317–331 (1994)
Williams, H.P.: A reduction procedure for linear and integer programming models. In: Redundancy in Mathematical Programming. Lecture Notes in Economics and Mathematical Systems, vol. 206, pp. 87–107. Springer, Berlin (1983)
Williams, H.P.: The elimination of integer variables. J. Oper. Res. Soc. 43(5), 387–393 (1992)
Wolsey, L.A.: Integer Programming. Wiley, New York (1998)
Wunderling, R.: Paralleler und objektorientierter Simplex-Algorithmus. PhD thesis, Technische Universität Berlin (1996)
Zhu, N., Broughan, K.: A note on reducing the number of variables in integer programming problems. Comput. Optim. Appl. 8(3), 263–272 (1997)
Acknowledgments
The authors would like to thank the anonymous reviewers for helpful comments on the paper. The work for this article has been partly conducted within the Research Campus Modal funded by the German Federal Ministry of Education and Research (fund number 05M14ZAM). Finally, we thank the DFG for their support within Projects A05, B07, and Z02 in CRC TRR 154.
Author information
Authors and Affiliations
Corresponding author
Appendix A: Detailed computational results
Appendix A: Detailed computational results
In this appendix, we present detailed results of our computational experiments presented in Sect. 6. Table 2 lists results for the supply chain management instances, while Table 3 shows the instances from the MMM test set.
For each instance, we list the original number of variables and constraints. For both the basic presolving as well as the advanced presolving, which includes the presolving techniques presented in this paper, we list the number of variables and constraints after presolving, the presolving time (PTime), and the total solving time (STime). If the time limit was reached, we list the gap at termination instead of the time, printed in italics. As in [22], the gap for a given primal bound pb and dual bound db is computed by the following formula:
If the gap is infinite, we print “inf%”, if it is larger than 100,000, we replace the last three digits by a “k”. For the advanced presolving, we additionally present the increase in the root LP dual bound (before cutting plane separation) in column “LP \(\varDelta \)%”. For the dominating columns and stuffing presolver, we show the number of calls, the time spent in the presolver, and the number of variables fixed by dominating columns (fixed) and stuffing (stuff). Finally, for the components presolver, we list the number of calls, the time, the number of components solved, and the total number of components detected as well as the number of fixed variables and deleted constraints. Whenever one variant dominates the other in one criterion significantly, we print the dominating value in bold for the instance.
At the bottom of the table, we present aggregated results. We list the average percentage of variables and constraints remaining after presolving, the average root LP dual bound increase, and the shifted geometric mean of the presolving and solving time (instances hitting the time limit account for 7200 s). We use a shift of 10 s for the solving time and 0.01 s for the presolving time. For the presolvers, we show the average number of presolving calls, the shifted geometric mean of the time spent in the presolver, again with a shift of 0.01, the average number of components solved and detected, and the average percentages of variables and constraints fixed or deleted by the presolvers. Underneath we print the number of solved instances for the two different presolving settings and a line which lists the same averages, but computed for only the subset of instances solved to optimality by both variants. Moreover, for the MMM test set, we print two rows with averages restricted to the instances where the advanced presolving found additional reductions (“applied”) and did not find any reductions (“not appl.”), together with the number of instances in the corresponding sets. These lines are only printed for the MMM test set because the advanced presolving finds additional reductions for all supply chain management instances.
Rights and permissions
About this article
Cite this article
Gamrath, G., Koch, T., Martin, A. et al. Progress in presolving for mixed integer programming. Math. Prog. Comp. 7, 367–398 (2015). https://doi.org/10.1007/s12532-015-0083-5
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s12532-015-0083-5