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