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::RuntimeModel;
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/coverage_repair.rs");
29include!("selector/grouped_scalar.rs");
30mod types;
31use types::LeafSelector;
32pub use types::{
33    CartesianChildCursor, CartesianChildSelector, Neighborhood, NeighborhoodCursor,
34    NeighborhoodLeaf, NeighborhoodLeafCursor, NeighborhoodMove,
35};
36include!("selector/families.rs");
37include!("selector/build.rs");