pub trait RouteIntervals {
    // Required methods
    fn is_marker_job(&self, job: &Job) -> bool;
    fn is_marker_assignable(&self, route: &Route, job: &Job) -> bool;
    fn is_new_interval_needed(&self, route_ctx: &RouteContext) -> bool;
    fn get_marker_intervals<'a>(
        &self,
        route_ctx: &'a RouteContext
    ) -> Option<&'a Vec<(usize, usize)>>;
    fn get_interval_key(&self) -> Option<StateKey>;
    fn update_solution_intervals(&self, solution_ctx: &mut SolutionContext);
}
Expand description

This trait defines a logic to split route into logical intervals by marker jobs.

Required Methods§

source

fn is_marker_job(&self, job: &Job) -> bool

Returns true if job is considered as a route interval marker.

source

fn is_marker_assignable(&self, route: &Route, job: &Job) -> bool

Returns true if given job is a marker job and can be used with given route.

source

fn is_new_interval_needed(&self, route_ctx: &RouteContext) -> bool

Checks whether vehicle can do a new route interval.

source

fn get_marker_intervals<'a>( &self, route_ctx: &'a RouteContext ) -> Option<&'a Vec<(usize, usize)>>

Gets route intervals split by marker jobs.

source

fn get_interval_key(&self) -> Option<StateKey>

Gets interval state key if present.

source

fn update_solution_intervals(&self, solution_ctx: &mut SolutionContext)

Update route intervals on solution level.

Implementors§