solverforge-solver 0.11.1

Solver engine for SolverForge
Documentation

solverforge-solver

solverforge-solver contains SolverForge's runtime phase assembly, move implementations, selector builders, construction heuristics, local search, and retained solver lifecycle.

Grouped Scalar Reachability

Normal scalar construction is single-slot: each nullable scalar variable is assigned independently through its descriptor/runtime scalar binding. That behavior remains the default whenever a construction heuristic has no group_name.

Use grouped scalar construction when a model has nullable scalar variables that must change together before a hard-feasible state is reachable. A model declares named ScalarGroupContext entries, and a construction heuristic opts in with group_name. The grouped route evaluates a whole ScalarGroupCandidate as one compound scalar move, applies all legal edits atomically, and marks every touched scalar slot complete through the normal committed mutation path.

GroupedScalarMoveSelector exposes the same declared groups during local search. It is a first-class scalar neighborhood, not cartesian-product composition.

Compound Conflict Repair

CompoundConflictRepairMoveSelector is the stock conflict-aware repair primitive. Domain providers still supply candidate edit hints, but the framework owns selector limits, duplicate filtering, legality checks, not-doable filtering, hard-improvement filtering, scoring, tabu identity, and affected-entity reporting through CompoundScalarMove.

Configured constraint keys resolve against scoring metadata by exact identity: package-qualified constraints use ConstraintRef::full_name() strings, while package-less constraints use the short name.

This keeps app-specific logic as domain candidate generation only. Applications should not add seed repair, relaxed hard constraints, fake variables, or private solver orchestration to make coupled scalar states reachable.