public sealed class Vehicle : IMessage<Vehicle>, IEquatable<Vehicle>, IDeepCloneable<Vehicle>, IBufferMessage, IMessage
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
).
Implements
IMessage<Vehicle>, IEquatable<Vehicle>, IDeepCloneable<Vehicle>, IBufferMessage, IMessageNamespace
Google.Cloud.Optimization.V1Assembly
Google.Cloud.Optimization.V1.dll
Constructors
Vehicle()
public Vehicle()
Vehicle(Vehicle)
public Vehicle(Vehicle other)
Parameter | |
---|---|
Name | Description |
other | Vehicle |
Properties
BreakRule
public BreakRule BreakRule { get; set; }
Describes the break schedule to be enforced on this vehicle. If empty, no breaks will be scheduled for this vehicle.
Property Value | |
---|---|
Type | Description |
BreakRule |
BreakRuleIndices
[Obsolete]
public RepeatedField<int> BreakRuleIndices { get; }
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.
Property Value | |
---|---|
Type | Description |
RepeatedField<Int32> |
Capacities
[Obsolete]
public RepeatedField<CapacityQuantity> Capacities { get; }
Deprecated: Use [Vehicle.load_limits][] instead.
Property Value | |
---|---|
Type | Description |
RepeatedField<CapacityQuantity> |
CostPerHour
public double CostPerHour { get; set; }
Vehicle costs: all costs add up and must be in the same unit as [Shipment.penalty_cost][google.cloud.optimization.v1.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.
Property Value | |
---|---|
Type | Description |
Double |
CostPerKilometer
public double CostPerKilometer { get; set; }
Cost per kilometer of the vehicle route. This cost is applied to the
distance reported in the [ShipmentRoute.transitions][google.cloud.optimization.v1.ShipmentRoute.transitions] and does not apply
to any distance implicitly traveled from the arrival_location
to the
departure_location
of a single VisitRequest
.
Property Value | |
---|---|
Type | Description |
Double |
CostPerTraveledHour
public double CostPerTraveledHour { get; set; }
Cost 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][google.cloud.optimization.v1.ShipmentRoute.transitions]), and excludes waiting time and visit time.
Property Value | |
---|---|
Type | Description |
Double |
EndLoadIntervals
[Obsolete]
public RepeatedField<CapacityQuantityInterval> EndLoadIntervals { get; }
Deprecated: Use [Vehicle.LoadLimit.end_load_interval][] instead.
Property Value | |
---|---|
Type | Description |
RepeatedField<CapacityQuantityInterval> |
EndLocation
public LatLng EndLocation { get; set; }
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.
Property Value | |
---|---|
Type | Description |
LatLng |
EndTags
public RepeatedField<string> EndTags { get; }
Specifies tags attached to the end of the vehicle's route.
Empty or duplicate strings are not allowed.
Property Value | |
---|---|
Type | Description |
RepeatedField<String> |
EndTimeWindows
public RepeatedField<TimeWindow> EndTimeWindows { get; }
Time windows during which the vehicle may arrive at its end location. They must be within the global time limits (see [ShipmentModel.global_*][google.cloud.optimization.v1.ShipmentModel.global_start_time] 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.
Property Value | |
---|---|
Type | Description |
RepeatedField<TimeWindow> |
EndWaypoint
public Waypoint EndWaypoint { get; set; }
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.
Property Value | |
---|---|
Type | Description |
Waypoint |
ExtraVisitDurationForVisitType
public MapField<string, Duration> ExtraVisitDurationForVisitType { get; }
Specifies a map from visit_types strings to durations. The duration is time
in addition to
[VisitRequest.duration][google.cloud.optimization.v1.Shipment.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.
Property Value | |
---|---|
Type | Description |
MapField<String, Duration> |
FixedCost
public double FixedCost { get; set; }
Fixed cost applied if this vehicle is used to handle a shipment.
Property Value | |
---|---|
Type | Description |
Double |
HasTravelDurationMultiple
public bool HasTravelDurationMultiple { get; }
Gets whether the "travel_duration_multiple" field is set
Property Value | |
---|---|
Type | Description |
Boolean |
Ignore
public bool Ignore { get; set; }
If 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.
Property Value | |
---|---|
Type | Description |
Boolean |
Label
public string Label { get; set; }
Specifies a label for this vehicle. This label is reported in the response
as the vehicle_label
of the corresponding [ShipmentRoute][google.cloud.optimization.v1.ShipmentRoute].
Property Value | |
---|---|
Type | Description |
String |
LoadLimits
public MapField<string, Vehicle.Types.LoadLimit> LoadLimits { get; }
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][google.cloud.optimization.v1.Shipment.load_demands] field. If a given key is absent from this map, the corresponding capacity is considered to be limitless.
Property Value | |
---|---|
Type | Description |
MapField<String, Vehicle.Types.LoadLimit> |
RouteDistanceLimit
public DistanceLimit RouteDistanceLimit { get; set; }
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][google.cloud.optimization.v1.ShipmentRoute.Transition.travel_distance_meters].
Property Value | |
---|---|
Type | Description |
DistanceLimit |
RouteDurationLimit
public Vehicle.Types.DurationLimit RouteDurationLimit { get; set; }
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
.
Property Value | |
---|---|
Type | Description |
Vehicle.Types.DurationLimit |
StartLoadIntervals
[Obsolete]
public RepeatedField<CapacityQuantityInterval> StartLoadIntervals { get; }
Deprecated: Use [Vehicle.LoadLimit.start_load_interval][] instead.
Property Value | |
---|---|
Type | Description |
RepeatedField<CapacityQuantityInterval> |
StartLocation
public LatLng StartLocation { get; set; }
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.
Property Value | |
---|---|
Type | Description |
LatLng |
StartTags
public RepeatedField<string> StartTags { get; }
Specifies tags attached to the start of the vehicle's route.
Empty or duplicate strings are not allowed.
Property Value | |
---|---|
Type | Description |
RepeatedField<String> |
StartTimeWindows
public RepeatedField<TimeWindow> StartTimeWindows { get; }
Time windows during which the vehicle may depart its start location. They must be within the global time limits (see [ShipmentModel.global_*][google.cloud.optimization.v1.ShipmentModel.global_start_time] 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.
Property Value | |
---|---|
Type | Description |
RepeatedField<TimeWindow> |
StartWaypoint
public Waypoint StartWaypoint { get; set; }
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.
Property Value | |
---|---|
Type | Description |
Waypoint |
TravelDurationLimit
public Vehicle.Types.DurationLimit TravelDurationLimit { get; set; }
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][google.cloud.optimization.v1.ShipmentRoute.Transition.travel_duration].
Property Value | |
---|---|
Type | Description |
Vehicle.Types.DurationLimit |
TravelDurationMultiple
public double TravelDurationMultiple { get; set; }
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.
Property Value | |
---|---|
Type | Description |
Double |
TravelMode
public Vehicle.Types.TravelMode TravelMode { get; set; }
The travel mode which affects the roads usable by the vehicle and its
speed. See also travel_duration_multiple
.
Property Value | |
---|---|
Type | Description |
Vehicle.Types.TravelMode |
UnloadingPolicy
public Vehicle.Types.UnloadingPolicy UnloadingPolicy { get; set; }
Unloading policy enforced on the vehicle.
Property Value | |
---|---|
Type | Description |
Vehicle.Types.UnloadingPolicy |
UsedIfRouteIsEmpty
public bool UsedIfRouteIsEmpty { get; set; }
This 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.
Property Value | |
---|---|
Type | Description |
Boolean |