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, GroupedScalarCursor, GroupedScalarSelector,
40 IntraDistanceAdapter, ListVariableSlot, LocalSearch, LocalSearchStrategy, Neighborhood,
41 NeighborhoodLeaf, NeighborhoodMove, RuntimeModel, ScalarGroupBinding, ScalarGroupMemberBinding,
42 ScalarVariableSlot, Search, 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, ScalarAssignmentMoveCursor,
122 ScalarAssignmentMoveOptions, ScalarAssignmentRequiredStreamingCursor,
123 },
124 exhaustive::{
125 BounderType, ExhaustiveSearchConfig, ExhaustiveSearchDecider, ExhaustiveSearchNode,
126 ExhaustiveSearchPhase, ExplorationType, FixedOffsetBounder, ScoreBounder, SimpleDecider,
127 SoftScoreBounder,
128 },
129 localsearch::{
130 AcceptedCountForager, Acceptor, BestScoreForager, DiversifiedLateAcceptanceAcceptor,
131 FirstAcceptedForager, FirstBestScoreImprovingForager, FirstLastStepScoreImprovingForager,
132 GreatDelugeAcceptor, HardRegressionPolicy, HillClimbingAcceptor, LateAcceptanceAcceptor,
133 LocalSearchForager, LocalSearchPhase, SimulatedAnnealingAcceptor,
134 SimulatedAnnealingCalibration, StepCountingHillClimbingAcceptor, TabuSearchAcceptor,
135 },
136 partitioned::{
137 ChildPhases, FunctionalPartitioner, PartitionedSearchConfig, PartitionedSearchPhase,
138 SolutionPartitioner, ThreadCount,
139 },
140 sequence::PhaseSequence,
141 Phase,
142};
143pub use planning::{
144 ConflictRepair, RepairCandidate, RepairLimits, RepairProvider, ScalarAssignmentRule,
145 ScalarCandidate, ScalarCandidateProvider, ScalarEdit, ScalarGroup, ScalarGroupLimits,
146 ScalarTarget,
147};
148pub use run::{log_solve_start, run_solver, run_solver_with_config, run_solver_with_config_parts};
149pub use runtime::{ListVariableEntity, ListVariableMetadata};
150pub use scope::{PhaseScope, SolverScope, StepScope};
151pub use solver::{MaybeTermination, NoTermination, SolveResult, Solver};
152pub use stats::{
153 AppliedMoveTelemetry, MoveTelemetry, PhaseStats, SelectorTelemetry, SolverStats,
154 SolverTelemetry,
155};
156pub use termination::{
157 AndTermination, BestScoreFeasibleTermination, BestScoreTermination,
158 DiminishedReturnsTermination, MoveCountTermination, OrTermination,
159 ScoreCalculationCountTermination, StepCountTermination, Termination, TimeTermination,
160 UnimprovedStepCountTermination, UnimprovedTimeTermination,
161};