#![allow(clippy::type_complexity)]
#[cfg(test)]
pub mod test_utils;
pub mod builder;
pub mod descriptor_standard;
pub mod heuristic;
pub mod list_solver;
pub mod manager;
pub mod phase;
pub mod realtime;
pub mod run;
pub mod runtime;
pub mod scope;
pub mod solver;
pub mod stats;
pub mod termination;
pub mod unified_search;
pub use builder::{
AcceptorBuilder, AnyAcceptor, AnyForager, ForagerBuilder, ListContext, ListLeafSelector,
ListMoveSelectorBuilder,
};
pub use descriptor_standard::{
build_descriptor_construction, build_descriptor_move_selector, descriptor_has_bindings,
DescriptorConstruction, DescriptorEitherMove, DescriptorLeafSelector,
};
pub use heuristic::{
k_opt_reconnection,
AllEntitiesSelector,
ChangeMove,
ChangeMoveSelector,
CompositeMove,
CrossEntityDistanceMeter,
CutPoint,
DefaultCrossEntityDistanceMeter,
DefaultDistanceMeter,
DefaultPillarSelector,
EntityReference,
EntitySelector,
FromSolutionEntitySelector,
FromSolutionValueSelector,
KOptConfig,
KOptMove,
KOptMoveSelector,
ListPositionDistanceMeter,
ListRuinMove,
ListRuinMoveSelector,
MimicRecorder,
MimicRecordingEntitySelector,
MimicReplayingEntitySelector,
Move,
MoveArena,
MoveSelector,
NearbyDistanceMeter,
NearbyEntitySelector,
NearbyKOptMoveSelector,
NearbySelectionConfig,
Pillar,
PillarChangeMove,
PillarSelector,
PillarSwapMove,
RuinMove,
RuinMoveSelector,
SelectionOrder,
StaticValueSelector,
SubPillarConfig,
SwapMove,
SwapMoveSelector,
ValueSelector,
VecUnionSelector,
};
pub use manager::{
analyze, Analyzable, ConstraintAnalysis, ConstructionPhaseFactory, ConstructionType, KOptPhase,
KOptPhaseBuilder, ListCheapestInsertionPhase, ListClarkeWrightPhase, ListConstructionPhase,
ListConstructionPhaseBuilder, ListKOptPhase, ListRegretInsertionPhase, LocalSearchPhaseFactory,
LocalSearchType, PhaseFactory, ScoreAnalysis, Solvable, SolverEvent, SolverFactory,
SolverFactoryBuilder, SolverManager, SolverStatus,
};
pub use phase::{
construction::{
BestFitForager, ConstructionForager, ConstructionHeuristicConfig,
ConstructionHeuristicPhase, EntityPlacer, FirstFeasibleForager, FirstFitForager,
ForagerType, Placement, QueuedEntityPlacer,
},
dynamic_vnd::DynamicVndPhase,
exhaustive::{
BounderType, ExhaustiveSearchConfig, ExhaustiveSearchDecider, ExhaustiveSearchNode,
ExhaustiveSearchPhase, ExplorationType, FixedOffsetBounder, MoveSequence, ScoreBounder,
SimpleDecider, SoftScoreBounder,
},
localsearch::{
AcceptedCountForager, Acceptor, AcceptorType, BestScoreForager,
DiversifiedLateAcceptanceAcceptor, EntityTabuAcceptor, FirstAcceptedForager,
FirstBestScoreImprovingForager, FirstLastStepScoreImprovingForager, GreatDelugeAcceptor,
HillClimbingAcceptor, LateAcceptanceAcceptor, LocalSearchConfig, LocalSearchForager,
LocalSearchPhase, MoveTabuAcceptor, SimulatedAnnealingAcceptor,
StepCountingHillClimbingAcceptor, TabuSearchAcceptor, ValueTabuAcceptor,
},
partitioned::{
ChildPhases, FunctionalPartitioner, PartitionedSearchConfig, PartitionedSearchPhase,
SolutionPartitioner, ThreadCount,
},
sequence::PhaseSequence,
vnd::VndPhase,
Phase,
};
pub use scope::{PhaseScope, SolverScope, StepScope};
pub use solver::{MaybeTermination, NoTermination, SolveResult, Solver};
pub use stats::{PhaseStats, SolverStats, SolverTelemetry};
pub use termination::{
AndTermination, BestScoreFeasibleTermination, BestScoreTermination,
DiminishedReturnsTermination, MoveCountTermination, OrTermination,
ScoreCalculationCountTermination, StepCountTermination, Termination, TimeTermination,
UnimprovedStepCountTermination, UnimprovedTimeTermination,
};
pub use unified_search::{
build_unified_local_search, build_unified_move_selector, build_unified_vnd, UnifiedLocalSearch,
UnifiedMove, UnifiedNeighborhood, UnifiedVnd,
};
pub use list_solver::{
build_list_construction, ListConstruction, ListVariableEntity, ListVariableMetadata,
};
pub use run::{log_solve_start, run_solver};
pub use runtime::{
build_phases, ListConstructionArgs, RuntimePhase, UnifiedConstruction, UnifiedRuntimePhase,
};