1#![allow(clippy::type_complexity)]
17
18#[cfg(test)]
19pub mod test_utils;
20
21pub mod builder;
22pub mod descriptor;
23pub mod heuristic;
24pub(crate) mod list_placement;
25pub mod manager;
26pub mod model_support;
27pub mod phase;
28pub mod planning;
29pub mod realtime;
30pub mod run;
31pub mod runtime;
32pub mod scope;
33pub mod solver;
34pub mod stats;
35pub mod termination;
36
37pub use builder::{
38 build_local_search, build_move_selector, local_search, AcceptorBuilder, AnyAcceptor,
39 AnyForager, CustomSearchPhase, ForagerBuilder, IntraDistanceAdapter, ListVariableSlot,
40 LocalSearch, LocalSearchStrategy, Neighborhood, NeighborhoodLeaf, NeighborhoodMove,
41 RuntimeModel, ScalarGroupBinding, ScalarGroupMemberBinding, ScalarVariableSlot, Search,
42 SearchContext, Selector, ValueSource, VariableSlot,
43};
44pub use descriptor::{
45 build_descriptor_move_selector, descriptor_has_bindings, DescriptorConstruction,
46 DescriptorFlatSelector, DescriptorLeafSelector, DescriptorMoveUnion,
47 DescriptorPillarChangeMove, DescriptorPillarSwapMove, DescriptorRuinRecreateMove,
48 DescriptorSelector, DescriptorSelectorNode,
49};
50pub use heuristic::{
51 k_opt_reconnection,
53 AllEntitiesSelector,
55 ChangeMove,
57 ChangeMoveSelector,
58 CompositeMove,
59 CompoundScalarEdit,
60 CompoundScalarMove,
61 CrossEntityDistanceMeter,
62 CutPoint,
63 DefaultCrossEntityDistanceMeter,
64 DefaultDistanceMeter,
65 DefaultPillarSelector,
66 DynamicListChangeMove,
67 DynamicListChangeMoveSelector,
68 DynamicScalarChangeMove,
69 DynamicScalarChangeMoveSelector,
70 EntityReference,
71 EntitySelector,
72 FromSolutionEntitySelector,
73 FromSolutionValueSelector,
74 KOptConfig,
75 KOptMove,
76 KOptMoveSelector,
77 ListPositionDistanceMeter,
78 ListRuinMove,
79 ListRuinMoveSelector,
80 MimicRecorder,
81 MimicRecordingEntitySelector,
82 MimicReplayingEntitySelector,
83 Move,
84 MoveArena,
85 MoveSelector,
86 NearbyDistanceMeter,
87 NearbyEntitySelector,
88 NearbyKOptMoveSelector,
89 NearbySelectionConfig,
90 PerEntitySliceValueSelector,
91 Pillar,
92 PillarChangeMove,
93 PillarSelector,
94 PillarSwapMove,
95 RuinMove,
96 RuinMoveSelector,
97 RuinVariableAccess,
98 SelectionOrder,
99 StaticValueSelector,
100 SubPillarConfig,
101 SwapMove,
102 SwapMoveSelector,
103 ValueSelector,
104 VecUnionSelector,
106};
107pub use manager::{
108 analyze, Analyzable, ConstraintAnalysis, ConstructionPhaseFactory, ConstructionType, KOptPhase,
109 KOptPhaseBuilder, ListCheapestInsertionPhase, ListClarkeWrightPhase, ListConstructionPhase,
110 ListConstructionPhaseBuilder, ListKOptPhase, ListRegretInsertionPhase, LocalSearchAcceptorType,
111 LocalSearchPhaseFactory, PhaseFactory, ScoreAnalysis, Solvable, SolverEvent,
112 SolverEventMetadata, SolverFactory, SolverFactoryBuilder, SolverLifecycleState, SolverManager,
113 SolverManagerError, SolverRuntime, SolverSnapshot, SolverSnapshotAnalysis, SolverStatus,
114 SolverTerminalReason,
115};
116pub use model_support::PlanningModelSupport;
117pub use phase::{
118 construction::{
119 BestFitForager, ConstructionChoice, ConstructionForager, ConstructionHeuristicConfig,
120 ConstructionHeuristicPhase, EntityPlacer, FirstFeasibleForager, FirstFitForager,
121 ForagerType, Placement, QueuedEntityPlacer,
122 },
123 exhaustive::{
124 BounderType, ExhaustiveSearchConfig, ExhaustiveSearchDecider, ExhaustiveSearchNode,
125 ExhaustiveSearchPhase, ExplorationType, FixedOffsetBounder, ScoreBounder, SimpleDecider,
126 SoftScoreBounder,
127 },
128 localsearch::{
129 AcceptedCountForager, Acceptor, BestScoreForager, DiversifiedLateAcceptanceAcceptor,
130 FirstAcceptedForager, FirstBestScoreImprovingForager, FirstLastStepScoreImprovingForager,
131 GreatDelugeAcceptor, HardRegressionPolicy, HillClimbingAcceptor, LateAcceptanceAcceptor,
132 LocalSearchForager, LocalSearchPhase, SimulatedAnnealingAcceptor,
133 SimulatedAnnealingCalibration, StepCountingHillClimbingAcceptor, TabuSearchAcceptor,
134 },
135 partitioned::{
136 ChildPhases, FunctionalPartitioner, PartitionedSearchConfig, PartitionedSearchPhase,
137 SolutionPartitioner, ThreadCount,
138 },
139 sequence::PhaseSequence,
140 Phase,
141};
142pub use planning::{
143 ConflictRepair, RepairCandidate, RepairLimits, RepairProvider, ScalarAssignmentRule,
144 ScalarCandidate, ScalarCandidateProvider, ScalarEdit, ScalarGroup, ScalarGroupLimits,
145 ScalarTarget,
146};
147pub use run::{log_solve_start, run_solver, run_solver_with_config, run_solver_with_config_parts};
148pub use runtime::{ListVariableEntity, ListVariableMetadata};
149pub use scope::{PhaseScope, SolverScope, StepScope};
150pub use solver::{MaybeTermination, NoTermination, SolveResult, Solver};
151pub use stats::{
152 AppliedMoveTelemetry, MoveTelemetry, PhaseStats, SelectorTelemetry, SolverStats,
153 SolverTelemetry,
154};
155pub use termination::{
156 AndTermination, BestScoreFeasibleTermination, BestScoreTermination,
157 DiminishedReturnsTermination, MoveCountTermination, OrTermination,
158 ScoreCalculationCountTermination, StepCountTermination, Termination, TimeTermination,
159 UnimprovedStepCountTermination, UnimprovedTimeTermination,
160};