Benchmark examples for the PIQP solver

December 14, 2023 ยท View on GitHub

This repo is based on a striped down version of osqp_benchmarks, i.e., it only contains the Maros Meszaros problems.

These are the scripts to compare the following Quadratic Program (QP) solvers

  • PIQP
  • OSQP
  • SCS
  • PROXQP
  • QPALM
  • GUROBI
  • MOSEK

To run these scripts you need pandas and cvxpy installed.

All the scripts come with options (default to False)

  • --parallel for parallel execution across instances
  • --verbose for verbose solvers output (they can be slower than necessary while printing)
  • --high_accuracy for high accuracy (eps_abs=1e-08, eps_rel=1e-09) solver settings + optimality checks (default is eps_abs=1e-03, eps_rel=1e-04)

Maros Meszaros problems

These are the hard problems from the Maros Meszaros testset converted using CUTEst and the scripts in the maros_meszaros_data/ folder. In these benchmarks we compare PIQP with OSQP, SCS, PROXQP, GUROBI and MOSEK.

To execute these tests run

python run_maros_meszaros_problems.py

Results

The resulting shifted geometric means for low accuracy (eps_abs=1e-03, eps_rel=1e-04) are

PIQPOSQPSCSPROXQPQPALMGUROBIMOSEK
1.07.5511.3831.723.456.725.29

maros_meszaros_problems

and for high accuracy (eps_abs=1e-08, eps_rel=1e-09) are

PIQPOSQPSCSPROXQPQPALMGUROBIMOSEK
1.042.6631.6226.616.973.465.86

maros_meszaros_problems_high_accuracy

These results have been obtained on an AMD Ryzen Threadripper 3990X 64-Core @ 4.3GHz CPU.

Citing

If you are using these benchmarks for your work, please cite the OSQP paper and PIQP paper.