Skip to content

SIROM v0.4.0

Choose a tag to compare

@butkeraites butkeraites released this 06 Jun 13:50
· 32 commits to main since this release
3c621fd

Architecture-deepening release: make modules honest and concentrate scattered logic, driven by an /improve-codebase-architecture review and grilling sessions.

Highlights

  • Honest two-stage Solution contract — the solver produces an UnscoredSolution (decision vector present only on optimal solves); the scoring stage adds feasibility_probability via an explicit score() transform, yielding a ScoredSolution. is_optimal() / feasibility() accessors replace the .get() / "key" in result guards consumers hand-rolled, and the type stops lying about solve_status (now int).
  • ClusterTree owns its own shaping — the KMeans / WCSS / selection / subdivision algorithm moved out of the orchestrator and behind ClusterTree.build(root_points, n_clusters); the tree's replicate gate no longer leaks. batch_solver shrinks ~70 lines.
  • One core-level error gatesirom/status_checks.has_errors replaces the any("[ERROR]" in s …) prose-match repeated at eight sites (message strings, which are test-pinned, left untouched).
  • Leaner result handling — the API drops a brittle results slice and counts cluster nodes directly from the tree.
  • Domain docs — a new CONTEXT.md glossary (including the feasibility probability vs robustness naming split) and the first docs/adr/ records, which capture the decisions not to make (keep Coefficient; keep the portfolio/CVRP builders separate) so future reviews don't re-propose them.

No behavioural change to the solver or API contract; the full test suite passes and the existing endpoints are unchanged. Builds on the robust-CVRP demo from v0.3.0 and the HTTP API / Docker / MILP support from v0.2.0. Implements the method from Butkeraites, de Salles Neto & Gendreau, Expert Systems with Applications 203:117337 (2022).

Changelog index

  • v0.4.4 — Documentation patch
  • v0.4.3 — Tooling / process patch
  • v0.4.2 — Tooling / process patch
  • v0.4.1 — Documentation patch over 0.4.0
  • v0.4.0 — Architecture-deepening release: make modules honest and concentrate scattered logic (this release)
  • v0.3.0 — Robust CVRP demo over VRP-REP (demo/vrp/)
  • v0.2.0 — First substantial release of SIROM as a deployable, documented service

Full notes for every version: CHANGELOG.md