solverforge_solver/phase/vnd/mod.rs
1/* Variable Neighborhood Descent (VND) phase.
2
3VND systematically explores multiple neighborhood structures, restarting
4from the first neighborhood whenever an improvement is found. This provides
5a structured way to combine multiple move types for better optimization.
6
7# Algorithm
8
91. Start with neighborhood k = 0
102. Find the best improving move in neighborhood k
113. If improvement found: apply move, restart from k = 0
124. If no improvement: move to k = k + 1
135. Terminate when k exceeds the number of neighborhoods
14
15# Zero-Erasure Design
16
17Uses macro-generated tuple implementations for neighborhoods. Each neighborhood
18is a concrete `MoveSelector` type, enabling full monomorphization.
19Moves are never cloned - ownership transfers via `arena.take(index)`.
20*/
21
22mod phase;
23
24pub use phase::VndPhase;
25pub use solverforge_scoring::Director as DirectorTrait;