Reference documentation and code samples for the Cloud Optimization V1 API class Google::Cloud::Optimization::V1::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
Inherits
- Object
Extended By
- Google::Protobuf::MessageExts::ClassMethods
Includes
- Google::Protobuf::MessageExts
Methods
#break_rules
def break_rules() -> ::Array<::Google::Cloud::Optimization::V1::ShipmentModel::BreakRule>
-
(::Array<::Google::Cloud::Optimization::V1::ShipmentModel::BreakRule>) — 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).
#break_rules=
def break_rules=(value) -> ::Array<::Google::Cloud::Optimization::V1::ShipmentModel::BreakRule>
-
value (::Array<::Google::Cloud::Optimization::V1::ShipmentModel::BreakRule>) — 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).
-
(::Array<::Google::Cloud::Optimization::V1::ShipmentModel::BreakRule>) — 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).
#duration_distance_matrices
def duration_distance_matrices() -> ::Array<::Google::Cloud::Optimization::V1::ShipmentModel::DurationDistanceMatrix>
-
(::Array<::Google::Cloud::Optimization::V1::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
use_geodesic_distances
field. If it is not empty,use_geodesic_distances
cannot be true and neitherduration_distance_matrix_src_tags
norduration_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.
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.
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 } } }
#duration_distance_matrices=
def duration_distance_matrices=(value) -> ::Array<::Google::Cloud::Optimization::V1::ShipmentModel::DurationDistanceMatrix>
-
value (::Array<::Google::Cloud::Optimization::V1::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
use_geodesic_distances
field. If it is not empty,use_geodesic_distances
cannot be true and neitherduration_distance_matrix_src_tags
norduration_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.
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.
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 } } }
-
(::Array<::Google::Cloud::Optimization::V1::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
use_geodesic_distances
field. If it is not empty,use_geodesic_distances
cannot be true and neitherduration_distance_matrix_src_tags
norduration_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.
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.
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 } } }
#duration_distance_matrix_dst_tags
def duration_distance_matrix_dst_tags() -> ::Array<::String>
-
(::Array<::String>) — 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 tagduration_distance_matrix_src_tags(j)
to visits with tagduration_distance_matrix_dst_tags(k)
in matrix i.Tags correspond to VisitRequest.tags or Vehicle.start_tags. A given
VisitRequest
orVehicle
must match exactly one tag in this field. Note that aVehicle
's source, destination and matrix tags may be the same; similarly aVisitRequest
'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, thenduration_distance_matrices
must not be empty.
#duration_distance_matrix_dst_tags=
def duration_distance_matrix_dst_tags=(value) -> ::Array<::String>
-
value (::Array<::String>) — 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 tagduration_distance_matrix_src_tags(j)
to visits with tagduration_distance_matrix_dst_tags(k)
in matrix i.Tags correspond to VisitRequest.tags or Vehicle.start_tags. A given
VisitRequest
orVehicle
must match exactly one tag in this field. Note that aVehicle
's source, destination and matrix tags may be the same; similarly aVisitRequest
'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, thenduration_distance_matrices
must not be empty.
-
(::Array<::String>) — 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 tagduration_distance_matrix_src_tags(j)
to visits with tagduration_distance_matrix_dst_tags(k)
in matrix i.Tags correspond to VisitRequest.tags or Vehicle.start_tags. A given
VisitRequest
orVehicle
must match exactly one tag in this field. Note that aVehicle
's source, destination and matrix tags may be the same; similarly aVisitRequest
'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, thenduration_distance_matrices
must not be empty.
#duration_distance_matrix_src_tags
def duration_distance_matrix_src_tags() -> ::Array<::String>
-
(::Array<::String>) — Tags defining the sources of the duration and distance matrices;
duration_distance_matrices(i).rows(j)
defines durations and distances from visits with tagduration_distance_matrix_src_tags(j)
to other visits in matrix i.Tags correspond to VisitRequest.tags or Vehicle.start_tags. A given
VisitRequest
orVehicle
must match exactly one tag in this field. Note that aVehicle
's source, destination and matrix tags may be the same; similarly aVisitRequest
'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, thenduration_distance_matrices
must not be empty.
#duration_distance_matrix_src_tags=
def duration_distance_matrix_src_tags=(value) -> ::Array<::String>
-
value (::Array<::String>) — Tags defining the sources of the duration and distance matrices;
duration_distance_matrices(i).rows(j)
defines durations and distances from visits with tagduration_distance_matrix_src_tags(j)
to other visits in matrix i.Tags correspond to VisitRequest.tags or Vehicle.start_tags. A given
VisitRequest
orVehicle
must match exactly one tag in this field. Note that aVehicle
's source, destination and matrix tags may be the same; similarly aVisitRequest
'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, thenduration_distance_matrices
must not be empty.
-
(::Array<::String>) — Tags defining the sources of the duration and distance matrices;
duration_distance_matrices(i).rows(j)
defines durations and distances from visits with tagduration_distance_matrix_src_tags(j)
to other visits in matrix i.Tags correspond to VisitRequest.tags or Vehicle.start_tags. A given
VisitRequest
orVehicle
must match exactly one tag in this field. Note that aVehicle
's source, destination and matrix tags may be the same; similarly aVisitRequest
'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, thenduration_distance_matrices
must not be empty.
#global_duration_cost_per_hour
def global_duration_cost_per_hour() -> ::Float
- (::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.
#global_duration_cost_per_hour=
def global_duration_cost_per_hour=(value) -> ::Float
- value (::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.
- (::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.
#global_end_time
def global_end_time() -> ::Google::Protobuf::Timestamp
- (::Google::Protobuf::Timestamp) — If unset, 00:00:00 UTC, January 1, 1971 (i.e. seconds: 31536000, nanos: 0) is used as default.
#global_end_time=
def global_end_time=(value) -> ::Google::Protobuf::Timestamp
- value (::Google::Protobuf::Timestamp) — If unset, 00:00:00 UTC, January 1, 1971 (i.e. seconds: 31536000, nanos: 0) is used as default.
- (::Google::Protobuf::Timestamp) — If unset, 00:00:00 UTC, January 1, 1971 (i.e. seconds: 31536000, nanos: 0) is used as default.
#global_start_time
def global_start_time() -> ::Google::Protobuf::Timestamp
-
(::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
and theglobal_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.
#global_start_time=
def global_start_time=(value) -> ::Google::Protobuf::Timestamp
-
value (::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
and theglobal_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.
-
(::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
and theglobal_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.
#max_active_vehicles
def max_active_vehicles() -> ::Integer
- (::Integer) — 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.
#max_active_vehicles=
def max_active_vehicles=(value) -> ::Integer
- value (::Integer) — 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.
- (::Integer) — 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.
#precedence_rules
def precedence_rules() -> ::Array<::Google::Cloud::Optimization::V1::ShipmentModel::PrecedenceRule>
- (::Array<::Google::Cloud::Optimization::V1::ShipmentModel::PrecedenceRule>) — Set of precedence rules which must be enforced in the model.
#precedence_rules=
def precedence_rules=(value) -> ::Array<::Google::Cloud::Optimization::V1::ShipmentModel::PrecedenceRule>
- value (::Array<::Google::Cloud::Optimization::V1::ShipmentModel::PrecedenceRule>) — Set of precedence rules which must be enforced in the model.
- (::Array<::Google::Cloud::Optimization::V1::ShipmentModel::PrecedenceRule>) — Set of precedence rules which must be enforced in the model.
#shipment_type_incompatibilities
def shipment_type_incompatibilities() -> ::Array<::Google::Cloud::Optimization::V1::ShipmentTypeIncompatibility>
-
(::Array<::Google::Cloud::Optimization::V1::ShipmentTypeIncompatibility>) — Sets of incompatible shipment_types (see
ShipmentTypeIncompatibility
).
#shipment_type_incompatibilities=
def shipment_type_incompatibilities=(value) -> ::Array<::Google::Cloud::Optimization::V1::ShipmentTypeIncompatibility>
-
value (::Array<::Google::Cloud::Optimization::V1::ShipmentTypeIncompatibility>) — Sets of incompatible shipment_types (see
ShipmentTypeIncompatibility
).
-
(::Array<::Google::Cloud::Optimization::V1::ShipmentTypeIncompatibility>) — Sets of incompatible shipment_types (see
ShipmentTypeIncompatibility
).
#shipment_type_requirements
def shipment_type_requirements() -> ::Array<::Google::Cloud::Optimization::V1::ShipmentTypeRequirement>
-
(::Array<::Google::Cloud::Optimization::V1::ShipmentTypeRequirement>) — Sets of
shipment_type
requirements (seeShipmentTypeRequirement
).
#shipment_type_requirements=
def shipment_type_requirements=(value) -> ::Array<::Google::Cloud::Optimization::V1::ShipmentTypeRequirement>
-
value (::Array<::Google::Cloud::Optimization::V1::ShipmentTypeRequirement>) — Sets of
shipment_type
requirements (seeShipmentTypeRequirement
).
-
(::Array<::Google::Cloud::Optimization::V1::ShipmentTypeRequirement>) — Sets of
shipment_type
requirements (seeShipmentTypeRequirement
).
#shipments
def shipments() -> ::Array<::Google::Cloud::Optimization::V1::Shipment>
- (::Array<::Google::Cloud::Optimization::V1::Shipment>) — Set of shipments which must be performed in the model.
#shipments=
def shipments=(value) -> ::Array<::Google::Cloud::Optimization::V1::Shipment>
- value (::Array<::Google::Cloud::Optimization::V1::Shipment>) — Set of shipments which must be performed in the model.
- (::Array<::Google::Cloud::Optimization::V1::Shipment>) — Set of shipments which must be performed in the model.
#transition_attributes
def transition_attributes() -> ::Array<::Google::Cloud::Optimization::V1::TransitionAttributes>
- (::Array<::Google::Cloud::Optimization::V1::TransitionAttributes>) — Transition attributes added to the model.
#transition_attributes=
def transition_attributes=(value) -> ::Array<::Google::Cloud::Optimization::V1::TransitionAttributes>
- value (::Array<::Google::Cloud::Optimization::V1::TransitionAttributes>) — Transition attributes added to the model.
- (::Array<::Google::Cloud::Optimization::V1::TransitionAttributes>) — Transition attributes added to the model.
#vehicles
def vehicles() -> ::Array<::Google::Cloud::Optimization::V1::Vehicle>
- (::Array<::Google::Cloud::Optimization::V1::Vehicle>) — Set of vehicles which can be used to perform visits.
#vehicles=
def vehicles=(value) -> ::Array<::Google::Cloud::Optimization::V1::Vehicle>
- value (::Array<::Google::Cloud::Optimization::V1::Vehicle>) — Set of vehicles which can be used to perform visits.
- (::Array<::Google::Cloud::Optimization::V1::Vehicle>) — Set of vehicles which can be used to perform visits.