Skip to content

Releases: qpsolvers/qpbenchmark

v2.4.0

16 Dec 09:28
a3fe045
Compare
Choose a tag to compare

This release adds the ability to load and save test sets and results from Apache Parquet files. It also refactors the command-line tool with a progress bar (estimating the time remaining until completion) as well as a "very verbose" mode for per-call details.

$ python mpc_qpbenchmark.py run
[2024-12-16 10:27:18,154] [info] Loading existing results from '~/src/mpc_qpbenchmark/results/qpbenchmark_results.csv'... (results.py:56)
[2024-12-16 10:27:18,160] [info] Loaded 3840 rows from '~/src/mpc_qpbenchmark/results/qpbenchmark_results.csv' (results.py:63)
 23%|████████████▏                                       | 720/3072 [00:00<00:01, 1775.82it/s]

Added

  • Add ParquetTestSet class for test sets loaded from Parquet files
  • Add Problem.from_qpsolvers shorthand function
  • Add ProblemList class that can be saved to Parquet files
  • Allow strings or paths as arguments to the main function
  • CLI: Add list_problems command
  • New dependency: tqdm
  • Optionally add a GPU summary line to reports
  • Results can now be read and save from and to Parquet files
  • Results property to get the number of result rows
  • Support Python 3.12
  • Very-verbose mode for extra debug messages

Changed

  • Allow results file paths to be strings or pathlib paths
  • Don't save results more frequently than every 10 seconds
  • More informative solver exception warnings
  • Refactor results loading and saving
  • Save results to file after problem is done rather than at each solver call
  • Update skip logic in CPU info table

Fixed

  • CLI: Only allow --solver to be an available solver for the run command

v2.3.0

03 Sep 14:25
Compare
Choose a tag to compare

This release improves subset handling for QP test sets that have both sparse and dense problems, allowing using the same results file for both.

Added

  • Add results_path argument to the main function
  • Results: handle loading/saving CSV files with out-of-test-set problems
  • Special handling to get CVXOPT version number properly

Changed

  • CLI: make results path an argument to all commands
  • Rename "include timeouts" argument to "rerun timeouts"

v2.2.3

14 Aug 07:56
f50a4e7
Compare
Choose a tag to compare

This patch release fixes reporting of solver versions when some solvers are excluded.

Fixed

  • Fix reporting of solver versions when some solvers are excluded

v2.2.2

01 Aug 09:43
35060b0
Compare
Choose a tag to compare

This patch version fixes handling of no-op conversions in test sets (dense to dense or sparse to sparse).

Added

  • Expose exceptions from top-level module

Fixed

  • Bump Python version to actual requirement of 3.9 or above
  • Handle no-op conversion from dense to dense properly
  • Handle no-op conversion from sparse to sparse properly

v2.2.1

06 Feb 19:06
96dac01
Compare
Choose a tag to compare

This patch release updates to qpsolvers v4.3.1 which fixes a bug in the Gurobi interface. Thanks @563925743 👍

Changed

  • Update qpsolvers to v4.3.1 to fix the Gurobi interface

v2.2.0

16 Jan 14:17
71a61dc
Compare
Choose a tag to compare

The benchmark is now distributed on conda-forge:

conda install qpbenchmark

This release also adds a main-function hook to make it easier to run test sets directly from their repository as python my_test_set.py.

Added

  • Distribute on conda-forge
  • Test set path argument to the main function of the command-line interface

Changed

  • Update environment file to install from conda-forge

v2.1.1

22 Dec 10:03
0dd46f8
Compare
Choose a tag to compare

This patch release fixes a bug in the handling of known solver issues.

Changed

  • Clarabel: set tol_gap_abs settings in set_eps_abs
  • Clarabel: set tol_gap_rel settings in set_eps_rel
  • Log a warning message when skipping known solver issue
  • PIQP: set eps_duality_gap_abs settings in set_eps_abs
  • PIQP: set eps_duality_gap_rel settings in set_eps_rel
  • ProxQP: set eps_duality_gap_abs settings in set_eps_abs
  • ProxQP: set eps_duality_gap_rel settings in set_eps_rel

Fixed

  • Handling of known solver issues

v2.1.0

21 Dec 13:55
fb0fd46
Compare
Choose a tag to compare

This release removes the cost error from benchmark metrics, and completes the spinning off of test sets to their own repositories. It also brings a few quality-of-use improvements.

Added

  • Expose Problem from top-level module
  • Link in report header to go to results tables directly
  • Number of problems in report header
  • Utility function to load a problem from file

Changed

  • Breaking: Remove the cost error from benchmark metrics
  • Include Python 3.8 in supported versions

Removed

v2.0.0

11 Dec 11:16
6672e20
Compare
Choose a tag to compare

This release renames the benchmark to qpbenchmark and adds the QPALM solver.

Added

  • New solver: QPALM

Changed

  • Breaking: Rename the project "qpbenchmark"
  • Don't install solvers by default from PyPI
  • Move solver issue and timeout listings to test-set themselves

Removed

  • Module-wide skip solver issue/timeout functions

v1.2.0

27 Nov 16:04
Compare
Choose a tag to compare

This release adds a mid_accuracy set of settings to the QP solvers benchmark.

Added

  • Citation file to refer to the benchmark in scientific works
  • Medium accuracy settings
  • Note in the readme on CPU throttling