solverforge_solver/
lib.rs

1//! SolverForge Solver Engine
2//!
3//! This crate provides the main solver implementation including:
4//! - Solver and SolverFactory
5//! - Phases (construction heuristic, local search, exhaustive search)
6//! - Move system
7//! - Termination conditions
8//! - Tracing-based structured logging
9//! - Configuration wiring (builder module)
10
11pub mod basic;
12pub mod builder;
13pub mod heuristic;
14pub mod manager;
15pub mod phase;
16pub mod realtime;
17pub mod scope;
18pub mod solver;
19pub mod stats;
20pub mod termination;
21
22pub use builder::AcceptorBuilder;
23pub use heuristic::{
24    // K-opt reconnection patterns
25    k_opt_reconnection,
26    // Selectors
27    AllEntitiesSelector,
28    // Move types
29    ChangeMove,
30    ChangeMoveSelector,
31    CompositeMove,
32    CutPoint,
33    DefaultDistanceMeter,
34    DefaultPillarSelector,
35    EntityReference,
36    EntitySelector,
37    FromSolutionEntitySelector,
38    FromSolutionTypedValueSelector,
39    KOptConfig,
40    KOptMove,
41    KOptMoveSelector,
42    ListPositionDistanceMeter,
43    ListRuinMove,
44    ListRuinMoveSelector,
45    MimicRecorder,
46    MimicRecordingEntitySelector,
47    MimicReplayingEntitySelector,
48    Move,
49    MoveArena,
50    MoveSelector,
51    NearbyDistanceMeter,
52    NearbyEntitySelector,
53    NearbyKOptMoveSelector,
54    NearbySelectionConfig,
55    Pillar,
56    PillarChangeMove,
57    PillarSelector,
58    PillarSwapMove,
59    RuinMove,
60    RuinMoveSelector,
61    SelectionOrder,
62    StaticTypedValueSelector,
63    SubPillarConfig,
64    SwapMove,
65    SwapMoveSelector,
66    TypedValueSelector,
67};
68pub use manager::{
69    Analyzable, ConstraintAnalysis, ConstructionPhaseFactory, ConstructionType, KOptPhase,
70    KOptPhaseBuilder, ListConstructionPhase, ListConstructionPhaseBuilder, LocalSearchPhaseFactory,
71    LocalSearchType, PhaseFactory, ScoreAnalysis, SolutionManager, Solvable, SolverFactory,
72    SolverFactoryBuilder, SolverManager, SolverStatus,
73};
74pub use phase::basic::{BasicConstructionPhase, BasicLocalSearchPhase};
75pub use phase::{
76    construction::{
77        BestFitForager, ConstructionForager, ConstructionHeuristicConfig,
78        ConstructionHeuristicPhase, EntityPlacer, FirstFeasibleForager, FirstFitForager,
79        ForagerType, Placement, QueuedEntityPlacer,
80    },
81    exhaustive::{
82        BounderType, ExhaustiveSearchConfig, ExhaustiveSearchDecider, ExhaustiveSearchNode,
83        ExhaustiveSearchPhase, ExplorationType, FixedOffsetBounder, MoveSequence, ScoreBounder,
84        SimpleDecider, SimpleScoreBounder,
85    },
86    localsearch::{
87        AcceptedCountForager, Acceptor, AcceptorType, DiversifiedLateAcceptanceAcceptor,
88        EntityTabuAcceptor, FirstAcceptedForager, GreatDelugeAcceptor, HillClimbingAcceptor,
89        LateAcceptanceAcceptor, LocalSearchConfig, LocalSearchForager, LocalSearchPhase,
90        MoveTabuAcceptor, SimulatedAnnealingAcceptor, StepCountingHillClimbingAcceptor,
91        TabuSearchAcceptor, ValueTabuAcceptor,
92    },
93    partitioned::{
94        ChildPhases, FunctionalPartitioner, PartitionedSearchConfig, PartitionedSearchPhase,
95        SolutionPartitioner, ThreadCount,
96    },
97    vnd::VndPhase,
98    Phase,
99};
100pub use scope::{PhaseScope, SolverScope, StepScope};
101pub use solver::{MaybeTermination, NoTermination, Solver};
102pub use stats::{PhaseStats, SolverStats};
103pub use termination::{
104    AndTermination, BestScoreFeasibleTermination, BestScoreTermination,
105    DiminishedReturnsTermination, MoveCountTermination, OrTermination,
106    ScoreCalculationCountTermination, StepCountTermination, Termination, TimeTermination,
107    UnimprovedStepCountTermination, UnimprovedTimeTermination,
108};
109
110pub use basic::{run_solver, run_solver_with_channel};