vrp_core/solver/processing/
advance_departure.rs1use super::*;
2use crate::construction::enablers::advance_departure_time;
3use crate::construction::heuristics::InsertionContext;
4use rosomaxa::HeuristicSolution;
5
6#[derive(Default)]
8pub struct AdvanceDeparture {}
9
10impl HeuristicSolutionProcessing for AdvanceDeparture {
11 type Solution = InsertionContext;
12
13 fn post_process(&self, solution: Self::Solution) -> Self::Solution {
14 let mut insertion_ctx = solution.deep_copy();
15
16 let problem = insertion_ctx.problem.clone();
17
18 let activity = problem.activity.as_ref();
19 let transport = problem.transport.as_ref();
20
21 insertion_ctx.solution.routes.iter_mut().for_each(|route_ctx| {
22 advance_departure_time(route_ctx, activity, transport, true);
23 });
24
25 problem.goal.accept_solution_state(&mut insertion_ctx.solution);
26
27 insertion_ctx
28 }
29}