Variables
DataFormat_name, DataFormat_value
var (
DataFormat_name = map[int32]string{
0: "DATA_FORMAT_UNSPECIFIED",
1: "JSON",
2: "PROTO_TEXT",
}
DataFormat_value = map[string]int32{
"DATA_FORMAT_UNSPECIFIED": 0,
"JSON": 1,
"PROTO_TEXT": 2,
}
)
Enum value maps for DataFormat.
OptimizeToursRequest_SolvingMode_name, OptimizeToursRequest_SolvingMode_value
var (
OptimizeToursRequest_SolvingMode_name = map[int32]string{
0: "DEFAULT_SOLVE",
1: "VALIDATE_ONLY",
2: "DETECT_SOME_INFEASIBLE_SHIPMENTS",
}
OptimizeToursRequest_SolvingMode_value = map[string]int32{
"DEFAULT_SOLVE": 0,
"VALIDATE_ONLY": 1,
"DETECT_SOME_INFEASIBLE_SHIPMENTS": 2,
}
)
Enum value maps for OptimizeToursRequest_SolvingMode.
OptimizeToursRequest_SearchMode_name, OptimizeToursRequest_SearchMode_value
var (
OptimizeToursRequest_SearchMode_name = map[int32]string{
0: "SEARCH_MODE_UNSPECIFIED",
1: "RETURN_FAST",
2: "CONSUME_ALL_AVAILABLE_TIME",
}
OptimizeToursRequest_SearchMode_value = map[string]int32{
"SEARCH_MODE_UNSPECIFIED": 0,
"RETURN_FAST": 1,
"CONSUME_ALL_AVAILABLE_TIME": 2,
}
)
Enum value maps for OptimizeToursRequest_SearchMode.
ShipmentTypeIncompatibility_IncompatibilityMode_name, ShipmentTypeIncompatibility_IncompatibilityMode_value
var (
ShipmentTypeIncompatibility_IncompatibilityMode_name = map[int32]string{
0: "INCOMPATIBILITY_MODE_UNSPECIFIED",
1: "NOT_PERFORMED_BY_SAME_VEHICLE",
2: "NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY",
}
ShipmentTypeIncompatibility_IncompatibilityMode_value = map[string]int32{
"INCOMPATIBILITY_MODE_UNSPECIFIED": 0,
"NOT_PERFORMED_BY_SAME_VEHICLE": 1,
"NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY": 2,
}
)
Enum value maps for ShipmentTypeIncompatibility_IncompatibilityMode.
ShipmentTypeRequirement_RequirementMode_name, ShipmentTypeRequirement_RequirementMode_value
var (
ShipmentTypeRequirement_RequirementMode_name = map[int32]string{
0: "REQUIREMENT_MODE_UNSPECIFIED",
1: "PERFORMED_BY_SAME_VEHICLE",
2: "IN_SAME_VEHICLE_AT_PICKUP_TIME",
3: "IN_SAME_VEHICLE_AT_DELIVERY_TIME",
}
ShipmentTypeRequirement_RequirementMode_value = map[string]int32{
"REQUIREMENT_MODE_UNSPECIFIED": 0,
"PERFORMED_BY_SAME_VEHICLE": 1,
"IN_SAME_VEHICLE_AT_PICKUP_TIME": 2,
"IN_SAME_VEHICLE_AT_DELIVERY_TIME": 3,
}
)
Enum value maps for ShipmentTypeRequirement_RequirementMode.
Vehicle_TravelMode_name, Vehicle_TravelMode_value
var (
Vehicle_TravelMode_name = map[int32]string{
0: "TRAVEL_MODE_UNSPECIFIED",
1: "DRIVING",
2: "WALKING",
}
Vehicle_TravelMode_value = map[string]int32{
"TRAVEL_MODE_UNSPECIFIED": 0,
"DRIVING": 1,
"WALKING": 2,
}
)
Enum value maps for Vehicle_TravelMode.
Vehicle_UnloadingPolicy_name, Vehicle_UnloadingPolicy_value
var (
Vehicle_UnloadingPolicy_name = map[int32]string{
0: "UNLOADING_POLICY_UNSPECIFIED",
1: "LAST_IN_FIRST_OUT",
2: "FIRST_IN_FIRST_OUT",
}
Vehicle_UnloadingPolicy_value = map[string]int32{
"UNLOADING_POLICY_UNSPECIFIED": 0,
"LAST_IN_FIRST_OUT": 1,
"FIRST_IN_FIRST_OUT": 2,
}
)
Enum value maps for Vehicle_UnloadingPolicy.
SkippedShipment_Reason_Code_name, SkippedShipment_Reason_Code_value
var (
SkippedShipment_Reason_Code_name = map[int32]string{
0: "CODE_UNSPECIFIED",
1: "NO_VEHICLE",
2: "DEMAND_EXCEEDS_VEHICLE_CAPACITY",
3: "CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT",
4: "CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT",
5: "CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT",
6: "CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS",
7: "VEHICLE_NOT_ALLOWED",
}
SkippedShipment_Reason_Code_value = map[string]int32{
"CODE_UNSPECIFIED": 0,
"NO_VEHICLE": 1,
"DEMAND_EXCEEDS_VEHICLE_CAPACITY": 2,
"CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT": 3,
"CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT": 4,
"CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT": 5,
"CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS": 6,
"VEHICLE_NOT_ALLOWED": 7,
}
)
Enum value maps for SkippedShipment_Reason_Code.
InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level_name, InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level_value
var (
InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level_name = map[int32]string{
0: "LEVEL_UNSPECIFIED",
1: "RELAX_VISIT_TIMES_AFTER_THRESHOLD",
2: "RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD",
3: "RELAX_ALL_AFTER_THRESHOLD",
}
InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level_value = map[string]int32{
"LEVEL_UNSPECIFIED": 0,
"RELAX_VISIT_TIMES_AFTER_THRESHOLD": 1,
"RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD": 2,
"RELAX_ALL_AFTER_THRESHOLD": 3,
}
)
Enum value maps for InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level.
File_google_maps_routeoptimization_v1_route_optimization_service_proto
var File_google_maps_routeoptimization_v1_route_optimization_service_proto protoreflect.FileDescriptor
Functions
func RegisterRouteOptimizationServer
func RegisterRouteOptimizationServer(s *grpc.Server, srv RouteOptimizationServer)
AggregatedMetrics
type AggregatedMetrics struct {
PerformedShipmentCount int32 "" /* 130 byte string literal not displayed */
TravelDuration *durationpb.Duration `protobuf:"bytes,2,opt,name=travel_duration,json=travelDuration,proto3" json:"travel_duration,omitempty"`
WaitDuration *durationpb.Duration `protobuf:"bytes,3,opt,name=wait_duration,json=waitDuration,proto3" json:"wait_duration,omitempty"`
DelayDuration *durationpb.Duration `protobuf:"bytes,4,opt,name=delay_duration,json=delayDuration,proto3" json:"delay_duration,omitempty"`
BreakDuration *durationpb.Duration `protobuf:"bytes,5,opt,name=break_duration,json=breakDuration,proto3" json:"break_duration,omitempty"`
VisitDuration *durationpb.Duration `protobuf:"bytes,6,opt,name=visit_duration,json=visitDuration,proto3" json:"visit_duration,omitempty"`
TotalDuration *durationpb.Duration `protobuf:"bytes,7,opt,name=total_duration,json=totalDuration,proto3" json:"total_duration,omitempty"`
TravelDistanceMeters float64 `protobuf:"fixed64,8,opt,name=travel_distance_meters,json=travelDistanceMeters,proto3" json:"travel_distance_meters,omitempty"`
MaxLoads map[string]*ShipmentRoute_VehicleLoad "" /* 173 byte string literal not displayed */
}
Aggregated metrics for [ShipmentRoute][google.maps.routeoptimization.v1.ShipmentRoute] (resp. for [OptimizeToursResponse][google.maps.routeoptimization.v1.OptimizeToursResponse] over all [Transition][google.maps.routeoptimization.v1.ShipmentRoute.Transition] and/or [Visit][google.maps.routeoptimization.v1.ShipmentRoute.Visit] (resp. over all [ShipmentRoute][google.maps.routeoptimization.v1.ShipmentRoute]) elements.
func (*AggregatedMetrics) Descriptor
func (*AggregatedMetrics) Descriptor() ([]byte, []int)
Deprecated: Use AggregatedMetrics.ProtoReflect.Descriptor instead.
func (*AggregatedMetrics) GetBreakDuration
func (x *AggregatedMetrics) GetBreakDuration() *durationpb.Duration
func (*AggregatedMetrics) GetDelayDuration
func (x *AggregatedMetrics) GetDelayDuration() *durationpb.Duration
func (*AggregatedMetrics) GetMaxLoads
func (x *AggregatedMetrics) GetMaxLoads() map[string]*ShipmentRoute_VehicleLoad
func (*AggregatedMetrics) GetPerformedShipmentCount
func (x *AggregatedMetrics) GetPerformedShipmentCount() int32
func (*AggregatedMetrics) GetTotalDuration
func (x *AggregatedMetrics) GetTotalDuration() *durationpb.Duration
func (*AggregatedMetrics) GetTravelDistanceMeters
func (x *AggregatedMetrics) GetTravelDistanceMeters() float64
func (*AggregatedMetrics) GetTravelDuration
func (x *AggregatedMetrics) GetTravelDuration() *durationpb.Duration
func (*AggregatedMetrics) GetVisitDuration
func (x *AggregatedMetrics) GetVisitDuration() *durationpb.Duration
func (*AggregatedMetrics) GetWaitDuration
func (x *AggregatedMetrics) GetWaitDuration() *durationpb.Duration
func (*AggregatedMetrics) ProtoMessage
func (*AggregatedMetrics) ProtoMessage()
func (*AggregatedMetrics) ProtoReflect
func (x *AggregatedMetrics) ProtoReflect() protoreflect.Message
func (*AggregatedMetrics) Reset
func (x *AggregatedMetrics) Reset()
func (*AggregatedMetrics) String
func (x *AggregatedMetrics) String() string
BatchOptimizeToursMetadata
type BatchOptimizeToursMetadata struct {
// contains filtered or unexported fields
}
Operation metadata for BatchOptimizeToursRequest
calls.
func (*BatchOptimizeToursMetadata) Descriptor
func (*BatchOptimizeToursMetadata) Descriptor() ([]byte, []int)
Deprecated: Use BatchOptimizeToursMetadata.ProtoReflect.Descriptor instead.
func (*BatchOptimizeToursMetadata) ProtoMessage
func (*BatchOptimizeToursMetadata) ProtoMessage()
func (*BatchOptimizeToursMetadata) ProtoReflect
func (x *BatchOptimizeToursMetadata) ProtoReflect() protoreflect.Message
func (*BatchOptimizeToursMetadata) Reset
func (x *BatchOptimizeToursMetadata) Reset()
func (*BatchOptimizeToursMetadata) String
func (x *BatchOptimizeToursMetadata) String() string
BatchOptimizeToursRequest
type BatchOptimizeToursRequest struct {
// Required. Target project and location to make a call.
//
// Format:
// * `projects/{project-id}`
// * `projects/{project-id}/locations/{location-id}`
//
// If no location is specified, a region will be chosen automatically.
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. Input/Output information each purchase model, such as file paths
// and data formats.
ModelConfigs []*BatchOptimizeToursRequest_AsyncModelConfig `protobuf:"bytes,2,rep,name=model_configs,json=modelConfigs,proto3" json:"model_configs,omitempty"`
// contains filtered or unexported fields
}
Request to batch optimize tours as an asynchronous operation.
Each input file should contain one OptimizeToursRequest
, and each output
file will contain one OptimizeToursResponse
. The request contains
information to read/write and parse the files. All the input and output files
should be under the same project.
func (*BatchOptimizeToursRequest) Descriptor
func (*BatchOptimizeToursRequest) Descriptor() ([]byte, []int)
Deprecated: Use BatchOptimizeToursRequest.ProtoReflect.Descriptor instead.
func (*BatchOptimizeToursRequest) GetModelConfigs
func (x *BatchOptimizeToursRequest) GetModelConfigs() []*BatchOptimizeToursRequest_AsyncModelConfig
func (*BatchOptimizeToursRequest) GetParent
func (x *BatchOptimizeToursRequest) GetParent() string
func (*BatchOptimizeToursRequest) ProtoMessage
func (*BatchOptimizeToursRequest) ProtoMessage()
func (*BatchOptimizeToursRequest) ProtoReflect
func (x *BatchOptimizeToursRequest) ProtoReflect() protoreflect.Message
func (*BatchOptimizeToursRequest) Reset
func (x *BatchOptimizeToursRequest) Reset()
func (*BatchOptimizeToursRequest) String
func (x *BatchOptimizeToursRequest) String() string
BatchOptimizeToursRequest_AsyncModelConfig
type BatchOptimizeToursRequest_AsyncModelConfig struct {
// Optional. User defined model name, can be used as alias by users to keep
// track of models.
DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// Required. Information about the input model.
InputConfig *InputConfig `protobuf:"bytes,2,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"`
// Required. The desired output location information.
OutputConfig *OutputConfig `protobuf:"bytes,3,opt,name=output_config,json=outputConfig,proto3" json:"output_config,omitempty"`
// contains filtered or unexported fields
}
Information for solving one optimization model asynchronously.
func (*BatchOptimizeToursRequest_AsyncModelConfig) Descriptor
func (*BatchOptimizeToursRequest_AsyncModelConfig) Descriptor() ([]byte, []int)
Deprecated: Use BatchOptimizeToursRequest_AsyncModelConfig.ProtoReflect.Descriptor instead.
func (*BatchOptimizeToursRequest_AsyncModelConfig) GetDisplayName
func (x *BatchOptimizeToursRequest_AsyncModelConfig) GetDisplayName() string
func (*BatchOptimizeToursRequest_AsyncModelConfig) GetInputConfig
func (x *BatchOptimizeToursRequest_AsyncModelConfig) GetInputConfig() *InputConfig
func (*BatchOptimizeToursRequest_AsyncModelConfig) GetOutputConfig
func (x *BatchOptimizeToursRequest_AsyncModelConfig) GetOutputConfig() *OutputConfig
func (*BatchOptimizeToursRequest_AsyncModelConfig) ProtoMessage
func (*BatchOptimizeToursRequest_AsyncModelConfig) ProtoMessage()
func (*BatchOptimizeToursRequest_AsyncModelConfig) ProtoReflect
func (x *BatchOptimizeToursRequest_AsyncModelConfig) ProtoReflect() protoreflect.Message
func (*BatchOptimizeToursRequest_AsyncModelConfig) Reset
func (x *BatchOptimizeToursRequest_AsyncModelConfig) Reset()
func (*BatchOptimizeToursRequest_AsyncModelConfig) String
func (x *BatchOptimizeToursRequest_AsyncModelConfig) String() string
BatchOptimizeToursResponse
type BatchOptimizeToursResponse struct {
// contains filtered or unexported fields
}
Response to a BatchOptimizeToursRequest
. This is returned in
the Long Running Operation after the operation is complete.
func (*BatchOptimizeToursResponse) Descriptor
func (*BatchOptimizeToursResponse) Descriptor() ([]byte, []int)
Deprecated: Use BatchOptimizeToursResponse.ProtoReflect.Descriptor instead.
func (*BatchOptimizeToursResponse) ProtoMessage
func (*BatchOptimizeToursResponse) ProtoMessage()
func (*BatchOptimizeToursResponse) ProtoReflect
func (x *BatchOptimizeToursResponse) ProtoReflect() protoreflect.Message
func (*BatchOptimizeToursResponse) Reset
func (x *BatchOptimizeToursResponse) Reset()
func (*BatchOptimizeToursResponse) String
func (x *BatchOptimizeToursResponse) String() string
BreakRule
type BreakRule struct {
// Sequence of breaks. See the `BreakRequest` message.
BreakRequests []*BreakRule_BreakRequest `protobuf:"bytes,1,rep,name=break_requests,json=breakRequests,proto3" json:"break_requests,omitempty"`
// Several `FrequencyConstraint` may apply. They must all be satisfied by
// the `BreakRequest`s of this `BreakRule`. See `FrequencyConstraint`.
FrequencyConstraints []*BreakRule_FrequencyConstraint `protobuf:"bytes,2,rep,name=frequency_constraints,json=frequencyConstraints,proto3" json:"frequency_constraints,omitempty"`
// contains filtered or unexported fields
}
Rules to generate time breaks for a vehicle (e.g. lunch breaks). A break is a contiguous period of time during which the vehicle remains idle at its current position and cannot perform any visit. A break may occur:
- during the travel between two visits (which includes the time right before or right after a visit, but not in the middle of a visit), in which case it extends the corresponding transit time between the visits,
- or before the vehicle start (the vehicle may not start in the middle of a break), in which case it does not affect the vehicle start time.
- or after the vehicle end (ditto, with the vehicle end time).
func (*BreakRule) Descriptor
Deprecated: Use BreakRule.ProtoReflect.Descriptor instead.
func (*BreakRule) GetBreakRequests
func (x *BreakRule) GetBreakRequests() []*BreakRule_BreakRequest
func (*BreakRule) GetFrequencyConstraints
func (x *BreakRule) GetFrequencyConstraints() []*BreakRule_FrequencyConstraint
func (*BreakRule) ProtoMessage
func (*BreakRule) ProtoMessage()
func (*BreakRule) ProtoReflect
func (x *BreakRule) ProtoReflect() protoreflect.Message
func (*BreakRule) Reset
func (x *BreakRule) Reset()
func (*BreakRule) String
BreakRule_BreakRequest
type BreakRule_BreakRequest struct {
// Required. Lower bound (inclusive) on the start of the break.
EarliestStartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=earliest_start_time,json=earliestStartTime,proto3" json:"earliest_start_time,omitempty"`
// Required. Upper bound (inclusive) on the start of the break.
LatestStartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=latest_start_time,json=latestStartTime,proto3" json:"latest_start_time,omitempty"`
// Required. Minimum duration of the break. Must be positive.
MinDuration *durationpb.Duration `protobuf:"bytes,3,opt,name=min_duration,json=minDuration,proto3" json:"min_duration,omitempty"`
// contains filtered or unexported fields
}
The sequence of breaks (i.e. their number and order) that apply to each
vehicle must be known beforehand. The repeated BreakRequest
s define
that sequence, in the order in which they must occur. Their time windows
(earliest_start_time
/ latest_start_time
) may overlap, but they must
be compatible with the order (this is checked).
func (*BreakRule_BreakRequest) Descriptor
func (*BreakRule_BreakRequest) Descriptor() ([]byte, []int)
Deprecated: Use BreakRule_BreakRequest.ProtoReflect.Descriptor instead.
func (*BreakRule_BreakRequest) GetEarliestStartTime
func (x *BreakRule_BreakRequest) GetEarliestStartTime() *timestamppb.Timestamp
func (*BreakRule_BreakRequest) GetLatestStartTime
func (x *BreakRule_BreakRequest) GetLatestStartTime() *timestamppb.Timestamp
func (*BreakRule_BreakRequest) GetMinDuration
func (x *BreakRule_BreakRequest) GetMinDuration() *durationpb.Duration
func (*BreakRule_BreakRequest) ProtoMessage
func (*BreakRule_BreakRequest) ProtoMessage()
func (*BreakRule_BreakRequest) ProtoReflect
func (x *BreakRule_BreakRequest) ProtoReflect() protoreflect.Message
func (*BreakRule_BreakRequest) Reset
func (x *BreakRule_BreakRequest) Reset()
func (*BreakRule_BreakRequest) String
func (x *BreakRule_BreakRequest) String() string
BreakRule_FrequencyConstraint
type BreakRule_FrequencyConstraint struct {
MinBreakDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=min_break_duration,json=minBreakDuration,proto3" json:"min_break_duration,omitempty"`
MaxInterBreakDuration *durationpb.Duration "" /* 128 byte string literal not displayed */
}
One may further constrain the frequency and duration of the breaks
specified above, by enforcing a minimum break frequency, such as
"There must be a break of at least 1 hour every 12 hours". Assuming that
this can be interpreted as "Within any sliding time window of 12h, there
must be at least one break of at least one hour", that example would
translate to the following FrequencyConstraint
:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
The timing and duration of the breaks in the solution will respect all
such constraints, in addition to the time windows and minimum durations
already specified in the BreakRequest
.
A FrequencyConstraint
may in practice apply to non-consecutive breaks.
For example, the following schedule honors the "1h every 12h" example:
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
func (*BreakRule_FrequencyConstraint) Descriptor
func (*BreakRule_FrequencyConstraint) Descriptor() ([]byte, []int)
Deprecated: Use BreakRule_FrequencyConstraint.ProtoReflect.Descriptor instead.
func (*BreakRule_FrequencyConstraint) GetMaxInterBreakDuration
func (x *BreakRule_FrequencyConstraint) GetMaxInterBreakDuration() *durationpb.Duration
func (*BreakRule_FrequencyConstraint) GetMinBreakDuration
func (x *BreakRule_FrequencyConstraint) GetMinBreakDuration() *durationpb.Duration
func (*BreakRule_FrequencyConstraint) ProtoMessage
func (*BreakRule_FrequencyConstraint) ProtoMessage()
func (*BreakRule_FrequencyConstraint) ProtoReflect
func (x *BreakRule_FrequencyConstraint) ProtoReflect() protoreflect.Message
func (*BreakRule_FrequencyConstraint) Reset
func (x *BreakRule_FrequencyConstraint) Reset()
func (*BreakRule_FrequencyConstraint) String
func (x *BreakRule_FrequencyConstraint) String() string
DataFormat
type DataFormat int32
Data formats for input and output files.
DataFormat_DATA_FORMAT_UNSPECIFIED, DataFormat_JSON, DataFormat_PROTO_TEXT
const (
// Invalid value, format must not be UNSPECIFIED.
DataFormat_DATA_FORMAT_UNSPECIFIED DataFormat = 0
// JavaScript Object Notation.
DataFormat_JSON DataFormat = 1
// Protocol Buffers text format. See
// https://protobuf.dev/reference/protobuf/textformat-spec/
DataFormat_PROTO_TEXT DataFormat = 2
)
func (DataFormat) Descriptor
func (DataFormat) Descriptor() protoreflect.EnumDescriptor
func (DataFormat) Enum
func (x DataFormat) Enum() *DataFormat
func (DataFormat) EnumDescriptor
func (DataFormat) EnumDescriptor() ([]byte, []int)
Deprecated: Use DataFormat.Descriptor instead.
func (DataFormat) Number
func (x DataFormat) Number() protoreflect.EnumNumber
func (DataFormat) String
func (x DataFormat) String() string
func (DataFormat) Type
func (DataFormat) Type() protoreflect.EnumType
DistanceLimit
type DistanceLimit struct {
MaxMeters *int64 `protobuf:"varint,1,opt,name=max_meters,json=maxMeters,proto3,oneof" json:"max_meters,omitempty"`
SoftMaxMeters *int64 `protobuf:"varint,2,opt,name=soft_max_meters,json=softMaxMeters,proto3,oneof" json:"soft_max_meters,omitempty"`
CostPerKilometerBelowSoftMax *float64 "" /* 161 byte string literal not displayed */
CostPerKilometerAboveSoftMax *float64 "" /* 161 byte string literal not displayed */
}
A limit defining a maximum distance which can be traveled. It can be either hard or soft.
If a soft limit is defined, both soft_max_meters
and
cost_per_kilometer_above_soft_max
must be defined and be nonnegative.
func (*DistanceLimit) Descriptor
func (*DistanceLimit) Descriptor() ([]byte, []int)
Deprecated: Use DistanceLimit.ProtoReflect.Descriptor instead.
func (*DistanceLimit) GetCostPerKilometerAboveSoftMax
func (x *DistanceLimit) GetCostPerKilometerAboveSoftMax() float64
func (*DistanceLimit) GetCostPerKilometerBelowSoftMax
func (x *DistanceLimit) GetCostPerKilometerBelowSoftMax() float64
func (*DistanceLimit) GetMaxMeters
func (x *DistanceLimit) GetMaxMeters() int64
func (*DistanceLimit) GetSoftMaxMeters
func (x *DistanceLimit) GetSoftMaxMeters() int64
func (*DistanceLimit) ProtoMessage
func (*DistanceLimit) ProtoMessage()
func (*DistanceLimit) ProtoReflect
func (x *DistanceLimit) ProtoReflect() protoreflect.Message
func (*DistanceLimit) Reset
func (x *DistanceLimit) Reset()
func (*DistanceLimit) String
func (x *DistanceLimit) String() string
GcsDestination
type GcsDestination struct {
// Required. Google Cloud Storage URI.
Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
// contains filtered or unexported fields
}
The Google Cloud Storage location where the output file(s) will be written to.
func (*GcsDestination) Descriptor
func (*GcsDestination) Descriptor() ([]byte, []int)
Deprecated: Use GcsDestination.ProtoReflect.Descriptor instead.
func (*GcsDestination) GetUri
func (x *GcsDestination) GetUri() string
func (*GcsDestination) ProtoMessage
func (*GcsDestination) ProtoMessage()
func (*GcsDestination) ProtoReflect
func (x *GcsDestination) ProtoReflect() protoreflect.Message
func (*GcsDestination) Reset
func (x *GcsDestination) Reset()
func (*GcsDestination) String
func (x *GcsDestination) String() string
GcsSource
type GcsSource struct {
// Required. URI of a Google Cloud Storage object with the format
// `gs://bucket/path/to/object`.
Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
// contains filtered or unexported fields
}
The Google Cloud Storage location where the input file will be read from.
func (*GcsSource) Descriptor
Deprecated: Use GcsSource.ProtoReflect.Descriptor instead.
func (*GcsSource) GetUri
func (*GcsSource) ProtoMessage
func (*GcsSource) ProtoMessage()
func (*GcsSource) ProtoReflect
func (x *GcsSource) ProtoReflect() protoreflect.Message
func (*GcsSource) Reset
func (x *GcsSource) Reset()
func (*GcsSource) String
InjectedSolutionConstraint
type InjectedSolutionConstraint struct {
// Routes of the solution to inject. Some routes may be omitted from the
// original solution. The routes and skipped shipments must satisfy the basic
// validity assumptions listed for `injected_first_solution_routes`.
Routes []*ShipmentRoute `protobuf:"bytes,1,rep,name=routes,proto3" json:"routes,omitempty"`
// Skipped shipments of the solution to inject. Some may be omitted from the
// original solution. See the `routes` field.
SkippedShipments []*SkippedShipment `protobuf:"bytes,2,rep,name=skipped_shipments,json=skippedShipments,proto3" json:"skipped_shipments,omitempty"`
// For zero or more groups of vehicles, specifies when and how much to relax
// constraints. If this field is empty, all non-empty vehicle routes are
// fully constrained.
ConstraintRelaxations []*InjectedSolutionConstraint_ConstraintRelaxation `protobuf:"bytes,3,rep,name=constraint_relaxations,json=constraintRelaxations,proto3" json:"constraint_relaxations,omitempty"`
// contains filtered or unexported fields
}
Solution injected in the request including information about which visits must be constrained and how they must be constrained.
func (*InjectedSolutionConstraint) Descriptor
func (*InjectedSolutionConstraint) Descriptor() ([]byte, []int)
Deprecated: Use InjectedSolutionConstraint.ProtoReflect.Descriptor instead.
func (*InjectedSolutionConstraint) GetConstraintRelaxations
func (x *InjectedSolutionConstraint) GetConstraintRelaxations() []*InjectedSolutionConstraint_ConstraintRelaxation
func (*InjectedSolutionConstraint) GetRoutes
func (x *InjectedSolutionConstraint) GetRoutes() []*ShipmentRoute
func (*InjectedSolutionConstraint) GetSkippedShipments
func (x *InjectedSolutionConstraint) GetSkippedShipments() []*SkippedShipment
func (*InjectedSolutionConstraint) ProtoMessage
func (*InjectedSolutionConstraint) ProtoMessage()
func (*InjectedSolutionConstraint) ProtoReflect
func (x *InjectedSolutionConstraint) ProtoReflect() protoreflect.Message
func (*InjectedSolutionConstraint) Reset
func (x *InjectedSolutionConstraint) Reset()
func (*InjectedSolutionConstraint) String
func (x *InjectedSolutionConstraint) String() string
InjectedSolutionConstraint_ConstraintRelaxation
type InjectedSolutionConstraint_ConstraintRelaxation struct {
// All the visit constraint relaxations that will apply to visits on
// routes with vehicles in `vehicle_indices`.
Relaxations []*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation `protobuf:"bytes,1,rep,name=relaxations,proto3" json:"relaxations,omitempty"`
// Specifies the vehicle indices to which the visit constraint
// `relaxations` apply. If empty, this is considered the default and the
// `relaxations` apply to all vehicles that are not specified in other
// `constraint_relaxations`. There can be at most one default, i.e., at
// most one constraint relaxation field is allowed empty
// `vehicle_indices`. A vehicle index can only be listed once, even within
// several `constraint_relaxations`.
//
// A vehicle index is mapped the same as
// [ShipmentRoute.vehicle_index][google.maps.routeoptimization.v1.ShipmentRoute.vehicle_index],
// if `interpret_injected_solutions_using_labels` is true (see `fields`
// comment).
VehicleIndices []int32 `protobuf:"varint,2,rep,packed,name=vehicle_indices,json=vehicleIndices,proto3" json:"vehicle_indices,omitempty"`
// contains filtered or unexported fields
}
For a group of vehicles, specifies at what threshold(s) constraints on
visits will be relaxed and to which level. Shipments listed in
the skipped_shipment
field are constrained to be skipped; i.e., they
cannot be performed.
func (*InjectedSolutionConstraint_ConstraintRelaxation) Descriptor
func (*InjectedSolutionConstraint_ConstraintRelaxation) Descriptor() ([]byte, []int)
Deprecated: Use InjectedSolutionConstraint_ConstraintRelaxation.ProtoReflect.Descriptor instead.
func (*InjectedSolutionConstraint_ConstraintRelaxation) GetRelaxations
func (x *InjectedSolutionConstraint_ConstraintRelaxation) GetRelaxations() []*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation
func (*InjectedSolutionConstraint_ConstraintRelaxation) GetVehicleIndices
func (x *InjectedSolutionConstraint_ConstraintRelaxation) GetVehicleIndices() []int32
func (*InjectedSolutionConstraint_ConstraintRelaxation) ProtoMessage
func (*InjectedSolutionConstraint_ConstraintRelaxation) ProtoMessage()
func (*InjectedSolutionConstraint_ConstraintRelaxation) ProtoReflect
func (x *InjectedSolutionConstraint_ConstraintRelaxation) ProtoReflect() protoreflect.Message
func (*InjectedSolutionConstraint_ConstraintRelaxation) Reset
func (x *InjectedSolutionConstraint_ConstraintRelaxation) Reset()
func (*InjectedSolutionConstraint_ConstraintRelaxation) String
func (x *InjectedSolutionConstraint_ConstraintRelaxation) String() string
InjectedSolutionConstraint_ConstraintRelaxation_Relaxation
type InjectedSolutionConstraint_ConstraintRelaxation_Relaxation struct {
Level InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level "" /* 167 byte string literal not displayed */
ThresholdTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=threshold_time,json=thresholdTime,proto3" json:"threshold_time,omitempty"`
ThresholdVisitCount int32 `protobuf:"varint,3,opt,name=threshold_visit_count,json=thresholdVisitCount,proto3" json:"threshold_visit_count,omitempty"`
}
If relaxations
is empty, the start time and sequence of all visits
on routes
are fully constrained and no new visits may be inserted or
added to those routes. Also, a vehicle's start and end time in
routes
is fully constrained, unless the vehicle is empty (i.e., has no
visits and has used_if_route_is_empty
set to false in the model).
relaxations(i).level
specifies the constraint relaxation level applied
to a visit #j that satisfies:
route.visits(j).start_time >= relaxations(i).threshold_time
ANDj + 1 >= relaxations(i).threshold_visit_count
Similarly, the vehicle start is relaxed to relaxations(i).level
if it
satisfies:
vehicle_start_time >= relaxations(i).threshold_time
ANDrelaxations(i).threshold_visit_count == 0
and the vehicle end is relaxed to relaxations(i).level
if it satisfies:
vehicle_end_time >= relaxations(i).threshold_time
ANDroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
To apply a relaxation level if a visit meets the threshold_visit_count
OR the threshold_time
add two relaxations
with the same level
:
one with only threshold_visit_count
set and the other with only
threshold_time
set. If a visit satisfies the conditions of multiple
relaxations
, the most relaxed level applies. As a result, from the
vehicle start through the route visits in order to the vehicle end, the
relaxation level becomes more relaxed: i.e., the relaxation level is
non-decreasing as the route progresses.
The timing and sequence of route visits that do not satisfy the
threshold conditions of any relaxations
are fully constrained
and no visits may be inserted into these sequences. Also, if a
vehicle start or end does not satisfy the conditions of any
relaxation the time is fixed, unless the vehicle is empty.
func (*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) Descriptor
func (*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) Descriptor() ([]byte, []int)
Deprecated: Use InjectedSolutionConstraint_ConstraintRelaxation_Relaxation.ProtoReflect.Descriptor instead.
func (*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) GetLevel
func (x *InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) GetLevel() InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level
func (*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) GetThresholdTime
func (x *InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) GetThresholdTime() *timestamppb.Timestamp
func (*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) GetThresholdVisitCount
func (x *InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) GetThresholdVisitCount() int32
func (*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) ProtoMessage
func (*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) ProtoMessage()
func (*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) ProtoReflect
func (x *InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) ProtoReflect() protoreflect.Message
func (*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) Reset
func (x *InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) Reset()
func (*InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) String
func (x *InjectedSolutionConstraint_ConstraintRelaxation_Relaxation) String() string
InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level
type InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level int32
Expresses the different constraint relaxation levels, which are applied for a visit and those that follow when it satisfies the threshold conditions.
The enumeration below is in order of increasing relaxation.
InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_LEVEL_UNSPECIFIED, InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_RELAX_VISIT_TIMES_AFTER_THRESHOLD, InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_RELAX_ALL_AFTER_THRESHOLD
const (
// Implicit default relaxation level: no constraints are relaxed,
// i.e., all visits are fully constrained.
//
// This value must not be explicitly used in `level`.
InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_LEVEL_UNSPECIFIED InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level = 0
// Visit start times and vehicle start/end times will be relaxed, but
// each visit remains bound to the same vehicle and the visit sequence
// must be observed: no visit can be inserted between them or before
// them.
InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_RELAX_VISIT_TIMES_AFTER_THRESHOLD InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level = 1
// Same as `RELAX_VISIT_TIMES_AFTER_THRESHOLD`, but the visit sequence
// is also relaxed: visits can only be performed by this vehicle, but
// can potentially become unperformed.
InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level = 2
// Same as `RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD`, but the
// vehicle is also relaxed: visits are completely free at or after the
// threshold time and can potentially become unperformed.
InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_RELAX_ALL_AFTER_THRESHOLD InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level = 3
)
func (InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) Descriptor
func (InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) Descriptor() protoreflect.EnumDescriptor
func (InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) Enum
func (x InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) Enum() *InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level
func (InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) EnumDescriptor
func (InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) EnumDescriptor() ([]byte, []int)
Deprecated: Use InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level.Descriptor instead.
func (InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) Number
func (x InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) Number() protoreflect.EnumNumber
func (InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) String
func (x InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) String() string
func (InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) Type
func (InjectedSolutionConstraint_ConstraintRelaxation_Relaxation_Level) Type() protoreflect.EnumType
InputConfig
type InputConfig struct {
Source isInputConfig_Source `protobuf_oneof:"source"`
DataFormat DataFormat "" /* 141 byte string literal not displayed */
}
Specify an input for [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
func (*InputConfig) Descriptor
func (*InputConfig) Descriptor() ([]byte, []int)
Deprecated: Use InputConfig.ProtoReflect.Descriptor instead.
func (*InputConfig) GetDataFormat
func (x *InputConfig) GetDataFormat() DataFormat
func (*InputConfig) GetGcsSource
func (x *InputConfig) GetGcsSource() *GcsSource
func (*InputConfig) GetSource
func (m *InputConfig) GetSource() isInputConfig_Source
func (*InputConfig) ProtoMessage
func (*InputConfig) ProtoMessage()
func (*InputConfig) ProtoReflect
func (x *InputConfig) ProtoReflect() protoreflect.Message
func (*InputConfig) Reset
func (x *InputConfig) Reset()
func (*InputConfig) String
func (x *InputConfig) String() string
InputConfig_GcsSource
type InputConfig_GcsSource struct {
// A Google Cloud Storage location. This must be a single object (file).
GcsSource *GcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3,oneof"`
}
Location
type Location struct {
// The waypoint's geographic coordinates.
LatLng *latlng.LatLng `protobuf:"bytes,1,opt,name=lat_lng,json=latLng,proto3" json:"lat_lng,omitempty"`
// The compass heading associated with the direction of the flow of traffic.
// This value is used to specify the side of the road to use for pickup and
// drop-off. Heading values can be from 0 to 360, where 0 specifies a heading
// of due North, 90 specifies a heading of due East, etc.
Heading *int32 `protobuf:"varint,2,opt,name=heading,proto3,oneof" json:"heading,omitempty"`
// contains filtered or unexported fields
}
Encapsulates a location (a geographic point, and an optional heading).
func (*Location) Descriptor
Deprecated: Use Location.ProtoReflect.Descriptor instead.
func (*Location) GetHeading
func (*Location) GetLatLng
func (*Location) ProtoMessage
func (*Location) ProtoMessage()
func (*Location) ProtoReflect
func (x *Location) ProtoReflect() protoreflect.Message
func (*Location) Reset
func (x *Location) Reset()
func (*Location) String
OptimizeToursRequest
type OptimizeToursRequest struct {
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
Timeout *durationpb.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
Model *ShipmentModel `protobuf:"bytes,3,opt,name=model,proto3" json:"model,omitempty"`
SolvingMode OptimizeToursRequest_SolvingMode "" /* 166 byte string literal not displayed */
SearchMode OptimizeToursRequest_SearchMode "" /* 162 byte string literal not displayed */
InjectedFirstSolutionRoutes []*ShipmentRoute "" /* 146 byte string literal not displayed */
InjectedSolutionConstraint *InjectedSolutionConstraint "" /* 141 byte string literal not displayed */
RefreshDetailsRoutes []*ShipmentRoute `protobuf:"bytes,9,rep,name=refresh_details_routes,json=refreshDetailsRoutes,proto3" json:"refresh_details_routes,omitempty"`
InterpretInjectedSolutionsUsingLabels bool "" /* 180 byte string literal not displayed */
ConsiderRoadTraffic bool `protobuf:"varint,11,opt,name=consider_road_traffic,json=considerRoadTraffic,proto3" json:"consider_road_traffic,omitempty"`
PopulatePolylines bool `protobuf:"varint,12,opt,name=populate_polylines,json=populatePolylines,proto3" json:"populate_polylines,omitempty"`
PopulateTransitionPolylines bool "" /* 146 byte string literal not displayed */
AllowLargeDeadlineDespiteInterruptionRisk bool "" /* 194 byte string literal not displayed */
UseGeodesicDistances bool `protobuf:"varint,15,opt,name=use_geodesic_distances,json=useGeodesicDistances,proto3" json:"use_geodesic_distances,omitempty"`
GeodesicMetersPerSecond *float64 "" /* 143 byte string literal not displayed */
MaxValidationErrors *int32 "" /* 127 byte string literal not displayed */
Label string `protobuf:"bytes,17,opt,name=label,proto3" json:"label,omitempty"`
}
Request to be given to a tour optimization solver which defines the shipment model to solve as well as optimization parameters.
func (*OptimizeToursRequest) Descriptor
func (*OptimizeToursRequest) Descriptor() ([]byte, []int)
Deprecated: Use OptimizeToursRequest.ProtoReflect.Descriptor instead.
func (*OptimizeToursRequest) GetAllowLargeDeadlineDespiteInterruptionRisk
func (x *OptimizeToursRequest) GetAllowLargeDeadlineDespiteInterruptionRisk() bool
func (*OptimizeToursRequest) GetConsiderRoadTraffic
func (x *OptimizeToursRequest) GetConsiderRoadTraffic() bool
func (*OptimizeToursRequest) GetGeodesicMetersPerSecond
func (x *OptimizeToursRequest) GetGeodesicMetersPerSecond() float64
func (*OptimizeToursRequest) GetInjectedFirstSolutionRoutes
func (x *OptimizeToursRequest) GetInjectedFirstSolutionRoutes() []*ShipmentRoute
func (*OptimizeToursRequest) GetInjectedSolutionConstraint
func (x *OptimizeToursRequest) GetInjectedSolutionConstraint() *InjectedSolutionConstraint
func (*OptimizeToursRequest) GetInterpretInjectedSolutionsUsingLabels
func (x *OptimizeToursRequest) GetInterpretInjectedSolutionsUsingLabels() bool
func (*OptimizeToursRequest) GetLabel
func (x *OptimizeToursRequest) GetLabel() string
func (*OptimizeToursRequest) GetMaxValidationErrors
func (x *OptimizeToursRequest) GetMaxValidationErrors() int32
func (*OptimizeToursRequest) GetModel
func (x *OptimizeToursRequest) GetModel() *ShipmentModel
func (*OptimizeToursRequest) GetParent
func (x *OptimizeToursRequest) GetParent() string
func (*OptimizeToursRequest) GetPopulatePolylines
func (x *OptimizeToursRequest) GetPopulatePolylines() bool
func (*OptimizeToursRequest) GetPopulateTransitionPolylines
func (x *OptimizeToursRequest) GetPopulateTransitionPolylines() bool
func (*OptimizeToursRequest) GetRefreshDetailsRoutes
func (x *OptimizeToursRequest) GetRefreshDetailsRoutes() []*ShipmentRoute
func (*OptimizeToursRequest) GetSearchMode
func (x *OptimizeToursRequest) GetSearchMode() OptimizeToursRequest_SearchMode
func (*OptimizeToursRequest) GetSolvingMode
func (x *OptimizeToursRequest) GetSolvingMode() OptimizeToursRequest_SolvingMode
func (*OptimizeToursRequest) GetTimeout
func (x *OptimizeToursRequest) GetTimeout() *durationpb.Duration
func (*OptimizeToursRequest) GetUseGeodesicDistances
func (x *OptimizeToursRequest) GetUseGeodesicDistances() bool
func (*OptimizeToursRequest) ProtoMessage
func (*OptimizeToursRequest) ProtoMessage()
func (*OptimizeToursRequest) ProtoReflect
func (x *OptimizeToursRequest) ProtoReflect() protoreflect.Message
func (*OptimizeToursRequest) Reset
func (x *OptimizeToursRequest) Reset()
func (*OptimizeToursRequest) String
func (x *OptimizeToursRequest) String() string
OptimizeToursRequest_SearchMode
type OptimizeToursRequest_SearchMode int32
Mode defining the behavior of the search, trading off latency versus solution quality. In all modes, the global request deadline is enforced.
OptimizeToursRequest_SEARCH_MODE_UNSPECIFIED, OptimizeToursRequest_RETURN_FAST, OptimizeToursRequest_CONSUME_ALL_AVAILABLE_TIME
const (
// Unspecified search mode, equivalent to `RETURN_FAST`.
OptimizeToursRequest_SEARCH_MODE_UNSPECIFIED OptimizeToursRequest_SearchMode = 0
// Stop the search after finding the first good solution.
OptimizeToursRequest_RETURN_FAST OptimizeToursRequest_SearchMode = 1
// Spend all the available time to search for better solutions.
OptimizeToursRequest_CONSUME_ALL_AVAILABLE_TIME OptimizeToursRequest_SearchMode = 2
)
func (OptimizeToursRequest_SearchMode) Descriptor
func (OptimizeToursRequest_SearchMode) Descriptor() protoreflect.EnumDescriptor
func (OptimizeToursRequest_SearchMode) Enum
func (x OptimizeToursRequest_SearchMode) Enum() *OptimizeToursRequest_SearchMode
func (OptimizeToursRequest_SearchMode) EnumDescriptor
func (OptimizeToursRequest_SearchMode) EnumDescriptor() ([]byte, []int)
Deprecated: Use OptimizeToursRequest_SearchMode.Descriptor instead.
func (OptimizeToursRequest_SearchMode) Number
func (x OptimizeToursRequest_SearchMode) Number() protoreflect.EnumNumber
func (OptimizeToursRequest_SearchMode) String
func (x OptimizeToursRequest_SearchMode) String() string
func (OptimizeToursRequest_SearchMode) Type
func (OptimizeToursRequest_SearchMode) Type() protoreflect.EnumType
OptimizeToursRequest_SolvingMode
type OptimizeToursRequest_SolvingMode int32
Defines how the solver should handle the request. In all modes but
VALIDATE_ONLY
, if the request is invalid, you will receive an
INVALID_REQUEST
error. See
[max_validation_errors][google.maps.routeoptimization.v1.OptimizeToursRequest.max_validation_errors]
to cap the number of errors returned.
OptimizeToursRequest_DEFAULT_SOLVE, OptimizeToursRequest_VALIDATE_ONLY, OptimizeToursRequest_DETECT_SOME_INFEASIBLE_SHIPMENTS
const (
// Solve the model. Warnings may be issued in
// [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors].
OptimizeToursRequest_DEFAULT_SOLVE OptimizeToursRequest_SolvingMode = 0
// Only validates the model without solving it: populates as many
// [OptimizeToursResponse.validation_errors][google.maps.routeoptimization.v1.OptimizeToursResponse.validation_errors]
// as possible.
OptimizeToursRequest_VALIDATE_ONLY OptimizeToursRequest_SolvingMode = 1
// Only populates
// [OptimizeToursResponse.validation_errors][google.maps.routeoptimization.v1.OptimizeToursResponse.validation_errors]
// or
// [OptimizeToursResponse.skipped_shipments][google.maps.routeoptimization.v1.OptimizeToursResponse.skipped_shipments],
// and doesn't actually solve the rest of the request (`status` and `routes`
// are unset in the response).
// If infeasibilities in `injected_solution_constraint` routes are detected
// they are populated in the
// [OptimizeToursResponse.validation_errors][google.maps.routeoptimization.v1.OptimizeToursResponse.validation_errors]
// field and
// [OptimizeToursResponse.skipped_shipments][google.maps.routeoptimization.v1.OptimizeToursResponse.skipped_shipments]
// is left empty.
//
// *IMPORTANT*: not all infeasible shipments are returned here, but only the
// ones that are detected as infeasible during preprocessing.
OptimizeToursRequest_DETECT_SOME_INFEASIBLE_SHIPMENTS OptimizeToursRequest_SolvingMode = 2
)
func (OptimizeToursRequest_SolvingMode) Descriptor
func (OptimizeToursRequest_SolvingMode) Descriptor() protoreflect.EnumDescriptor
func (OptimizeToursRequest_SolvingMode) Enum
func (x OptimizeToursRequest_SolvingMode) Enum() *OptimizeToursRequest_SolvingMode
func (OptimizeToursRequest_SolvingMode) EnumDescriptor
func (OptimizeToursRequest_SolvingMode) EnumDescriptor() ([]byte, []int)
Deprecated: Use OptimizeToursRequest_SolvingMode.Descriptor instead.
func (OptimizeToursRequest_SolvingMode) Number
func (x OptimizeToursRequest_SolvingMode) Number() protoreflect.EnumNumber
func (OptimizeToursRequest_SolvingMode) String
func (x OptimizeToursRequest_SolvingMode) String() string
func (OptimizeToursRequest_SolvingMode) Type
func (OptimizeToursRequest_SolvingMode) Type() protoreflect.EnumType
OptimizeToursResponse
type OptimizeToursResponse struct {
// Routes computed for each vehicle; the i-th route corresponds to the i-th
// vehicle in the model.
Routes []*ShipmentRoute `protobuf:"bytes,1,rep,name=routes,proto3" json:"routes,omitempty"`
// Copy of the
// [OptimizeToursRequest.label][google.maps.routeoptimization.v1.OptimizeToursRequest.label],
// if a label was specified in the request.
RequestLabel string `protobuf:"bytes,3,opt,name=request_label,json=requestLabel,proto3" json:"request_label,omitempty"`
// The list of all shipments skipped.
SkippedShipments []*SkippedShipment `protobuf:"bytes,4,rep,name=skipped_shipments,json=skippedShipments,proto3" json:"skipped_shipments,omitempty"`
// List of all the validation errors that we were able to detect
// independently. See the "MULTIPLE ERRORS" explanation for the
// [OptimizeToursValidationError][google.maps.routeoptimization.v1.OptimizeToursValidationError]
// message. Instead of errors, this will include warnings in the case
// `solving_mode` is `DEFAULT_SOLVE`.
ValidationErrors []*OptimizeToursValidationError `protobuf:"bytes,5,rep,name=validation_errors,json=validationErrors,proto3" json:"validation_errors,omitempty"`
// Duration, distance and usage metrics for this solution.
Metrics *OptimizeToursResponse_Metrics `protobuf:"bytes,6,opt,name=metrics,proto3" json:"metrics,omitempty"`
// contains filtered or unexported fields
}
Response after solving a tour optimization problem containing the routes followed by each vehicle, the shipments which have been skipped and the overall cost of the solution.
func (*OptimizeToursResponse) Descriptor
func (*OptimizeToursResponse) Descriptor() ([]byte, []int)
Deprecated: Use OptimizeToursResponse.ProtoReflect.Descriptor instead.
func (*OptimizeToursResponse) GetMetrics
func (x *OptimizeToursResponse) GetMetrics() *OptimizeToursResponse_Metrics
func (*OptimizeToursResponse) GetRequestLabel
func (x *OptimizeToursResponse) GetRequestLabel() string
func (*OptimizeToursResponse) GetRoutes
func (x *OptimizeToursResponse) GetRoutes() []*ShipmentRoute
func (*OptimizeToursResponse) GetSkippedShipments
func (x *OptimizeToursResponse) GetSkippedShipments() []*SkippedShipment
func (*OptimizeToursResponse) GetValidationErrors
func (x *OptimizeToursResponse) GetValidationErrors() []*OptimizeToursValidationError
func (*OptimizeToursResponse) ProtoMessage
func (*OptimizeToursResponse) ProtoMessage()
func (*OptimizeToursResponse) ProtoReflect
func (x *OptimizeToursResponse) ProtoReflect() protoreflect.Message
func (*OptimizeToursResponse) Reset
func (x *OptimizeToursResponse) Reset()
func (*OptimizeToursResponse) String
func (x *OptimizeToursResponse) String() string
OptimizeToursResponse_Metrics
type OptimizeToursResponse_Metrics struct {
AggregatedRouteMetrics *AggregatedMetrics "" /* 129 byte string literal not displayed */
SkippedMandatoryShipmentCount int32 "" /* 153 byte string literal not displayed */
UsedVehicleCount int32 `protobuf:"varint,3,opt,name=used_vehicle_count,json=usedVehicleCount,proto3" json:"used_vehicle_count,omitempty"`
EarliestVehicleStartTime *timestamppb.Timestamp "" /* 137 byte string literal not displayed */
LatestVehicleEndTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=latest_vehicle_end_time,json=latestVehicleEndTime,proto3" json:"latest_vehicle_end_time,omitempty"`
Costs map[string]float64 "" /* 154 byte string literal not displayed */
TotalCost float64 `protobuf:"fixed64,6,opt,name=total_cost,json=totalCost,proto3" json:"total_cost,omitempty"`
}
Overall metrics, aggregated over all routes.
func (*OptimizeToursResponse_Metrics) Descriptor
func (*OptimizeToursResponse_Metrics) Descriptor() ([]byte, []int)
Deprecated: Use OptimizeToursResponse_Metrics.ProtoReflect.Descriptor instead.
func (*OptimizeToursResponse_Metrics) GetAggregatedRouteMetrics
func (x *OptimizeToursResponse_Metrics) GetAggregatedRouteMetrics() *AggregatedMetrics
func (*OptimizeToursResponse_Metrics) GetCosts
func (x *OptimizeToursResponse_Metrics) GetCosts() map[string]float64
func (*OptimizeToursResponse_Metrics) GetEarliestVehicleStartTime
func (x *OptimizeToursResponse_Metrics) GetEarliestVehicleStartTime() *timestamppb.Timestamp
func (*OptimizeToursResponse_Metrics) GetLatestVehicleEndTime
func (x *OptimizeToursResponse_Metrics) GetLatestVehicleEndTime() *timestamppb.Timestamp
func (*OptimizeToursResponse_Metrics) GetSkippedMandatoryShipmentCount
func (x *OptimizeToursResponse_Metrics) GetSkippedMandatoryShipmentCount() int32
func (*OptimizeToursResponse_Metrics) GetTotalCost
func (x *OptimizeToursResponse_Metrics) GetTotalCost() float64
func (*OptimizeToursResponse_Metrics) GetUsedVehicleCount
func (x *OptimizeToursResponse_Metrics) GetUsedVehicleCount() int32
func (*OptimizeToursResponse_Metrics) ProtoMessage
func (*OptimizeToursResponse_Metrics) ProtoMessage()
func (*OptimizeToursResponse_Metrics) ProtoReflect
func (x *OptimizeToursResponse_Metrics) ProtoReflect() protoreflect.Message
func (*OptimizeToursResponse_Metrics) Reset
func (x *OptimizeToursResponse_Metrics) Reset()
func (*OptimizeToursResponse_Metrics) String
func (x *OptimizeToursResponse_Metrics) String() string
OptimizeToursValidationError
type OptimizeToursValidationError struct {
// A validation error is defined by the pair (`code`, `display_name`) which
// are always present.
//
// The fields following this section provide more context about the error.
//
// *MULTIPLE ERRORS*:
// When there are multiple errors, the validation process tries to output
// several of them. Much like a compiler, this is an imperfect process. Some
// validation errors will be "fatal", meaning that they stop the entire
// validation process. This is the case for `display_name="UNSPECIFIED"`
// errors, among others. Some errors may cause the validation process to skip
// other errors.
//
// *STABILITY*:
// `code` and `display_name` should be very stable. But new codes and
// display names may appear over time, which may cause a given (invalid)
// request to yield a different (`code`, `display_name`) pair because the new
// error hid the old one. For example, see "MULTIPLE ERRORS".
Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
// The error display name.
DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// An error context may involve 0, 1 (most of the time) or more fields. For
// example, referring to vehicle #4 and shipment #2's first pickup can be
// done as follows:
// ```
// fields { name: "vehicles" index: 4}
// fields { name: "shipments" index: 2 sub_field {name: "pickups" index: 0} }
// ```
// Note, however, that the cardinality of `fields` should not change for a
// given error code.
Fields []*OptimizeToursValidationError_FieldReference `protobuf:"bytes,3,rep,name=fields,proto3" json:"fields,omitempty"`
// Human-readable string describing the error. There is a 1:1 mapping
// between `code` and `error_message` (when code != "UNSPECIFIED").
//
// *STABILITY*: Not stable: the error message associated to a given `code` may
// change (hopefully to clarify it) over time. Please rely on the
// `display_name` and `code` instead.
ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
// May contain the value(s) of the field(s). This is not always available. You
// should absolutely not rely on it and use it only for manual model
// debugging.
OffendingValues string `protobuf:"bytes,5,opt,name=offending_values,json=offendingValues,proto3" json:"offending_values,omitempty"`
// contains filtered or unexported fields
}
Describes an error or warning encountered when validating an
OptimizeToursRequest
.
func (*OptimizeToursValidationError) Descriptor
func (*OptimizeToursValidationError) Descriptor() ([]byte, []int)
Deprecated: Use OptimizeToursValidationError.ProtoReflect.Descriptor instead.
func (*OptimizeToursValidationError) GetCode
func (x *OptimizeToursValidationError) GetCode() int32
func (*OptimizeToursValidationError) GetDisplayName
func (x *OptimizeToursValidationError) GetDisplayName() string
func (*OptimizeToursValidationError) GetErrorMessage
func (x *OptimizeToursValidationError) GetErrorMessage() string
func (*OptimizeToursValidationError) GetFields
func (x *OptimizeToursValidationError) GetFields() []*OptimizeToursValidationError_FieldReference
func (*OptimizeToursValidationError) GetOffendingValues
func (x *OptimizeToursValidationError) GetOffendingValues() string
func (*OptimizeToursValidationError) ProtoMessage
func (*OptimizeToursValidationError) ProtoMessage()
func (*OptimizeToursValidationError) ProtoReflect
func (x *OptimizeToursValidationError) ProtoReflect() protoreflect.Message
func (*OptimizeToursValidationError) Reset
func (x *OptimizeToursValidationError) Reset()
func (*OptimizeToursValidationError) String
func (x *OptimizeToursValidationError) String() string
OptimizeToursValidationError_FieldReference
type OptimizeToursValidationError_FieldReference struct {
// Name of the field, e.g., "vehicles".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Types that are assignable to IndexOrKey:
//
// *OptimizeToursValidationError_FieldReference_Index
// *OptimizeToursValidationError_FieldReference_Key
IndexOrKey isOptimizeToursValidationError_FieldReference_IndexOrKey `protobuf_oneof:"index_or_key"`
// Recursively nested sub-field, if needed.
SubField *OptimizeToursValidationError_FieldReference `protobuf:"bytes,3,opt,name=sub_field,json=subField,proto3" json:"sub_field,omitempty"`
// contains filtered or unexported fields
}
Specifies a context for the validation error. A FieldReference
always
refers to a given field in this file and follows the same hierarchical
structure. For example, we may specify element #2 of start_time_windows
of vehicle #5 using:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
We however omit top-level entities such as OptimizeToursRequest
or
ShipmentModel
to avoid crowding the message.
func (*OptimizeToursValidationError_FieldReference) Descriptor
func (*OptimizeToursValidationError_FieldReference) Descriptor() ([]byte, []int)
Deprecated: Use OptimizeToursValidationError_FieldReference.ProtoReflect.Descriptor instead.
func (*OptimizeToursValidationError_FieldReference) GetIndex
func (x *OptimizeToursValidationError_FieldReference) GetIndex() int32
func (*OptimizeToursValidationError_FieldReference) GetIndexOrKey
func (m *OptimizeToursValidationError_FieldReference) GetIndexOrKey() isOptimizeToursValidationError_FieldReference_IndexOrKey
func (*OptimizeToursValidationError_FieldReference) GetKey
func (x *OptimizeToursValidationError_FieldReference) GetKey() string
func (*OptimizeToursValidationError_FieldReference) GetName
func (x *OptimizeToursValidationError_FieldReference) GetName() string
func (*OptimizeToursValidationError_FieldReference) GetSubField
func (x *OptimizeToursValidationError_FieldReference) GetSubField() *OptimizeToursValidationError_FieldReference
func (*OptimizeToursValidationError_FieldReference) ProtoMessage
func (*OptimizeToursValidationError_FieldReference) ProtoMessage()
func (*OptimizeToursValidationError_FieldReference) ProtoReflect
func (x *OptimizeToursValidationError_FieldReference) ProtoReflect() protoreflect.Message
func (*OptimizeToursValidationError_FieldReference) Reset
func (x *OptimizeToursValidationError_FieldReference) Reset()
func (*OptimizeToursValidationError_FieldReference) String
func (x *OptimizeToursValidationError_FieldReference) String() string
OptimizeToursValidationError_FieldReference_Index
type OptimizeToursValidationError_FieldReference_Index struct {
// Index of the field if repeated.
Index int32 `protobuf:"varint,2,opt,name=index,proto3,oneof"`
}
OptimizeToursValidationError_FieldReference_Key
type OptimizeToursValidationError_FieldReference_Key struct {
// Key if the field is a map.
Key string `protobuf:"bytes,4,opt,name=key,proto3,oneof"`
}
OutputConfig
type OutputConfig struct {
Destination isOutputConfig_Destination `protobuf_oneof:"destination"`
DataFormat DataFormat "" /* 141 byte string literal not displayed */
}
Specify a destination for [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] results.
func (*OutputConfig) Descriptor
func (*OutputConfig) Descriptor() ([]byte, []int)
Deprecated: Use OutputConfig.ProtoReflect.Descriptor instead.
func (*OutputConfig) GetDataFormat
func (x *OutputConfig) GetDataFormat() DataFormat
func (*OutputConfig) GetDestination
func (m *OutputConfig) GetDestination() isOutputConfig_Destination
func (*OutputConfig) GetGcsDestination
func (x *OutputConfig) GetGcsDestination() *GcsDestination
func (*OutputConfig) ProtoMessage
func (*OutputConfig) ProtoMessage()
func (*OutputConfig) ProtoReflect
func (x *OutputConfig) ProtoReflect() protoreflect.Message
func (*OutputConfig) Reset
func (x *OutputConfig) Reset()
func (*OutputConfig) String
func (x *OutputConfig) String() string
OutputConfig_GcsDestination
type OutputConfig_GcsDestination struct {
// The Google Cloud Storage location to write the output to.
GcsDestination *GcsDestination `protobuf:"bytes,1,opt,name=gcs_destination,json=gcsDestination,proto3,oneof"`
}
RouteModifiers
type RouteModifiers struct {
// Specifies whether to avoid toll roads where reasonable. Preference will be
// given to routes not containing toll roads. Applies only to motorized travel
// modes.
AvoidTolls bool `protobuf:"varint,2,opt,name=avoid_tolls,json=avoidTolls,proto3" json:"avoid_tolls,omitempty"`
// Specifies whether to avoid highways where reasonable. Preference will be
// given to routes not containing highways. Applies only to motorized travel
// modes.
AvoidHighways bool `protobuf:"varint,3,opt,name=avoid_highways,json=avoidHighways,proto3" json:"avoid_highways,omitempty"`
// Specifies whether to avoid ferries where reasonable. Preference will be
// given to routes not containing travel by ferries. Applies only to motorized
// travel modes.
AvoidFerries bool `protobuf:"varint,4,opt,name=avoid_ferries,json=avoidFerries,proto3" json:"avoid_ferries,omitempty"`
// Optional. Specifies whether to avoid navigating indoors where reasonable.
// Preference will be given to routes not containing indoor navigation.
// Applies only to the `WALKING` travel mode.
AvoidIndoor bool `protobuf:"varint,5,opt,name=avoid_indoor,json=avoidIndoor,proto3" json:"avoid_indoor,omitempty"`
// contains filtered or unexported fields
}
Encapsulates a set of optional conditions to satisfy when calculating
vehicle routes. This is similar to RouteModifiers
in the Google Maps
Platform Routes Preferred API; see:
https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
func (*RouteModifiers) Descriptor
func (*RouteModifiers) Descriptor() ([]byte, []int)
Deprecated: Use RouteModifiers.ProtoReflect.Descriptor instead.
func (*RouteModifiers) GetAvoidFerries
func (x *RouteModifiers) GetAvoidFerries() bool
func (*RouteModifiers) GetAvoidHighways
func (x *RouteModifiers) GetAvoidHighways() bool
func (*RouteModifiers) GetAvoidIndoor
func (x *RouteModifiers) GetAvoidIndoor() bool
func (*RouteModifiers) GetAvoidTolls
func (x *RouteModifiers) GetAvoidTolls() bool
func (*RouteModifiers) ProtoMessage
func (*RouteModifiers) ProtoMessage()
func (*RouteModifiers) ProtoReflect
func (x *RouteModifiers) ProtoReflect() protoreflect.Message
func (*RouteModifiers) Reset
func (x *RouteModifiers) Reset()
func (*RouteModifiers) String
func (x *RouteModifiers) String() string
RouteOptimizationClient
type RouteOptimizationClient interface {
// Sends an `OptimizeToursRequest` containing a `ShipmentModel` and returns an
// `OptimizeToursResponse` containing `ShipmentRoute`s, which are a set of
// routes to be performed by vehicles minimizing the overall cost.
//
// A `ShipmentModel` model consists mainly of `Shipment`s that need to be
// carried out and `Vehicle`s that can be used to transport the `Shipment`s.
// The `ShipmentRoute`s assign `Shipment`s to `Vehicle`s. More specifically,
// they assign a series of `Visit`s to each vehicle, where a `Visit`
// corresponds to a `VisitRequest`, which is a pickup or delivery for a
// `Shipment`.
//
// The goal is to provide an assignment of `ShipmentRoute`s to `Vehicle`s that
// minimizes the total cost where cost has many components defined in the
// `ShipmentModel`.
OptimizeTours(ctx context.Context, in *OptimizeToursRequest, opts ...grpc.CallOption) (*OptimizeToursResponse, error)
// Optimizes vehicle tours for one or more `OptimizeToursRequest`
// messages as a batch.
//
// This method is a Long Running Operation (LRO). The inputs for optimization
// (`OptimizeToursRequest` messages) and outputs (`OptimizeToursResponse`
// messages) are read from and written to Cloud Storage in user-specified
// format. Like the `OptimizeTours` method, each `OptimizeToursRequest`
// contains a `ShipmentModel` and returns an `OptimizeToursResponse`
// containing `ShipmentRoute` fields, which are a set of routes to be
// performed by vehicles minimizing the overall cost.
//
// The user can poll `operations.get` to check the status of the LRO:
//
// If the LRO `done` field is false, then at least one request is still
// being processed. Other requests may have completed successfully and their
// results are available in Cloud Storage.
//
// If the LRO's `done` field is true, then all requests have been processed.
// Any successfully processed requests will have their results available in
// Cloud Storage. Any requests that failed will not have their results
// available in Cloud Storage. If the LRO's `error` field is set, then it
// contains the error from one of the failed requests.
BatchOptimizeTours(ctx context.Context, in *BatchOptimizeToursRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error)
}
RouteOptimizationClient is the client API for RouteOptimization service.
For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
func NewRouteOptimizationClient
func NewRouteOptimizationClient(cc grpc.ClientConnInterface) RouteOptimizationClient
RouteOptimizationServer
type RouteOptimizationServer interface {
// Sends an `OptimizeToursRequest` containing a `ShipmentModel` and returns an
// `OptimizeToursResponse` containing `ShipmentRoute`s, which are a set of
// routes to be performed by vehicles minimizing the overall cost.
//
// A `ShipmentModel` model consists mainly of `Shipment`s that need to be
// carried out and `Vehicle`s that can be used to transport the `Shipment`s.
// The `ShipmentRoute`s assign `Shipment`s to `Vehicle`s. More specifically,
// they assign a series of `Visit`s to each vehicle, where a `Visit`
// corresponds to a `VisitRequest`, which is a pickup or delivery for a
// `Shipment`.
//
// The goal is to provide an assignment of `ShipmentRoute`s to `Vehicle`s that
// minimizes the total cost where cost has many components defined in the
// `ShipmentModel`.
OptimizeTours(context.Context, *OptimizeToursRequest) (*OptimizeToursResponse, error)
// Optimizes vehicle tours for one or more `OptimizeToursRequest`
// messages as a batch.
//
// This method is a Long Running Operation (LRO). The inputs for optimization
// (`OptimizeToursRequest` messages) and outputs (`OptimizeToursResponse`
// messages) are read from and written to Cloud Storage in user-specified
// format. Like the `OptimizeTours` method, each `OptimizeToursRequest`
// contains a `ShipmentModel` and returns an `OptimizeToursResponse`
// containing `ShipmentRoute` fields, which are a set of routes to be
// performed by vehicles minimizing the overall cost.
//
// The user can poll `operations.get` to check the status of the LRO:
//
// If the LRO `done` field is false, then at least one request is still
// being processed. Other requests may have completed successfully and their
// results are available in Cloud Storage.
//
// If the LRO's `done` field is true, then all requests have been processed.
// Any successfully processed requests will have their results available in
// Cloud Storage. Any requests that failed will not have their results
// available in Cloud Storage. If the LRO's `error` field is set, then it
// contains the error from one of the failed requests.
BatchOptimizeTours(context.Context, *BatchOptimizeToursRequest) (*longrunningpb.Operation, error)
}
RouteOptimizationServer is the server API for RouteOptimization service.
Shipment
type Shipment struct {
DisplayName string `protobuf:"bytes,16,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
Pickups []*Shipment_VisitRequest `protobuf:"bytes,1,rep,name=pickups,proto3" json:"pickups,omitempty"`
Deliveries []*Shipment_VisitRequest `protobuf:"bytes,2,rep,name=deliveries,proto3" json:"deliveries,omitempty"`
LoadDemands map[string]*Shipment_Load "" /* 183 byte string literal not displayed */
PenaltyCost *float64 `protobuf:"fixed64,4,opt,name=penalty_cost,json=penaltyCost,proto3,oneof" json:"penalty_cost,omitempty"`
AllowedVehicleIndices []int32 "" /* 134 byte string literal not displayed */
CostsPerVehicle []float64 `protobuf:"fixed64,6,rep,packed,name=costs_per_vehicle,json=costsPerVehicle,proto3" json:"costs_per_vehicle,omitempty"`
CostsPerVehicleIndices []int32 "" /* 139 byte string literal not displayed */
PickupToDeliveryRelativeDetourLimit *float64 "" /* 182 byte string literal not displayed */
PickupToDeliveryAbsoluteDetourLimit *durationpb.Duration "" /* 174 byte string literal not displayed */
PickupToDeliveryTimeLimit *durationpb.Duration "" /* 143 byte string literal not displayed */
ShipmentType string `protobuf:"bytes,11,opt,name=shipment_type,json=shipmentType,proto3" json:"shipment_type,omitempty"`
Label string `protobuf:"bytes,12,opt,name=label,proto3" json:"label,omitempty"`
Ignore bool `protobuf:"varint,13,opt,name=ignore,proto3" json:"ignore,omitempty"`
}
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).
func (*Shipment) Descriptor
Deprecated: Use Shipment.ProtoReflect.Descriptor instead.
func (*Shipment) GetAllowedVehicleIndices
func (*Shipment) GetCostsPerVehicle
func (*Shipment) GetCostsPerVehicleIndices
func (*Shipment) GetDeliveries
func (x *Shipment) GetDeliveries() []*Shipment_VisitRequest
func (*Shipment) GetDisplayName
func (*Shipment) GetIgnore
func (*Shipment) GetLabel
func (*Shipment) GetLoadDemands
func (x *Shipment) GetLoadDemands() map[string]*Shipment_Load
func (*Shipment) GetPenaltyCost
func (*Shipment) GetPickupToDeliveryAbsoluteDetourLimit
func (x *Shipment) GetPickupToDeliveryAbsoluteDetourLimit() *durationpb.Duration
func (*Shipment) GetPickupToDeliveryRelativeDetourLimit
func (*Shipment) GetPickupToDeliveryTimeLimit
func (x *Shipment) GetPickupToDeliveryTimeLimit() *durationpb.Duration
func (*Shipment) GetPickups
func (x *Shipment) GetPickups() []*Shipment_VisitRequest
func (*Shipment) GetShipmentType
func (*Shipment) ProtoMessage
func (*Shipment) ProtoMessage()
func (*Shipment) ProtoReflect
func (x *Shipment) ProtoReflect() protoreflect.Message
func (*Shipment) Reset
func (x *Shipment) Reset()
func (*Shipment) String
ShipmentModel
type ShipmentModel struct {
Shipments []*Shipment `protobuf:"bytes,1,rep,name=shipments,proto3" json:"shipments,omitempty"`
Vehicles []*Vehicle `protobuf:"bytes,2,rep,name=vehicles,proto3" json:"vehicles,omitempty"`
MaxActiveVehicles *int32 `protobuf:"varint,4,opt,name=max_active_vehicles,json=maxActiveVehicles,proto3,oneof" json:"max_active_vehicles,omitempty"`
GlobalStartTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=global_start_time,json=globalStartTime,proto3" json:"global_start_time,omitempty"`
GlobalEndTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=global_end_time,json=globalEndTime,proto3" json:"global_end_time,omitempty"`
GlobalDurationCostPerHour float64 "" /* 144 byte string literal not displayed */
DurationDistanceMatrices []*ShipmentModel_DurationDistanceMatrix "" /* 135 byte string literal not displayed */
DurationDistanceMatrixSrcTags []string "" /* 154 byte string literal not displayed */
DurationDistanceMatrixDstTags []string "" /* 155 byte string literal not displayed */
TransitionAttributes []*TransitionAttributes `protobuf:"bytes,11,rep,name=transition_attributes,json=transitionAttributes,proto3" json:"transition_attributes,omitempty"`
ShipmentTypeIncompatibilities []*ShipmentTypeIncompatibility "" /* 151 byte string literal not displayed */
ShipmentTypeRequirements []*ShipmentTypeRequirement "" /* 136 byte string literal not displayed */
PrecedenceRules []*ShipmentModel_PrecedenceRule `protobuf:"bytes,14,rep,name=precedence_rules,json=precedenceRules,proto3" json:"precedence_rules,omitempty"`
}
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
func (*ShipmentModel) Descriptor
func (*ShipmentModel) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentModel.ProtoReflect.Descriptor instead.
func (*ShipmentModel) GetDurationDistanceMatrices
func (x *ShipmentModel) GetDurationDistanceMatrices() []*ShipmentModel_DurationDistanceMatrix
func (*ShipmentModel) GetDurationDistanceMatrixDstTags
func (x *ShipmentModel) GetDurationDistanceMatrixDstTags() []string
func (*ShipmentModel) GetDurationDistanceMatrixSrcTags
func (x *ShipmentModel) GetDurationDistanceMatrixSrcTags() []string
func (*ShipmentModel) GetGlobalDurationCostPerHour
func (x *ShipmentModel) GetGlobalDurationCostPerHour() float64
func (*ShipmentModel) GetGlobalEndTime
func (x *ShipmentModel) GetGlobalEndTime() *timestamppb.Timestamp
func (*ShipmentModel) GetGlobalStartTime
func (x *ShipmentModel) GetGlobalStartTime() *timestamppb.Timestamp
func (*ShipmentModel) GetMaxActiveVehicles
func (x *ShipmentModel) GetMaxActiveVehicles() int32
func (*ShipmentModel) GetPrecedenceRules
func (x *ShipmentModel) GetPrecedenceRules() []*ShipmentModel_PrecedenceRule
func (*ShipmentModel) GetShipmentTypeIncompatibilities
func (x *ShipmentModel) GetShipmentTypeIncompatibilities() []*ShipmentTypeIncompatibility
func (*ShipmentModel) GetShipmentTypeRequirements
func (x *ShipmentModel) GetShipmentTypeRequirements() []*ShipmentTypeRequirement
func (*ShipmentModel) GetShipments
func (x *ShipmentModel) GetShipments() []*Shipment
func (*ShipmentModel) GetTransitionAttributes
func (x *ShipmentModel) GetTransitionAttributes() []*TransitionAttributes
func (*ShipmentModel) GetVehicles
func (x *ShipmentModel) GetVehicles() []*Vehicle
func (*ShipmentModel) ProtoMessage
func (*ShipmentModel) ProtoMessage()
func (*ShipmentModel) ProtoReflect
func (x *ShipmentModel) ProtoReflect() protoreflect.Message
func (*ShipmentModel) Reset
func (x *ShipmentModel) Reset()
func (*ShipmentModel) String
func (x *ShipmentModel) String() string
ShipmentModel_DurationDistanceMatrix
type ShipmentModel_DurationDistanceMatrix struct {
// Specifies the rows of the duration and distance matrix. It must have as
// many elements as
// [ShipmentModel.duration_distance_matrix_src_tags][google.maps.routeoptimization.v1.ShipmentModel.duration_distance_matrix_src_tags].
Rows []*ShipmentModel_DurationDistanceMatrix_Row `protobuf:"bytes,1,rep,name=rows,proto3" json:"rows,omitempty"`
// Tag defining to which vehicles this duration and distance matrix applies.
// If empty, this applies to all vehicles, and there can only be a single
// matrix.
//
// Each vehicle start must match exactly one matrix, i.e. exactly one of
// their `start_tags` field must match the `vehicle_start_tag` of a matrix
// (and of that matrix only).
//
// All matrices must have a different `vehicle_start_tag`.
VehicleStartTag string `protobuf:"bytes,2,opt,name=vehicle_start_tag,json=vehicleStartTag,proto3" json:"vehicle_start_tag,omitempty"`
// contains filtered or unexported fields
}
Specifies a duration and distance matrix from visit and vehicle start locations to visit and vehicle end locations.
func (*ShipmentModel_DurationDistanceMatrix) Descriptor
func (*ShipmentModel_DurationDistanceMatrix) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentModel_DurationDistanceMatrix.ProtoReflect.Descriptor instead.
func (*ShipmentModel_DurationDistanceMatrix) GetRows
func (x *ShipmentModel_DurationDistanceMatrix) GetRows() []*ShipmentModel_DurationDistanceMatrix_Row
func (*ShipmentModel_DurationDistanceMatrix) GetVehicleStartTag
func (x *ShipmentModel_DurationDistanceMatrix) GetVehicleStartTag() string
func (*ShipmentModel_DurationDistanceMatrix) ProtoMessage
func (*ShipmentModel_DurationDistanceMatrix) ProtoMessage()
func (*ShipmentModel_DurationDistanceMatrix) ProtoReflect
func (x *ShipmentModel_DurationDistanceMatrix) ProtoReflect() protoreflect.Message
func (*ShipmentModel_DurationDistanceMatrix) Reset
func (x *ShipmentModel_DurationDistanceMatrix) Reset()
func (*ShipmentModel_DurationDistanceMatrix) String
func (x *ShipmentModel_DurationDistanceMatrix) String() string
ShipmentModel_DurationDistanceMatrix_Row
type ShipmentModel_DurationDistanceMatrix_Row struct {
// Duration values for a given row. It must have as many elements as
// [ShipmentModel.duration_distance_matrix_dst_tags][google.maps.routeoptimization.v1.ShipmentModel.duration_distance_matrix_dst_tags].
Durations []*durationpb.Duration `protobuf:"bytes,1,rep,name=durations,proto3" json:"durations,omitempty"`
// Distance values for a given row. If no costs or constraints refer to
// distances in the model, this can be left empty; otherwise it must have
// as many elements as `durations`.
Meters []float64 `protobuf:"fixed64,2,rep,packed,name=meters,proto3" json:"meters,omitempty"`
// contains filtered or unexported fields
}
Specifies a row of the duration and distance matrix.
func (*ShipmentModel_DurationDistanceMatrix_Row) Descriptor
func (*ShipmentModel_DurationDistanceMatrix_Row) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentModel_DurationDistanceMatrix_Row.ProtoReflect.Descriptor instead.
func (*ShipmentModel_DurationDistanceMatrix_Row) GetDurations
func (x *ShipmentModel_DurationDistanceMatrix_Row) GetDurations() []*durationpb.Duration
func (*ShipmentModel_DurationDistanceMatrix_Row) GetMeters
func (x *ShipmentModel_DurationDistanceMatrix_Row) GetMeters() []float64
func (*ShipmentModel_DurationDistanceMatrix_Row) ProtoMessage
func (*ShipmentModel_DurationDistanceMatrix_Row) ProtoMessage()
func (*ShipmentModel_DurationDistanceMatrix_Row) ProtoReflect
func (x *ShipmentModel_DurationDistanceMatrix_Row) ProtoReflect() protoreflect.Message
func (*ShipmentModel_DurationDistanceMatrix_Row) Reset
func (x *ShipmentModel_DurationDistanceMatrix_Row) Reset()
func (*ShipmentModel_DurationDistanceMatrix_Row) String
func (x *ShipmentModel_DurationDistanceMatrix_Row) String() string
ShipmentModel_PrecedenceRule
type ShipmentModel_PrecedenceRule struct {
// Shipment index of the "first" event. This field must be specified.
FirstIndex *int32 `protobuf:"varint,1,opt,name=first_index,json=firstIndex,proto3,oneof" json:"first_index,omitempty"`
// Indicates if the "first" event is a delivery.
FirstIsDelivery bool `protobuf:"varint,3,opt,name=first_is_delivery,json=firstIsDelivery,proto3" json:"first_is_delivery,omitempty"`
// Shipment index of the "second" event. This field must be specified.
SecondIndex *int32 `protobuf:"varint,2,opt,name=second_index,json=secondIndex,proto3,oneof" json:"second_index,omitempty"`
// Indicates if the "second" event is a delivery.
SecondIsDelivery bool `protobuf:"varint,4,opt,name=second_is_delivery,json=secondIsDelivery,proto3" json:"second_is_delivery,omitempty"`
// The offset between the "first" and "second" event. It can be negative.
OffsetDuration *durationpb.Duration `protobuf:"bytes,5,opt,name=offset_duration,json=offsetDuration,proto3" json:"offset_duration,omitempty"`
// contains filtered or unexported fields
}
A precedence rule between two events (each event is the pickup or the
delivery of a shipment): the "second" event has to start at least
offset_duration
after "first" has started.
Several precedences can refer to the same (or related) events, e.g., "pickup of B happens after delivery of A" and "pickup of C happens after pickup of B".
Furthermore, precedences only apply when both shipments are performed and are otherwise ignored.
func (*ShipmentModel_PrecedenceRule) Descriptor
func (*ShipmentModel_PrecedenceRule) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentModel_PrecedenceRule.ProtoReflect.Descriptor instead.
func (*ShipmentModel_PrecedenceRule) GetFirstIndex
func (x *ShipmentModel_PrecedenceRule) GetFirstIndex() int32
func (*ShipmentModel_PrecedenceRule) GetFirstIsDelivery
func (x *ShipmentModel_PrecedenceRule) GetFirstIsDelivery() bool
func (*ShipmentModel_PrecedenceRule) GetOffsetDuration
func (x *ShipmentModel_PrecedenceRule) GetOffsetDuration() *durationpb.Duration
func (*ShipmentModel_PrecedenceRule) GetSecondIndex
func (x *ShipmentModel_PrecedenceRule) GetSecondIndex() int32
func (*ShipmentModel_PrecedenceRule) GetSecondIsDelivery
func (x *ShipmentModel_PrecedenceRule) GetSecondIsDelivery() bool
func (*ShipmentModel_PrecedenceRule) ProtoMessage
func (*ShipmentModel_PrecedenceRule) ProtoMessage()
func (*ShipmentModel_PrecedenceRule) ProtoReflect
func (x *ShipmentModel_PrecedenceRule) ProtoReflect() protoreflect.Message
func (*ShipmentModel_PrecedenceRule) Reset
func (x *ShipmentModel_PrecedenceRule) Reset()
func (*ShipmentModel_PrecedenceRule) String
func (x *ShipmentModel_PrecedenceRule) String() string
ShipmentRoute
type ShipmentRoute struct {
VehicleIndex int32 `protobuf:"varint,1,opt,name=vehicle_index,json=vehicleIndex,proto3" json:"vehicle_index,omitempty"`
VehicleLabel string `protobuf:"bytes,2,opt,name=vehicle_label,json=vehicleLabel,proto3" json:"vehicle_label,omitempty"`
VehicleStartTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=vehicle_start_time,json=vehicleStartTime,proto3" json:"vehicle_start_time,omitempty"`
VehicleEndTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=vehicle_end_time,json=vehicleEndTime,proto3" json:"vehicle_end_time,omitempty"`
Visits []*ShipmentRoute_Visit `protobuf:"bytes,7,rep,name=visits,proto3" json:"visits,omitempty"`
Transitions []*ShipmentRoute_Transition `protobuf:"bytes,8,rep,name=transitions,proto3" json:"transitions,omitempty"`
HasTrafficInfeasibilities bool "" /* 139 byte string literal not displayed */
RoutePolyline *ShipmentRoute_EncodedPolyline `protobuf:"bytes,10,opt,name=route_polyline,json=routePolyline,proto3" json:"route_polyline,omitempty"`
Breaks []*ShipmentRoute_Break `protobuf:"bytes,11,rep,name=breaks,proto3" json:"breaks,omitempty"`
Metrics *AggregatedMetrics `protobuf:"bytes,12,opt,name=metrics,proto3" json:"metrics,omitempty"`
RouteCosts map[string]float64 "" /* 182 byte string literal not displayed */
RouteTotalCost float64 `protobuf:"fixed64,18,opt,name=route_total_cost,json=routeTotalCost,proto3" json:"route_total_cost,omitempty"`
}
A vehicle's route can be decomposed, along the time axis, like this (we assume there are n visits):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
Note that we make a difference between:
- "punctual events", such as the vehicle start and end and each visit's start and end (aka arrival and departure). They happen at a given second.
- "time intervals", such as the visits themselves, and the transition between visits. Though time intervals can sometimes have zero duration, i.e. start and end at the same second, they often have a positive duration.
Invariants:
- If there are n visits, there are n+1 transitions.
- A visit is always surrounded by a transition before it (same index) and a transition after it (index + 1).
- The vehicle start is always followed by transition #0.
- The vehicle end is always preceded by transition #n.
Zooming in, here is what happens during a Transition
and a Visit
:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
Lastly, here is how the TRAVEL, BREAKS, DELAY and WAIT can be arranged during a transition.
- They don't overlap.
- The DELAY is unique and must be a contiguous period of time right before the next visit (or vehicle end). Thus, it suffice to know the delay duration to know its start and end time.
- The BREAKS are contiguous, non-overlapping periods of time. The response specifies the start time and duration of each break.
- TRAVEL and WAIT are "preemptable": they can be interrupted several times during this transition. Clients can assume that travel happens "as soon as possible" and that "wait" fills the remaining time.
A (complex) example:
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
func (*ShipmentRoute) Descriptor
func (*ShipmentRoute) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentRoute.ProtoReflect.Descriptor instead.
func (*ShipmentRoute) GetBreaks
func (x *ShipmentRoute) GetBreaks() []*ShipmentRoute_Break
func (*ShipmentRoute) GetHasTrafficInfeasibilities
func (x *ShipmentRoute) GetHasTrafficInfeasibilities() bool
func (*ShipmentRoute) GetMetrics
func (x *ShipmentRoute) GetMetrics() *AggregatedMetrics
func (*ShipmentRoute) GetRouteCosts
func (x *ShipmentRoute) GetRouteCosts() map[string]float64
func (*ShipmentRoute) GetRoutePolyline
func (x *ShipmentRoute) GetRoutePolyline() *ShipmentRoute_EncodedPolyline
func (*ShipmentRoute) GetRouteTotalCost
func (x *ShipmentRoute) GetRouteTotalCost() float64
func (*ShipmentRoute) GetTransitions
func (x *ShipmentRoute) GetTransitions() []*ShipmentRoute_Transition
func (*ShipmentRoute) GetVehicleEndTime
func (x *ShipmentRoute) GetVehicleEndTime() *timestamppb.Timestamp
func (*ShipmentRoute) GetVehicleIndex
func (x *ShipmentRoute) GetVehicleIndex() int32
func (*ShipmentRoute) GetVehicleLabel
func (x *ShipmentRoute) GetVehicleLabel() string
func (*ShipmentRoute) GetVehicleStartTime
func (x *ShipmentRoute) GetVehicleStartTime() *timestamppb.Timestamp
func (*ShipmentRoute) GetVisits
func (x *ShipmentRoute) GetVisits() []*ShipmentRoute_Visit
func (*ShipmentRoute) ProtoMessage
func (*ShipmentRoute) ProtoMessage()
func (*ShipmentRoute) ProtoReflect
func (x *ShipmentRoute) ProtoReflect() protoreflect.Message
func (*ShipmentRoute) Reset
func (x *ShipmentRoute) Reset()
func (*ShipmentRoute) String
func (x *ShipmentRoute) String() string
ShipmentRoute_Break
type ShipmentRoute_Break struct {
// Start time of a break.
StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
// Duration of a break.
Duration *durationpb.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"`
// contains filtered or unexported fields
}
Data representing the execution of a break.
func (*ShipmentRoute_Break) Descriptor
func (*ShipmentRoute_Break) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentRoute_Break.ProtoReflect.Descriptor instead.
func (*ShipmentRoute_Break) GetDuration
func (x *ShipmentRoute_Break) GetDuration() *durationpb.Duration
func (*ShipmentRoute_Break) GetStartTime
func (x *ShipmentRoute_Break) GetStartTime() *timestamppb.Timestamp
func (*ShipmentRoute_Break) ProtoMessage
func (*ShipmentRoute_Break) ProtoMessage()
func (*ShipmentRoute_Break) ProtoReflect
func (x *ShipmentRoute_Break) ProtoReflect() protoreflect.Message
func (*ShipmentRoute_Break) Reset
func (x *ShipmentRoute_Break) Reset()
func (*ShipmentRoute_Break) String
func (x *ShipmentRoute_Break) String() string
ShipmentRoute_EncodedPolyline
type ShipmentRoute_EncodedPolyline struct {
// String representing encoded points of the polyline.
Points string `protobuf:"bytes,1,opt,name=points,proto3" json:"points,omitempty"`
// contains filtered or unexported fields
}
The encoded representation of a polyline. More information on polyline encoding can be found here: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
func (*ShipmentRoute_EncodedPolyline) Descriptor
func (*ShipmentRoute_EncodedPolyline) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentRoute_EncodedPolyline.ProtoReflect.Descriptor instead.
func (*ShipmentRoute_EncodedPolyline) GetPoints
func (x *ShipmentRoute_EncodedPolyline) GetPoints() string
func (*ShipmentRoute_EncodedPolyline) ProtoMessage
func (*ShipmentRoute_EncodedPolyline) ProtoMessage()
func (*ShipmentRoute_EncodedPolyline) ProtoReflect
func (x *ShipmentRoute_EncodedPolyline) ProtoReflect() protoreflect.Message
func (*ShipmentRoute_EncodedPolyline) Reset
func (x *ShipmentRoute_EncodedPolyline) Reset()
func (*ShipmentRoute_EncodedPolyline) String
func (x *ShipmentRoute_EncodedPolyline) String() string
ShipmentRoute_Transition
type ShipmentRoute_Transition struct {
TravelDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=travel_duration,json=travelDuration,proto3" json:"travel_duration,omitempty"`
TravelDistanceMeters float64 `protobuf:"fixed64,2,opt,name=travel_distance_meters,json=travelDistanceMeters,proto3" json:"travel_distance_meters,omitempty"`
TrafficInfoUnavailable bool "" /* 130 byte string literal not displayed */
DelayDuration *durationpb.Duration `protobuf:"bytes,4,opt,name=delay_duration,json=delayDuration,proto3" json:"delay_duration,omitempty"`
BreakDuration *durationpb.Duration `protobuf:"bytes,5,opt,name=break_duration,json=breakDuration,proto3" json:"break_duration,omitempty"`
WaitDuration *durationpb.Duration `protobuf:"bytes,6,opt,name=wait_duration,json=waitDuration,proto3" json:"wait_duration,omitempty"`
TotalDuration *durationpb.Duration `protobuf:"bytes,7,opt,name=total_duration,json=totalDuration,proto3" json:"total_duration,omitempty"`
StartTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
RoutePolyline *ShipmentRoute_EncodedPolyline `protobuf:"bytes,9,opt,name=route_polyline,json=routePolyline,proto3" json:"route_polyline,omitempty"`
RouteToken string `protobuf:"bytes,12,opt,name=route_token,json=routeToken,proto3" json:"route_token,omitempty"`
VehicleLoads map[string]*ShipmentRoute_VehicleLoad "" /* 186 byte string literal not displayed */
}
Transition between two events on the route. See the description of [ShipmentRoute][google.maps.routeoptimization.v1.ShipmentRoute].
If the vehicle does not have a start_location
and/or end_location
, the
corresponding travel metrics are 0.
func (*ShipmentRoute_Transition) Descriptor
func (*ShipmentRoute_Transition) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentRoute_Transition.ProtoReflect.Descriptor instead.
func (*ShipmentRoute_Transition) GetBreakDuration
func (x *ShipmentRoute_Transition) GetBreakDuration() *durationpb.Duration
func (*ShipmentRoute_Transition) GetDelayDuration
func (x *ShipmentRoute_Transition) GetDelayDuration() *durationpb.Duration
func (*ShipmentRoute_Transition) GetRoutePolyline
func (x *ShipmentRoute_Transition) GetRoutePolyline() *ShipmentRoute_EncodedPolyline
func (*ShipmentRoute_Transition) GetRouteToken
func (x *ShipmentRoute_Transition) GetRouteToken() string
func (*ShipmentRoute_Transition) GetStartTime
func (x *ShipmentRoute_Transition) GetStartTime() *timestamppb.Timestamp
func (*ShipmentRoute_Transition) GetTotalDuration
func (x *ShipmentRoute_Transition) GetTotalDuration() *durationpb.Duration
func (*ShipmentRoute_Transition) GetTrafficInfoUnavailable
func (x *ShipmentRoute_Transition) GetTrafficInfoUnavailable() bool
func (*ShipmentRoute_Transition) GetTravelDistanceMeters
func (x *ShipmentRoute_Transition) GetTravelDistanceMeters() float64
func (*ShipmentRoute_Transition) GetTravelDuration
func (x *ShipmentRoute_Transition) GetTravelDuration() *durationpb.Duration
func (*ShipmentRoute_Transition) GetVehicleLoads
func (x *ShipmentRoute_Transition) GetVehicleLoads() map[string]*ShipmentRoute_VehicleLoad
func (*ShipmentRoute_Transition) GetWaitDuration
func (x *ShipmentRoute_Transition) GetWaitDuration() *durationpb.Duration
func (*ShipmentRoute_Transition) ProtoMessage
func (*ShipmentRoute_Transition) ProtoMessage()
func (*ShipmentRoute_Transition) ProtoReflect
func (x *ShipmentRoute_Transition) ProtoReflect() protoreflect.Message
func (*ShipmentRoute_Transition) Reset
func (x *ShipmentRoute_Transition) Reset()
func (*ShipmentRoute_Transition) String
func (x *ShipmentRoute_Transition) String() string
ShipmentRoute_VehicleLoad
type ShipmentRoute_VehicleLoad struct {
// The amount of load on the vehicle, for the given type. The unit of load
// is usually indicated by the type. See
// [Transition.vehicle_loads][google.maps.routeoptimization.v1.ShipmentRoute.Transition.vehicle_loads].
Amount int64 `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"`
// contains filtered or unexported fields
}
Reports the actual load of the vehicle at some point along the route, for a given type (see [Transition.vehicle_loads][google.maps.routeoptimization.v1.ShipmentRoute.Transition.vehicle_loads]).
func (*ShipmentRoute_VehicleLoad) Descriptor
func (*ShipmentRoute_VehicleLoad) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentRoute_VehicleLoad.ProtoReflect.Descriptor instead.
func (*ShipmentRoute_VehicleLoad) GetAmount
func (x *ShipmentRoute_VehicleLoad) GetAmount() int64
func (*ShipmentRoute_VehicleLoad) ProtoMessage
func (*ShipmentRoute_VehicleLoad) ProtoMessage()
func (*ShipmentRoute_VehicleLoad) ProtoReflect
func (x *ShipmentRoute_VehicleLoad) ProtoReflect() protoreflect.Message
func (*ShipmentRoute_VehicleLoad) Reset
func (x *ShipmentRoute_VehicleLoad) Reset()
func (*ShipmentRoute_VehicleLoad) String
func (x *ShipmentRoute_VehicleLoad) String() string
ShipmentRoute_Visit
type ShipmentRoute_Visit struct {
ShipmentIndex int32 `protobuf:"varint,1,opt,name=shipment_index,json=shipmentIndex,proto3" json:"shipment_index,omitempty"`
IsPickup bool `protobuf:"varint,2,opt,name=is_pickup,json=isPickup,proto3" json:"is_pickup,omitempty"`
VisitRequestIndex int32 `protobuf:"varint,3,opt,name=visit_request_index,json=visitRequestIndex,proto3" json:"visit_request_index,omitempty"`
StartTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
LoadDemands map[string]*Shipment_Load "" /* 183 byte string literal not displayed */
Detour *durationpb.Duration `protobuf:"bytes,6,opt,name=detour,proto3" json:"detour,omitempty"`
ShipmentLabel string `protobuf:"bytes,7,opt,name=shipment_label,json=shipmentLabel,proto3" json:"shipment_label,omitempty"`
VisitLabel string `protobuf:"bytes,8,opt,name=visit_label,json=visitLabel,proto3" json:"visit_label,omitempty"`
}
A visit performed during a route. This visit corresponds to a pickup or a
delivery of a Shipment
.
func (*ShipmentRoute_Visit) Descriptor
func (*ShipmentRoute_Visit) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentRoute_Visit.ProtoReflect.Descriptor instead.
func (*ShipmentRoute_Visit) GetDetour
func (x *ShipmentRoute_Visit) GetDetour() *durationpb.Duration
func (*ShipmentRoute_Visit) GetIsPickup
func (x *ShipmentRoute_Visit) GetIsPickup() bool
func (*ShipmentRoute_Visit) GetLoadDemands
func (x *ShipmentRoute_Visit) GetLoadDemands() map[string]*Shipment_Load
func (*ShipmentRoute_Visit) GetShipmentIndex
func (x *ShipmentRoute_Visit) GetShipmentIndex() int32
func (*ShipmentRoute_Visit) GetShipmentLabel
func (x *ShipmentRoute_Visit) GetShipmentLabel() string
func (*ShipmentRoute_Visit) GetStartTime
func (x *ShipmentRoute_Visit) GetStartTime() *timestamppb.Timestamp
func (*ShipmentRoute_Visit) GetVisitLabel
func (x *ShipmentRoute_Visit) GetVisitLabel() string
func (*ShipmentRoute_Visit) GetVisitRequestIndex
func (x *ShipmentRoute_Visit) GetVisitRequestIndex() int32
func (*ShipmentRoute_Visit) ProtoMessage
func (*ShipmentRoute_Visit) ProtoMessage()
func (*ShipmentRoute_Visit) ProtoReflect
func (x *ShipmentRoute_Visit) ProtoReflect() protoreflect.Message
func (*ShipmentRoute_Visit) Reset
func (x *ShipmentRoute_Visit) Reset()
func (*ShipmentRoute_Visit) String
func (x *ShipmentRoute_Visit) String() string
ShipmentTypeIncompatibility
type ShipmentTypeIncompatibility struct {
Types []string `protobuf:"bytes,1,rep,name=types,proto3" json:"types,omitempty"`
IncompatibilityMode ShipmentTypeIncompatibility_IncompatibilityMode "" /* 205 byte string literal not displayed */
}
Specifies incompatibilties between shipments depending on their shipment_type. The appearance of incompatible shipments on the same route is restricted based on the incompatibility mode.
func (*ShipmentTypeIncompatibility) Descriptor
func (*ShipmentTypeIncompatibility) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentTypeIncompatibility.ProtoReflect.Descriptor instead.
func (*ShipmentTypeIncompatibility) GetIncompatibilityMode
func (x *ShipmentTypeIncompatibility) GetIncompatibilityMode() ShipmentTypeIncompatibility_IncompatibilityMode
func (*ShipmentTypeIncompatibility) GetTypes
func (x *ShipmentTypeIncompatibility) GetTypes() []string
func (*ShipmentTypeIncompatibility) ProtoMessage
func (*ShipmentTypeIncompatibility) ProtoMessage()
func (*ShipmentTypeIncompatibility) ProtoReflect
func (x *ShipmentTypeIncompatibility) ProtoReflect() protoreflect.Message
func (*ShipmentTypeIncompatibility) Reset
func (x *ShipmentTypeIncompatibility) Reset()
func (*ShipmentTypeIncompatibility) String
func (x *ShipmentTypeIncompatibility) String() string
ShipmentTypeIncompatibility_IncompatibilityMode
type ShipmentTypeIncompatibility_IncompatibilityMode int32
Modes defining how the appearance of incompatible shipments are restricted on the same route.
ShipmentTypeIncompatibility_INCOMPATIBILITY_MODE_UNSPECIFIED, ShipmentTypeIncompatibility_NOT_PERFORMED_BY_SAME_VEHICLE, ShipmentTypeIncompatibility_NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY
const (
// Unspecified incompatibility mode. This value should never be used.
ShipmentTypeIncompatibility_INCOMPATIBILITY_MODE_UNSPECIFIED ShipmentTypeIncompatibility_IncompatibilityMode = 0
// In this mode, two shipments with incompatible types can never share the
// same vehicle.
ShipmentTypeIncompatibility_NOT_PERFORMED_BY_SAME_VEHICLE ShipmentTypeIncompatibility_IncompatibilityMode = 1
// For two shipments with incompatible types with the
// `NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY` incompatibility mode:
//
// - If both are pickups only (no deliveries) or deliveries only (no
// pickups), they cannot share the same vehicle at all.
// - If one of the shipments has a delivery and the other a pickup, the two
// shipments can share the same vehicle iff the former shipment is
// delivered before the latter is picked up.
ShipmentTypeIncompatibility_NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY ShipmentTypeIncompatibility_IncompatibilityMode = 2
)
func (ShipmentTypeIncompatibility_IncompatibilityMode) Descriptor
func (ShipmentTypeIncompatibility_IncompatibilityMode) Descriptor() protoreflect.EnumDescriptor
func (ShipmentTypeIncompatibility_IncompatibilityMode) Enum
func (x ShipmentTypeIncompatibility_IncompatibilityMode) Enum() *ShipmentTypeIncompatibility_IncompatibilityMode
func (ShipmentTypeIncompatibility_IncompatibilityMode) EnumDescriptor
func (ShipmentTypeIncompatibility_IncompatibilityMode) EnumDescriptor() ([]byte, []int)
Deprecated: Use ShipmentTypeIncompatibility_IncompatibilityMode.Descriptor instead.
func (ShipmentTypeIncompatibility_IncompatibilityMode) Number
func (x ShipmentTypeIncompatibility_IncompatibilityMode) Number() protoreflect.EnumNumber
func (ShipmentTypeIncompatibility_IncompatibilityMode) String
func (x ShipmentTypeIncompatibility_IncompatibilityMode) String() string
func (ShipmentTypeIncompatibility_IncompatibilityMode) Type
ShipmentTypeRequirement
type ShipmentTypeRequirement struct {
RequiredShipmentTypeAlternatives []string "" /* 161 byte string literal not displayed */
DependentShipmentTypes []string "" /* 129 byte string literal not displayed */
RequirementMode ShipmentTypeRequirement_RequirementMode "" /* 185 byte string literal not displayed */
}
Specifies requirements between shipments based on their shipment_type. The specifics of the requirement are defined by the requirement mode.
func (*ShipmentTypeRequirement) Descriptor
func (*ShipmentTypeRequirement) Descriptor() ([]byte, []int)
Deprecated: Use ShipmentTypeRequirement.ProtoReflect.Descriptor instead.
func (*ShipmentTypeRequirement) GetDependentShipmentTypes
func (x *ShipmentTypeRequirement) GetDependentShipmentTypes() []string
func (*ShipmentTypeRequirement) GetRequiredShipmentTypeAlternatives
func (x *ShipmentTypeRequirement) GetRequiredShipmentTypeAlternatives() []string
func (*ShipmentTypeRequirement) GetRequirementMode
func (x *ShipmentTypeRequirement) GetRequirementMode() ShipmentTypeRequirement_RequirementMode
func (*ShipmentTypeRequirement) ProtoMessage
func (*ShipmentTypeRequirement) ProtoMessage()
func (*ShipmentTypeRequirement) ProtoReflect
func (x *ShipmentTypeRequirement) ProtoReflect() protoreflect.Message
func (*ShipmentTypeRequirement) Reset
func (x *ShipmentTypeRequirement) Reset()
func (*ShipmentTypeRequirement) String
func (x *ShipmentTypeRequirement) String() string
ShipmentTypeRequirement_RequirementMode
type ShipmentTypeRequirement_RequirementMode int32
Modes defining the appearance of dependent shipments on a route.
ShipmentTypeRequirement_REQUIREMENT_MODE_UNSPECIFIED, ShipmentTypeRequirement_PERFORMED_BY_SAME_VEHICLE, ShipmentTypeRequirement_IN_SAME_VEHICLE_AT_PICKUP_TIME, ShipmentTypeRequirement_IN_SAME_VEHICLE_AT_DELIVERY_TIME
const (
// Unspecified requirement mode. This value should never be used.
ShipmentTypeRequirement_REQUIREMENT_MODE_UNSPECIFIED ShipmentTypeRequirement_RequirementMode = 0
// In this mode, all "dependent" shipments must share the same vehicle as at
// least one of their "required" shipments.
ShipmentTypeRequirement_PERFORMED_BY_SAME_VEHICLE ShipmentTypeRequirement_RequirementMode = 1
// With the `IN_SAME_VEHICLE_AT_PICKUP_TIME` mode, all "dependent"
// shipments need to have at least one "required" shipment on their vehicle
// at the time of their pickup.
//
// A "dependent" shipment pickup must therefore have either:
//
// - A delivery-only "required" shipment delivered on the route after, or
// - A "required" shipment picked up on the route before it, and if the
// "required" shipment has a delivery, this delivery must be performed
// after the "dependent" shipment's pickup.
ShipmentTypeRequirement_IN_SAME_VEHICLE_AT_PICKUP_TIME ShipmentTypeRequirement_RequirementMode = 2
// Same as before, except the "dependent" shipments need to have a
// "required" shipment on their vehicle at the time of their *delivery*.
ShipmentTypeRequirement_IN_SAME_VEHICLE_AT_DELIVERY_TIME ShipmentTypeRequirement_RequirementMode = 3
)
func (ShipmentTypeRequirement_RequirementMode) Descriptor
func (ShipmentTypeRequirement_RequirementMode) Descriptor() protoreflect.EnumDescriptor
func (ShipmentTypeRequirement_RequirementMode) Enum
func (ShipmentTypeRequirement_RequirementMode) EnumDescriptor
func (ShipmentTypeRequirement_RequirementMode) EnumDescriptor() ([]byte, []int)
Deprecated: Use ShipmentTypeRequirement_RequirementMode.Descriptor instead.
func (ShipmentTypeRequirement_RequirementMode) Number
func (x ShipmentTypeRequirement_RequirementMode) Number() protoreflect.EnumNumber
func (ShipmentTypeRequirement_RequirementMode) String
func (x ShipmentTypeRequirement_RequirementMode) String() string
func (ShipmentTypeRequirement_RequirementMode) Type
func (ShipmentTypeRequirement_RequirementMode) Type() protoreflect.EnumType
Shipment_Load
type Shipment_Load struct {
// The amount by which the load of the vehicle performing the corresponding
// visit will vary. Since it is an integer, users are advised to choose an
// appropriate unit to avoid loss of precision. Must be ≥ 0.
Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
// contains filtered or unexported fields
}
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][google.maps.routeoptimization.v1.Shipment.load_demands].
func (*Shipment_Load) Descriptor
func (*Shipment_Load) Descriptor() ([]byte, []int)
Deprecated: Use Shipment_Load.ProtoReflect.Descriptor instead.
func (*Shipment_Load) GetAmount
func (x *Shipment_Load) GetAmount() int64
func (*Shipment_Load) ProtoMessage
func (*Shipment_Load) ProtoMessage()
func (*Shipment_Load) ProtoReflect
func (x *Shipment_Load) ProtoReflect() protoreflect.Message
func (*Shipment_Load) Reset
func (x *Shipment_Load) Reset()
func (*Shipment_Load) String
func (x *Shipment_Load) String() string
Shipment_VisitRequest
type Shipment_VisitRequest struct {
ArrivalLocation *latlng.LatLng `protobuf:"bytes,1,opt,name=arrival_location,json=arrivalLocation,proto3" json:"arrival_location,omitempty"`
ArrivalWaypoint *Waypoint `protobuf:"bytes,2,opt,name=arrival_waypoint,json=arrivalWaypoint,proto3" json:"arrival_waypoint,omitempty"`
DepartureLocation *latlng.LatLng `protobuf:"bytes,3,opt,name=departure_location,json=departureLocation,proto3" json:"departure_location,omitempty"`
DepartureWaypoint *Waypoint `protobuf:"bytes,4,opt,name=departure_waypoint,json=departureWaypoint,proto3" json:"departure_waypoint,omitempty"`
Tags []string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty"`
TimeWindows []*TimeWindow `protobuf:"bytes,6,rep,name=time_windows,json=timeWindows,proto3" json:"time_windows,omitempty"`
Duration *durationpb.Duration `protobuf:"bytes,7,opt,name=duration,proto3" json:"duration,omitempty"`
Cost float64 `protobuf:"fixed64,8,opt,name=cost,proto3" json:"cost,omitempty"`
LoadDemands map[string]*Shipment_Load "" /* 183 byte string literal not displayed */
VisitTypes []string `protobuf:"bytes,10,rep,name=visit_types,json=visitTypes,proto3" json:"visit_types,omitempty"`
Label string `protobuf:"bytes,11,opt,name=label,proto3" json:"label,omitempty"`
}
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).
func (*Shipment_VisitRequest) Descriptor
func (*Shipment_VisitRequest) Descriptor() ([]byte, []int)
Deprecated: Use Shipment_VisitRequest.ProtoReflect.Descriptor instead.
func (*Shipment_VisitRequest) GetArrivalLocation
func (x *Shipment_VisitRequest) GetArrivalLocation() *latlng.LatLng
func (*Shipment_VisitRequest) GetArrivalWaypoint
func (x *Shipment_VisitRequest) GetArrivalWaypoint() *Waypoint
func (*Shipment_VisitRequest) GetCost
func (x *Shipment_VisitRequest) GetCost() float64
func (*Shipment_VisitRequest) GetDepartureLocation
func (x *Shipment_VisitRequest) GetDepartureLocation() *latlng.LatLng
func (*Shipment_VisitRequest) GetDepartureWaypoint
func (x *Shipment_VisitRequest) GetDepartureWaypoint() *Waypoint
func (*Shipment_VisitRequest) GetDuration
func (x *Shipment_VisitRequest) GetDuration() *durationpb.Duration
func (*Shipment_VisitRequest) GetLabel
func (x *Shipment_VisitRequest) GetLabel() string
func (*Shipment_VisitRequest) GetLoadDemands
func (x *Shipment_VisitRequest) GetLoadDemands() map[string]*Shipment_Load
func (*Shipment_VisitRequest) GetTags
func (x *Shipment_VisitRequest) GetTags() []string
func (*Shipment_VisitRequest) GetTimeWindows
func (x *Shipment_VisitRequest) GetTimeWindows() []*TimeWindow
func (*Shipment_VisitRequest) GetVisitTypes
func (x *Shipment_VisitRequest) GetVisitTypes() []string
func (*Shipment_VisitRequest) ProtoMessage
func (*Shipment_VisitRequest) ProtoMessage()
func (*Shipment_VisitRequest) ProtoReflect
func (x *Shipment_VisitRequest) ProtoReflect() protoreflect.Message
func (*Shipment_VisitRequest) Reset
func (x *Shipment_VisitRequest) Reset()
func (*Shipment_VisitRequest) String
func (x *Shipment_VisitRequest) String() string
SkippedShipment
type SkippedShipment struct {
// The index corresponds to the index of the shipment in the source
// `ShipmentModel`.
Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"`
// Copy of the corresponding
// [Shipment.label][google.maps.routeoptimization.v1.Shipment.label], if
// specified in the `Shipment`.
Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
// A list of reasons that explain why the shipment was skipped. See comment
// above `Reason`. If we are unable to understand why a shipment was skipped,
// reasons will not be set.
Reasons []*SkippedShipment_Reason `protobuf:"bytes,3,rep,name=reasons,proto3" json:"reasons,omitempty"`
// contains filtered or unexported fields
}
Specifies details of unperformed shipments in a solution. For trivial cases and/or if we are able to identify the cause for skipping, we report the reason here.
func (*SkippedShipment) Descriptor
func (*SkippedShipment) Descriptor() ([]byte, []int)
Deprecated: Use SkippedShipment.ProtoReflect.Descriptor instead.
func (*SkippedShipment) GetIndex
func (x *SkippedShipment) GetIndex() int32
func (*SkippedShipment) GetLabel
func (x *SkippedShipment) GetLabel() string
func (*SkippedShipment) GetReasons
func (x *SkippedShipment) GetReasons() []*SkippedShipment_Reason
func (*SkippedShipment) ProtoMessage
func (*SkippedShipment) ProtoMessage()
func (*SkippedShipment) ProtoReflect
func (x *SkippedShipment) ProtoReflect() protoreflect.Message
func (*SkippedShipment) Reset
func (x *SkippedShipment) Reset()
func (*SkippedShipment) String
func (x *SkippedShipment) String() string
SkippedShipment_Reason
type SkippedShipment_Reason struct {
Code SkippedShipment_Reason_Code "" /* 128 byte string literal not displayed */
ExampleVehicleIndex *int32 "" /* 127 byte string literal not displayed */
ExampleExceededCapacityType string "" /* 146 byte string literal not displayed */
}
If we can explain why the shipment was skipped, reasons will be listed
here. If the reason is not the same for all vehicles, reason
will have
more than 1 element. A skipped shipment cannot have duplicate reasons,
i.e. where all fields are the same except for example_vehicle_index
.
Example:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
The skipped shipment is incompatible with all vehicles. The reasons may be different for all vehicles but at least one vehicle's "Apples" capacity would be exceeded (including vehicle 1), at least one vehicle's "Pears" capacity would be exceeded (including vehicle 3) and at least one vehicle's distance limit would be exceeded (including vehicle 1).
func (*SkippedShipment_Reason) Descriptor
func (*SkippedShipment_Reason) Descriptor() ([]byte, []int)
Deprecated: Use SkippedShipment_Reason.ProtoReflect.Descriptor instead.
func (*SkippedShipment_Reason) GetCode
func (x *SkippedShipment_Reason) GetCode() SkippedShipment_Reason_Code
func (*SkippedShipment_Reason) GetExampleExceededCapacityType
func (x *SkippedShipment_Reason) GetExampleExceededCapacityType() string
func (*SkippedShipment_Reason) GetExampleVehicleIndex
func (x *SkippedShipment_Reason) GetExampleVehicleIndex() int32
func (*SkippedShipment_Reason) ProtoMessage
func (*SkippedShipment_Reason) ProtoMessage()
func (*SkippedShipment_Reason) ProtoReflect
func (x *SkippedShipment_Reason) ProtoReflect() protoreflect.Message
func (*SkippedShipment_Reason) Reset
func (x *SkippedShipment_Reason) Reset()
func (*SkippedShipment_Reason) String
func (x *SkippedShipment_Reason) String() string
SkippedShipment_Reason_Code
type SkippedShipment_Reason_Code int32
Code identifying the reason type. The order here is meaningless. In particular, it gives no indication of whether a given reason will appear before another in the solution, if both apply.
SkippedShipment_Reason_CODE_UNSPECIFIED, SkippedShipment_Reason_NO_VEHICLE, SkippedShipment_Reason_DEMAND_EXCEEDS_VEHICLE_CAPACITY, SkippedShipment_Reason_CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT, SkippedShipment_Reason_CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT, SkippedShipment_Reason_CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT, SkippedShipment_Reason_CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS, SkippedShipment_Reason_VEHICLE_NOT_ALLOWED
const (
// This should never be used.
SkippedShipment_Reason_CODE_UNSPECIFIED SkippedShipment_Reason_Code = 0
// There is no vehicle in the model making all shipments infeasible.
SkippedShipment_Reason_NO_VEHICLE SkippedShipment_Reason_Code = 1
// The demand of the shipment exceeds a vehicle's capacity for some
// capacity types, one of which is `example_exceeded_capacity_type`.
SkippedShipment_Reason_DEMAND_EXCEEDS_VEHICLE_CAPACITY SkippedShipment_Reason_Code = 2
// The minimum distance necessary to perform this shipment, i.e. from
// the vehicle's `start_location` to the shipment's pickup and/or delivery
// locations and to the vehicle's end location exceeds the vehicle's
// `route_distance_limit`.
//
// Note that for this computation we use the geodesic distances.
SkippedShipment_Reason_CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT SkippedShipment_Reason_Code = 3
// The minimum time necessary to perform this shipment, including travel
// time, wait time and service time exceeds the vehicle's
// `route_duration_limit`.
//
// Note: travel time is computed in the best-case scenario, namely as
// geodesic distance x 36 m/s (roughly 130 km/hour).
SkippedShipment_Reason_CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT SkippedShipment_Reason_Code = 4
// Same as above but we only compare minimum travel time and the
// vehicle's `travel_duration_limit`.
SkippedShipment_Reason_CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT SkippedShipment_Reason_Code = 5
// The vehicle cannot perform this shipment in the best-case scenario
// (see `CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT` for time
// computation) if it starts at its earliest start time: the total time
// would make the vehicle end after its latest end time.
SkippedShipment_Reason_CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS SkippedShipment_Reason_Code = 6
// The `allowed_vehicle_indices` field of the shipment is not empty and
// this vehicle does not belong to it.
SkippedShipment_Reason_VEHICLE_NOT_ALLOWED SkippedShipment_Reason_Code = 7
)
func (SkippedShipment_Reason_Code) Descriptor
func (SkippedShipment_Reason_Code) Descriptor() protoreflect.EnumDescriptor
func (SkippedShipment_Reason_Code) Enum
func (x SkippedShipment_Reason_Code) Enum() *SkippedShipment_Reason_Code
func (SkippedShipment_Reason_Code) EnumDescriptor
func (SkippedShipment_Reason_Code) EnumDescriptor() ([]byte, []int)
Deprecated: Use SkippedShipment_Reason_Code.Descriptor instead.
func (SkippedShipment_Reason_Code) Number
func (x SkippedShipment_Reason_Code) Number() protoreflect.EnumNumber
func (SkippedShipment_Reason_Code) String
func (x SkippedShipment_Reason_Code) String() string
func (SkippedShipment_Reason_Code) Type
func (SkippedShipment_Reason_Code) Type() protoreflect.EnumType
TimeWindow
type TimeWindow struct {
StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
SoftStartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=soft_start_time,json=softStartTime,proto3" json:"soft_start_time,omitempty"`
SoftEndTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=soft_end_time,json=softEndTime,proto3" json:"soft_end_time,omitempty"`
CostPerHourBeforeSoftStartTime *float64 "" /* 169 byte string literal not displayed */
CostPerHourAfterSoftEndTime *float64 "" /* 160 byte string literal not displayed */
}
Time windows constrain the time of an event, such as the arrival time at a visit, or the start and end time of a vehicle.
Hard time window bounds, start_time
and end_time
, enforce the earliest
and latest time of the event, such that start_time <= event_time <=
end_time
. The soft time window lower bound, soft_start_time
, expresses a
preference for the event to happen at or after soft_start_time
by incurring
a cost proportional to how long before soft_start_time the event occurs. The
soft time window upper bound, soft_end_time
, expresses a preference for the
event to happen at or before soft_end_time
by incurring a cost proportional
to how long after soft_end_time
the event occurs. start_time
, end_time
,
soft_start_time
and soft_end_time
should be within the global time limits
(see
[ShipmentModel.global_start_time][google.maps.routeoptimization.v1.ShipmentModel.global_start_time]
and
[ShipmentModel.global_end_time][google.maps.routeoptimization.v1.ShipmentModel.global_end_time])
and should respect:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
func (*TimeWindow) Descriptor
func (*TimeWindow) Descriptor() ([]byte, []int)
Deprecated: Use TimeWindow.ProtoReflect.Descriptor instead.
func (*TimeWindow) GetCostPerHourAfterSoftEndTime
func (x *TimeWindow) GetCostPerHourAfterSoftEndTime() float64
func (*TimeWindow) GetCostPerHourBeforeSoftStartTime
func (x *TimeWindow) GetCostPerHourBeforeSoftStartTime() float64
func (*TimeWindow) GetEndTime
func (x *TimeWindow) GetEndTime() *timestamppb.Timestamp
func (*TimeWindow) GetSoftEndTime
func (x *TimeWindow) GetSoftEndTime() *timestamppb.Timestamp
func (*TimeWindow) GetSoftStartTime
func (x *TimeWindow) GetSoftStartTime() *timestamppb.Timestamp
func (*TimeWindow) GetStartTime
func (x *TimeWindow) GetStartTime() *timestamppb.Timestamp
func (*TimeWindow) ProtoMessage
func (*TimeWindow) ProtoMessage()
func (*TimeWindow) ProtoReflect
func (x *TimeWindow) ProtoReflect() protoreflect.Message
func (*TimeWindow) Reset
func (x *TimeWindow) Reset()
func (*TimeWindow) String
func (x *TimeWindow) String() string
TransitionAttributes
type TransitionAttributes struct {
// Tags defining the set of (src->dst) transitions these attributes apply to.
//
// A source visit or vehicle start matches iff its
// [VisitRequest.tags][google.maps.routeoptimization.v1.Shipment.VisitRequest.tags]
// or
// [Vehicle.start_tags][google.maps.routeoptimization.v1.Vehicle.start_tags]
// either contains `src_tag` or does not contain `excluded_src_tag` (depending
// on which of these two fields is non-empty).
SrcTag string `protobuf:"bytes,1,opt,name=src_tag,json=srcTag,proto3" json:"src_tag,omitempty"`
// See `src_tag`. Exactly one of `src_tag` and `excluded_src_tag` must be
// non-empty.
ExcludedSrcTag string `protobuf:"bytes,2,opt,name=excluded_src_tag,json=excludedSrcTag,proto3" json:"excluded_src_tag,omitempty"`
// A destination visit or vehicle end matches iff its
// [VisitRequest.tags][google.maps.routeoptimization.v1.Shipment.VisitRequest.tags]
// or [Vehicle.end_tags][google.maps.routeoptimization.v1.Vehicle.end_tags]
// either contains `dst_tag` or does not contain `excluded_dst_tag` (depending
// on which of these two fields is non-empty).
DstTag string `protobuf:"bytes,3,opt,name=dst_tag,json=dstTag,proto3" json:"dst_tag,omitempty"`
// See `dst_tag`. Exactly one of `dst_tag` and `excluded_dst_tag` must be
// non-empty.
ExcludedDstTag string `protobuf:"bytes,4,opt,name=excluded_dst_tag,json=excludedDstTag,proto3" json:"excluded_dst_tag,omitempty"`
// Specifies a cost for performing this transition. This is in the same unit
// as all other costs in the model and must not be negative. It is applied on
// top of all other existing costs.
Cost float64 `protobuf:"fixed64,5,opt,name=cost,proto3" json:"cost,omitempty"`
// Specifies a cost per kilometer applied to the distance traveled while
// performing this transition. It adds up to any
// [Vehicle.cost_per_kilometer][google.maps.routeoptimization.v1.Vehicle.cost_per_kilometer]
// specified on vehicles.
CostPerKilometer float64 `protobuf:"fixed64,6,opt,name=cost_per_kilometer,json=costPerKilometer,proto3" json:"cost_per_kilometer,omitempty"`
// Specifies a limit on the distance traveled while performing this
// transition.
//
// As of 2021/06, only soft limits are supported.
DistanceLimit *DistanceLimit `protobuf:"bytes,7,opt,name=distance_limit,json=distanceLimit,proto3" json:"distance_limit,omitempty"`
// Specifies a delay incurred when performing this transition.
//
// This delay always occurs *after* finishing the source visit and *before*
// starting the destination visit.
Delay *durationpb.Duration `protobuf:"bytes,8,opt,name=delay,proto3" json:"delay,omitempty"`
// contains filtered or unexported fields
}
Specifies attributes of transitions between two consecutive visits on a
route. Several TransitionAttributes
may apply to the same transition: in
that case, all extra costs add up and the strictest constraint or limit
applies (following natural "AND" semantics).
func (*TransitionAttributes) Descriptor
func (*TransitionAttributes) Descriptor() ([]byte, []int)
Deprecated: Use TransitionAttributes.ProtoReflect.Descriptor instead.
func (*TransitionAttributes) GetCost
func (x *TransitionAttributes) GetCost() float64
func (*TransitionAttributes) GetCostPerKilometer
func (x *TransitionAttributes) GetCostPerKilometer() float64
func (*TransitionAttributes) GetDelay
func (x *TransitionAttributes) GetDelay() *durationpb.Duration
func (*TransitionAttributes) GetDistanceLimit
func (x *TransitionAttributes) GetDistanceLimit() *DistanceLimit
func (*TransitionAttributes) GetDstTag
func (x *TransitionAttributes) GetDstTag() string
func (*TransitionAttributes) GetExcludedDstTag
func (x *TransitionAttributes) GetExcludedDstTag() string
func (*TransitionAttributes) GetExcludedSrcTag
func (x *TransitionAttributes) GetExcludedSrcTag() string
func (*TransitionAttributes) GetSrcTag
func (x *TransitionAttributes) GetSrcTag() string
func (*TransitionAttributes) ProtoMessage
func (*TransitionAttributes) ProtoMessage()
func (*TransitionAttributes) ProtoReflect
func (x *TransitionAttributes) ProtoReflect() protoreflect.Message
func (*TransitionAttributes) Reset
func (x *TransitionAttributes) Reset()
func (*TransitionAttributes) String
func (x *TransitionAttributes) String() string
UnimplementedRouteOptimizationServer
type UnimplementedRouteOptimizationServer struct {
}
UnimplementedRouteOptimizationServer can be embedded to have forward compatible implementations.
func (*UnimplementedRouteOptimizationServer) BatchOptimizeTours
func (*UnimplementedRouteOptimizationServer) BatchOptimizeTours(context.Context, *BatchOptimizeToursRequest) (*longrunningpb.Operation, error)
func (*UnimplementedRouteOptimizationServer) OptimizeTours
func (*UnimplementedRouteOptimizationServer) OptimizeTours(context.Context, *OptimizeToursRequest) (*OptimizeToursResponse, error)
Vehicle
type Vehicle struct {
DisplayName string `protobuf:"bytes,32,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
TravelMode Vehicle_TravelMode "" /* 149 byte string literal not displayed */
RouteModifiers *RouteModifiers `protobuf:"bytes,2,opt,name=route_modifiers,json=routeModifiers,proto3" json:"route_modifiers,omitempty"`
StartLocation *latlng.LatLng `protobuf:"bytes,3,opt,name=start_location,json=startLocation,proto3" json:"start_location,omitempty"`
StartWaypoint *Waypoint `protobuf:"bytes,4,opt,name=start_waypoint,json=startWaypoint,proto3" json:"start_waypoint,omitempty"`
EndLocation *latlng.LatLng `protobuf:"bytes,5,opt,name=end_location,json=endLocation,proto3" json:"end_location,omitempty"`
EndWaypoint *Waypoint `protobuf:"bytes,6,opt,name=end_waypoint,json=endWaypoint,proto3" json:"end_waypoint,omitempty"`
StartTags []string `protobuf:"bytes,7,rep,name=start_tags,json=startTags,proto3" json:"start_tags,omitempty"`
EndTags []string `protobuf:"bytes,8,rep,name=end_tags,json=endTags,proto3" json:"end_tags,omitempty"`
StartTimeWindows []*TimeWindow `protobuf:"bytes,9,rep,name=start_time_windows,json=startTimeWindows,proto3" json:"start_time_windows,omitempty"`
EndTimeWindows []*TimeWindow `protobuf:"bytes,10,rep,name=end_time_windows,json=endTimeWindows,proto3" json:"end_time_windows,omitempty"`
TravelDurationMultiple *float64 "" /* 138 byte string literal not displayed */
UnloadingPolicy Vehicle_UnloadingPolicy "" /* 170 byte string literal not displayed */
LoadLimits map[string]*Vehicle_LoadLimit "" /* 180 byte string literal not displayed */
CostPerHour float64 `protobuf:"fixed64,16,opt,name=cost_per_hour,json=costPerHour,proto3" json:"cost_per_hour,omitempty"`
CostPerTraveledHour float64 `protobuf:"fixed64,17,opt,name=cost_per_traveled_hour,json=costPerTraveledHour,proto3" json:"cost_per_traveled_hour,omitempty"`
CostPerKilometer float64 `protobuf:"fixed64,18,opt,name=cost_per_kilometer,json=costPerKilometer,proto3" json:"cost_per_kilometer,omitempty"`
FixedCost float64 `protobuf:"fixed64,19,opt,name=fixed_cost,json=fixedCost,proto3" json:"fixed_cost,omitempty"`
UsedIfRouteIsEmpty bool `protobuf:"varint,20,opt,name=used_if_route_is_empty,json=usedIfRouteIsEmpty,proto3" json:"used_if_route_is_empty,omitempty"`
RouteDurationLimit *Vehicle_DurationLimit `protobuf:"bytes,21,opt,name=route_duration_limit,json=routeDurationLimit,proto3" json:"route_duration_limit,omitempty"`
TravelDurationLimit *Vehicle_DurationLimit `protobuf:"bytes,22,opt,name=travel_duration_limit,json=travelDurationLimit,proto3" json:"travel_duration_limit,omitempty"`
RouteDistanceLimit *DistanceLimit `protobuf:"bytes,23,opt,name=route_distance_limit,json=routeDistanceLimit,proto3" json:"route_distance_limit,omitempty"`
ExtraVisitDurationForVisitType map[string]*durationpb.Duration "" /* 248 byte string literal not displayed */
BreakRule *BreakRule `protobuf:"bytes,25,opt,name=break_rule,json=breakRule,proto3" json:"break_rule,omitempty"`
Label string `protobuf:"bytes,27,opt,name=label,proto3" json:"label,omitempty"`
Ignore bool `protobuf:"varint,28,opt,name=ignore,proto3" json:"ignore,omitempty"`
}
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
).
func (*Vehicle) Descriptor
Deprecated: Use Vehicle.ProtoReflect.Descriptor instead.
func (*Vehicle) GetBreakRule
func (*Vehicle) GetCostPerHour
func (*Vehicle) GetCostPerKilometer
func (*Vehicle) GetCostPerTraveledHour
func (*Vehicle) GetDisplayName
func (*Vehicle) GetEndLocation
func (*Vehicle) GetEndTags
func (*Vehicle) GetEndTimeWindows
func (x *Vehicle) GetEndTimeWindows() []*TimeWindow
func (*Vehicle) GetEndWaypoint
func (*Vehicle) GetExtraVisitDurationForVisitType
func (x *Vehicle) GetExtraVisitDurationForVisitType() map[string]*durationpb.Duration
func (*Vehicle) GetFixedCost
func (*Vehicle) GetIgnore
func (*Vehicle) GetLabel
func (*Vehicle) GetLoadLimits
func (x *Vehicle) GetLoadLimits() map[string]*Vehicle_LoadLimit
func (*Vehicle) GetRouteDistanceLimit
func (x *Vehicle) GetRouteDistanceLimit() *DistanceLimit
func (*Vehicle) GetRouteDurationLimit
func (x *Vehicle) GetRouteDurationLimit() *Vehicle_DurationLimit
func (*Vehicle) GetRouteModifiers
func (x *Vehicle) GetRouteModifiers() *RouteModifiers
func (*Vehicle) GetStartLocation
func (*Vehicle) GetStartTags
func (*Vehicle) GetStartTimeWindows
func (x *Vehicle) GetStartTimeWindows() []*TimeWindow
func (*Vehicle) GetStartWaypoint
func (*Vehicle) GetTravelDurationLimit
func (x *Vehicle) GetTravelDurationLimit() *Vehicle_DurationLimit
func (*Vehicle) GetTravelDurationMultiple
func (*Vehicle) GetTravelMode
func (x *Vehicle) GetTravelMode() Vehicle_TravelMode
func (*Vehicle) GetUnloadingPolicy
func (x *Vehicle) GetUnloadingPolicy() Vehicle_UnloadingPolicy
func (*Vehicle) GetUsedIfRouteIsEmpty
func (*Vehicle) ProtoMessage
func (*Vehicle) ProtoMessage()
func (*Vehicle) ProtoReflect
func (x *Vehicle) ProtoReflect() protoreflect.Message
func (*Vehicle) Reset
func (x *Vehicle) Reset()
func (*Vehicle) String
Vehicle_DurationLimit
type Vehicle_DurationLimit struct {
MaxDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=max_duration,json=maxDuration,proto3" json:"max_duration,omitempty"`
SoftMaxDuration *durationpb.Duration `protobuf:"bytes,2,opt,name=soft_max_duration,json=softMaxDuration,proto3" json:"soft_max_duration,omitempty"`
CostPerHourAfterSoftMax *float64 "" /* 146 byte string literal not displayed */
QuadraticSoftMaxDuration *durationpb.Duration "" /* 137 byte string literal not displayed */
CostPerSquareHourAfterQuadraticSoftMax *float64 "" /* 195 byte string literal not displayed */
}
A limit defining a maximum duration of the route of a vehicle. It can be either hard or soft.
When a soft limit field is defined, both the soft max threshold and its associated cost must be defined together.
func (*Vehicle_DurationLimit) Descriptor
func (*Vehicle_DurationLimit) Descriptor() ([]byte, []int)
Deprecated: Use Vehicle_DurationLimit.ProtoReflect.Descriptor instead.
func (*Vehicle_DurationLimit) GetCostPerHourAfterSoftMax
func (x *Vehicle_DurationLimit) GetCostPerHourAfterSoftMax() float64
func (*Vehicle_DurationLimit) GetCostPerSquareHourAfterQuadraticSoftMax
func (x *Vehicle_DurationLimit) GetCostPerSquareHourAfterQuadraticSoftMax() float64
func (*Vehicle_DurationLimit) GetMaxDuration
func (x *Vehicle_DurationLimit) GetMaxDuration() *durationpb.Duration
func (*Vehicle_DurationLimit) GetQuadraticSoftMaxDuration
func (x *Vehicle_DurationLimit) GetQuadraticSoftMaxDuration() *durationpb.Duration
func (*Vehicle_DurationLimit) GetSoftMaxDuration
func (x *Vehicle_DurationLimit) GetSoftMaxDuration() *durationpb.Duration
func (*Vehicle_DurationLimit) ProtoMessage
func (*Vehicle_DurationLimit) ProtoMessage()
func (*Vehicle_DurationLimit) ProtoReflect
func (x *Vehicle_DurationLimit) ProtoReflect() protoreflect.Message
func (*Vehicle_DurationLimit) Reset
func (x *Vehicle_DurationLimit) Reset()
func (*Vehicle_DurationLimit) String
func (x *Vehicle_DurationLimit) String() string
Vehicle_LoadLimit
type Vehicle_LoadLimit struct {
MaxLoad *int64 `protobuf:"varint,1,opt,name=max_load,json=maxLoad,proto3,oneof" json:"max_load,omitempty"`
SoftMaxLoad int64 `protobuf:"varint,2,opt,name=soft_max_load,json=softMaxLoad,proto3" json:"soft_max_load,omitempty"`
CostPerUnitAboveSoftMax float64 "" /* 140 byte string literal not displayed */
StartLoadInterval *Vehicle_LoadLimit_Interval `protobuf:"bytes,4,opt,name=start_load_interval,json=startLoadInterval,proto3" json:"start_load_interval,omitempty"`
EndLoadInterval *Vehicle_LoadLimit_Interval `protobuf:"bytes,5,opt,name=end_load_interval,json=endLoadInterval,proto3" json:"end_load_interval,omitempty"`
}
Defines a load limit applying to a vehicle, e.g. "this truck may only carry up to 3500 kg". See [load_limits][google.maps.routeoptimization.v1.Vehicle.load_limits].
func (*Vehicle_LoadLimit) Descriptor
func (*Vehicle_LoadLimit) Descriptor() ([]byte, []int)
Deprecated: Use Vehicle_LoadLimit.ProtoReflect.Descriptor instead.
func (*Vehicle_LoadLimit) GetCostPerUnitAboveSoftMax
func (x *Vehicle_LoadLimit) GetCostPerUnitAboveSoftMax() float64
func (*Vehicle_LoadLimit) GetEndLoadInterval
func (x *Vehicle_LoadLimit) GetEndLoadInterval() *Vehicle_LoadLimit_Interval
func (*Vehicle_LoadLimit) GetMaxLoad
func (x *Vehicle_LoadLimit) GetMaxLoad() int64
func (*Vehicle_LoadLimit) GetSoftMaxLoad
func (x *Vehicle_LoadLimit) GetSoftMaxLoad() int64
func (*Vehicle_LoadLimit) GetStartLoadInterval
func (x *Vehicle_LoadLimit) GetStartLoadInterval() *Vehicle_LoadLimit_Interval
func (*Vehicle_LoadLimit) ProtoMessage
func (*Vehicle_LoadLimit) ProtoMessage()
func (*Vehicle_LoadLimit) ProtoReflect
func (x *Vehicle_LoadLimit) ProtoReflect() protoreflect.Message
func (*Vehicle_LoadLimit) Reset
func (x *Vehicle_LoadLimit) Reset()
func (*Vehicle_LoadLimit) String
func (x *Vehicle_LoadLimit) String() string
Vehicle_LoadLimit_Interval
type Vehicle_LoadLimit_Interval struct {
// A minimum acceptable load. Must be ≥ 0.
// If they're both specified,
// [min][google.maps.routeoptimization.v1.Vehicle.LoadLimit.Interval.min]
// must be ≤
// [max][google.maps.routeoptimization.v1.Vehicle.LoadLimit.Interval.max].
Min int64 `protobuf:"varint,1,opt,name=min,proto3" json:"min,omitempty"`
// A maximum acceptable load. Must be ≥ 0. If unspecified, the maximum
// load is unrestricted by this message.
// If they're both specified,
// [min][google.maps.routeoptimization.v1.Vehicle.LoadLimit.Interval.min]
// must be ≤
// [max][google.maps.routeoptimization.v1.Vehicle.LoadLimit.Interval.max].
Max *int64 `protobuf:"varint,2,opt,name=max,proto3,oneof" json:"max,omitempty"`
// contains filtered or unexported fields
}
Interval of acceptable load amounts.
func (*Vehicle_LoadLimit_Interval) Descriptor
func (*Vehicle_LoadLimit_Interval) Descriptor() ([]byte, []int)
Deprecated: Use Vehicle_LoadLimit_Interval.ProtoReflect.Descriptor instead.
func (*Vehicle_LoadLimit_Interval) GetMax
func (x *Vehicle_LoadLimit_Interval) GetMax() int64
func (*Vehicle_LoadLimit_Interval) GetMin
func (x *Vehicle_LoadLimit_Interval) GetMin() int64
func (*Vehicle_LoadLimit_Interval) ProtoMessage
func (*Vehicle_LoadLimit_Interval) ProtoMessage()
func (*Vehicle_LoadLimit_Interval) ProtoReflect
func (x *Vehicle_LoadLimit_Interval) ProtoReflect() protoreflect.Message
func (*Vehicle_LoadLimit_Interval) Reset
func (x *Vehicle_LoadLimit_Interval) Reset()
func (*Vehicle_LoadLimit_Interval) String
func (x *Vehicle_LoadLimit_Interval) String() string
Vehicle_TravelMode
type Vehicle_TravelMode int32
Travel modes which can be used by vehicles.
These should be a subset of the Google Maps Platform Routes Preferred API travel modes, see: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
Vehicle_TRAVEL_MODE_UNSPECIFIED, Vehicle_DRIVING, Vehicle_WALKING
const (
// Unspecified travel mode, equivalent to `DRIVING`.
Vehicle_TRAVEL_MODE_UNSPECIFIED Vehicle_TravelMode = 0
// Travel mode corresponding to driving directions (car, ...).
Vehicle_DRIVING Vehicle_TravelMode = 1
// Travel mode corresponding to walking directions.
Vehicle_WALKING Vehicle_TravelMode = 2
)
func (Vehicle_TravelMode) Descriptor
func (Vehicle_TravelMode) Descriptor() protoreflect.EnumDescriptor
func (Vehicle_TravelMode) Enum
func (x Vehicle_TravelMode) Enum() *Vehicle_TravelMode
func (Vehicle_TravelMode) EnumDescriptor
func (Vehicle_TravelMode) EnumDescriptor() ([]byte, []int)
Deprecated: Use Vehicle_TravelMode.Descriptor instead.
func (Vehicle_TravelMode) Number
func (x Vehicle_TravelMode) Number() protoreflect.EnumNumber
func (Vehicle_TravelMode) String
func (x Vehicle_TravelMode) String() string
func (Vehicle_TravelMode) Type
func (Vehicle_TravelMode) Type() protoreflect.EnumType
Vehicle_UnloadingPolicy
type Vehicle_UnloadingPolicy int32
Policy on how a vehicle can be unloaded. Applies only to shipments having both a pickup and a delivery.
Other shipments are free to occur anywhere on the route independent of
unloading_policy
.
Vehicle_UNLOADING_POLICY_UNSPECIFIED, Vehicle_LAST_IN_FIRST_OUT, Vehicle_FIRST_IN_FIRST_OUT
const (
// Unspecified unloading policy; deliveries must just occur after their
// corresponding pickups.
Vehicle_UNLOADING_POLICY_UNSPECIFIED Vehicle_UnloadingPolicy = 0
// Deliveries must occur in reverse order of pickups
Vehicle_LAST_IN_FIRST_OUT Vehicle_UnloadingPolicy = 1
// Deliveries must occur in the same order as pickups
Vehicle_FIRST_IN_FIRST_OUT Vehicle_UnloadingPolicy = 2
)
func (Vehicle_UnloadingPolicy) Descriptor
func (Vehicle_UnloadingPolicy) Descriptor() protoreflect.EnumDescriptor
func (Vehicle_UnloadingPolicy) Enum
func (x Vehicle_UnloadingPolicy) Enum() *Vehicle_UnloadingPolicy
func (Vehicle_UnloadingPolicy) EnumDescriptor
func (Vehicle_UnloadingPolicy) EnumDescriptor() ([]byte, []int)
Deprecated: Use Vehicle_UnloadingPolicy.Descriptor instead.
func (Vehicle_UnloadingPolicy) Number
func (x Vehicle_UnloadingPolicy) Number() protoreflect.EnumNumber
func (Vehicle_UnloadingPolicy) String
func (x Vehicle_UnloadingPolicy) String() string
func (Vehicle_UnloadingPolicy) Type
func (Vehicle_UnloadingPolicy) Type() protoreflect.EnumType
Waypoint
type Waypoint struct {
// Different ways to represent a location.
//
// Types that are assignable to LocationType:
//
// *Waypoint_Location
// *Waypoint_PlaceId
LocationType isWaypoint_LocationType `protobuf_oneof:"location_type"`
// Optional. Indicates that the location of this waypoint is meant to have a
// preference for the vehicle to stop at a particular side of road. When you
// set this value, the route will pass through the location so that the
// vehicle can stop at the side of road that the location is biased towards
// from the center of the road. This option doesn't work for the 'WALKING'
// travel mode.
SideOfRoad bool `protobuf:"varint,3,opt,name=side_of_road,json=sideOfRoad,proto3" json:"side_of_road,omitempty"`
// contains filtered or unexported fields
}
Encapsulates a waypoint. Waypoints mark arrival and departure locations of VisitRequests, and start and end locations of Vehicles.
func (*Waypoint) Descriptor
Deprecated: Use Waypoint.ProtoReflect.Descriptor instead.
func (*Waypoint) GetLocation
func (*Waypoint) GetLocationType
func (m *Waypoint) GetLocationType() isWaypoint_LocationType
func (*Waypoint) GetPlaceId
func (*Waypoint) GetSideOfRoad
func (*Waypoint) ProtoMessage
func (*Waypoint) ProtoMessage()
func (*Waypoint) ProtoReflect
func (x *Waypoint) ProtoReflect() protoreflect.Message
func (*Waypoint) Reset
func (x *Waypoint) Reset()
func (*Waypoint) String
Waypoint_Location
type Waypoint_Location struct {
// A point specified using geographic coordinates, including an optional
// heading.
Location *Location `protobuf:"bytes,1,opt,name=location,proto3,oneof"`
}
Waypoint_PlaceId
type Waypoint_PlaceId struct {
// The POI Place ID associated with the waypoint.
PlaceId string `protobuf:"bytes,2,opt,name=place_id,json=placeId,proto3,oneof"`
}