Reference documentation and code samples for the Google Cloud Optimization V1 Client class ShipmentModel.
A shipment model contains a set of shipments which must be performed by a set of vehicles, while minimizing the overall cost, which is the sum of:
the cost of routing the vehicles (sum of cost per total time, cost per travel time, and fixed cost over all vehicles).
the unperformed shipment penalties.
- the cost of the global duration of the shipments
Generated from protobuf message google.cloud.optimization.v1.ShipmentModel
Namespace
Google \ Cloud \ Optimization \ V1Methods
__construct
Constructor.
Parameters | |
---|---|
Name | Description |
data |
array
Optional. Data for populating the Message object. |
↳ shipments |
array<Shipment>
Set of shipments which must be performed in the model. |
↳ vehicles |
array<Vehicle>
Set of vehicles which can be used to perform visits. |
↳ max_active_vehicles |
int
Constrains the maximum number of active vehicles. A vehicle is active if its route performs at least one shipment. This can be used to limit the number of routes in the case where there are fewer drivers than vehicles and that the fleet of vehicles is heterogeneous. The optimization will then select the best subset of vehicles to use. Must be strictly positive. |
↳ global_start_time |
Google\Protobuf\Timestamp
Global start and end time of the model: no times outside of this range can be considered valid. The model's time span must be less than a year, i.e. the |
↳ global_end_time |
Google\Protobuf\Timestamp
If unset, 00:00:00 UTC, January 1, 1971 (i.e. seconds: 31536000, nanos: 0) is used as default. |
↳ global_duration_cost_per_hour |
float
The "global duration" of the overall plan is the difference between the earliest effective start time and the latest effective end time of all vehicles. Users can assign a cost per hour to that quantity to try and optimize for earliest job completion, for example. This cost must be in the same unit as Shipment.penalty_cost. |
↳ duration_distance_matrices |
array<ShipmentModel\DurationDistanceMatrix>
Specifies duration and distance matrices used in the model. If this field is empty, Google Maps or geodesic distances will be used instead, depending on the value of the |
↳ duration_distance_matrix_src_tags |
array
Tags defining the sources of the duration and distance matrices; |
↳ duration_distance_matrix_dst_tags |
array
Tags defining the destinations of the duration and distance matrices; |
↳ transition_attributes |
array<TransitionAttributes>
Transition attributes added to the model. |
↳ shipment_type_incompatibilities |
array<ShipmentTypeIncompatibility>
Sets of incompatible shipment_types (see |
↳ shipment_type_requirements |
array<ShipmentTypeRequirement>
Sets of |
↳ precedence_rules |
array<ShipmentModel\PrecedenceRule>
Set of precedence rules which must be enforced in the model. |
↳ break_rules |
array<ShipmentModel\BreakRule>
Deprecated: No longer used. Set of break rules used in the model. Each vehicle specifies the |
getShipments
Set of shipments which must be performed in the model.
Returns | |
---|---|
Type | Description |
Google\Protobuf\Internal\RepeatedField |
setShipments
Set of shipments which must be performed in the model.
Parameter | |
---|---|
Name | Description |
var |
array<Shipment>
|
Returns | |
---|---|
Type | Description |
$this |
getVehicles
Set of vehicles which can be used to perform visits.
Returns | |
---|---|
Type | Description |
Google\Protobuf\Internal\RepeatedField |
setVehicles
Set of vehicles which can be used to perform visits.
Parameter | |
---|---|
Name | Description |
var |
array<Vehicle>
|
Returns | |
---|---|
Type | Description |
$this |
getMaxActiveVehicles
Constrains the maximum number of active vehicles. A vehicle is active if its route performs at least one shipment. This can be used to limit the number of routes in the case where there are fewer drivers than vehicles and that the fleet of vehicles is heterogeneous. The optimization will then select the best subset of vehicles to use.
Must be strictly positive.
Returns | |
---|---|
Type | Description |
int |
hasMaxActiveVehicles
clearMaxActiveVehicles
setMaxActiveVehicles
Constrains the maximum number of active vehicles. A vehicle is active if its route performs at least one shipment. This can be used to limit the number of routes in the case where there are fewer drivers than vehicles and that the fleet of vehicles is heterogeneous. The optimization will then select the best subset of vehicles to use.
Must be strictly positive.
Parameter | |
---|---|
Name | Description |
var |
int
|
Returns | |
---|---|
Type | Description |
$this |
getGlobalStartTime
Global start and end time of the model: no times outside of this range can be considered valid.
The model's time span must be less than a year, i.e. the global_end_time
and the global_start_time
must be within 31536000 seconds of each other.
When using cost_per_*hour
fields, you might want to set this window to a
smaller interval to increase performance (eg. if you model a single day,
you should set the global time limits to that day).
If unset, 00:00:00 UTC, January 1, 1970 (i.e. seconds: 0, nanos: 0) is used
as default.
Returns | |
---|---|
Type | Description |
Google\Protobuf\Timestamp|null |
hasGlobalStartTime
clearGlobalStartTime
setGlobalStartTime
Global start and end time of the model: no times outside of this range can be considered valid.
The model's time span must be less than a year, i.e. the global_end_time
and the global_start_time
must be within 31536000 seconds of each other.
When using cost_per_*hour
fields, you might want to set this window to a
smaller interval to increase performance (eg. if you model a single day,
you should set the global time limits to that day).
If unset, 00:00:00 UTC, January 1, 1970 (i.e. seconds: 0, nanos: 0) is used
as default.
Parameter | |
---|---|
Name | Description |
var |
Google\Protobuf\Timestamp
|
Returns | |
---|---|
Type | Description |
$this |
getGlobalEndTime
If unset, 00:00:00 UTC, January 1, 1971 (i.e. seconds: 31536000, nanos: 0) is used as default.
Returns | |
---|---|
Type | Description |
Google\Protobuf\Timestamp|null |
hasGlobalEndTime
clearGlobalEndTime
setGlobalEndTime
If unset, 00:00:00 UTC, January 1, 1971 (i.e. seconds: 31536000, nanos: 0) is used as default.
Parameter | |
---|---|
Name | Description |
var |
Google\Protobuf\Timestamp
|
Returns | |
---|---|
Type | Description |
$this |
getGlobalDurationCostPerHour
The "global duration" of the overall plan is the difference between the earliest effective start time and the latest effective end time of all vehicles. Users can assign a cost per hour to that quantity to try and optimize for earliest job completion, for example. This cost must be in the same unit as Shipment.penalty_cost.
Returns | |
---|---|
Type | Description |
float |
setGlobalDurationCostPerHour
The "global duration" of the overall plan is the difference between the earliest effective start time and the latest effective end time of all vehicles. Users can assign a cost per hour to that quantity to try and optimize for earliest job completion, for example. This cost must be in the same unit as Shipment.penalty_cost.
Parameter | |
---|---|
Name | Description |
var |
float
|
Returns | |
---|---|
Type | Description |
$this |
getDurationDistanceMatrices
Specifies duration and distance matrices used in the model. If this field
is empty, Google Maps or geodesic distances will be used instead, depending
on the value of the use_geodesic_distances
field. If it is not empty,
use_geodesic_distances
cannot be true and neither
duration_distance_matrix_src_tags
nor duration_distance_matrix_dst_tags
can be empty.
Usage examples:
- There are two locations: locA and locB.
- 1 vehicle starting its route at locA and ending it at locA.
- 1 pickup visit request at locB.
php model { vehicles { start_tags: "locA" end_tags: "locA" } shipments { pickups { tags: "locB" } } duration_distance_matrix_src_tags: "locA" duration_distance_matrix_src_tags: "locB" duration_distance_matrix_dst_tags: "locA" duration_distance_matrix_dst_tags: "locB" duration_distance_matrices { rows { # from: locA durations { seconds: 0 } meters: 0 # to: locA durations { seconds: 100 } meters: 1000 # to: locB } rows { # from: locB durations { seconds: 102 } meters: 990 # to: locA durations { seconds: 0 } meters: 0 # to: locB } } }
- There are three locations: locA, locB and locC.
- 1 vehicle starting its route at locA and ending it at locB, using matrix "fast".
- 1 vehicle starting its route at locB and ending it at locB, using matrix "slow".
- 1 vehicle starting its route at locB and ending it at locB, using matrix "fast".
- 1 pickup visit request at locC.
php model { vehicles { start_tags: "locA" end_tags: "locB" start_tags: "fast" } vehicles { start_tags: "locB" end_tags: "locB" start_tags: "slow" } vehicles { start_tags: "locB" end_tags: "locB" start_tags: "fast" } shipments { pickups { tags: "locC" } } duration_distance_matrix_src_tags: "locA" duration_distance_matrix_src_tags: "locB" duration_distance_matrix_src_tags: "locC" duration_distance_matrix_dst_tags: "locB" duration_distance_matrix_dst_tags: "locC" duration_distance_matrices { vehicle_start_tag: "fast" rows { # from: locA durations { seconds: 1000 } meters: 2000 # to: locB durations { seconds: 600 } meters: 1000 # to: locC } rows { # from: locB durations { seconds: 0 } meters: 0 # to: locB durations { seconds: 700 } meters: 1200 # to: locC } rows { # from: locC durations { seconds: 702 } meters: 1190 # to: locB durations { seconds: 0 } meters: 0 # to: locC } } duration_distance_matrices { vehicle_start_tag: "slow" rows { # from: locA durations { seconds: 1800 } meters: 2001 # to: locB durations { seconds: 900 } meters: 1002 # to: locC } rows { # from: locB durations { seconds: 0 } meters: 0 # to: locB durations { seconds: 1000 } meters: 1202 # to: locC } rows { # from: locC durations { seconds: 1001 } meters: 1195 # to: locB durations { seconds: 0 } meters: 0 # to: locC } } }
Returns | |
---|---|
Type | Description |
Google\Protobuf\Internal\RepeatedField |
setDurationDistanceMatrices
Specifies duration and distance matrices used in the model. If this field
is empty, Google Maps or geodesic distances will be used instead, depending
on the value of the use_geodesic_distances
field. If it is not empty,
use_geodesic_distances
cannot be true and neither
duration_distance_matrix_src_tags
nor duration_distance_matrix_dst_tags
can be empty.
Usage examples:
- There are two locations: locA and locB.
- 1 vehicle starting its route at locA and ending it at locA.
- 1 pickup visit request at locB.
php model { vehicles { start_tags: "locA" end_tags: "locA" } shipments { pickups { tags: "locB" } } duration_distance_matrix_src_tags: "locA" duration_distance_matrix_src_tags: "locB" duration_distance_matrix_dst_tags: "locA" duration_distance_matrix_dst_tags: "locB" duration_distance_matrices { rows { # from: locA durations { seconds: 0 } meters: 0 # to: locA durations { seconds: 100 } meters: 1000 # to: locB } rows { # from: locB durations { seconds: 102 } meters: 990 # to: locA durations { seconds: 0 } meters: 0 # to: locB } } }
- There are three locations: locA, locB and locC.
- 1 vehicle starting its route at locA and ending it at locB, using matrix "fast".
- 1 vehicle starting its route at locB and ending it at locB, using matrix "slow".
- 1 vehicle starting its route at locB and ending it at locB, using matrix "fast".
- 1 pickup visit request at locC.
php model { vehicles { start_tags: "locA" end_tags: "locB" start_tags: "fast" } vehicles { start_tags: "locB" end_tags: "locB" start_tags: "slow" } vehicles { start_tags: "locB" end_tags: "locB" start_tags: "fast" } shipments { pickups { tags: "locC" } } duration_distance_matrix_src_tags: "locA" duration_distance_matrix_src_tags: "locB" duration_distance_matrix_src_tags: "locC" duration_distance_matrix_dst_tags: "locB" duration_distance_matrix_dst_tags: "locC" duration_distance_matrices { vehicle_start_tag: "fast" rows { # from: locA durations { seconds: 1000 } meters: 2000 # to: locB durations { seconds: 600 } meters: 1000 # to: locC } rows { # from: locB durations { seconds: 0 } meters: 0 # to: locB durations { seconds: 700 } meters: 1200 # to: locC } rows { # from: locC durations { seconds: 702 } meters: 1190 # to: locB durations { seconds: 0 } meters: 0 # to: locC } } duration_distance_matrices { vehicle_start_tag: "slow" rows { # from: locA durations { seconds: 1800 } meters: 2001 # to: locB durations { seconds: 900 } meters: 1002 # to: locC } rows { # from: locB durations { seconds: 0 } meters: 0 # to: locB durations { seconds: 1000 } meters: 1202 # to: locC } rows { # from: locC durations { seconds: 1001 } meters: 1195 # to: locB durations { seconds: 0 } meters: 0 # to: locC } } }
Parameter | |
---|---|
Name | Description |
var |
array<ShipmentModel\DurationDistanceMatrix>
|
Returns | |
---|---|
Type | Description |
$this |
getDurationDistanceMatrixSrcTags
Tags defining the sources of the duration and distance matrices;
duration_distance_matrices(i).rows(j)
defines durations and distances
from visits with tag duration_distance_matrix_src_tags(j)
to other visits
in matrix i.
Tags correspond to
VisitRequest.tags
or Vehicle.start_tags.
A given VisitRequest
or Vehicle
must match exactly one tag in this
field. Note that a Vehicle
's source, destination and matrix tags may be
the same; similarly a VisitRequest
's source and destination tags may be
the same. All tags must be different and cannot be empty strings. If this
field is not empty, then duration_distance_matrices
must not be empty.
Returns | |
---|---|
Type | Description |
Google\Protobuf\Internal\RepeatedField |
setDurationDistanceMatrixSrcTags
Tags defining the sources of the duration and distance matrices;
duration_distance_matrices(i).rows(j)
defines durations and distances
from visits with tag duration_distance_matrix_src_tags(j)
to other visits
in matrix i.
Tags correspond to
VisitRequest.tags
or Vehicle.start_tags.
A given VisitRequest
or Vehicle
must match exactly one tag in this
field. Note that a Vehicle
's source, destination and matrix tags may be
the same; similarly a VisitRequest
's source and destination tags may be
the same. All tags must be different and cannot be empty strings. If this
field is not empty, then duration_distance_matrices
must not be empty.
Parameter | |
---|---|
Name | Description |
var |
string[]
|
Returns | |
---|---|
Type | Description |
$this |
getDurationDistanceMatrixDstTags
Tags defining the destinations of the duration and distance matrices;
duration_distance_matrices(i).rows(j).durations(k)
(resp.
duration_distance_matrices(i).rows(j).meters(k))
defines the duration
(resp. the distance) of the travel from visits with tag
duration_distance_matrix_src_tags(j)
to visits with tag
duration_distance_matrix_dst_tags(k)
in matrix i.
Tags correspond to
VisitRequest.tags
or Vehicle.start_tags.
A given VisitRequest
or Vehicle
must match exactly one tag in this
field. Note that a Vehicle
's source, destination and matrix tags may be
the same; similarly a VisitRequest
's source and destination tags may be
the same. All tags must be different and cannot be empty strings. If this
field is not empty, then duration_distance_matrices
must not be empty.
Returns | |
---|---|
Type | Description |
Google\Protobuf\Internal\RepeatedField |
setDurationDistanceMatrixDstTags
Tags defining the destinations of the duration and distance matrices;
duration_distance_matrices(i).rows(j).durations(k)
(resp.
duration_distance_matrices(i).rows(j).meters(k))
defines the duration
(resp. the distance) of the travel from visits with tag
duration_distance_matrix_src_tags(j)
to visits with tag
duration_distance_matrix_dst_tags(k)
in matrix i.
Tags correspond to
VisitRequest.tags
or Vehicle.start_tags.
A given VisitRequest
or Vehicle
must match exactly one tag in this
field. Note that a Vehicle
's source, destination and matrix tags may be
the same; similarly a VisitRequest
's source and destination tags may be
the same. All tags must be different and cannot be empty strings. If this
field is not empty, then duration_distance_matrices
must not be empty.
Parameter | |
---|---|
Name | Description |
var |
string[]
|
Returns | |
---|---|
Type | Description |
$this |
getTransitionAttributes
Transition attributes added to the model.
Returns | |
---|---|
Type | Description |
Google\Protobuf\Internal\RepeatedField |
setTransitionAttributes
Transition attributes added to the model.
Parameter | |
---|---|
Name | Description |
var |
array<TransitionAttributes>
|
Returns | |
---|---|
Type | Description |
$this |
getShipmentTypeIncompatibilities
Sets of incompatible shipment_types (see ShipmentTypeIncompatibility
).
Returns | |
---|---|
Type | Description |
Google\Protobuf\Internal\RepeatedField |
setShipmentTypeIncompatibilities
Sets of incompatible shipment_types (see ShipmentTypeIncompatibility
).
Parameter | |
---|---|
Name | Description |
var |
array<ShipmentTypeIncompatibility>
|
Returns | |
---|---|
Type | Description |
$this |
getShipmentTypeRequirements
Sets of shipment_type
requirements (see ShipmentTypeRequirement
).
Returns | |
---|---|
Type | Description |
Google\Protobuf\Internal\RepeatedField |
setShipmentTypeRequirements
Sets of shipment_type
requirements (see ShipmentTypeRequirement
).
Parameter | |
---|---|
Name | Description |
var |
array<ShipmentTypeRequirement>
|
Returns | |
---|---|
Type | Description |
$this |
getPrecedenceRules
Set of precedence rules which must be enforced in the model.
Returns | |
---|---|
Type | Description |
Google\Protobuf\Internal\RepeatedField |
setPrecedenceRules
Set of precedence rules which must be enforced in the model.
Parameter | |
---|---|
Name | Description |
var |
array<ShipmentModel\PrecedenceRule>
|
Returns | |
---|---|
Type | Description |
$this |
getBreakRules
Deprecated: No longer used.
Set of break rules used in the model.
Each vehicle specifies the BreakRule
that applies to it via the
Vehicle.break_rule_indices
field (which must be a singleton).
Returns | |
---|---|
Type | Description |
Google\Protobuf\Internal\RepeatedField |
setBreakRules
Deprecated: No longer used.
Set of break rules used in the model.
Each vehicle specifies the BreakRule
that applies to it via the
Vehicle.break_rule_indices
field (which must be a singleton).
Parameter | |
---|---|
Name | Description |
var |
array<ShipmentModel\BreakRule>
|
Returns | |
---|---|
Type | Description |
$this |