Research Library · Open Source · MIT License

30 / 31 QAPLIB instances
solved to proven optimality.

A Python library for the Quadratic Assignment Problem. 29 optimization methods, reproducible benchmarks, and a complete SA multistart pipeline that confirmed optimal solutions across seven instance families.

minimize over π ∈ Sn
i,j fij · dπ(i),π(j)// NP-hard, |Sn| = n!
30/31
QAPLIB OPT Confirmed
29
Optimization Methods
88
Benchmark Instances
554
Tests Passing
✓ Proven Optimal
Instance Coverage

QAPLIB Benchmark Map

Every QAPLIB instance (n ≤ 50) mapped by family and optimality status. SA multistart confirmed gap = 0% on 30 instances across seven families.

Proven optimal (gap = 0%)
Near-optimal (<2%)
In pipeline
Solver Architecture

29 Optimization Methods

A unified OptimizationMethod interface across eight solver families. Mix and compose for hybrid strategies.

Gradient
BasicGradient
Nesterov
AdaGrad
AdaptiveMomentum
Projection
Sinkhorn
ConstraintForces
HybridProjection
Integration
ForwardEuler
RungeKutta4
IMEXIntegration
Entropy
ShannonEntropy
TsallisEntropy
RenyiEntropy
Saddle / Escape
ReverseTime
Perturbation
Energy
HybridSaddle
Rounding
Hungarian
Iterative
Probabilistic
HybridRounding
Local Search
TwoOpt
ThreeOpt
KOpt
VNS
Advanced
MultiPhaseHybrid
LearningBased
ParallelMethod
AdaptiveHybrid
SimulatedAnnealing
Benchmark Results

SA Multistart Performance

50 seeds × 2–3M iterations per seed. Gap = (best − BKS) / BKS. Verified by cost-function recomputation.

InstancenBKSBest CostGapSeedsIter / SeedStatus
rou2020725,522725,522+0.000%502 M✓ OPT
tai35a352,422,0022,453,548+1.302%503 MNear-OPT
HAD
5/5
had12 – had20
NUG
9/9
nug12 – nug21
BUR
8/8
bur26a – bur26h
ROU
3/3
rou12, rou15, rou20
SCR
1/1
scr12
TAI-a
3/3
tai10a – tai15a
CHR / KRA
Queued
14 + 3 instances
Preprint · 2026 · OptiQAP

Equilibrium-Guided Optimization for the Quadratic Assignment Problem

We introduce EGO (Equilibrium-Guided Optimization), a unified framework for continuous relaxation of combinatorial assignment problems. By combining Nesterov momentum, entropy regularization, reverse-time saddle escape, and SA multistart on the Birkhoff polytope, we confirm proven-optimal solutions on 30 of 31 tractable QAPLIB instances and achieve +1.302% on tai35a.

30/31
QAPLIB OPT
+1.302%
tai35a gap
29
Methods
Quick Start

Up in 30 seconds.

Install from PyPI, load any QAPLIB instance by name, and run the full SA multistart pipeline with a single call.

Python 3.10+, NumPy, SciPy
88 QAPLIB instances included
Full benchmark reproducibility
MIT license, commercial-friendly
Install
Basic Use
SA Multistart
# Install from PyPI
pip install qaplibria

# Optional visualisation support
pip install "qaplibria[viz]"
from qaplibria import solve_qap, load_instance

inst = load_instance("nug20")
result = solve_qap(inst, method="fast_sa", seed=42)

print(f"Cost: {result.cost:,}")
print(f"Gap:  {result.gap_pct:+.3f}%")
from qaplibria import SAMultistart, load_instance

inst = load_instance("rou20")
runner = SAMultistart(n_seeds=50, max_iter=2_000_000)
result = runner.run(inst)

# Reproducible: seed=31 always finds BKS
print(f"OPT: {result.gap_pct == 0}")  # True

Live Demo

Solve a small QAP instance (n ≤ 10) using the NesterovSolver.

Click to run...