Mathematical optimization for industrial decisions.
An open-source C++ and CUDA solver for LP, QP, and MILP problems. Built for large-scale planning, dispatch, and routing problems with verifiable mathematical accuracy.
Industrial decisions are all connected.
Changing a single production quota or blending recipe affects everything down the line: power costs, storage capacity, and delivery schedules.
Directly determines crude throughput and refinery capacity utilization.
How the Solver Operates
Click any step to inspect the underlying mathematical formulation, CUDA execution model, and asymptotic complexity.
Variables & Goals
Set up the decision variables (x) and the cost equation you want to minimize or maximize.
Rules & Constraints
Each constraint (budget, supply, power limits) cuts away invalid plans to form the feasible zone.
PDHG Iterative Solving
Our Primal-Dual Hybrid Gradient method steps iteratively toward the solution using GPU-parallel matrix math.
Verify Best Solution
Checks KKT optimality conditions to verify zero constraint violations and guarantee the best plan.
Full Control vs Vendor Lock-in
Commercial solvers hide their code inside closed binaries. Our solver is fully open source, transparent, and runs on your own hardware.
Full Code Ownership
Complete control over solver settings, step sizes, and algorithm behavior.
Transparent Math
Inspect how models are presolved, scaled, and solved with clear math proofs.
Run Anywhere
Compile on Linux, Windows, or Mac on standard CPU or NVIDIA GPUs.
How the Solver Works
From loading raw problem files to presolving, matrix scaling, GPU acceleration, and solution verification.
Explore Full ArchitectureReads MPS format problem files and constructs sparse matrix structures.
Built to Solve Large Industrial Problems
First-order and branch-and-bound algorithms designed for linear, quadratic, and mixed-integer problems.
Continuous Optimization (LP & QP)
Powered by the Primal-Dual Hybrid Gradient (PDHG) algorithm. Instead of dense matrix factorizations, it uses sparse matrix-vector products that execute across GPU and multicore CPU threads.
Integer & Discrete Decisions (MILP)
For on/off scheduling, routing, and integer decisions, our solver combines PDHG with a spatial Branch-and-Bound search tree to find optimal integer solutions and prune unfeasible search branches.
First-order primal-dual hybrid gradient method for large-scale linear programs.
Quadratic programming solver with positive semi-definite matrix support.
Recursive spatial branch-and-bound tree exploration for integer variables.
Model preprocessing: redundant constraint elimination and bounds tightening.
Iterative $L_\infty$ row and column diagonal equilibration for numerical stability.
Hardware-accelerated parallel kernels for CSR and CSC sparse matrix math.
Rigorous post-solve Karush-Kuhn-Tucker optimality and feasibility certification.
Low-overhead shared library bindings with real-time progress callbacks.
Second-order primal-dual interior point method for dense ill-conditioned problems.
How CPU and GPU Work Together
The CPU handles logic, file loading, and search trees, while the GPU crunches millions of parallel matrix calculations.
Multicore CPU (OpenMP)
Logic & Decision Control- Reads and parses MPS model files from disk
- Removes redundant constraints and simplifies the model
- Manages the Branch-and-Bound search tree for integers
- Checks convergence and certifies exact accuracy
- Zero-latency access to main system memory
NVIDIA GPU (CUDA)
Massive Parallel Matrix Math- Parallel sparse matrix-vector math (SpMV) in CSR format
- Parallel gradient updates across CUDA threads
- Variable bound projections directly in GPU VRAM
- Asynchronous compute streams without blocking the CPU
- Automatic fallback to CPU when no GPU is detected
Benchmark Results
Standard Netlib, MIPLIB, and industrial test models measured for solve speed and accuracy.
| Instance | Class | Variables | Constraints | Runtime | Status |
|---|---|---|---|---|---|
| production_planning_v2.mps | LP | 125,000 | 84,500 | — | Pending |
| logistics_network_eu.mps | MILP | 42,000 | 51,200 | — | Pending |
| portfolio_risk_model.mps | QP | 15,000 | 12,000 | — | Pending |
Ready to deploy the solver?
Run industrial LP/QP/MILP benchmarks, test custom MPS files, and inspect KKT convergence directly in your browser.