OptiProfiler

OptiProfiler#

Benchmark your optimization solver

OptiProfiler standardizes solver benchmarking with curated problem libraries, shared interfaces, baseline comparisons, and reproducible performance profiles.

quick_start.py
from scipy.optimize import minimize
from optiprofiler import benchmark

def bfgs(fun, x0):
    return minimize(
        fun, x0, method="BFGS").x

def powell(fun, x0):
    return minimize(
        fun, x0, method="Powell").x

scores = benchmark([bfgs, powell])
print(scores)
Python + MATLAB Benchmark solvers through either interface with the same workflow
Problem libraries Use CUTEst, S2MPJ, custom problems, and diverse features
Reproducible outputs Export profiles, scores, logs, and result files for reporting

Two ways to use OptiProfiler

Run it locally, or in the cloud

Run locally

Use Python & MATLAB packages

Install the open-source packages, run larger experiments, plug in your own problem libraries, and keep full control over private problems and compute.

Run in the cloud

Try the hosted platform

Upload a Python solver, choose benchmark settings, compare against baseline solvers, and get publication-ready profiles with downloadable results in your browser.


Why OptiProfiler?

Simple usage for beginners
Easy installation and quick start with a few lines of code
Multiple degrees of freedom for experts
Multiple built-in features and customization options for test suites
Automatic generation of high-quality profiles
Publication-ready PDF visualizations with precise, clear, and aesthetically pleasing figures
Reliable methodology for benchmarking
Based on the widely accepted performance profile and data profile
Trackable experimental results for reproducibility
Seed-controlled and time-stamped experimental results for easy reproducibility

Multi-language support

Python Python

The Python interface is ready to use. Check out the installation guide to get started, explore examples for common workflows, or dive into the API reference for details.

MATLAB MATLAB

The full MATLAB interface is ready to use. Check out the installation guide to get started, explore examples for common workflows, or dive into the API reference for details.