Skip to content

qpsolvers/free_for_all_qpbenchmark

Repository files navigation

Free-for-all test set for QP solvers

This repository contains quadratic programs (QPs) in a format suitable for qpbenchmark. It is free-for-all, open to problems from all fields, hard and easy. Here are the reports produced by the benchmarking tool:

Installation

The recommended process is to install the benchmark and all solvers in an isolated environment using conda:

conda env create -f environment.yaml
conda activate qpbenchmark

It is also possible to install the benchmark individually by pip install qpbenchmark.

Usage

Run the test set as follows:

python free_for_all.py run

The outcome, written to the results/ directory, is a standardized report comparing all available solvers against the different benchmark metrics. You can check out and post your own results in the Results forum.

Contributing

Do you have quadratic programs to share? Join the benchmark by submitting it to this test set: open a PR (preferred), or complete the submission form:

You can also contribute by running the benchmark on your machine and posting your results to the Results forum.

Problems

Here are all problems in this test set:

Problem name Source and details
CONT-* Maros-Meszaros test set
DOCSLS From this issue
GNAR* Proposed in #2 and #3, details in this paper
ICULS* Proposed in #1
LIPMWALK* Proposed in #3, details in this paper
QUADCMPC* Proposed in mpc_qpbenchmark#1, details in this thesis
WHLIPBAL* Proposed in #4, details in this paper

These problems have been contributed by:

Citation

If you use qpbenchmark in your works, please cite all its contributors as follows:

@software{qpbenchmark2024,
  title = {{qpbenchmark: Benchmark for quadratic programming solvers available in Python}},
  author = {Caron, Stéphane and Zaki, Akram and Otta, Pavel and Arnström, Daniel and Carpentier, Justin and Yang, Fengyu and Leziart, Pierre-Alexandre},
  url = {https://github.com/qpsolvers/qpbenchmark},
  license = {Apache-2.0},
  version = {2.3.0},
  year = {2024}
}

See also

Related test sets that may be relevant to your use cases: