Skip to main content

IGAOS — Indigenous GPU-Accelerated Optimization Solver

CI License: MIT

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.

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

Metadata

Release files for igaos 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for igaos 0.1.0
File Size Uploaded
igaos-0.1.0.tar.gz 1.3 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for igaos 0.1.0
File
igaos-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
igaos-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
igaos-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
igaos-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
igaos-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details

Total release size: 2.6 MB

Release files / igaos-0.1.0.tar.gz

Download URL igaos-0.1.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
0da0f182067a710a4a1a0c40818fdefbdaa26aba2129d0b3f23a737494a6ed19
BLAKE2b-256 checksum
How to use checksums
fc5582ce485542981bce80517197bfdaee845041b4014376074e354224b6e967
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / igaos-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL igaos-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 254.5 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6a285411fb5e4db4a2e16c927b24cb5b3daa66ff8f1ec1aee10a3c95677c58d5
BLAKE2b-256 checksum
How to use checksums
dbe980f5d2a74a06e4902e3e1af1a606bd88a25b5b50baefccf816515a9462bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / igaos-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL igaos-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 254.4 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f0b21bee18e4c81dc071391c354c83db51b6b82605c12ca4082343efb4461795
BLAKE2b-256 checksum
How to use checksums
cb77d1b8adef6e18b1f20cadf9596d1e0953f25b327ab3cceaf56d1c967909d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / igaos-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL igaos-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 252.6 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c3ec06eb87267f03dae46945336613b51ea13cd845a3fc6badef2b54d732e07c
BLAKE2b-256 checksum
How to use checksums
15611a4c531469b73bb43f7a5c793614666f1ade9fb3b7c192a27d41765d1603
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / igaos-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL igaos-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 251.8 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6c780b523f46983a83e42c6c9e05502f7ba1ee8d1d034ae533a59145c311e7d2
BLAKE2b-256 checksum
How to use checksums
230837b6556f00e0669dd44beb714810e85b6317545759f550b696712ddd69c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / igaos-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL igaos-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 252.1 kB
Tags CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1a3c4a1e42842a98e15a82580b84df3568805a673ec91f63df0bf5a75a72f7a3
BLAKE2b-256 checksum
How to use checksums
b170b8d6151c69849ab12d23a01252d92545602a011c45c752cdb50210de8e06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page