Skip to main content
Log in

Progress in presolving for mixed integer programming

  • Full Length Paper
  • Published:
Mathematical Programming Computation Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Fig. 1
Fig. 2
Fig. 3
Fig. 4

Similar content being viewed by others

Notes

  1. Assuming that no empty constraints exist; otherwise, the number of edges is still not larger than z.

  2. 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

  1. 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)

    Article  MATH  MathSciNet  Google Scholar 

  2. Achterberg, T.: Constraint Integer Programming. PhD thesis, Technische Universität Berlin (2007)

  3. Achterberg, T.: SCIP: solving constraint integer programs. Math. Program. Comput. 1(1), 1–41 (2009)

    Article  MATH  MathSciNet  Google Scholar 

  4. Achterberg, T., Koch, T., Martin, A.: MIPLIB 2003. Oper. Res. Lett. 34(4), 1–12 (2006)

    Article  MathSciNet  Google Scholar 

  5. Andersen, E.D., Andersen, K.D.: Presolving in linear programming. Math. Program. 71, 221–245 (1995)

    MATH  Google Scholar 

  6. 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)

    Article  MATH  Google Scholar 

  7. Atamtürk, A., Savelsbergh, M.W.P.: Integer-programming software systems. Ann. Oper. Res. 140, 67–124 (2005)

    Article  MATH  MathSciNet  Google Scholar 

  8. 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)

    Article  MATH  MathSciNet  Google Scholar 

  9. 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)

  10. 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)

    Article  MATH  MathSciNet  Google Scholar 

  11. Bixby, R.E., Wagner, D.K.: A note on detecting simple redundancies in linear systems. Oper. Res. Lett. 6(1), 15–17 (1987)

    Article  MATH  MathSciNet  Google Scholar 

  12. Borndörfer, R.: Aspects of set packing, partitioning, and covering. PhD thesis, Technische Universität Berlin (1998)

  13. 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)

    Article  MATH  MathSciNet  Google Scholar 

  14. Crowder, H., Johnson, E.L., Padberg, M.: Solving large-scale zero-one linear programming problems. Oper. Res. 31(5), 803–834 (1983)

    Article  MATH  Google Scholar 

  15. Dantzig, G.B.: Discrete-variable extremum problems. Oper. Res. 5(2), 266–277 (1957)

    Article  MathSciNet  Google Scholar 

  16. 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)

  17. 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)

  18. Guignard, M., Spielberg, K.: Logical reduction methods in zero-one programming: minimal preferred variables. Oper. Res. 29(1), 49–74 (1981)

    Article  MATH  MathSciNet  Google Scholar 

  19. 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)

    Article  MATH  Google Scholar 

  20. Hopcroft, J., Tarjan, R.: Algorithm 447: efficient algorithms for graph manipulation. Commun. ACM 16(6), 372–378 (1973)

    Article  Google Scholar 

  21. Johnson, E.L., Suhl, U.H.: Experiments in integer programming. Discrete Appl. Math. 2(1), 39–55 (1980)

    Article  MATH  MathSciNet  Google Scholar 

  22. 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)

    Article  MathSciNet  Google Scholar 

  23. 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)

  24. Nemhauser, G.L., Wolsey, L.A.: Integer and Combinatorial Optimization. Wiley, New York (1988)

    Book  MATH  Google Scholar 

  25. Savelsbergh, M.W.P.: Preprocessing and probing techniques for mixed integer programming problems. ORSA J. Comput. 6, 445–454 (1994)

    Article  MATH  MathSciNet  Google Scholar 

  26. Suhl, U., Szymanski, R.: Supernode processing of mixed-integer models. Comput. Optim. Appl. 3(4), 317–331 (1994)

    Article  MATH  MathSciNet  Google Scholar 

  27. 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)

  28. Williams, H.P.: The elimination of integer variables. J. Oper. Res. Soc. 43(5), 387–393 (1992)

    Article  MATH  Google Scholar 

  29. Wolsey, L.A.: Integer Programming. Wiley, New York (1998)

    MATH  Google Scholar 

  30. Wunderling, R.: Paralleler und objektorientierter Simplex-Algorithmus. PhD thesis, Technische Universität Berlin (1996)

  31. Zhu, N., Broughan, K.: A note on reducing the number of variables in integer programming problems. Comput. Optim. Appl. 8(3), 263–272 (1997)

    Article  MATH  MathSciNet  Google Scholar 

Download references

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

Authors

Corresponding author

Correspondence to Gerald Gamrath.

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.

Table 2 Detailed computational results on the set of supply-chain management instances
Table 3 Detailed computational results on the MMM 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:

$$\begin{aligned} \text {gap(db, pb)} = {\left\{ \begin{array}{ll} 0.0 &{}\quad pb = db \\ \infty &{}\quad pb \cdot db \le 0 \\ \frac{\left|pb - db \right|}{\min \left\{ \left|pb \right|; \left|db \right|\right\} } &{}\quad \mathrm{else} \end{array}\right. } \end{aligned}$$

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

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s12532-015-0083-5

Mathematics Subject Classification

Navigation