Class Shipment (1.0.0)

Shipment(mapping=None, *, ignore_unknown_fields=False, **kwargs)

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).

Attributes

NameDescription
pickups Sequence[google.cloud.optimization_v1.types.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.
deliveries Sequence[google.cloud.optimization_v1.types.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.
load_demands Mapping[str, google.cloud.optimization_v1.types.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 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. This field is a member of `oneof`_ ``_penalty_cost``.
allowed_vehicle_indices Sequence[int]
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``'s ``vehicles`` list.
costs_per_vehicle Sequence[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 vehicle ``costs_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.
costs_per_vehicle_indices Sequence[int]
Indices of the vehicles to which ``costs_per_vehicle`` applies. If non-empty, it must have the same number of elements as ``costs_per_vehicle``. A vehicle index may not be specified more than once. If a vehicle is excluded from ``costs_per_vehicle_indices``, its cost is zero.
pickup_to_delivery_relative_detour_limit 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.="" this="" field="" is="" a="" member="" of="" `oneof`_="" ``_pickup_to_delivery_relative_detour_limit``.="">
pickup_to_delivery_absolute_detour_limit google.protobuf.duration_pb2.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_time_limit google.protobuf.duration_pb2.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.
shipment_type str
Non-empty string specifying a "type" for this shipment. This feature can be used to define incompatibilities or requirements between ``shipment_types`` (see ``shipment_type_incompatibilities`` and ``shipment_type_requirements`` in ``ShipmentModel``). Differs from ``visit_types`` which is specified for a single visit: All pickup/deliveries belonging to the same shipment share the same ``shipment_type``.
label str
Specifies a label for this shipment. This label is reported in the response in the ``shipment_label`` of the corresponding ShipmentRoute.Visit.
ignore bool
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`` or ``injected_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.
demands Sequence[google.cloud.optimization_v1.types.CapacityQuantity]
Deprecated: Use [Shipment.load_demands][] instead.

Inheritance

builtins.object > proto.message.Message > Shipment

Classes

Load

Load(mapping=None, *, ignore_unknown_fields=False, **kwargs)

When performing a visit, a predefined amount may be added to the vehicle load if it's a pickup, or subtracted if it's a delivery. This message defines such amount. See load_demands.

LoadDemandsEntry

LoadDemandsEntry(mapping=None, *, ignore_unknown_fields=False, **kwargs)

The abstract base class for a message.

Parameters
NameDescription
kwargs dict

Keys and values corresponding to the fields of the message.

mapping Union[dict, `.Message`]

A dictionary or message to be used to determine the values for this message.

ignore_unknown_fields Optional(bool)

If True, do not raise errors for unknown fields. Only applied if mapping is a mapping type or there are keyword parameters.

VisitRequest

VisitRequest(mapping=None, *, ignore_unknown_fields=False, **kwargs)

Request for a visit which can be done by a vehicle: it has a geo-location (or two, see below), opening and closing times represented by time windows, and a service duration time (time spent by the vehicle once it has arrived to pickup or drop off goods).