Struct vrp_core::models::FeatureBuilder
source · pub struct FeatureBuilder(/* private fields */);Expand description
Provides a way to build feature with some checks.
Implementations§
source§impl FeatureBuilder
impl FeatureBuilder
sourcepub fn from_feature(feature: Feature) -> Self
pub fn from_feature(feature: Feature) -> Self
Creates a builder from another feature.
sourcepub fn with_name(self, name: &str) -> Self
pub fn with_name(self, name: &str) -> Self
Sets given name.
Examples found in repository?
examples/custom_constraint.rs (line 111)
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
fn define_goal(transport: Arc<dyn TransportCost + Send + Sync>) -> GenericResult<GoalContext> {
let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
let transport_feature = TransportFeatureBuilder::new("min-distance")
.set_transport_cost(transport)
.set_time_constrained(false)
.build_minimize_distance()?;
// create our custom feature
let hardware_feature = FeatureBuilder::default()
.with_name("hardware")
.with_constraint(HardwareConstraint { code: ViolationCode::default() })
.build()?;
// configure goal of optimization
GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature, hardware_feature])?
.build()
}More examples
examples/custom_objective.rs (line 127)
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
fn define_goal(transport: Arc<dyn TransportCost + Send + Sync>) -> GenericResult<GoalContext> {
let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
let transport_feature = TransportFeatureBuilder::new("min-distance")
.set_transport_cost(transport)
.set_time_constrained(false)
.build_minimize_distance()?;
// create our custom feature that consists of an objective and a state
let priority_feature = FeatureBuilder::default()
.with_name("maximize-priority")
.with_objective(PriorityObjective)
.with_state(PriorityState)
.build()?;
// configure goal of optimization
GoalContextBuilder::with_features(&[priority_feature, minimize_unassigned, transport_feature, capacity_feature])?
.build()
}sourcepub fn with_constraint<T: FeatureConstraint + 'static>(
self,
constraint: T,
) -> Self
pub fn with_constraint<T: FeatureConstraint + 'static>( self, constraint: T, ) -> Self
Adds given constraint.
Examples found in repository?
examples/custom_constraint.rs (line 112)
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
fn define_goal(transport: Arc<dyn TransportCost + Send + Sync>) -> GenericResult<GoalContext> {
let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
let transport_feature = TransportFeatureBuilder::new("min-distance")
.set_transport_cost(transport)
.set_time_constrained(false)
.build_minimize_distance()?;
// create our custom feature
let hardware_feature = FeatureBuilder::default()
.with_name("hardware")
.with_constraint(HardwareConstraint { code: ViolationCode::default() })
.build()?;
// configure goal of optimization
GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature, hardware_feature])?
.build()
}sourcepub fn with_objective<T: FeatureObjective + 'static>(self, objective: T) -> Self
pub fn with_objective<T: FeatureObjective + 'static>(self, objective: T) -> Self
Adds given objective.
Examples found in repository?
examples/custom_objective.rs (line 128)
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
fn define_goal(transport: Arc<dyn TransportCost + Send + Sync>) -> GenericResult<GoalContext> {
let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
let transport_feature = TransportFeatureBuilder::new("min-distance")
.set_transport_cost(transport)
.set_time_constrained(false)
.build_minimize_distance()?;
// create our custom feature that consists of an objective and a state
let priority_feature = FeatureBuilder::default()
.with_name("maximize-priority")
.with_objective(PriorityObjective)
.with_state(PriorityState)
.build()?;
// configure goal of optimization
GoalContextBuilder::with_features(&[priority_feature, minimize_unassigned, transport_feature, capacity_feature])?
.build()
}sourcepub fn with_state<T: FeatureState + 'static>(self, state: T) -> Self
pub fn with_state<T: FeatureState + 'static>(self, state: T) -> Self
Adds given state.
Examples found in repository?
examples/custom_objective.rs (line 129)
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
fn define_goal(transport: Arc<dyn TransportCost + Send + Sync>) -> GenericResult<GoalContext> {
let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
let transport_feature = TransportFeatureBuilder::new("min-distance")
.set_transport_cost(transport)
.set_time_constrained(false)
.build_minimize_distance()?;
// create our custom feature that consists of an objective and a state
let priority_feature = FeatureBuilder::default()
.with_name("maximize-priority")
.with_objective(PriorityObjective)
.with_state(PriorityState)
.build()?;
// configure goal of optimization
GoalContextBuilder::with_features(&[priority_feature, minimize_unassigned, transport_feature, capacity_feature])?
.build()
}sourcepub fn build(self) -> Result<Feature, GenericError>
pub fn build(self) -> Result<Feature, GenericError>
Tries to build a feature.
Examples found in repository?
examples/custom_constraint.rs (line 113)
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
fn define_goal(transport: Arc<dyn TransportCost + Send + Sync>) -> GenericResult<GoalContext> {
let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
let transport_feature = TransportFeatureBuilder::new("min-distance")
.set_transport_cost(transport)
.set_time_constrained(false)
.build_minimize_distance()?;
// create our custom feature
let hardware_feature = FeatureBuilder::default()
.with_name("hardware")
.with_constraint(HardwareConstraint { code: ViolationCode::default() })
.build()?;
// configure goal of optimization
GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature, hardware_feature])?
.build()
}More examples
examples/custom_objective.rs (line 130)
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
fn define_goal(transport: Arc<dyn TransportCost + Send + Sync>) -> GenericResult<GoalContext> {
let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
let transport_feature = TransportFeatureBuilder::new("min-distance")
.set_transport_cost(transport)
.set_time_constrained(false)
.build_minimize_distance()?;
// create our custom feature that consists of an objective and a state
let priority_feature = FeatureBuilder::default()
.with_name("maximize-priority")
.with_objective(PriorityObjective)
.with_state(PriorityState)
.build()?;
// configure goal of optimization
GoalContextBuilder::with_features(&[priority_feature, minimize_unassigned, transport_feature, capacity_feature])?
.build()
}Trait Implementations§
source§impl Default for FeatureBuilder
impl Default for FeatureBuilder
source§fn default() -> FeatureBuilder
fn default() -> FeatureBuilder
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for FeatureBuilder
impl !RefUnwindSafe for FeatureBuilder
impl Send for FeatureBuilder
impl Sync for FeatureBuilder
impl Unpin for FeatureBuilder
impl !UnwindSafe for FeatureBuilder
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more