Research tool for benchmarking optimization solvers across LP, QP, SOCP, and SDP problems using external problem libraries with automated execution and fair comparison methodology.
"Regularly benchmark publicly available solvers and publish the results as data"
This system prioritizes unbiased solver comparison through minimal configuration, establishing "out of the box" performance baselines for research use.
- Solver Defaults: Use default parameters to avoid optimization bias
- Reproducible Results: Fixed problem libraries and solver versions
- Open Data: Results published as accessible JSON/CSV for research
- Version Tracking: Complete metadata for result verification
- Minimal Configuration: Fair comparison using solver defaults
- Modular Design: Independent addition of solvers and problems
- Result Standardization: Common data format across solver environments
- Error Resilience: System continues despite individual solver failures
- Timeout Management: Configurable time limits prevent hanging on difficult problems
- Automated Operation: GitHub Actions enables hands-off execution
LOCAL DEVELOPMENT:
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Problem │───▶│ Solver │───▶│ Result │
│ Loading │ │ Execution │ │ Collection │
└─────────────┘ └──────────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Validation │ │ Environment │ │ Database │
│ & Caching │ │ Capture │ │ Storage │
└─────────────┘ └──────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ Report │
│ Generation │
└─────────────┘
GITHUB ACTIONS (Publishing Only):
┌─────────────┐ ┌──────────────┐
│ Pre-built │───▶│ GitHub │
│ docs/ │ │ Pages │
└─────────────┘ └──────────────┘
Problem Libraries:
- DIMACS: SeDuMi .mat format
- SDPLIB: SDPA .dat-s format
- NETLIB: MPS format (LP problems)
Roughly 215 problems are currently registered; the authoritative list (and exact count) is config/problem_registry.yaml.
Solver Support:
- Python (9): SciPy, CVXPY backends (CLARABEL, SCS, ECOS, OSQP, CVXOPT, SDPA, SCIP, HIGHS)
- MATLAB (2): SeDuMi, SDPT3 (optional)
Problem Types:
- LP: Linear Programming
- QP: Quadratic Programming
- SOCP: Second-Order Cone Programming
- SDP: Semidefinite Programming
External Library Focus: Use established problem libraries (DIMACS, SDPLIB, NETLIB) rather than creating internal problems to ensure research relevance and standardization.
Git Submodule Integration: Pin problem libraries to specific commits for reproducibility while enabling updates when needed.
Multi-Language Support: Unified interface supporting both Python and MATLAB solvers with standardized result format.
Database Storage: SQLite with complete version tracking (solver versions, Git commits, environment details) for historical analysis.
Result Format: Standardized SolverResult across all solvers with timing, objective values, status, and metadata.
Report Generation: Automated HTML dashboards with JSON/CSV data export for research use.
Intended for research and academic use: comparing solver performance across problem types, benchmarking new algorithms against published baselines, and referencing reproducible results in publications.
- Python 3.12+: Core execution environment
- Git: Repository and submodule management
- Optional MATLAB: For MATLAB solver support
# Clone with submodules for problem libraries
git clone --recursive <repository-url>
# Validate environment
python main.py --validate
# Run benchmarks with default timeout (120s)
python main.py --all
# Run benchmarks with custom timeout for difficult problems
python main.py --all --timeout 600 # 10-minute timeout for large SDP problems- Environment Validation: System compatibility checking
- Problem Validation: File format and data integrity verification
- Solver Validation: Execution capability testing
- Result Validation: Output consistency verification
- Timeout Handling: Configurable solver execution time limits with graceful termination
- Fixed Dependencies: Pinned solver versions in requirements.txt
- Consistent Environments: Standardized execution via GitHub Actions
- Complete Metadata: Environment info saved with all results
- Version Control: Git commit tracking for all benchmark runs
- Original Status Preservation: Complete solver-specific status codes and statistics preserved for research reproducibility
- QP/LP Benchmark Expansion: Add more LP and QP benchmark problems from standard libraries
- Additional Solver Backends: Include more solver backends for broader comparison
This basic design establishes the conceptual framework and development approach. For implementation details, see detail_design.md.
Last Updated: February 2026