[−][src]Trait vrp_core::construction::constraints::ConstraintModule
Represents a constraint module which can be added to constraint pipeline.
Required methods
fn accept_insertion(
&self,
solution_ctx: &mut SolutionContext,
route_index: usize,
job: &Job
)
&self,
solution_ctx: &mut SolutionContext,
route_index: usize,
job: &Job
)
Accept insertion of specific job into the route.
Called once job has been inserted into solution represented via solution_ctx.
Target route is defined by route_index which refers to routes collection in solution context.
Inserted job is job.
This method should call accept_route_state internally.
fn accept_route_state(&self, ctx: &mut RouteContext)
Accept route and updates its state to allow more efficient constraint checks.
fn accept_solution_state(&self, ctx: &mut SolutionContext)
Accepts insertion solution context allowing to update job insertion data. This method called twice: before insertion of all jobs starts and when it ends.
fn state_keys(&self) -> Iter<'_, i32>
Returns unique constraint state keys. Used to avoid state key interference.
fn get_constraints(&self) -> Iter<'_, ConstraintVariant>
Returns list of constraints to be used.
Implementors
impl ConstraintModule for AreaModule[src]
fn accept_insertion(
&self,
_solution_ctx: &mut SolutionContext,
_route_index: usize,
_job: &Job
)[src]
&self,
_solution_ctx: &mut SolutionContext,
_route_index: usize,
_job: &Job
)
fn accept_route_state(&self, _ctx: &mut RouteContext)[src]
fn accept_solution_state(&self, _ctx: &mut SolutionContext)[src]
fn state_keys(&self) -> Iter<'_, i32>[src]
fn get_constraints(&self) -> Iter<'_, ConstraintVariant>[src]
impl ConstraintModule for ConditionalJobModule[src]
fn accept_insertion(
&self,
solution_ctx: &mut SolutionContext,
_route_index: usize,
_job: &Job
)[src]
&self,
solution_ctx: &mut SolutionContext,
_route_index: usize,
_job: &Job
)
fn accept_route_state(&self, _ctx: &mut RouteContext)[src]
fn accept_solution_state(&self, ctx: &mut SolutionContext)[src]
fn state_keys(&self) -> Iter<'_, i32>[src]
fn get_constraints(&self) -> Iter<'_, ConstraintVariant>[src]
impl ConstraintModule for FleetUsageConstraintModule[src]
fn accept_insertion(
&self,
_solution_ctx: &mut SolutionContext,
_route_index: usize,
_job: &Job
)[src]
&self,
_solution_ctx: &mut SolutionContext,
_route_index: usize,
_job: &Job
)
fn accept_route_state(&self, _ctx: &mut RouteContext)[src]
fn accept_solution_state(&self, _ctx: &mut SolutionContext)[src]
fn state_keys(&self) -> Iter<'_, i32>[src]
fn get_constraints(&self) -> Iter<'_, ConstraintVariant>[src]
impl ConstraintModule for StrictLockingModule[src]
fn accept_insertion(
&self,
_solution_ctx: &mut SolutionContext,
_route_index: usize,
_job: &Job
)[src]
&self,
_solution_ctx: &mut SolutionContext,
_route_index: usize,
_job: &Job
)
fn accept_route_state(&self, _ctx: &mut RouteContext)[src]
fn accept_solution_state(&self, _ctx: &mut SolutionContext)[src]
fn state_keys(&self) -> Iter<'_, i32>[src]
fn get_constraints(&self) -> Iter<'_, ConstraintVariant>[src]
impl ConstraintModule for TourSizeModule[src]
fn accept_insertion(&self, _: &mut SolutionContext, _: usize, _: &Job)[src]
fn accept_route_state(&self, _: &mut RouteContext)[src]
fn accept_solution_state(&self, _: &mut SolutionContext)[src]
fn state_keys(&self) -> Iter<'_, i32>[src]
fn get_constraints(&self) -> Iter<'_, ConstraintVariant>[src]
impl ConstraintModule for TransportConstraintModule[src]
fn accept_insertion(
&self,
solution_ctx: &mut SolutionContext,
route_index: usize,
_job: &Job
)[src]
&self,
solution_ctx: &mut SolutionContext,
route_index: usize,
_job: &Job
)
fn accept_route_state(&self, ctx: &mut RouteContext)[src]
fn accept_solution_state(&self, ctx: &mut SolutionContext)[src]
fn state_keys(&self) -> Iter<'_, i32>[src]
fn get_constraints(&self) -> Iter<'_, ConstraintVariant>[src]
impl<T: Load + Add<Output = T> + Sub<Output = T> + 'static> ConstraintModule for CapacityConstraintModule<T>[src]
fn accept_insertion(
&self,
solution_ctx: &mut SolutionContext,
route_index: usize,
job: &Job
)[src]
&self,
solution_ctx: &mut SolutionContext,
route_index: usize,
job: &Job
)