1#![allow(clippy::type_complexity)]
17
18#[cfg(test)]
19pub mod test_utils;
20
21pub mod basic;
22pub mod builder;
23pub mod heuristic;
24pub mod list_solver;
25pub mod manager;
26pub mod phase;
27pub mod problem_spec;
28pub mod realtime;
29pub mod run;
30pub mod scope;
31pub mod solver;
32pub mod stats;
33pub mod termination;
34
35pub use builder::{
36 AcceptorBuilder, AnyAcceptor, AnyForager, BasicContext, BasicLeafSelector,
37 BasicMoveSelectorBuilder, ForagerBuilder, ListContext, ListLeafSelector,
38 ListMoveSelectorBuilder,
39};
40pub use heuristic::{
41 k_opt_reconnection,
43 AllEntitiesSelector,
45 ChangeMove,
47 ChangeMoveSelector,
48 CompositeMove,
49 CrossEntityDistanceMeter,
50 CutPoint,
51 DefaultDistanceMeter,
52 DefaultPillarSelector,
53 EntityReference,
54 EntitySelector,
55 FromSolutionEntitySelector,
56 FromSolutionTypedValueSelector,
57 KOptConfig,
58 KOptMove,
59 KOptMoveSelector,
60 ListPositionDistanceMeter,
61 ListRuinMove,
62 ListRuinMoveSelector,
63 MimicRecorder,
64 MimicRecordingEntitySelector,
65 MimicReplayingEntitySelector,
66 Move,
67 MoveArena,
68 MoveSelector,
69 NearbyDistanceMeter,
70 NearbyEntitySelector,
71 NearbyKOptMoveSelector,
72 NearbySelectionConfig,
73 Pillar,
74 PillarChangeMove,
75 PillarSelector,
76 PillarSwapMove,
77 RuinMove,
78 RuinMoveSelector,
79 SelectionOrder,
80 StaticTypedValueSelector,
81 SubPillarConfig,
82 SwapMove,
83 SwapMoveSelector,
84 TypedValueSelector,
85 VecUnionSelector,
87};
88pub use manager::{
89 analyze, Analyzable, ConstraintAnalysis, ConstructionPhaseFactory, ConstructionType, KOptPhase,
90 KOptPhaseBuilder, ListCheapestInsertionPhase, ListClarkeWrightPhase, ListConstructionPhase,
91 ListConstructionPhaseBuilder, ListKOptPhase, ListRegretInsertionPhase, LocalSearchPhaseFactory,
92 LocalSearchType, PhaseFactory, ScoreAnalysis, Solvable, SolverFactory, SolverFactoryBuilder,
93 SolverManager, SolverStatus,
94};
95pub use phase::{
96 construction::{
97 BestFitForager, ConstructionForager, ConstructionHeuristicConfig,
98 ConstructionHeuristicPhase, EntityPlacer, FirstFeasibleForager, FirstFitForager,
99 ForagerType, Placement, QueuedEntityPlacer,
100 },
101 exhaustive::{
102 BounderType, ExhaustiveSearchConfig, ExhaustiveSearchDecider, ExhaustiveSearchNode,
103 ExhaustiveSearchPhase, ExplorationType, FixedOffsetBounder, MoveSequence, ScoreBounder,
104 SimpleDecider, SoftScoreBounder,
105 },
106 localsearch::{
107 AcceptedCountForager, Acceptor, AcceptorType, BestScoreForager,
108 DiversifiedLateAcceptanceAcceptor, EntityTabuAcceptor, FirstAcceptedForager,
109 FirstBestScoreImprovingForager, FirstLastStepScoreImprovingForager, GreatDelugeAcceptor,
110 HillClimbingAcceptor, LateAcceptanceAcceptor, LocalSearchConfig, LocalSearchForager,
111 LocalSearchPhase, MoveTabuAcceptor, SimulatedAnnealingAcceptor,
112 StepCountingHillClimbingAcceptor, TabuSearchAcceptor, ValueTabuAcceptor,
113 },
114 partitioned::{
115 ChildPhases, FunctionalPartitioner, PartitionedSearchConfig, PartitionedSearchPhase,
116 SolutionPartitioner, ThreadCount,
117 },
118 vnd::VndPhase,
119 Phase,
120};
121pub use scope::{PhaseScope, SolverScope, StepScope};
122pub use solver::{MaybeTermination, NoTermination, SolveResult, Solver};
123pub use stats::{PhaseStats, SolverStats};
124pub use termination::{
125 AndTermination, BestScoreFeasibleTermination, BestScoreTermination,
126 DiminishedReturnsTermination, MoveCountTermination, OrTermination,
127 ScoreCalculationCountTermination, StepCountTermination, Termination, TimeTermination,
128 UnimprovedStepCountTermination, UnimprovedTimeTermination,
129};
130
131pub use basic::BasicSpec;
132pub use list_solver::ListSpec;
133pub use problem_spec::ProblemSpec;
134pub use run::run_solver;