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 UnsafeUnpin 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