plan.sol · shadow prices
row  DIESEL_COMMIT   dual  +12.40
row  SULPHUR_SPEC    dual  -318.7
row  CDU_MAX         dual   +4.05
ranging_basis  nondegenerate
verifier · independent
primal infeasibility  3.1e-12
dual infeasibility    0.0e+00
strong duality gap    2.2e-16
verdict               OPTIMAL ✓
certificate · infeasible
farkas y · b  =  -1.000
y ≥ 0, yᵀA ≤ 0   proved
iis  3 rows, 2 bounds
witnesses        checked
netlib-full · 89 instances
80 verified · 8 table outliers · 1 named
Smart India Hackathon 2026 · PS SIH26119 · MRPL

An optimization solver
written from the mathematics.

A solver for the decisions a refinery makes every week: which crudes to buy, how hard to run each unit, how to blend. Linear, mixed-integer and convex quadratic programs, in C++ from the textbooks, with no code from any existing solver, and every answer re-checked by a separate program before it is reported.

Measured against
Netlib 80/89MIPLIB 2017 14/30Mittelmann 2/8HiGHS cross-check 50/50Scale 10⁶ × 10⁶Unit tests 731
One call · four engines

A model goes in, a checked plan comes out.

MPS · LP · QPSreader presolve8 reductions scalingRuiz + P-C solve()one entry pointdispatch by class dual simplexLP default · basis interior pointLP at scale · LDLᵀ restarted PDHGfirst-order · GPU shape branch & boundMILP · MIQP over QP postsolvere-measured independent verifiershares no code node LPs warm-start the dual simplex
The dashed return is branch and bound warm-starting the dual simplex at every node. How each engine works →
Scoreboard

What the problem statement asked for, against what is on main today.

32 checkable requirements: 28 done, 3 partial, 1 not started. Each row of the coverage tracker names the commit and the CSV behind it.

donepartialnot started
  • Linear programming · revised simplex, primal and dual
  • Mixed-integer LP · branch and bound, reliability branching
  • Convex QP and MIQP · non-convex refused with a certificate
  • Modular for NLP / MINLP · the seam exists, no nonlinear engine yet
  • First-order method · restarted PDHG, finished by the interior point
  • Interior point · Mehrotra, sparse LDLᵀ, opt-in
  • Presolve, cutting planes, heuristics · cuts off by default, by measurement
  • Sensitivity ranging · cost and right-hand side, degeneracy stated
  • Sparse linear algebra · Markowitz LU, hyper-sparse solves, LDLᵀ
  • Multi-core · OpenMP column loops, bit-identical at any thread count
  • GPU acceleration · backend written, never built: no GPU yet
  • Netlib, MIPLIB, Mittelmann benchmarks · all three run and committed
  • Compared with an established solver · HiGHS, separate process
  • Robustness: degenerate, ill-conditioned, weak relaxations · all three demonstrated
  • Thousands to millions of variables · a million rows on generated families; 32,485 rows of the refinery year exactly
  • Not built on any existing solver · enforced in CI
Three questions

What an evaluator usually wants to know first.

Is it really from scratch?

Yes. Five libraries are linked and none of them solves anything. A CI job prints the link line and fails if a solver library ever appears. Check it in two minutes →

Are the answers right?

Every reported answer is re-derived by a Python checker that reads only the model file and the solution file. An infeasible verdict carries a proof the checker verifies too. Run the checker →

How does it compare?

Same answers as HiGHS on all 50 medium Netlib models, at about twice its wall time. Behind on large mixed-integer proofs and on the biggest LPs, and the site says by how much. Ahead and behind →

Pick a page

Where to go next.

The team
Bhumika GuravDeekshith KAnjankumar L NAbhijeet SharmaAyush V UpadhyeChirag Honnyal
Meet them →