pub struct GoalContextBuilder { /* private fields */ }
Expand description
Provides a customizable way to build goal context.
Implementations§
Source§impl GoalContextBuilder
impl GoalContextBuilder
Sourcepub fn with_features(features: &[Feature]) -> GenericResult<Self>
pub fn with_features(features: &[Feature]) -> GenericResult<Self>
Creates a GoalContextBuilder
with the given list of features.
Examples found in repository?
examples/pdptw.rs (line 86)
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
examples/custom_constraint.rs (line 116)
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}
examples/cvrp.rs (line 75)
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}
examples/custom_objective.rs (line 133)
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_main_goal(self, goal: Goal) -> Self
pub fn set_main_goal(self, goal: Goal) -> Self
Sets a main goal of optimization.
Sourcepub fn add_alternative_goal(self, goal: Goal, weight: Float) -> Self
pub fn add_alternative_goal(self, goal: Goal, weight: Float) -> Self
Sets an alternative goal of optimization.
Sourcepub fn build(self) -> GenericResult<GoalContext>
pub fn build(self) -> GenericResult<GoalContext>
Builds goal context.
Examples found in repository?
examples/pdptw.rs (line 86)
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
examples/custom_constraint.rs (line 117)
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}
examples/cvrp.rs (line 75)
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}
examples/custom_objective.rs (line 134)
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}
Auto Trait Implementations§
impl Freeze for GoalContextBuilder
impl !RefUnwindSafe for GoalContextBuilder
impl Send for GoalContextBuilder
impl Sync for GoalContextBuilder
impl Unpin for GoalContextBuilder
impl !UnwindSafe for GoalContextBuilder
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