Reference documentation and code samples for the Cloud Optimization V1 API class Google::Cloud::Optimization::V1::Shipment.
The shipment of a single item, from one of its pickups to one of its deliveries. For the shipment to be considered as performed, a unique vehicle must visit one of its pickup locations (and decrease its spare capacities accordingly), then visit one of its delivery locations later on (and therefore re-increase its spare capacities accordingly).
Inherits
- Object
Extended By
- Google::Protobuf::MessageExts::ClassMethods
Includes
- Google::Protobuf::MessageExts
Methods
#allowed_vehicle_indices
def allowed_vehicle_indices() -> ::Array<::Integer>
-
(::Array<::Integer>) — The set of vehicles that may perform this shipment. If empty, all vehicles
may perform it. Vehicles are given by their index in the
ShipmentModel
'svehicles
list.
#allowed_vehicle_indices=
def allowed_vehicle_indices=(value) -> ::Array<::Integer>
-
value (::Array<::Integer>) — The set of vehicles that may perform this shipment. If empty, all vehicles
may perform it. Vehicles are given by their index in the
ShipmentModel
'svehicles
list.
-
(::Array<::Integer>) — The set of vehicles that may perform this shipment. If empty, all vehicles
may perform it. Vehicles are given by their index in the
ShipmentModel
'svehicles
list.
#costs_per_vehicle
def costs_per_vehicle() -> ::Array<::Float>
-
(::Array<::Float>) — Specifies the cost that is incurred when this shipment is delivered by each
vehicle. If specified, it must have EITHER:
- the same number of elements as
costs_per_vehicle_indices
.costs_per_vehicle[i]
corresponds to vehiclecosts_per_vehicle_indices[i]
of the model. - the same number of elements as there are vehicles in the model. The i-th element corresponds to vehicle #i of the model.
These costs must be in the same unit as
penalty_cost
and must not be negative. Leave this field empty, if there are no such costs. - the same number of elements as
#costs_per_vehicle=
def costs_per_vehicle=(value) -> ::Array<::Float>
-
value (::Array<::Float>) — Specifies the cost that is incurred when this shipment is delivered by each
vehicle. If specified, it must have EITHER:
- the same number of elements as
costs_per_vehicle_indices
.costs_per_vehicle[i]
corresponds to vehiclecosts_per_vehicle_indices[i]
of the model. - the same number of elements as there are vehicles in the model. The i-th element corresponds to vehicle #i of the model.
These costs must be in the same unit as
penalty_cost
and must not be negative. Leave this field empty, if there are no such costs. - the same number of elements as
-
(::Array<::Float>) — Specifies the cost that is incurred when this shipment is delivered by each
vehicle. If specified, it must have EITHER:
- the same number of elements as
costs_per_vehicle_indices
.costs_per_vehicle[i]
corresponds to vehiclecosts_per_vehicle_indices[i]
of the model. - the same number of elements as there are vehicles in the model. The i-th element corresponds to vehicle #i of the model.
These costs must be in the same unit as
penalty_cost
and must not be negative. Leave this field empty, if there are no such costs. - the same number of elements as
#costs_per_vehicle_indices
def costs_per_vehicle_indices() -> ::Array<::Integer>
-
(::Array<::Integer>) — Indices of the vehicles to which
costs_per_vehicle
applies. If non-empty, it must have the same number of elements ascosts_per_vehicle
. A vehicle index may not be specified more than once. If a vehicle is excluded fromcosts_per_vehicle_indices
, its cost is zero.
#costs_per_vehicle_indices=
def costs_per_vehicle_indices=(value) -> ::Array<::Integer>
-
value (::Array<::Integer>) — Indices of the vehicles to which
costs_per_vehicle
applies. If non-empty, it must have the same number of elements ascosts_per_vehicle
. A vehicle index may not be specified more than once. If a vehicle is excluded fromcosts_per_vehicle_indices
, its cost is zero.
-
(::Array<::Integer>) — Indices of the vehicles to which
costs_per_vehicle
applies. If non-empty, it must have the same number of elements ascosts_per_vehicle
. A vehicle index may not be specified more than once. If a vehicle is excluded fromcosts_per_vehicle_indices
, its cost is zero.
#deliveries
def deliveries() -> ::Array<::Google::Cloud::Optimization::V1::Shipment::VisitRequest>
- (::Array<::Google::Cloud::Optimization::V1::Shipment::VisitRequest>) — Set of delivery alternatives associated to the shipment. If not specified, the vehicle only needs to visit a location corresponding to the pickups.
#deliveries=
def deliveries=(value) -> ::Array<::Google::Cloud::Optimization::V1::Shipment::VisitRequest>
- value (::Array<::Google::Cloud::Optimization::V1::Shipment::VisitRequest>) — Set of delivery alternatives associated to the shipment. If not specified, the vehicle only needs to visit a location corresponding to the pickups.
- (::Array<::Google::Cloud::Optimization::V1::Shipment::VisitRequest>) — Set of delivery alternatives associated to the shipment. If not specified, the vehicle only needs to visit a location corresponding to the pickups.
#demands
def demands() -> ::Array<::Google::Cloud::Optimization::V1::CapacityQuantity>
- (::Array<::Google::Cloud::Optimization::V1::CapacityQuantity>) — Deprecated: Use Shipment.load_demands instead.
#demands=
def demands=(value) -> ::Array<::Google::Cloud::Optimization::V1::CapacityQuantity>
- value (::Array<::Google::Cloud::Optimization::V1::CapacityQuantity>) — Deprecated: Use Shipment.load_demands instead.
- (::Array<::Google::Cloud::Optimization::V1::CapacityQuantity>) — Deprecated: Use Shipment.load_demands instead.
#ignore
def ignore() -> ::Boolean
-
(::Boolean) — If true, skip this shipment, but don't apply a
penalty_cost
.Ignoring a shipment results in a validation error when there are any
shipment_type_requirements
in the model.Ignoring a shipment that is performed in
injected_first_solution_routes
orinjected_solution_constraint
is permitted; the solver removes the related pickup/delivery visits from the performing route.precedence_rules
that reference ignored shipments will also be ignored.
#ignore=
def ignore=(value) -> ::Boolean
-
value (::Boolean) — If true, skip this shipment, but don't apply a
penalty_cost
.Ignoring a shipment results in a validation error when there are any
shipment_type_requirements
in the model.Ignoring a shipment that is performed in
injected_first_solution_routes
orinjected_solution_constraint
is permitted; the solver removes the related pickup/delivery visits from the performing route.precedence_rules
that reference ignored shipments will also be ignored.
-
(::Boolean) — If true, skip this shipment, but don't apply a
penalty_cost
.Ignoring a shipment results in a validation error when there are any
shipment_type_requirements
in the model.Ignoring a shipment that is performed in
injected_first_solution_routes
orinjected_solution_constraint
is permitted; the solver removes the related pickup/delivery visits from the performing route.precedence_rules
that reference ignored shipments will also be ignored.
#label
def label() -> ::String
-
(::String) — Specifies a label for this shipment. This label is reported in the response
in the
shipment_label
of the corresponding ShipmentRoute.Visit.
#label=
def label=(value) -> ::String
-
value (::String) — Specifies a label for this shipment. This label is reported in the response
in the
shipment_label
of the corresponding ShipmentRoute.Visit.
-
(::String) — Specifies a label for this shipment. This label is reported in the response
in the
shipment_label
of the corresponding ShipmentRoute.Visit.
#load_demands
def load_demands() -> ::Google::Protobuf::Map{::String => ::Google::Cloud::Optimization::V1::Shipment::Load}
- (::Google::Protobuf::Map{::String => ::Google::Cloud::Optimization::V1::Shipment::Load}) — Load demands of the shipment (for example weight, volume, number of pallets etc). The keys in the map should be identifiers describing the type of the corresponding load, ideally also including the units. For example: "weight_kg", "volume_gallons", "pallet_count", etc. If a given key does not appear in the map, the corresponding load is considered as null.
#load_demands=
def load_demands=(value) -> ::Google::Protobuf::Map{::String => ::Google::Cloud::Optimization::V1::Shipment::Load}
- value (::Google::Protobuf::Map{::String => ::Google::Cloud::Optimization::V1::Shipment::Load}) — Load demands of the shipment (for example weight, volume, number of pallets etc). The keys in the map should be identifiers describing the type of the corresponding load, ideally also including the units. For example: "weight_kg", "volume_gallons", "pallet_count", etc. If a given key does not appear in the map, the corresponding load is considered as null.
- (::Google::Protobuf::Map{::String => ::Google::Cloud::Optimization::V1::Shipment::Load}) — Load demands of the shipment (for example weight, volume, number of pallets etc). The keys in the map should be identifiers describing the type of the corresponding load, ideally also including the units. For example: "weight_kg", "volume_gallons", "pallet_count", etc. If a given key does not appear in the map, the corresponding load is considered as null.
#penalty_cost
def penalty_cost() -> ::Float
-
(::Float) — If the shipment is not completed, this penalty is added to the overall
cost of the routes. A shipment is considered completed if one of its pickup
and delivery alternatives is visited. The cost may be expressed in the
same unit used for all other cost-related fields in the model and must be
positive.
IMPORTANT: If this penalty is not specified, it is considered infinite, i.e. the shipment must be completed.
#penalty_cost=
def penalty_cost=(value) -> ::Float
-
value (::Float) — If the shipment is not completed, this penalty is added to the overall
cost of the routes. A shipment is considered completed if one of its pickup
and delivery alternatives is visited. The cost may be expressed in the
same unit used for all other cost-related fields in the model and must be
positive.
IMPORTANT: If this penalty is not specified, it is considered infinite, i.e. the shipment must be completed.
-
(::Float) — If the shipment is not completed, this penalty is added to the overall
cost of the routes. A shipment is considered completed if one of its pickup
and delivery alternatives is visited. The cost may be expressed in the
same unit used for all other cost-related fields in the model and must be
positive.
IMPORTANT: If this penalty is not specified, it is considered infinite, i.e. the shipment must be completed.
#pickup_to_delivery_absolute_detour_limit
def pickup_to_delivery_absolute_detour_limit() -> ::Google::Protobuf::Duration
-
(::Google::Protobuf::Duration) — Specifies the maximum absolute detour time compared to the shortest path
from pickup to delivery. If specified, it must be nonnegative, and the
shipment must contain at least a pickup and a delivery.
For example, let t be the shortest time taken to go from the selected pickup alternative directly to the selected delivery alternative. Then setting
pickup_to_delivery_absolute_detour_limit
enforces:start_time(delivery) - start_time(pickup) <= t + pickup_to_delivery_absolute_detour_limit
If both relative and absolute limits are specified on the same shipment, the more constraining limit is used for each possible pickup/delivery pair. As of 2017/10, detours are only supported when travel durations do not depend on vehicles.
#pickup_to_delivery_absolute_detour_limit=
def pickup_to_delivery_absolute_detour_limit=(value) -> ::Google::Protobuf::Duration
-
value (::Google::Protobuf::Duration) — Specifies the maximum absolute detour time compared to the shortest path
from pickup to delivery. If specified, it must be nonnegative, and the
shipment must contain at least a pickup and a delivery.
For example, let t be the shortest time taken to go from the selected pickup alternative directly to the selected delivery alternative. Then setting
pickup_to_delivery_absolute_detour_limit
enforces:start_time(delivery) - start_time(pickup) <= t + pickup_to_delivery_absolute_detour_limit
If both relative and absolute limits are specified on the same shipment, the more constraining limit is used for each possible pickup/delivery pair. As of 2017/10, detours are only supported when travel durations do not depend on vehicles.
-
(::Google::Protobuf::Duration) — Specifies the maximum absolute detour time compared to the shortest path
from pickup to delivery. If specified, it must be nonnegative, and the
shipment must contain at least a pickup and a delivery.
For example, let t be the shortest time taken to go from the selected pickup alternative directly to the selected delivery alternative. Then setting
pickup_to_delivery_absolute_detour_limit
enforces:start_time(delivery) - start_time(pickup) <= t + pickup_to_delivery_absolute_detour_limit
If both relative and absolute limits are specified on the same shipment, the more constraining limit is used for each possible pickup/delivery pair. As of 2017/10, detours are only supported when travel durations do not depend on vehicles.
#pickup_to_delivery_relative_detour_limit
def pickup_to_delivery_relative_detour_limit() -> ::Float
-
(::Float) — Specifies the maximum relative detour time compared to the shortest path
from pickup to delivery. If specified, it must be nonnegative, and the
shipment must contain at least a pickup and a delivery.
For example, let t be the shortest time taken to go from the selected pickup alternative directly to the selected delivery alternative. Then setting
pickup_to_delivery_relative_detour_limit
enforces:start_time(delivery) - start_time(pickup) <= std::ceil(t * (1.0 + pickup_to_delivery_relative_detour_limit))
If both relative and absolute limits are specified on the same shipment, the more constraining limit is used for each possible pickup/delivery pair. As of 2017/10, detours are only supported when travel durations do not depend on vehicles.
#pickup_to_delivery_relative_detour_limit=
def pickup_to_delivery_relative_detour_limit=(value) -> ::Float
-
value (::Float) — Specifies the maximum relative detour time compared to the shortest path
from pickup to delivery. If specified, it must be nonnegative, and the
shipment must contain at least a pickup and a delivery.
For example, let t be the shortest time taken to go from the selected pickup alternative directly to the selected delivery alternative. Then setting
pickup_to_delivery_relative_detour_limit
enforces:start_time(delivery) - start_time(pickup) <= std::ceil(t * (1.0 + pickup_to_delivery_relative_detour_limit))
If both relative and absolute limits are specified on the same shipment, the more constraining limit is used for each possible pickup/delivery pair. As of 2017/10, detours are only supported when travel durations do not depend on vehicles.
-
(::Float) — Specifies the maximum relative detour time compared to the shortest path
from pickup to delivery. If specified, it must be nonnegative, and the
shipment must contain at least a pickup and a delivery.
For example, let t be the shortest time taken to go from the selected pickup alternative directly to the selected delivery alternative. Then setting
pickup_to_delivery_relative_detour_limit
enforces:start_time(delivery) - start_time(pickup) <= std::ceil(t * (1.0 + pickup_to_delivery_relative_detour_limit))
If both relative and absolute limits are specified on the same shipment, the more constraining limit is used for each possible pickup/delivery pair. As of 2017/10, detours are only supported when travel durations do not depend on vehicles.
#pickup_to_delivery_time_limit
def pickup_to_delivery_time_limit() -> ::Google::Protobuf::Duration
- (::Google::Protobuf::Duration) — Specifies the maximum duration from start of pickup to start of delivery of a shipment. If specified, it must be nonnegative, and the shipment must contain at least a pickup and a delivery. This does not depend on which alternatives are selected for pickup and delivery, nor on vehicle speed. This can be specified alongside maximum detour constraints: the solution will respect both specifications.
#pickup_to_delivery_time_limit=
def pickup_to_delivery_time_limit=(value) -> ::Google::Protobuf::Duration
- value (::Google::Protobuf::Duration) — Specifies the maximum duration from start of pickup to start of delivery of a shipment. If specified, it must be nonnegative, and the shipment must contain at least a pickup and a delivery. This does not depend on which alternatives are selected for pickup and delivery, nor on vehicle speed. This can be specified alongside maximum detour constraints: the solution will respect both specifications.
- (::Google::Protobuf::Duration) — Specifies the maximum duration from start of pickup to start of delivery of a shipment. If specified, it must be nonnegative, and the shipment must contain at least a pickup and a delivery. This does not depend on which alternatives are selected for pickup and delivery, nor on vehicle speed. This can be specified alongside maximum detour constraints: the solution will respect both specifications.
#pickups
def pickups() -> ::Array<::Google::Cloud::Optimization::V1::Shipment::VisitRequest>
- (::Array<::Google::Cloud::Optimization::V1::Shipment::VisitRequest>) — Set of pickup alternatives associated to the shipment. If not specified, the vehicle only needs to visit a location corresponding to the deliveries.
#pickups=
def pickups=(value) -> ::Array<::Google::Cloud::Optimization::V1::Shipment::VisitRequest>
- value (::Array<::Google::Cloud::Optimization::V1::Shipment::VisitRequest>) — Set of pickup alternatives associated to the shipment. If not specified, the vehicle only needs to visit a location corresponding to the deliveries.
- (::Array<::Google::Cloud::Optimization::V1::Shipment::VisitRequest>) — Set of pickup alternatives associated to the shipment. If not specified, the vehicle only needs to visit a location corresponding to the deliveries.
#shipment_type
def shipment_type() -> ::String
-
(::String) — Non-empty string specifying a "type" for this shipment.
This feature can be used to define incompatibilities or requirements
between
shipment_types
(seeshipment_type_incompatibilities
andshipment_type_requirements
inShipmentModel
).Differs from
visit_types
which is specified for a single visit: All pickup/deliveries belonging to the same shipment share the sameshipment_type
.
#shipment_type=
def shipment_type=(value) -> ::String
-
value (::String) — Non-empty string specifying a "type" for this shipment.
This feature can be used to define incompatibilities or requirements
between
shipment_types
(seeshipment_type_incompatibilities
andshipment_type_requirements
inShipmentModel
).Differs from
visit_types
which is specified for a single visit: All pickup/deliveries belonging to the same shipment share the sameshipment_type
.
-
(::String) — Non-empty string specifying a "type" for this shipment.
This feature can be used to define incompatibilities or requirements
between
shipment_types
(seeshipment_type_incompatibilities
andshipment_type_requirements
inShipmentModel
).Differs from
visit_types
which is specified for a single visit: All pickup/deliveries belonging to the same shipment share the sameshipment_type
.