pub struct TransportFeatureBuilder { /* private fields */ }
Expand description
Provides a way to build different flavors of time window feature.
Implementations§
Source§impl TransportFeatureBuilder
impl TransportFeatureBuilder
Sourcepub fn new(name: &str) -> Self
pub fn new(name: &str) -> Self
Creates a new instance of TransportFeatureBuilder
.
Examples found in repository?
75fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
76 // configure features needed to model PDPTW
77 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
78 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
79 let transport_feature = TransportFeatureBuilder::new("min-distance")
80 .set_transport_cost(transport)
81 // enable time constraint (not necessary, default behavior, here for demonstration purpose only)
82 .set_time_constrained(true)
83 .build_minimize_distance()?;
84
85 // configure goal of optimization
86 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature])?.build()
87}
More examples
102fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
103 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
104 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
105 let transport_feature = TransportFeatureBuilder::new("min-distance")
106 .set_transport_cost(transport)
107 .set_time_constrained(false)
108 .build_minimize_distance()?;
109 // create our custom feature
110 let hardware_feature = FeatureBuilder::default()
111 .with_name("hardware")
112 .with_constraint(HardwareConstraint { code: ViolationCode::default() })
113 .build()?;
114
115 // configure goal of optimization
116 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature, hardware_feature])?
117 .build()
118}
62fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
63 // configure features needed to model CVRP
64 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
65 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
66 let transport_feature = TransportFeatureBuilder::new("min-distance")
67 .set_transport_cost(transport)
68 // explicitly opt-out from time constraint on vehicles/jobs
69 .set_time_constrained(false)
70 .build_minimize_distance()?;
71
72 // configure goal of optimization: features with objectives are read from ordered feature list. Here we have:
73 // 1. minimum of unassigned jobs as the main objective
74 // 2. minimum distance traveled
75 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature])?.build()
76}
117fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
118 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
119 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
120 let transport_feature = TransportFeatureBuilder::new("min-distance")
121 .set_transport_cost(transport)
122 .set_time_constrained(false)
123 .build_minimize_distance()?;
124
125 // create our custom feature that consists of an objective and a state
126 let priority_feature = FeatureBuilder::default()
127 .with_name("maximize-priority")
128 .with_objective(PriorityObjective)
129 .with_state(PriorityState)
130 .build()?;
131
132 // configure goal of optimization
133 GoalContextBuilder::with_features(&[priority_feature, minimize_unassigned, transport_feature, capacity_feature])?
134 .build()
135}
Sourcepub fn set_violation_code(self, code: ViolationCode) -> Self
pub fn set_violation_code(self, code: ViolationCode) -> Self
Sets constraint violation code which is used to report back the reason of job’s unassignment. If not set, the default violation code is used.
Sourcepub fn set_time_constrained(self, is_constrained: bool) -> Self
pub fn set_time_constrained(self, is_constrained: bool) -> Self
Marks feature as non-constrained meaning that there no need to consider time as a hard constraint. Default is true.
Examples found in repository?
75fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
76 // configure features needed to model PDPTW
77 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
78 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
79 let transport_feature = TransportFeatureBuilder::new("min-distance")
80 .set_transport_cost(transport)
81 // enable time constraint (not necessary, default behavior, here for demonstration purpose only)
82 .set_time_constrained(true)
83 .build_minimize_distance()?;
84
85 // configure goal of optimization
86 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature])?.build()
87}
More examples
102fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
103 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
104 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
105 let transport_feature = TransportFeatureBuilder::new("min-distance")
106 .set_transport_cost(transport)
107 .set_time_constrained(false)
108 .build_minimize_distance()?;
109 // create our custom feature
110 let hardware_feature = FeatureBuilder::default()
111 .with_name("hardware")
112 .with_constraint(HardwareConstraint { code: ViolationCode::default() })
113 .build()?;
114
115 // configure goal of optimization
116 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature, hardware_feature])?
117 .build()
118}
62fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
63 // configure features needed to model CVRP
64 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
65 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
66 let transport_feature = TransportFeatureBuilder::new("min-distance")
67 .set_transport_cost(transport)
68 // explicitly opt-out from time constraint on vehicles/jobs
69 .set_time_constrained(false)
70 .build_minimize_distance()?;
71
72 // configure goal of optimization: features with objectives are read from ordered feature list. Here we have:
73 // 1. minimum of unassigned jobs as the main objective
74 // 2. minimum distance traveled
75 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature])?.build()
76}
117fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
118 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
119 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
120 let transport_feature = TransportFeatureBuilder::new("min-distance")
121 .set_transport_cost(transport)
122 .set_time_constrained(false)
123 .build_minimize_distance()?;
124
125 // create our custom feature that consists of an objective and a state
126 let priority_feature = FeatureBuilder::default()
127 .with_name("maximize-priority")
128 .with_objective(PriorityObjective)
129 .with_state(PriorityState)
130 .build()?;
131
132 // configure goal of optimization
133 GoalContextBuilder::with_features(&[priority_feature, minimize_unassigned, transport_feature, capacity_feature])?
134 .build()
135}
Sourcepub fn set_transport_cost(self, transport: Arc<dyn TransportCost>) -> Self
pub fn set_transport_cost(self, transport: Arc<dyn TransportCost>) -> Self
Sets transport costs to estimate distance.
Examples found in repository?
75fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
76 // configure features needed to model PDPTW
77 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
78 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
79 let transport_feature = TransportFeatureBuilder::new("min-distance")
80 .set_transport_cost(transport)
81 // enable time constraint (not necessary, default behavior, here for demonstration purpose only)
82 .set_time_constrained(true)
83 .build_minimize_distance()?;
84
85 // configure goal of optimization
86 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature])?.build()
87}
More examples
102fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
103 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
104 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
105 let transport_feature = TransportFeatureBuilder::new("min-distance")
106 .set_transport_cost(transport)
107 .set_time_constrained(false)
108 .build_minimize_distance()?;
109 // create our custom feature
110 let hardware_feature = FeatureBuilder::default()
111 .with_name("hardware")
112 .with_constraint(HardwareConstraint { code: ViolationCode::default() })
113 .build()?;
114
115 // configure goal of optimization
116 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature, hardware_feature])?
117 .build()
118}
62fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
63 // configure features needed to model CVRP
64 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
65 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
66 let transport_feature = TransportFeatureBuilder::new("min-distance")
67 .set_transport_cost(transport)
68 // explicitly opt-out from time constraint on vehicles/jobs
69 .set_time_constrained(false)
70 .build_minimize_distance()?;
71
72 // configure goal of optimization: features with objectives are read from ordered feature list. Here we have:
73 // 1. minimum of unassigned jobs as the main objective
74 // 2. minimum distance traveled
75 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature])?.build()
76}
117fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
118 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
119 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
120 let transport_feature = TransportFeatureBuilder::new("min-distance")
121 .set_transport_cost(transport)
122 .set_time_constrained(false)
123 .build_minimize_distance()?;
124
125 // create our custom feature that consists of an objective and a state
126 let priority_feature = FeatureBuilder::default()
127 .with_name("maximize-priority")
128 .with_objective(PriorityObjective)
129 .with_state(PriorityState)
130 .build()?;
131
132 // configure goal of optimization
133 GoalContextBuilder::with_features(&[priority_feature, minimize_unassigned, transport_feature, capacity_feature])?
134 .build()
135}
Sourcepub fn set_activity_cost(self, activity: Arc<dyn ActivityCost>) -> Self
pub fn set_activity_cost(self, activity: Arc<dyn ActivityCost>) -> Self
Sets activity costs to estimate job start/end time. If omitted, then SimpleActivityCost is used by default.
Sourcepub fn build_schedule_updater(self) -> GenericResult<Feature>
pub fn build_schedule_updater(self) -> GenericResult<Feature>
Builds a flavor of transport feature which only updates activity schedules. No objective, no constraint.
Sourcepub fn build_minimize_duration(self) -> GenericResult<Feature>
pub fn build_minimize_duration(self) -> GenericResult<Feature>
Creates the transport feature which considers duration for minimization as a global objective. TODO: distance costs are still considered on local level.
Sourcepub fn build_minimize_distance(self) -> GenericResult<Feature>
pub fn build_minimize_distance(self) -> GenericResult<Feature>
Creates the transport feature which considers distance for minimization as a global objective. TODO: duration costs are still considered on local level.
Examples found in repository?
75fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
76 // configure features needed to model PDPTW
77 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
78 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
79 let transport_feature = TransportFeatureBuilder::new("min-distance")
80 .set_transport_cost(transport)
81 // enable time constraint (not necessary, default behavior, here for demonstration purpose only)
82 .set_time_constrained(true)
83 .build_minimize_distance()?;
84
85 // configure goal of optimization
86 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature])?.build()
87}
More examples
102fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
103 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
104 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
105 let transport_feature = TransportFeatureBuilder::new("min-distance")
106 .set_transport_cost(transport)
107 .set_time_constrained(false)
108 .build_minimize_distance()?;
109 // create our custom feature
110 let hardware_feature = FeatureBuilder::default()
111 .with_name("hardware")
112 .with_constraint(HardwareConstraint { code: ViolationCode::default() })
113 .build()?;
114
115 // configure goal of optimization
116 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature, hardware_feature])?
117 .build()
118}
62fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
63 // configure features needed to model CVRP
64 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
65 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
66 let transport_feature = TransportFeatureBuilder::new("min-distance")
67 .set_transport_cost(transport)
68 // explicitly opt-out from time constraint on vehicles/jobs
69 .set_time_constrained(false)
70 .build_minimize_distance()?;
71
72 // configure goal of optimization: features with objectives are read from ordered feature list. Here we have:
73 // 1. minimum of unassigned jobs as the main objective
74 // 2. minimum distance traveled
75 GoalContextBuilder::with_features(&[minimize_unassigned, transport_feature, capacity_feature])?.build()
76}
117fn define_goal(transport: Arc<dyn TransportCost>) -> GenericResult<GoalContext> {
118 let minimize_unassigned = MinimizeUnassignedBuilder::new("min-unassigned").build()?;
119 let capacity_feature = CapacityFeatureBuilder::<SingleDimLoad>::new("capacity").build()?;
120 let transport_feature = TransportFeatureBuilder::new("min-distance")
121 .set_transport_cost(transport)
122 .set_time_constrained(false)
123 .build_minimize_distance()?;
124
125 // create our custom feature that consists of an objective and a state
126 let priority_feature = FeatureBuilder::default()
127 .with_name("maximize-priority")
128 .with_objective(PriorityObjective)
129 .with_state(PriorityState)
130 .build()?;
131
132 // configure goal of optimization
133 GoalContextBuilder::with_features(&[priority_feature, minimize_unassigned, transport_feature, capacity_feature])?
134 .build()
135}
Sourcepub fn build_minimize_cost(self) -> GenericResult<Feature>
pub fn build_minimize_cost(self) -> GenericResult<Feature>
Creates the transport feature which considers distance and duration for minimization.
Auto Trait Implementations§
impl Freeze for TransportFeatureBuilder
impl !RefUnwindSafe for TransportFeatureBuilder
impl Send for TransportFeatureBuilder
impl Sync for TransportFeatureBuilder
impl Unpin for TransportFeatureBuilder
impl !UnwindSafe for TransportFeatureBuilder
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
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>
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>
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