Parallel MIP Solving with Dynamic Task Decomposition
Authors: Peng Lin, Shaowei Cai*, Mengchuan Zou and Shengqi Chen
PartiMIP is an innovative framework for parallel mixed integer programming (MIP) solving that achieves efficient parallelization through dynamic task decomposition. Both the scheduler and worker processes are implemented in C++ using g++ 9.4.0 with the -O3 optimization flag, and parallelization is achieved via the pthread library.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
PartiMIP-CP2025/
├── Benchmark/ # MIPLIB 2017 test dataset
│ ├── benchmark.txt # List of instances
│ └── setup.sh # Script to download the dataset (downloads instances into the mps/ directory)
├── Evaluation/ # Experimental evaluation materials
│ ├── pre-compiled/ # Pre-compiled comparison solvers
│ └── run/ # Experiment execution scripts
├── PartiMIP/ # Core source code and build files
│ ├── BaseSolver/ # Base solvers (HiGHS, SCIP)
│ ├── PartiMIP-HiGHS/ # PartiMIP implementation using HiGHS as the base solver
│ └── PartiMIP-SCIP/ # PartiMIP implementation using SCIP as the base solver
├── Record/ # New best known solutions to open instances
├── Result/ # Summary of experimental results for the paper
└── Test/ # Test cases
- Operating System: Linux / Unix
- Compiler: A modern compiler supporting C++17 (e.g., GCC 9.0+)
- Build Tool: CMake 3.15 or higher
- Processor: A modern multi-threaded CPU
-
Build the Base Solver HiGHS
cd PartiMIP/BaseSolver/HiGHS bash build_highs.sh -
Build PartiMIP-HiGHS
cd PartiMIP/PartiMIP-HiGHS mkdir -p build && cd build cmake .. make -j
-
Build PartiMIP-SCIP
cd PartiMIP/PartiMIP-SCIP mkdir -p build && cd build cmake .. make -j
After compilation, the executables for each project are located in their respective build directories.
| Parameter | Description | Example |
|---|---|---|
--instance |
Path to the MIP instance file (.mps) | Test/app1-1.mps |
--threadNum |
Maximum number of worker processes (cores) | 8 |
--cutoff |
Time limit for solving (in seconds) | 300 |
./PartiMIP-HiGHS \
--instance=Test/app1-1.mps \
--threadNum=8 \
--cutoff=300The experiments utilize the MIPLIB2017 benchmark, which comprises 240 general MIP instances collected from various real-world applications. Running the following command will automatically download and extract the dataset into the Benchmark/mps/ directory:
cd Benchmark
bash setup.shThe pre-compiled comparison solvers are stored in the Evaluation/pre-compiled/ directory and include:
-
Relevant Solvers
- SCIP (v9.2.0): A widely used open-source MIP solver in academia and industry, developed continuously for over 20 years.
- FiberSCIP (v1.0.0, based on SCIP 9.2.0): A parallel version of SCIP developed by the SCIP team that employs a conventional progressive parallel strategy.
- HiGHS (v1.9.0): A top-performing open-source MIP solver in recent years, featuring a parallel dual simplex method, symmetry detection, and clique detection.
-
Our Implementations
- PartiMIP-HiGHS: The PartiMIP implementation based on HiGHS.
- PartiMIP-SCIP: The PartiMIP implementation based on SCIP.
- CPU: 2 × AMD EPYC 9654
- Memory: 2048 GB
- Operating System: Ubuntu 20.04.4
- Parallel Core Configurations: 8, 16, 32, 64, and 128 cores
- Solving Objective: Achieve a relative optimality gap of 0 (aligned with the Hans Mittelmann ranking standard)
- Time Limit: 300 seconds per instance
- Total Experiment Time: Accumulated over 2.3 CPU years
The experiment execution scripts are located in the Evaluation/run/ directory and can be used to run the experiments directly.
To fully utilize computing resources, multiple parallel configurations are adopted, such as:
- Running 128 single-threaded instances simultaneously
- Running 16 instances with 8 threads each concurrently
- Running 4 instances with 32 threads each concurrently
- Running a single instance using 128 threads
The experimental results are stored in the Result/ directory and include the following:
SCIP_Sequential.txt: Sequential solving results for SCIPHiGHS_Sequential.txt: Sequential solving results for HiGHS
- FiberSCIP Results
- Files ranging from
FiberSCIP_8.txttoFiberSCIP_128.txt: Parallel test results for 8 to 128 cores.
- Files ranging from
- Parallel HiGHS Results
- Files ranging from
HiGHS_8.txttoHiGHS_128.txt: Parallel test results for 8 to 128 cores.
- Files ranging from
- PartiMIP-SCIP Results
- Files ranging from
PartiMIP_SCIP_8.txttoPartiMIP_SCIP_128.txt: Parallel test results for 8 to 128 cores.
- Files ranging from
- PartiMIP-HiGHS Results
- Files ranging from
PartiMIP_HiGHS_8.txttoPartiMIP_HiGHS_128.txt: Parallel test results for 8 to 128 cores.
- Files ranging from
All experimental result files adhere to the following naming convention:
[Solver Name] – [Thread Count], [Instance], [Status], [Objective Value (if applicable)], [Solve Time (if applicable)].
The Record/ directory contains our breakthrough results for open MIP instances from MIPLIB. Open instances are those for which the optimal solution remains unproven and represent significant challenges in the field of MIP solving.
- PartiMIP has established new best known solutions for 16 open instances.
- All solutions have been verified and accepted by MIPLIB.