row DIESEL_COMMIT dual +12.40 row SULPHUR_SPEC dual -318.7 row CDU_MAX dual +4.05 ranging_basis nondegenerate
primal infeasibility 3.1e-12 dual infeasibility 0.0e+00 strong duality gap 2.2e-16 verdict OPTIMAL ✓
farkas y · b = -1.000 y ≥ 0, yᵀA ≤ 0 proved iis 3 rows, 2 bounds witnesses checked
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.
32 checkable requirements: 28 done, 3 partial, 1 not started. Each row of the coverage tracker names the commit and the CSV behind it.
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 →
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 →
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 →
A fifteen-minute checklist in order, what each step should print, and a plain-language glossary.
Read →What MRPL asked for, why a refinery needs it, and what "sovereign" has to mean.
Read →The engines, the verification loop, and where it beats or trails the solvers that exist.
Read →Every number, the CSV it comes from, and the chart that shows it.
Read →Windows, Ubuntu or macOS: from a fresh clone to a verified answer in five commands.
Read →What it does not do yet, stated with the number, and the plan for the day a GPU arrives.
Read →Six students from Bengaluru, organised as thegoodengineers.
Read →