Optimization · In development

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.

Example

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]
Why Aria-Opt

If you've used a commercial solver, this will feel familiar.

Interface

One interface

Every solver implements the same Solver trait. Callers never see a backend-specific type.

Config

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.

Lowering

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.

Verification

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.

Solvers

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).
Work with us

Got a scheduling, allocation or portfolio problem? Let's model it together.

contact@anzaetek.com