In terms of computing efficiency and numerical resilience, resolving has become an essential component of current mixed integer program (MIP) solvers. PaPILO is a new C++ header-only library that provides a huge range of resolving methods for MIP and linear programming issues from the literature.
The dearth of (a) solver-independent implementations that (b) use parallel hardware and (c) provide multi-precision arithmetic drove the development of PaPILO. Presolving has always been meant to be quick. When necessary, rigorous working limitations are used to achieve a low computing overhead. PaPILO’s parallelization architecture seeks to reduce the computational cost even when resolving is performed aggressively or on large-scale issues.
PaPILO employs a transaction-based framework to eliminate conflicts between simultaneous resolve reductions. This avoids the memory-intensive allocation of numerous copies of the issue as well as the need for particular synchronization between resolvers. Furthermore, the usage of Intel’s Threading Building Blocks library enables PaPILO to use recursive parallelism within costly resolving algorithms such as probing, dominating columns, and constraint sparsification. We present an overview of PaPILO’s capabilities as well as insights into key design decisions.
Ted Ralphs, Area Editor for Software Tools, accepted it.
Research Campus MODAL, financed by the German Federal Ministry of Education and Research [Grants 05M14ZAM, 05M20ZBM], and the European Union’s Horizon 2020 research and innovation program under grant agreement No 773897 (plan4res), provided financial support for this study. The opinions expressed in this work are solely those of the author. The European Commission / Executive Agency for Innovation and Networks is not liable for any use that may be made of the information included there.
The software that supports the study’s conclusions is included in the paper and its Supplemental Information.