Aria-Opt
Write an optimization model once in Aria and route it to MILP, QUBO and knapsack solvers behind one interface: HiGHS, CBC, SCIP, GLPK, CP-SAT, an in-house simulated-bifurcation machine and Pisinger's exact knapsack algorithms.
For operations-research and quant teams who want one model text across open-source MILP and QUBO solvers.
Status Live and tested: the model IR, config, router, QUBO and knapsack lowering, LP / MPS / QUBO export and the brute-force oracle. Specified, not yet implemented: the solver adapters, the simulated-bifurcation integrator and the DSL parser.
Here's a knapsack problem, start to finish.
Integer parameters and a data file instantiate the model. The router recognizes the knapsack shape and sends it to the exact Pisinger solver. The output shown is the target once that solver lands.
-- aria: opt
maximize sum i from 0 to n - 1 { p[i] * x[i] }
subject to capacity: sum i from 0 to n - 1 { w[i] * x[i] } <= C
$ aria-opt solve knapsack.aria --model Knapsack --int n=8 \
--data knapsack_8.json
status OPTIMAL obj 1458 bound 1458 gap 0.000% [knapsack]If you've used a commercial solver, this will feel familiar.
One interface
Every solver implements the same Solver trait. Callers never see a backend-specific type.
The parameter names you already know
time_limit, mip_gap, threads, seed and the rest, with the other common spellings accepted as aliases. Unsupported parameters warn; they never silently change meaning.
You can see what the solver sees
Integers become bits and constraints become penalties in the core, with a report you can inspect, so the QUBO solvers solve the same model as the MILP solvers.
Every example has an answer key
Every shipped example carries an oracle: brute force, dynamic programming or cross-solver agreement. aria-opt verify is the acceptance gate.
The solvers we're wiring in.
- MILP / CPHiGHS, COIN-OR CBC, SCIP, GLPK and OR-Tools CP-SAT.
- Simulated bifurcationAdiabatic, ballistic and discrete SB for QUBO after lowering, with GPU acceleration to follow.
- KnapsackPisinger's expknap and minknap for 0-1 and bounded knapsacks.
- QUBO heuristicsSimulated annealing and tabu search, with brute force as the reference oracle (already live).