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//! - Event system for monitoring
9//! - Configuration wiring (builder module)
10
11pub mod builder;
12pub mod event;
13pub mod heuristic;
14pub mod manager;
15pub mod phase;
16pub mod realtime;
17pub mod scope;
18pub mod solver;
19pub mod statistics;
20pub mod termination;
21
22pub use builder::{AcceptorBuilder, SolverBuilder, TerminationBuilder};
23pub use event::{
24    CountingEventListener, LoggingEventListener, PhaseLifecycleListener, SolverEventListener,
25    SolverEventSupport, StepLifecycleListener,
26};
27pub use heuristic::{
28    // K-opt reconnection patterns
29    k_opt_reconnection,
30    // Selectors
31    AllEntitiesSelector,
32    // Move types
33    ChangeMove,
34    ChangeMoveSelector,
35    CompositeMove,
36    CutPoint,
37    DefaultPillarSelector,
38    EntityReference,
39    EntitySelector,
40    FromSolutionEntitySelector,
41    FromSolutionTypedValueSelector,
42    KOptConfig,
43    KOptMove,
44    KOptMoveSelector,
45    ListPositionDistanceMeter,
46    ListRuinMove,
47    ListRuinMoveSelector,
48    MimicRecorder,
49    MimicRecordingEntitySelector,
50    MimicReplayingEntitySelector,
51    Move,
52    MoveArena,
53    MoveSelector,
54    NearbyDistanceMeter,
55    NearbyEntitySelector,
56    NearbyKOptMoveSelector,
57    NearbySelectionConfig,
58    Pillar,
59    PillarChangeMove,
60    PillarSelector,
61    PillarSwapMove,
62    RuinMove,
63    RuinMoveSelector,
64    SelectionOrder,
65    StaticTypedValueSelector,
66    SubPillarConfig,
67    SwapMove,
68    SwapMoveSelector,
69    TypedValueSelector,
70};
71pub use manager::{
72    CloneablePhaseFactory, ClosurePhaseFactory, ConstructionType, LocalSearchType, SolverManager,
73    SolverManagerBuilder, SolverPhaseFactory,
74};
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        FunctionalPartitioner, PartitionedSearchConfig, PartitionedSearchPhase, PhaseFactory,
95        ScoreDirectorFactory, SolutionPartitioner, ThreadCount,
96    },
97    vnd::VndPhase,
98    Phase,
99};
100pub use scope::{PhaseScope, SolverScope, StepScope};
101pub use solver::{Solver, SolverFactory};
102pub use statistics::{PhaseStatistics, ScoreImprovement, SolverStatistics, StatisticsCollector};
103pub use termination::{
104    AndCompositeTermination, BestScoreFeasibleTermination, BestScoreTermination,
105    OrCompositeTermination, StepCountTermination, Termination, TimeTermination,
106    UnimprovedStepCountTermination, UnimprovedTimeTermination,
107};