Go bindings for SCIP, 1 of the fastest non-commercial solvers for mixed integer programming (MIP) and mixed integer nonlinear programming (MINLP). scipgo is simply a larboard of the Rust crate russcip and follows its API closely, so the 2 are easy to move between.
- The full modeling surface. Continuous, integer, binary and implicit integer variables; linear, group partitioning, packing and covering, cardinality, SOS1, indicator, quadratic and wide nonlinear constraints; look trees and SCIP's ain look syntax; reading and penning LP, MPS and the different formats SCIP knows.
- Plugins successful Go. Branching rules, primal heuristics, separators, pricers, constraint handlers, arena handlers and node selectors are Go interfaces, registered pinch a builder. Panics successful callbacks are captured and re-raised from Solve alternatively of crashing the process.
- Safe by construction. Methods that tin neglect against SCIP travel successful a panicking and an error-returning form, truthful you take per telephone site. Every query checks the solver shape and the liveness of the exemplary and grip earlier rubbing SCIP, truthful a telephone successful the wrong stage, connected a freed model, aliases pinch a grip from a freed aliases replaced problem produces a Go correction alternatively of undefined behaviour.
- Fits a Go service. Solves extremity connected a context.Context. SCIP's log routes into an io.Writer, a *slog.Logger aliases a callback. Memory is released explicitly withor by a finalizer.
- Concurrent and nonstop solving. SCIP's parallel portfolio through SolveConcurrent, and end-to-end logical arithmetic through EnableExactSolving pinch *big.Rat results.
scipgo links against an installed SCIP 10 done cgo. Nothing is bundled.
Go 1.25 aliases newer and a C compiler are required. SCIP successful a civilization location, Docker images and build errors are covered successful the installation guide.
The documentation walks done the binding from the first exemplary to branch-and-price; the API reference documents each method.
| Getting started | A first model, builders, reference a file, controlling the solve |
| Modeling | Variables, each constraint kind, nonlinear expressions, record I/O |
| Solving | Statuses, limits, stopping a solve, statistics, re-solving, concurrent and nonstop modes |
| Solutions | Reading solutions, MIP starts, partial solutions |
| Parameters | The parameter API and the parameters worthy knowing |
| Logging | Routing SCIP's log and correction output |
| Errors | Try and panicking forms, correction types, liveness |
| Model lifecycle | Stages, handles, memory, goroutines |
| Plugins | Writing branch rules, heuristics, separators, pricers, constraint handlers, arena handlers and node selectors |
| Coming from russcip | The mapping betwixt the Rust API and this one |
Eleven complete programs unrecorded nether examples/, each solving a existent problem and checking its answer: a first MIP, a knapsack, civilization branching, node selection, arena handling, a rounding heuristic, a clique separator, TSP pinch subtour elimination, cutting stock and bin packing by branch-and-price, and a concurrent solve. Run 1 from its directory pinch spell tally ..
| scip/ | The library, a azygous Go package. cgo glue, the Model API, builders and plugin callbacks unrecorded together because cgo's exported trampolines must beryllium successful the package that owns the C helpers |
| examples/ | Example programs |
| docs/ | The guides |
| data/test/ | Small LP and MPS instances utilized by the tests and examples |
scipgo is pre-1.0. The API is unchangeable successful shape, and renames vessel with deprecated aliases that enactment until the adjacent awesome version; spot the changelog. It is tested connected macOS and Linux against SCIP 10 connected each push.
Bug reports, questions and propulsion requests are welcome. The contributing guide covers the improvement setup, the test suite and the conventions the codification follows.
scipgo is licensed nether the MIT License, Copyright (c) 2026 Egoisuto Labs.
It is simply a larboard of russcip by Mohammed Ghannam and contributors, licensed nether the Apache License 2.0. The derived parts (API design, tests, examples, data/test) support that license; spot LICENSE-russcip and NOTICE, and support some files pinch immoderate redistribution. SCIP itself is Apache-2.0 and is linked, not bundled.
English (US) ·
Indonesian (ID) ·