Skip to main content

run_list_solver

Function run_list_solver 

Source
pub fn run_list_solver<S, V, C, DM, IDM>(
    solution: S,
    finalize_fn: fn(&mut S),
    constraints_fn: fn() -> C,
    list_len: fn(&S, usize) -> usize,
    list_remove: fn(&mut S, usize, usize) -> Option<V>,
    list_insert: fn(&mut S, usize, usize, V),
    list_get: fn(&S, usize, usize) -> Option<V>,
    list_set: fn(&mut S, usize, usize, V),
    list_reverse: fn(&mut S, usize, usize, usize),
    sublist_remove: fn(&mut S, usize, usize, usize) -> Vec<V>,
    sublist_insert: fn(&mut S, usize, usize, Vec<V>),
    ruin_remove: fn(&mut S, usize, usize) -> V,
    ruin_insert: fn(&mut S, usize, usize, V),
    element_count: fn(&S) -> usize,
    get_assigned: fn(&S) -> Vec<V>,
    entity_count: fn(&S) -> usize,
    list_remove_for_construction: fn(&mut S, usize, usize) -> V,
    index_to_element: fn(&S, usize) -> V,
    cross_distance_meter: DM,
    intra_distance_meter: IDM,
    variable_name: &'static str,
    descriptor_index: usize,
    descriptor: fn() -> SolutionDescriptor,
    entity_count_by_descriptor: fn(&S, usize) -> usize,
    terminate: Option<&AtomicBool>,
    sender: UnboundedSender<(S, S::Score)>,
) -> S
Expand description

Solves a list variable problem using construction heuristic + local search.

Called by macro-generated solve() methods for solutions using #[shadow_variable_updates] (list variables). When phases are configured in solver.toml, the construction type, acceptor, forager, and move selectors are built from config; otherwise defaults are used.

§Type Parameters

  • S - The solution type
  • V - The list element type
  • C - The constraint set type
  • DM - Cross-entity distance meter type
  • IDM - Intra-entity distance meter type

§Default Behavior (no config)

  • Construction: ListCheapestInsertion
  • Acceptor: LateAcceptance(400)
  • Forager: AcceptedCount(4)
  • Move selector: Union(NearbyListChange(20), NearbyListSwap(20), ListReverse)
  • Termination: 60s