Phase 5: GNN solver plugin (future) #291

Closed
opened 2026-02-19 21:04:12 +00:00 by forbes · 0 comments
Owner

Summary

Graph Neural Network approach to assembly constraint solving, providing fast approximate solutions for interactive editing with fallback to the Lagrangian solver for final precision.

Depends on: #287 (Phase 1 — C++ API), #288 (Phase 2 — Python bindings), #290 (Phase 4 — second solver validation)

Requirements

GNN solver plugin

  • Subclass kcsolve.IKCSolver and implement name(), supported_joints(), solve(ctx)
  • Register via kcsolve.register_solver("gnn", GNNSolver)
  • Graph encoding: map SolveContext parts and constraints to a graph structure suitable for GNN inference
  • Fast approximate solutions: prioritize speed for interactive constraint dragging and real-time feedback

Hybrid solve pipeline

User drags part
    |
    v
GNN Solver (fast guess, ~ms)
    |
    v
Lagrangian Solver (refinement, ~10-100ms)
    |
    v
Final placement applied

The GNN solver registers as a standard IKCSolver plugin. The hybrid pipeline chains two solvers — this may live in the Assembly module or as a composite solver plugin.

Determinism and validation

  • is_deterministic() should report accurately — GNN inference may be non-deterministic depending on hardware/batching
  • Tolerance-aware comparison: GNN results validated against Lagrangian solver within configurable tolerance
  • The IKCSolver contract (§4.2 of INTER_SOLVER.md) supports this — is_deterministic() defaults to true but can be overridden to return false

Deliverable

Hybrid solve pipeline: GNN fast-guess → Lagrangian refinement, demonstrating interactive-speed constraint solving.

Dependencies

  • #287 — Phase 1: C++ API (merged, PR #297)
  • #288 — Phase 2: Python bindings (PR #298)
  • #290 — Phase 4: second solver validation (proves multi-solver architecture works)

References

  • docs/INTER_SOLVER.md §6.3 — pure-Python solver support
  • docs/INTER_SOLVER.md §8 — semi-deterministic solving contract
  • docs/INTER_SOLVER.md §9 — Phase 5
## Summary Graph Neural Network approach to assembly constraint solving, providing fast approximate solutions for interactive editing with fallback to the Lagrangian solver for final precision. Depends on: #287 (Phase 1 — C++ API), #288 (Phase 2 — Python bindings), #290 (Phase 4 — second solver validation) ## Requirements ### GNN solver plugin - Subclass `kcsolve.IKCSolver` and implement `name()`, `supported_joints()`, `solve(ctx)` - Register via `kcsolve.register_solver("gnn", GNNSolver)` - Graph encoding: map `SolveContext` parts and constraints to a graph structure suitable for GNN inference - Fast approximate solutions: prioritize speed for interactive constraint dragging and real-time feedback ### Hybrid solve pipeline ``` User drags part | v GNN Solver (fast guess, ~ms) | v Lagrangian Solver (refinement, ~10-100ms) | v Final placement applied ``` The GNN solver registers as a standard `IKCSolver` plugin. The hybrid pipeline chains two solvers — this may live in the Assembly module or as a composite solver plugin. ### Determinism and validation - `is_deterministic()` should report accurately — GNN inference may be non-deterministic depending on hardware/batching - Tolerance-aware comparison: GNN results validated against Lagrangian solver within configurable tolerance - The `IKCSolver` contract (§4.2 of INTER_SOLVER.md) supports this — `is_deterministic()` defaults to `true` but can be overridden to return `false` ## Deliverable Hybrid solve pipeline: GNN fast-guess → Lagrangian refinement, demonstrating interactive-speed constraint solving. ## Dependencies - #287 — Phase 1: C++ API (merged, PR #297) - #288 — Phase 2: Python bindings (PR #298) - #290 — Phase 4: second solver validation (proves multi-solver architecture works) ## References - `docs/INTER_SOLVER.md` §6.3 — pure-Python solver support - `docs/INTER_SOLVER.md` §8 — semi-deterministic solving contract - `docs/INTER_SOLVER.md` §9 — Phase 5
forbes added the enhancement label 2026-02-19 21:04:12 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/create#291