Struct vrp_core::construction::constraints::ConstraintPipeline
source · [−]pub struct ConstraintPipeline {
pub modules: Vec<Arc<dyn ConstraintModule + Send + Sync>>,
pub state_keys: HashSet<i32>,
pub hard_route_constraints: Vec<Arc<dyn HardRouteConstraint + Send + Sync>>,
pub hard_activity_constraints: Vec<Arc<dyn HardActivityConstraint + Send + Sync>>,
pub soft_route_constraints: Vec<Arc<dyn SoftRouteConstraint + Send + Sync>>,
pub soft_activity_constraints: Vec<Arc<dyn SoftActivityConstraint + Send + Sync>>,
}Expand description
Provides the way to work with multiple constraints.
Fields
modules: Vec<Arc<dyn ConstraintModule + Send + Sync>>Pipeline modules.
state_keys: HashSet<i32>Registered state keys.
hard_route_constraints: Vec<Arc<dyn HardRouteConstraint + Send + Sync>>Hard route constraints.
hard_activity_constraints: Vec<Arc<dyn HardActivityConstraint + Send + Sync>>Hard activity constraints.
soft_route_constraints: Vec<Arc<dyn SoftRouteConstraint + Send + Sync>>Soft route constraints.
soft_activity_constraints: Vec<Arc<dyn SoftActivityConstraint + Send + Sync>>Soft activity constraints.
Implementations
sourceimpl ConstraintPipeline
impl ConstraintPipeline
sourcepub fn accept_insertion(
&self,
solution_ctx: &mut SolutionContext,
route_index: usize,
job: &Job
)
pub fn accept_insertion(
&self,
solution_ctx: &mut SolutionContext,
route_index: usize,
job: &Job
)
Accepts job insertion.
sourcepub fn accept_route_state(&self, route_ctx: &mut RouteContext)
pub fn accept_route_state(&self, route_ctx: &mut RouteContext)
Accepts route state.
sourcepub fn accept_solution_state(&self, solution_ctx: &mut SolutionContext)
pub fn accept_solution_state(&self, solution_ctx: &mut SolutionContext)
Accepts solution state.
sourcepub fn merge_constrained(&self, source: Job, candidate: Job) -> Result<Job, i32>
pub fn merge_constrained(&self, source: Job, candidate: Job) -> Result<Job, i32>
Tries to merge two jobs taking into account common constraints. Returns a new job, if it is possible to merge them together having theoretically assignable job. Otherwise returns violation error code.
sourcepub fn add_module(&mut self, module: TargetConstraint) -> &mut Self
pub fn add_module(&mut self, module: TargetConstraint) -> &mut Self
Adds constraint module.
sourcepub fn add_constraint(&mut self, constraint: &ConstraintVariant)
pub fn add_constraint(&mut self, constraint: &ConstraintVariant)
Adds constraint into pipeline.
sourcepub fn evaluate_hard_route(
&self,
solution_ctx: &SolutionContext,
route_ctx: &RouteContext,
job: &Job
) -> Option<RouteConstraintViolation>
pub fn evaluate_hard_route(
&self,
solution_ctx: &SolutionContext,
route_ctx: &RouteContext,
job: &Job
) -> Option<RouteConstraintViolation>
Checks whether all hard route constraints are fulfilled. Returns result of first failed constraint or empty value.
sourcepub fn evaluate_hard_activity(
&self,
route_ctx: &RouteContext,
activity_ctx: &ActivityContext<'_>
) -> Option<ActivityConstraintViolation>
pub fn evaluate_hard_activity(
&self,
route_ctx: &RouteContext,
activity_ctx: &ActivityContext<'_>
) -> Option<ActivityConstraintViolation>
Checks whether all activity route constraints are fulfilled. Returns result of first failed constraint or empty value.
sourcepub fn evaluate_soft_route(
&self,
solution_ctx: &SolutionContext,
route_ctx: &RouteContext,
job: &Job
) -> Cost
pub fn evaluate_soft_route(
&self,
solution_ctx: &SolutionContext,
route_ctx: &RouteContext,
job: &Job
) -> Cost
Checks soft route constraints and aggregates associated actual and penalty costs.
sourcepub fn evaluate_soft_activity(
&self,
route_ctx: &RouteContext,
activity_ctx: &ActivityContext<'_>
) -> Cost
pub fn evaluate_soft_activity(
&self,
route_ctx: &RouteContext,
activity_ctx: &ActivityContext<'_>
) -> Cost
Checks soft route constraints and aggregates associated actual and penalty costs.
sourcepub fn get_constraints(&self) -> impl Iterator<Item = ConstraintVariant> + '_
pub fn get_constraints(&self) -> impl Iterator<Item = ConstraintVariant> + '_
Gets all constraint variants as a single iterator.
Trait Implementations
sourceimpl Default for ConstraintPipeline
impl Default for ConstraintPipeline
sourcefn default() -> ConstraintPipeline
fn default() -> ConstraintPipeline
Returns the “default value” for a type. Read more
Auto Trait Implementations
impl !RefUnwindSafe for ConstraintPipeline
impl Send for ConstraintPipeline
impl Sync for ConstraintPipeline
impl Unpin for ConstraintPipeline
impl !UnwindSafe for ConstraintPipeline
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more