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