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;
32mod runtime_build_error;
33pub mod scope;
34pub mod solver;
35pub mod stats;
36pub mod termination;
37
38pub use builder::{
39 local_search, AcceptorBuilder, AnyAcceptor, AnyForager, CustomSearchPhase, ForagerBuilder,
40 IntraDistanceAdapter, ListVariableSlot, RuntimeCandidateMetric, RuntimeCandidateMetricBinding,
41 RuntimeCandidateMetricRegistry, RuntimeModel, ScalarGroupBinding, ScalarGroupMemberBinding,
42 ScalarVariableSlot, Search, SearchContext, ValueSource, VariableSlot,
43};
44pub use descriptor::{
45 build_descriptor_move_selector, descriptor_has_bindings, DescriptorFlatSelector,
46 DescriptorLeafSelector, DescriptorMoveUnion, DescriptorPillarChangeMove,
47 DescriptorPillarSwapMove, DescriptorRuinRecreateMove, DescriptorSelector,
48 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 DynamicScalarNearbyChangeMoveSelector,
71 DynamicScalarNearbySwapMoveSelector,
72 DynamicScalarSwapMove,
73 EntityReference,
74 EntitySelector,
75 FromSolutionEntitySelector,
76 FromSolutionValueSelector,
77 KOptConfig,
78 KOptMove,
79 KOptMoveSelector,
80 ListPositionDistanceMeter,
81 ListRuinMove,
82 ListRuinMoveSelector,
83 MimicRecorder,
84 MimicRecordingEntitySelector,
85 MimicReplayingEntitySelector,
86 Move,
87 MoveArena,
88 MoveSelector,
89 NearbyDistanceMeter,
90 NearbyEntitySelector,
91 NearbyKOptMoveSelector,
92 NearbySelectionConfig,
93 PerEntitySliceValueSelector,
94 Pillar,
95 PillarChangeMove,
96 PillarSelector,
97 PillarSwapMove,
98 RuinMove,
99 RuinMoveSelector,
100 RuinVariableAccess,
101 ScalarNeighborhoodBindingError,
102 SelectionOrder,
103 StaticValueSelector,
104 SubPillarConfig,
105 SwapMove,
106 SwapMoveSelector,
107 ValueSelector,
108 VecUnionSelector,
110};
111pub use manager::{
112 analyze, Analyzable, ConstraintAnalysis, ConstructionPhaseFactory, ConstructionType, KOptPhase,
113 KOptPhaseBuilder, ListCheapestInsertionPhase, ListClarkeWrightPhase, ListConstructionPhase,
114 ListConstructionPhaseBuilder, ListKOptPhase, ListRegretInsertionPhase, LocalSearchAcceptorType,
115 LocalSearchPhaseFactory, PhaseFactory, ScoreAnalysis, Solvable, SolverEvent,
116 SolverEventMetadata, SolverFactory, SolverFactoryBuilder, SolverLifecycleState, SolverManager,
117 SolverManagerError, SolverPanicPayload, SolverRuntime, SolverSnapshot, SolverSnapshotAnalysis,
118 SolverStatus, SolverTelemetryDetail, SolverTerminalReason,
119};
120pub use model_support::PlanningModelSupport;
121pub use phase::{
122 construction::{
123 BestFitForager, ConstructionChoice, ConstructionForager, ConstructionHeuristicConfig,
124 ConstructionHeuristicPhase, EntityPlacer, EntityPlacerCursor, FirstFeasibleForager,
125 FirstFitForager, ForagerType, Placement, QueuedEntityPlacer,
126 },
127 exhaustive::{
128 BounderType, ExhaustiveSearchConfig, ExhaustiveSearchDecider, ExhaustiveSearchNode,
129 ExhaustiveSearchPhase, ExplorationType, FixedOffsetBounder, ScoreBounder, SimpleDecider,
130 SoftScoreBounder,
131 },
132 localsearch::{
133 AcceptedCountForager, Acceptor, BestScoreForager, DiversifiedLateAcceptanceAcceptor,
134 FirstAcceptedForager, FirstBestScoreImprovingForager, FirstLastStepScoreImprovingForager,
135 GreatDelugeAcceptor, HardRegressionPolicy, HillClimbingAcceptor, LateAcceptanceAcceptor,
136 LocalSearchForager, LocalSearchPhase, SimulatedAnnealingAcceptor,
137 SimulatedAnnealingCalibration, StepCountingHillClimbingAcceptor, TabuSearchAcceptor,
138 },
139 partitioned::{
140 ChildPhases, FunctionalPartitioner, PartitionedSearchConfig, PartitionedSearchPhase,
141 SolutionPartitioner, ThreadCount,
142 },
143 sequence::PhaseSequence,
144 Phase,
145};
146pub use planning::{
147 ConflictRepair, RepairCandidate, RepairLimits, RepairProvider, ScalarAssignmentRule,
148 ScalarCandidate, ScalarCandidateProvider, ScalarEdit, ScalarGroup, ScalarGroupLimits,
149 ScalarTarget,
150};
151pub use run::{log_solve_start, try_run_solver_with_config_and_search};
152pub use runtime::{ListVariableEntity, ListVariableMetadata};
153pub use runtime_build_error::{RuntimeBuildError, RuntimeBuildResult};
154pub use scope::{PhaseScope, SolverScope, StepScope};
155pub use solver::{MaybeTermination, NoTermination, SolveResult, Solver};
156pub use stats::{
157 AppliedMoveTelemetry, MoveTelemetry, PhaseStats, PhaseTelemetry, SelectorTelemetry,
158 SolverStats, SolverTelemetry,
159};
160pub use termination::{
161 AndTermination, BestScoreFeasibleTermination, BestScoreTermination,
162 DiminishedReturnsTermination, MoveCountTermination, OrTermination,
163 ScoreCalculationCountTermination, StepCountTermination, Termination, TimeTermination,
164 UnimprovedStepCountTermination, UnimprovedTimeTermination,
165};