1#![allow(clippy::type_complexity)]
17
18#[cfg(test)]
19pub mod test_utils;
20
21pub mod builder;
22pub mod descriptor_standard;
23pub mod heuristic;
24pub mod list_solver;
25pub mod manager;
26pub mod phase;
27pub mod realtime;
28pub mod run;
29pub mod runtime;
30pub mod scope;
31pub mod solver;
32pub mod stats;
33pub mod termination;
34pub mod unified_search;
35
36pub use builder::{
37 AcceptorBuilder, AnyAcceptor, AnyForager, ForagerBuilder, ListContext, ListLeafSelector,
38 ListMoveSelectorBuilder,
39};
40pub use descriptor_standard::{
41 build_descriptor_construction, build_descriptor_move_selector, descriptor_has_bindings,
42 DescriptorConstruction, DescriptorEitherMove, DescriptorLeafSelector,
43};
44pub use heuristic::{
45 k_opt_reconnection,
47 AllEntitiesSelector,
49 ChangeMove,
51 ChangeMoveSelector,
52 CompositeMove,
53 CrossEntityDistanceMeter,
54 CutPoint,
55 DefaultCrossEntityDistanceMeter,
56 DefaultDistanceMeter,
57 DefaultPillarSelector,
58 EntityReference,
59 EntitySelector,
60 FromSolutionEntitySelector,
61 FromSolutionValueSelector,
62 KOptConfig,
63 KOptMove,
64 KOptMoveSelector,
65 ListPositionDistanceMeter,
66 ListRuinMove,
67 ListRuinMoveSelector,
68 MimicRecorder,
69 MimicRecordingEntitySelector,
70 MimicReplayingEntitySelector,
71 Move,
72 MoveArena,
73 MoveSelector,
74 NearbyDistanceMeter,
75 NearbyEntitySelector,
76 NearbyKOptMoveSelector,
77 NearbySelectionConfig,
78 Pillar,
79 PillarChangeMove,
80 PillarSelector,
81 PillarSwapMove,
82 RuinMove,
83 RuinMoveSelector,
84 SelectionOrder,
85 StaticValueSelector,
86 SubPillarConfig,
87 SwapMove,
88 SwapMoveSelector,
89 ValueSelector,
90 VecUnionSelector,
92};
93pub use manager::{
94 analyze, Analyzable, ConstraintAnalysis, ConstructionPhaseFactory, ConstructionType, KOptPhase,
95 KOptPhaseBuilder, ListCheapestInsertionPhase, ListClarkeWrightPhase, ListConstructionPhase,
96 ListConstructionPhaseBuilder, ListKOptPhase, ListRegretInsertionPhase, LocalSearchPhaseFactory,
97 LocalSearchType, PhaseFactory, ScoreAnalysis, Solvable, SolverEvent, SolverEventMetadata,
98 SolverFactory, SolverFactoryBuilder, SolverLifecycleState, SolverManager, SolverManagerError,
99 SolverRuntime, SolverSnapshot, SolverSnapshotAnalysis, SolverStatus, SolverTerminalReason,
100};
101pub use phase::{
102 construction::{
103 BestFitForager, ConstructionForager, ConstructionHeuristicConfig,
104 ConstructionHeuristicPhase, EntityPlacer, FirstFeasibleForager, FirstFitForager,
105 ForagerType, Placement, QueuedEntityPlacer,
106 },
107 dynamic_vnd::DynamicVndPhase,
108 exhaustive::{
109 BounderType, ExhaustiveSearchConfig, ExhaustiveSearchDecider, ExhaustiveSearchNode,
110 ExhaustiveSearchPhase, ExplorationType, FixedOffsetBounder, MoveSequence, ScoreBounder,
111 SimpleDecider, SoftScoreBounder,
112 },
113 localsearch::{
114 AcceptedCountForager, Acceptor, AcceptorType, BestScoreForager,
115 DiversifiedLateAcceptanceAcceptor, EntityTabuAcceptor, FirstAcceptedForager,
116 FirstBestScoreImprovingForager, FirstLastStepScoreImprovingForager, GreatDelugeAcceptor,
117 HillClimbingAcceptor, LateAcceptanceAcceptor, LocalSearchConfig, LocalSearchForager,
118 LocalSearchPhase, MoveTabuAcceptor, SimulatedAnnealingAcceptor,
119 StepCountingHillClimbingAcceptor, TabuSearchAcceptor, ValueTabuAcceptor,
120 },
121 partitioned::{
122 ChildPhases, FunctionalPartitioner, PartitionedSearchConfig, PartitionedSearchPhase,
123 SolutionPartitioner, ThreadCount,
124 },
125 sequence::PhaseSequence,
126 vnd::VndPhase,
127 Phase,
128};
129pub use scope::{PhaseScope, SolverScope, StepScope};
130pub use solver::{MaybeTermination, NoTermination, SolveResult, Solver};
131pub use stats::{PhaseStats, SolverStats, SolverTelemetry};
132pub use termination::{
133 AndTermination, BestScoreFeasibleTermination, BestScoreTermination,
134 DiminishedReturnsTermination, MoveCountTermination, OrTermination,
135 ScoreCalculationCountTermination, StepCountTermination, Termination, TimeTermination,
136 UnimprovedStepCountTermination, UnimprovedTimeTermination,
137};
138pub use unified_search::{
139 build_unified_local_search, build_unified_move_selector, build_unified_vnd, UnifiedLocalSearch,
140 UnifiedMove, UnifiedNeighborhood, UnifiedVnd,
141};
142
143pub use list_solver::{
144 build_list_construction, ListConstruction, ListVariableEntity, ListVariableMetadata,
145};
146pub use run::{log_solve_start, run_solver, run_solver_with_config};
147pub use runtime::{
148 build_phases, ListConstructionArgs, RuntimePhase, UnifiedConstruction, UnifiedRuntimePhase,
149};