#[non_exhaustive]pub struct Vehicle {Show 29 fields
pub travel_mode: TravelMode,
pub route_modifiers: Option<RouteModifiers>,
pub start_location: Option<LatLng>,
pub start_waypoint: Option<Waypoint>,
pub end_location: Option<LatLng>,
pub end_waypoint: Option<Waypoint>,
pub start_tags: Vec<String>,
pub end_tags: Vec<String>,
pub start_time_windows: Vec<TimeWindow>,
pub end_time_windows: Vec<TimeWindow>,
pub travel_duration_multiple: Option<f64>,
pub unloading_policy: UnloadingPolicy,
pub load_limits: HashMap<String, LoadLimit>,
pub cost_per_hour: f64,
pub cost_per_traveled_hour: f64,
pub cost_per_kilometer: f64,
pub fixed_cost: f64,
pub used_if_route_is_empty: bool,
pub route_duration_limit: Option<DurationLimit>,
pub travel_duration_limit: Option<DurationLimit>,
pub route_distance_limit: Option<DistanceLimit>,
pub extra_visit_duration_for_visit_type: HashMap<String, Duration>,
pub break_rule: Option<BreakRule>,
pub label: String,
pub ignore: bool,
pub break_rule_indices: Vec<i32>,
pub capacities: Vec<CapacityQuantity>,
pub start_load_intervals: Vec<CapacityQuantityInterval>,
pub end_load_intervals: Vec<CapacityQuantityInterval>,
/* private fields */
}Expand description
Models a vehicle in a shipment problem. Solving a shipment problem will
build a route starting from start_location and ending at end_location
for this vehicle. A route is a sequence of visits (see ShipmentRoute).
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.travel_mode: TravelModeThe travel mode which affects the roads usable by the vehicle and its
speed. See also travel_duration_multiple.
route_modifiers: Option<RouteModifiers>Optional. A set of conditions to satisfy that affect the way routes are calculated for the given vehicle.
start_location: Option<LatLng>Geographic location where the vehicle starts before picking up any
shipments. If not specified, the vehicle starts at its first pickup.
If the shipment model has duration and distance matrices, start_location
must not be specified.
start_waypoint: Option<Waypoint>Waypoint representing a geographic location where the vehicle starts before
picking up any shipments. If neither start_waypoint nor start_location
is specified, the vehicle starts at its first pickup.
If the shipment model has duration and distance matrices, start_waypoint
must not be specified.
end_location: Option<LatLng>Geographic location where the vehicle ends after it has completed its last
VisitRequest. If not specified the vehicle’s ShipmentRoute ends
immediately when it completes its last VisitRequest.
If the shipment model has duration and distance matrices, end_location
must not be specified.
end_waypoint: Option<Waypoint>Waypoint representing a geographic location where the vehicle ends after
it has completed its last VisitRequest. If neither end_waypoint nor
end_location is specified, the vehicle’s ShipmentRoute ends immediately
when it completes its last VisitRequest.
If the shipment model has duration and distance matrices, end_waypoint
must not be specified.
Specifies tags attached to the start of the vehicle’s route.
Empty or duplicate strings are not allowed.
Specifies tags attached to the end of the vehicle’s route.
Empty or duplicate strings are not allowed.
start_time_windows: Vec<TimeWindow>Time windows during which the vehicle may depart its start location. They must be within the global time limits (see ShipmentModel.global_* fields). If unspecified, there is no limitation besides those global time limits.
Time windows belonging to the same repeated field must be disjoint, i.e. no time window can overlap with or be adjacent to another, and they must be in chronological order.
cost_per_hour_after_soft_end_time and soft_end_time can only be set if
there is a single time window.
end_time_windows: Vec<TimeWindow>Time windows during which the vehicle may arrive at its end location. They must be within the global time limits (see ShipmentModel.global_* fields). If unspecified, there is no limitation besides those global time limits.
Time windows belonging to the same repeated field must be disjoint, i.e. no time window can overlap with or be adjacent to another, and they must be in chronological order.
cost_per_hour_after_soft_end_time and soft_end_time can only be set if
there is a single time window.
travel_duration_multiple: Option<f64>Specifies a multiplicative factor that can be used to increase or decrease
travel times of this vehicle. For example, setting this to 2.0 means
that this vehicle is slower and has travel times that are twice what they
are for standard vehicles. This multiple does not affect visit durations.
It does affect cost if cost_per_hour or cost_per_traveled_hour are
specified. This must be in the range [0.001, 1000.0]. If unset, the vehicle
is standard, and this multiple is considered 1.0.
WARNING: Travel times will be rounded to the nearest second after this multiple is applied but before performing any numerical operations, thus, a small multiple may result in a loss of precision.
See also extra_visit_duration_for_visit_type below.
unloading_policy: UnloadingPolicyUnloading policy enforced on the vehicle.
load_limits: HashMap<String, LoadLimit>Capacities of the vehicle (weight, volume, # of pallets for example). The keys in the map are the identifiers of the type of load, consistent with the keys of the Shipment.load_demands field. If a given key is absent from this map, the corresponding capacity is considered to be limitless.
cost_per_hour: f64Vehicle costs: all costs add up and must be in the same unit as Shipment.penalty_cost.
Cost per hour of the vehicle route. This cost is applied to the total time
taken by the route, and includes travel time, waiting time, and visit time.
Using cost_per_hour instead of just cost_per_traveled_hour may result
in additional latency.
cost_per_traveled_hour: f64Cost per traveled hour of the vehicle route. This cost is applied only to travel time taken by the route (i.e., that reported in ShipmentRoute.transitions), and excludes waiting time and visit time.
cost_per_kilometer: f64Cost per kilometer of the vehicle route. This cost is applied to the
distance reported in the
ShipmentRoute.transitions
and does not apply to any distance implicitly traveled from the
arrival_location to the departure_location of a single VisitRequest.
fixed_cost: f64Fixed cost applied if this vehicle is used to handle a shipment.
used_if_route_is_empty: boolThis field only applies to vehicles when their route does not serve any shipments. It indicates if the vehicle should be considered as used or not in this case.
If true, the vehicle goes from its start to its end location even if it doesn’t serve any shipments, and time and distance costs resulting from its start –> end travel are taken into account.
Otherwise, it doesn’t travel from its start to its end location, and no
break_rule or delay (from TransitionAttributes) are scheduled for this
vehicle. In this case, the vehicle’s ShipmentRoute doesn’t contain any
information except for the vehicle index and label.
route_duration_limit: Option<DurationLimit>Limit applied to the total duration of the vehicle’s route. In a given
OptimizeToursResponse, the route duration of a vehicle is the
difference between its vehicle_end_time and vehicle_start_time.
travel_duration_limit: Option<DurationLimit>Limit applied to the travel duration of the vehicle’s route. In a given
OptimizeToursResponse, the route travel duration is the sum of all its
transitions.travel_duration.
route_distance_limit: Option<DistanceLimit>Limit applied to the total distance of the vehicle’s route. In a given
OptimizeToursResponse, the route distance is the sum of all its
transitions.travel_distance_meters.
extra_visit_duration_for_visit_type: HashMap<String, Duration>Specifies a map from visit_types strings to durations. The duration is time
in addition to
VisitRequest.duration
to be taken at visits with the specified visit_types. This extra visit
duration adds cost if cost_per_hour is specified. Keys (i.e.
visit_types) cannot be empty strings.
If a visit request has multiple types, a duration will be added for each type in the map.
break_rule: Option<BreakRule>Describes the break schedule to be enforced on this vehicle. If empty, no breaks will be scheduled for this vehicle.
label: StringSpecifies a label for this vehicle. This label is reported in the response
as the vehicle_label of the corresponding
ShipmentRoute.
ignore: boolIf true, used_if_route_is_empty must be false, and this vehicle will
remain unused.
If a shipment is performed by an ignored vehicle in
injected_first_solution_routes, it is skipped in the first solution but
is free to be performed in the response.
If a shipment is performed by an ignored vehicle in
injected_solution_constraint and any related pickup/delivery is
constrained to remain on the vehicle (i.e., not relaxed to level
RELAX_ALL_AFTER_THRESHOLD), it is skipped in the response.
If a shipment has a non-empty allowed_vehicle_indices field and all of
the allowed vehicles are ignored, it is skipped in the response.
break_rule_indices: Vec<i32>Deprecated: No longer used.
Indices in the break_rule field in the source
ShipmentModel. They
correspond to break rules enforced on the vehicle.
As of 2018/03, at most one rule index per vehicle can be specified.
capacities: Vec<CapacityQuantity>Deprecated: Use Vehicle.load_limits instead.
start_load_intervals: Vec<CapacityQuantityInterval>Deprecated: Use Vehicle.LoadLimit.start_load_interval instead.
end_load_intervals: Vec<CapacityQuantityInterval>Deprecated: Use Vehicle.LoadLimit.end_load_interval instead.
Implementations§
Source§impl Vehicle
impl Vehicle
pub fn new() -> Self
Sourcepub fn set_travel_mode<T: Into<TravelMode>>(self, v: T) -> Self
pub fn set_travel_mode<T: Into<TravelMode>>(self, v: T) -> Self
Sets the value of travel_mode.
Sourcepub fn set_route_modifiers<T>(self, v: T) -> Selfwhere
T: Into<RouteModifiers>,
pub fn set_route_modifiers<T>(self, v: T) -> Selfwhere
T: Into<RouteModifiers>,
Sets the value of route_modifiers.
Sourcepub fn set_or_clear_route_modifiers<T>(self, v: Option<T>) -> Selfwhere
T: Into<RouteModifiers>,
pub fn set_or_clear_route_modifiers<T>(self, v: Option<T>) -> Selfwhere
T: Into<RouteModifiers>,
Sets or clears the value of route_modifiers.
Sourcepub fn set_start_location<T>(self, v: T) -> Self
pub fn set_start_location<T>(self, v: T) -> Self
Sets the value of start_location.
Sourcepub fn set_or_clear_start_location<T>(self, v: Option<T>) -> Self
pub fn set_or_clear_start_location<T>(self, v: Option<T>) -> Self
Sets or clears the value of start_location.
Sourcepub fn set_start_waypoint<T>(self, v: T) -> Self
pub fn set_start_waypoint<T>(self, v: T) -> Self
Sets the value of start_waypoint.
Sourcepub fn set_or_clear_start_waypoint<T>(self, v: Option<T>) -> Self
pub fn set_or_clear_start_waypoint<T>(self, v: Option<T>) -> Self
Sets or clears the value of start_waypoint.
Sourcepub fn set_end_location<T>(self, v: T) -> Self
pub fn set_end_location<T>(self, v: T) -> Self
Sets the value of end_location.
Sourcepub fn set_or_clear_end_location<T>(self, v: Option<T>) -> Self
pub fn set_or_clear_end_location<T>(self, v: Option<T>) -> Self
Sets or clears the value of end_location.
Sourcepub fn set_end_waypoint<T>(self, v: T) -> Self
pub fn set_end_waypoint<T>(self, v: T) -> Self
Sets the value of end_waypoint.
Sourcepub fn set_or_clear_end_waypoint<T>(self, v: Option<T>) -> Self
pub fn set_or_clear_end_waypoint<T>(self, v: Option<T>) -> Self
Sets or clears the value of end_waypoint.
Sets the value of start_tags.
Sets the value of end_tags.
Sourcepub fn set_start_time_windows<T, V>(self, v: T) -> Self
pub fn set_start_time_windows<T, V>(self, v: T) -> Self
Sets the value of start_time_windows.
Sourcepub fn set_end_time_windows<T, V>(self, v: T) -> Self
pub fn set_end_time_windows<T, V>(self, v: T) -> Self
Sets the value of end_time_windows.
Sourcepub fn set_travel_duration_multiple<T>(self, v: T) -> Self
pub fn set_travel_duration_multiple<T>(self, v: T) -> Self
Sets the value of travel_duration_multiple.
Sourcepub fn set_or_clear_travel_duration_multiple<T>(self, v: Option<T>) -> Self
pub fn set_or_clear_travel_duration_multiple<T>(self, v: Option<T>) -> Self
Sets or clears the value of travel_duration_multiple.
Sourcepub fn set_unloading_policy<T: Into<UnloadingPolicy>>(self, v: T) -> Self
pub fn set_unloading_policy<T: Into<UnloadingPolicy>>(self, v: T) -> Self
Sets the value of unloading_policy.
Sourcepub fn set_load_limits<T, K, V>(self, v: T) -> Self
pub fn set_load_limits<T, K, V>(self, v: T) -> Self
Sets the value of load_limits.
Sourcepub fn set_cost_per_hour<T: Into<f64>>(self, v: T) -> Self
pub fn set_cost_per_hour<T: Into<f64>>(self, v: T) -> Self
Sets the value of cost_per_hour.
Sourcepub fn set_cost_per_traveled_hour<T: Into<f64>>(self, v: T) -> Self
pub fn set_cost_per_traveled_hour<T: Into<f64>>(self, v: T) -> Self
Sets the value of cost_per_traveled_hour.
Sourcepub fn set_cost_per_kilometer<T: Into<f64>>(self, v: T) -> Self
pub fn set_cost_per_kilometer<T: Into<f64>>(self, v: T) -> Self
Sets the value of cost_per_kilometer.
Sourcepub fn set_fixed_cost<T: Into<f64>>(self, v: T) -> Self
pub fn set_fixed_cost<T: Into<f64>>(self, v: T) -> Self
Sets the value of fixed_cost.
Sourcepub fn set_used_if_route_is_empty<T: Into<bool>>(self, v: T) -> Self
pub fn set_used_if_route_is_empty<T: Into<bool>>(self, v: T) -> Self
Sets the value of used_if_route_is_empty.
Sourcepub fn set_route_duration_limit<T>(self, v: T) -> Selfwhere
T: Into<DurationLimit>,
pub fn set_route_duration_limit<T>(self, v: T) -> Selfwhere
T: Into<DurationLimit>,
Sets the value of route_duration_limit.
Sourcepub fn set_or_clear_route_duration_limit<T>(self, v: Option<T>) -> Selfwhere
T: Into<DurationLimit>,
pub fn set_or_clear_route_duration_limit<T>(self, v: Option<T>) -> Selfwhere
T: Into<DurationLimit>,
Sets or clears the value of route_duration_limit.
Sourcepub fn set_travel_duration_limit<T>(self, v: T) -> Selfwhere
T: Into<DurationLimit>,
pub fn set_travel_duration_limit<T>(self, v: T) -> Selfwhere
T: Into<DurationLimit>,
Sets the value of travel_duration_limit.
Sourcepub fn set_or_clear_travel_duration_limit<T>(self, v: Option<T>) -> Selfwhere
T: Into<DurationLimit>,
pub fn set_or_clear_travel_duration_limit<T>(self, v: Option<T>) -> Selfwhere
T: Into<DurationLimit>,
Sets or clears the value of travel_duration_limit.
Sourcepub fn set_route_distance_limit<T>(self, v: T) -> Selfwhere
T: Into<DistanceLimit>,
pub fn set_route_distance_limit<T>(self, v: T) -> Selfwhere
T: Into<DistanceLimit>,
Sets the value of route_distance_limit.
Sourcepub fn set_or_clear_route_distance_limit<T>(self, v: Option<T>) -> Selfwhere
T: Into<DistanceLimit>,
pub fn set_or_clear_route_distance_limit<T>(self, v: Option<T>) -> Selfwhere
T: Into<DistanceLimit>,
Sets or clears the value of route_distance_limit.
Sourcepub fn set_extra_visit_duration_for_visit_type<T, K, V>(self, v: T) -> Self
pub fn set_extra_visit_duration_for_visit_type<T, K, V>(self, v: T) -> Self
Sets the value of extra_visit_duration_for_visit_type.
Sourcepub fn set_break_rule<T>(self, v: T) -> Self
pub fn set_break_rule<T>(self, v: T) -> Self
Sets the value of break_rule.
Sourcepub fn set_or_clear_break_rule<T>(self, v: Option<T>) -> Self
pub fn set_or_clear_break_rule<T>(self, v: Option<T>) -> Self
Sets or clears the value of break_rule.
Sourcepub fn set_ignore<T: Into<bool>>(self, v: T) -> Self
pub fn set_ignore<T: Into<bool>>(self, v: T) -> Self
Sets the value of ignore.
Sourcepub fn set_break_rule_indices<T, V>(self, v: T) -> Self
👎Deprecated
pub fn set_break_rule_indices<T, V>(self, v: T) -> Self
Sets the value of break_rule_indices.
Sourcepub fn set_capacities<T, V>(self, v: T) -> Self
👎Deprecated
pub fn set_capacities<T, V>(self, v: T) -> Self
Sets the value of capacities.
Sourcepub fn set_start_load_intervals<T, V>(self, v: T) -> Self
👎Deprecated
pub fn set_start_load_intervals<T, V>(self, v: T) -> Self
Sets the value of start_load_intervals.
Sourcepub fn set_end_load_intervals<T, V>(self, v: T) -> Self
👎Deprecated
pub fn set_end_load_intervals<T, V>(self, v: T) -> Self
Sets the value of end_load_intervals.