Skip to main content

solverforge_solver/builder/
selector.rs

1use std::fmt::Debug;
2
3use solverforge_config::{
4    AcceptorConfig, ChangeMoveConfig, ListReverseMoveConfig, LocalSearchConfig, MoveSelectorConfig,
5    NearbyListChangeMoveConfig, NearbyListSwapMoveConfig, VariableTargetConfig, VndConfig,
6};
7use solverforge_core::domain::PlanningSolution;
8use solverforge_core::score::{ParseableScore, Score};
9
10use crate::heuristic::r#move::{Move, ScalarMoveUnion, SequentialCompositeMove};
11use crate::heuristic::selector::decorator::{CartesianProductSelector, VecUnionSelector};
12use crate::heuristic::selector::move_selector::{
13    CandidateId, MoveCandidateRef, MoveCursor, MoveSelector,
14};
15use crate::heuristic::selector::nearby_list_change::CrossEntityDistanceMeter;
16use crate::phase::dynamic_vnd::DynamicVndPhase;
17use crate::phase::localsearch::{
18    AcceptedCountForager, LocalSearchPhase, SimulatedAnnealingAcceptor,
19};
20
21use super::acceptor::{AcceptorBuilder, AnyAcceptor};
22use super::context::ModelContext;
23use super::forager::{AnyForager, ForagerBuilder};
24use super::list_selector::ListMoveSelectorBuilder;
25use super::scalar_selector::build_scalar_flat_selector;
26
27include!("selector/conflict_repair.rs");
28include!("selector/grouped_scalar.rs");
29mod types;
30use types::LeafSelector;
31pub use types::{
32    CartesianChildCursor, CartesianChildSelector, Neighborhood, NeighborhoodCursor,
33    NeighborhoodLeaf, NeighborhoodLeafCursor, NeighborhoodMove,
34};
35include!("selector/families.rs");
36include!("selector/build.rs");