IGAOS — Indigenous GPU-Accelerated Optimization Solver
A sovereign LP / MILP / QP solver core built from mathematical foundations for SIH 2026 problem statement SIH26119 (MRPL): revised simplex (primal + dual), first-order GPU methods (PDHG), branch-and-bound with Gomory cuts, and ADMM QP — no existing optimization-solver library as a base.
- Wayfinder map: issue #1
- Problem-statement analysis:
docs/SIH26119-RESEARCH-REPORT.md - Research sheets:
docs/research/(PDHG algorithm · simplex design · benchmark protocol · refinery cases) - Dependency policy:
docs/DEPENDENCIES.md· vocabulary:CONTEXT.md
Layout
src/
common/ shared types, numerics utilities
linalg/ sparse/dense linear algebra; swappable CPU/GPU backends
simplex/ revised simplex (primal + dual, eta updates, warm starts)
pdhg/ first-order GPU LP engine
milp/ branch-and-bound + Gomory cuts
qp/ OSQP-style ADMM QP engine
io/ MPS reader (LP/MILP/QP), solution writers
api/ CLI + pybind11 surface
python/ Python bindings: igaos.solve() / igaos.read_mps()
benchmarks/ harness per docs/research/benchmark-protocol.md
tests/ assert-based engine smoke tests
Install
Python package (CPU engines — simplex LP, MILP, QP):
pip install igaos
import igaos
sol = igaos.solve("model.mps", time_limit=60, engine="auto")
sol.status, sol.objective, sol.x
With the GPU PDHG engine, build from source on a machine with the CUDA toolkit (auto-detected when nvcc is present):
pip install igaos --no-binary igaos --config-settings=cmake.define.IGAOS_ENABLE_CUDA=ON
Build from source (CLI + tests)
cmake -S . -B build
cmake --build build
Builds CPU-only automatically when no CUDA toolchain is present (the PDHG
engine requires CUDA). The CLI binary is build/src/api/igaos; the Python
module lands in python/igaos/. Engine tests: ctest --test-dir build.
Solve
$ ./build/src/api/igaos solve model.mps --engine auto --time-limit 60
{
"instance": "model.mps",
"status": "optimal",
"objective": -464.7531429,
...
}
Engines: auto | simplex | pdhg | milp | qp. All four engine classes are
live and verified against pinned baselines — current scores: Netlib
52/64 exact vs HiGHS, MIPLIB starters 6/20 @1e-4, robustness suite
10/15 per-class gates, Haverly QP three-way verified. Details and
honest failure records: docs/research/.
Python:
import igaos
sol = igaos.solve("model.mps", time_limit=60, engine="milp")
sol.status, sol.objective, sol.x
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file igaos-0.1.0.tar.gz.
File metadata
- Download URL: igaos-0.1.0.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0da0f182067a710a4a1a0c40818fdefbdaa26aba2129d0b3f23a737494a6ed19
|
|
| MD5 |
8acb5105d30e5722de2b14018d1a0980
|
|
| BLAKE2b-256 |
fc5582ce485542981bce80517197bfdaee845041b4014376074e354224b6e967
|
File details
Details for the file igaos-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: igaos-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 254.5 kB
- Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a285411fb5e4db4a2e16c927b24cb5b3daa66ff8f1ec1aee10a3c95677c58d5
|
|
| MD5 |
d3e87cb00676ac55e200002cedc4305f
|
|
| BLAKE2b-256 |
dbe980f5d2a74a06e4902e3e1af1a606bd88a25b5b50baefccf816515a9462bf
|
File details
Details for the file igaos-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: igaos-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 254.4 kB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0b21bee18e4c81dc071391c354c83db51b6b82605c12ca4082343efb4461795
|
|
| MD5 |
50988c37e5363e4bcebaea356b05c5a3
|
|
| BLAKE2b-256 |
cb77d1b8adef6e18b1f20cadf9596d1e0953f25b327ab3cceaf56d1c967909d0
|
File details
Details for the file igaos-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: igaos-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 252.6 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3ec06eb87267f03dae46945336613b51ea13cd845a3fc6badef2b54d732e07c
|
|
| MD5 |
680e03918a73e4b068847917802724a2
|
|
| BLAKE2b-256 |
15611a4c531469b73bb43f7a5c793614666f1ade9fb3b7c192a27d41765d1603
|
File details
Details for the file igaos-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: igaos-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 251.8 kB
- Tags: CPython 3.10, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c780b523f46983a83e42c6c9e05502f7ba1ee8d1d034ae533a59145c311e7d2
|
|
| MD5 |
63173124081fcb508d2062f306854e50
|
|
| BLAKE2b-256 |
230837b6556f00e0669dd44beb714810e85b6317545759f550b696712ddd69c7
|
File details
Details for the file igaos-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: igaos-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 252.1 kB
- Tags: CPython 3.9, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a3c4a1e42842a98e15a82580b84df3568805a673ec91f63df0bf5a75a72f7a3
|
|
| MD5 |
4c2ac73c4c61c7c190fd8342371e1203
|
|
| BLAKE2b-256 |
b170b8d6151c69849ab12d23a01252d92545602a011c45c752cdb50210de8e06
|