google-cloud-optimization-v1 0.4.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/google/cloud/optimization/v1/fleet_routing/client.rb +19 -10
- data/lib/google/cloud/optimization/v1/fleet_routing/operations.rb +10 -1
- data/lib/google/cloud/optimization/v1/fleet_routing/rest/client.rb +48 -9
- data/lib/google/cloud/optimization/v1/fleet_routing/rest/operations.rb +75 -0
- data/lib/google/cloud/optimization/v1/fleet_routing_pb.rb +1 -1
- data/lib/google/cloud/optimization/v1/version.rb +1 -1
- data/proto_docs/google/api/field_behavior.rb +14 -0
- data/proto_docs/google/cloud/optimization/v1/fleet_routing.rb +36 -14
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 347fef24129900a80d6dc6efd44f8b744f6294b8171e02b97f584a18c1616a8d
|
4
|
+
data.tar.gz: 0a7408ff319b60fc1b73f00b9cb2f4477c3449999c131d83f89b0ddc9d5188a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1a7fefdef63ed207fd9df2b9378590ec5116f6c11a58a35472d3919dd686393210fdbe14df2e787f005d237d9e0b012e70036e6c3431fb0b85af58d9e2a785f
|
7
|
+
data.tar.gz: 0feb6fe400465bf52e9e3c00ee3beda8a56447a020a429382039f78fcb7dfe3d87b43c6b718935502c7c31c6e18837a17faffa515a071d7ecef686e6bf07859b
|
@@ -168,7 +168,8 @@ module Google
|
|
168
168
|
credentials: credentials,
|
169
169
|
endpoint: @config.endpoint,
|
170
170
|
channel_args: @config.channel_args,
|
171
|
-
interceptors: @config.interceptors
|
171
|
+
interceptors: @config.interceptors,
|
172
|
+
channel_pool_config: @config.channel_pool
|
172
173
|
)
|
173
174
|
end
|
174
175
|
|
@@ -207,7 +208,7 @@ module Google
|
|
207
208
|
# @param options [::Gapic::CallOptions, ::Hash]
|
208
209
|
# Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
|
209
210
|
#
|
210
|
-
# @overload optimize_tours(parent: nil, timeout: nil, model: nil, solving_mode: nil,
|
211
|
+
# @overload optimize_tours(parent: nil, timeout: nil, model: nil, solving_mode: nil, search_mode: nil, injected_first_solution_routes: nil, injected_solution_constraint: nil, refresh_details_routes: nil, interpret_injected_solutions_using_labels: nil, consider_road_traffic: nil, populate_polylines: nil, populate_transition_polylines: nil, allow_large_deadline_despite_interruption_risk: nil, use_geodesic_distances: nil, geodesic_meters_per_second: nil, max_validation_errors: nil, label: nil, populate_travel_step_polylines: nil)
|
211
212
|
# Pass arguments to `optimize_tours` via keyword arguments. Note that at
|
212
213
|
# least one keyword argument is required. To specify no parameters, or to keep all
|
213
214
|
# the default parameter values, pass an empty Hash as a request object (see above).
|
@@ -229,14 +230,6 @@ module Google
|
|
229
230
|
# Shipment model to solve.
|
230
231
|
# @param solving_mode [::Google::Cloud::Optimization::V1::OptimizeToursRequest::SolvingMode]
|
231
232
|
# By default, the solving mode is `DEFAULT_SOLVE` (0).
|
232
|
-
# @param max_validation_errors [::Integer]
|
233
|
-
# Truncates the number of validation errors returned. These errors are
|
234
|
-
# typically attached to an INVALID_ARGUMENT error payload as a BadRequest
|
235
|
-
# error detail (https://cloud.google.com/apis/design/errors#error_details),
|
236
|
-
# unless solving_mode=VALIDATE_ONLY: see the
|
237
|
-
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#validation_errors OptimizeToursResponse.validation_errors}
|
238
|
-
# field.
|
239
|
-
# This defaults to 100 and is capped at 10,000.
|
240
233
|
# @param search_mode [::Google::Cloud::Optimization::V1::OptimizeToursRequest::SearchMode]
|
241
234
|
# Search mode used to solve the request.
|
242
235
|
# @param injected_first_solution_routes [::Array<::Google::Cloud::Optimization::V1::ShipmentRoute, ::Hash>]
|
@@ -391,6 +384,14 @@ module Google
|
|
391
384
|
# When `use_geodesic_distances` is true, this field must be set and defines
|
392
385
|
# the speed applied to compute travel times. Its value must be at least 1.0
|
393
386
|
# meters/seconds.
|
387
|
+
# @param max_validation_errors [::Integer]
|
388
|
+
# Truncates the number of validation errors returned. These errors are
|
389
|
+
# typically attached to an INVALID_ARGUMENT error payload as a BadRequest
|
390
|
+
# error detail (https://cloud.google.com/apis/design/errors#error_details),
|
391
|
+
# unless solving_mode=VALIDATE_ONLY: see the
|
392
|
+
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#validation_errors OptimizeToursResponse.validation_errors}
|
393
|
+
# field.
|
394
|
+
# This defaults to 100 and is capped at 10,000.
|
394
395
|
# @param label [::String]
|
395
396
|
# Label that may be used to identify this request, reported back in the
|
396
397
|
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#request_label OptimizeToursResponse.request_label}.
|
@@ -694,6 +695,14 @@ module Google
|
|
694
695
|
end
|
695
696
|
end
|
696
697
|
|
698
|
+
##
|
699
|
+
# Configuration for the channel pool
|
700
|
+
# @return [::Gapic::ServiceStub::ChannelPool::Configuration]
|
701
|
+
#
|
702
|
+
def channel_pool
|
703
|
+
@channel_pool ||= ::Gapic::ServiceStub::ChannelPool::Configuration.new
|
704
|
+
end
|
705
|
+
|
697
706
|
##
|
698
707
|
# Configuration RPC class for the FleetRouting API.
|
699
708
|
#
|
@@ -93,7 +93,8 @@ module Google
|
|
93
93
|
credentials: credentials,
|
94
94
|
endpoint: @config.endpoint,
|
95
95
|
channel_args: @config.channel_args,
|
96
|
-
interceptors: @config.interceptors
|
96
|
+
interceptors: @config.interceptors,
|
97
|
+
channel_pool_config: @config.channel_pool
|
97
98
|
)
|
98
99
|
|
99
100
|
# Used by an LRO wrapper for some methods of this service
|
@@ -701,6 +702,14 @@ module Google
|
|
701
702
|
end
|
702
703
|
end
|
703
704
|
|
705
|
+
##
|
706
|
+
# Configuration for the channel pool
|
707
|
+
# @return [::Gapic::ServiceStub::ChannelPool::Configuration]
|
708
|
+
#
|
709
|
+
def channel_pool
|
710
|
+
@channel_pool ||= ::Gapic::ServiceStub::ChannelPool::Configuration.new
|
711
|
+
end
|
712
|
+
|
704
713
|
##
|
705
714
|
# Configuration RPC class for the Operations API.
|
706
715
|
#
|
@@ -198,7 +198,7 @@ module Google
|
|
198
198
|
# @param options [::Gapic::CallOptions, ::Hash]
|
199
199
|
# Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
|
200
200
|
#
|
201
|
-
# @overload optimize_tours(parent: nil, timeout: nil, model: nil, solving_mode: nil,
|
201
|
+
# @overload optimize_tours(parent: nil, timeout: nil, model: nil, solving_mode: nil, search_mode: nil, injected_first_solution_routes: nil, injected_solution_constraint: nil, refresh_details_routes: nil, interpret_injected_solutions_using_labels: nil, consider_road_traffic: nil, populate_polylines: nil, populate_transition_polylines: nil, allow_large_deadline_despite_interruption_risk: nil, use_geodesic_distances: nil, geodesic_meters_per_second: nil, max_validation_errors: nil, label: nil, populate_travel_step_polylines: nil)
|
202
202
|
# Pass arguments to `optimize_tours` via keyword arguments. Note that at
|
203
203
|
# least one keyword argument is required. To specify no parameters, or to keep all
|
204
204
|
# the default parameter values, pass an empty Hash as a request object (see above).
|
@@ -220,14 +220,6 @@ module Google
|
|
220
220
|
# Shipment model to solve.
|
221
221
|
# @param solving_mode [::Google::Cloud::Optimization::V1::OptimizeToursRequest::SolvingMode]
|
222
222
|
# By default, the solving mode is `DEFAULT_SOLVE` (0).
|
223
|
-
# @param max_validation_errors [::Integer]
|
224
|
-
# Truncates the number of validation errors returned. These errors are
|
225
|
-
# typically attached to an INVALID_ARGUMENT error payload as a BadRequest
|
226
|
-
# error detail (https://cloud.google.com/apis/design/errors#error_details),
|
227
|
-
# unless solving_mode=VALIDATE_ONLY: see the
|
228
|
-
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#validation_errors OptimizeToursResponse.validation_errors}
|
229
|
-
# field.
|
230
|
-
# This defaults to 100 and is capped at 10,000.
|
231
223
|
# @param search_mode [::Google::Cloud::Optimization::V1::OptimizeToursRequest::SearchMode]
|
232
224
|
# Search mode used to solve the request.
|
233
225
|
# @param injected_first_solution_routes [::Array<::Google::Cloud::Optimization::V1::ShipmentRoute, ::Hash>]
|
@@ -382,6 +374,14 @@ module Google
|
|
382
374
|
# When `use_geodesic_distances` is true, this field must be set and defines
|
383
375
|
# the speed applied to compute travel times. Its value must be at least 1.0
|
384
376
|
# meters/seconds.
|
377
|
+
# @param max_validation_errors [::Integer]
|
378
|
+
# Truncates the number of validation errors returned. These errors are
|
379
|
+
# typically attached to an INVALID_ARGUMENT error payload as a BadRequest
|
380
|
+
# error detail (https://cloud.google.com/apis/design/errors#error_details),
|
381
|
+
# unless solving_mode=VALIDATE_ONLY: see the
|
382
|
+
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#validation_errors OptimizeToursResponse.validation_errors}
|
383
|
+
# field.
|
384
|
+
# This defaults to 100 and is capped at 10,000.
|
385
385
|
# @param label [::String]
|
386
386
|
# Label that may be used to identify this request, reported back in the
|
387
387
|
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#request_label OptimizeToursResponse.request_label}.
|
@@ -399,6 +399,22 @@ module Google
|
|
399
399
|
# @return [::Google::Cloud::Optimization::V1::OptimizeToursResponse]
|
400
400
|
#
|
401
401
|
# @raise [::Google::Cloud::Error] if the REST call is aborted.
|
402
|
+
#
|
403
|
+
# @example Basic example
|
404
|
+
# require "google/cloud/optimization/v1"
|
405
|
+
#
|
406
|
+
# # Create a client object. The client can be reused for multiple calls.
|
407
|
+
# client = Google::Cloud::Optimization::V1::FleetRouting::Rest::Client.new
|
408
|
+
#
|
409
|
+
# # Create a request. To set request fields, pass in keyword arguments.
|
410
|
+
# request = Google::Cloud::Optimization::V1::OptimizeToursRequest.new
|
411
|
+
#
|
412
|
+
# # Call the optimize_tours method.
|
413
|
+
# result = client.optimize_tours request
|
414
|
+
#
|
415
|
+
# # The returned object is of type Google::Cloud::Optimization::V1::OptimizeToursResponse.
|
416
|
+
# p result
|
417
|
+
#
|
402
418
|
def optimize_tours request, options = nil
|
403
419
|
raise ::ArgumentError, "request must be provided" if request.nil?
|
404
420
|
|
@@ -477,6 +493,29 @@ module Google
|
|
477
493
|
# @return [::Gapic::Operation]
|
478
494
|
#
|
479
495
|
# @raise [::Google::Cloud::Error] if the REST call is aborted.
|
496
|
+
#
|
497
|
+
# @example Basic example
|
498
|
+
# require "google/cloud/optimization/v1"
|
499
|
+
#
|
500
|
+
# # Create a client object. The client can be reused for multiple calls.
|
501
|
+
# client = Google::Cloud::Optimization::V1::FleetRouting::Rest::Client.new
|
502
|
+
#
|
503
|
+
# # Create a request. To set request fields, pass in keyword arguments.
|
504
|
+
# request = Google::Cloud::Optimization::V1::BatchOptimizeToursRequest.new
|
505
|
+
#
|
506
|
+
# # Call the batch_optimize_tours method.
|
507
|
+
# result = client.batch_optimize_tours request
|
508
|
+
#
|
509
|
+
# # The returned object is of type Gapic::Operation. You can use it to
|
510
|
+
# # check the status of an operation, cancel it, or wait for results.
|
511
|
+
# # Here is how to wait for a response.
|
512
|
+
# result.wait_until_done! timeout: 60
|
513
|
+
# if result.response?
|
514
|
+
# p result.response
|
515
|
+
# else
|
516
|
+
# puts "No response received."
|
517
|
+
# end
|
518
|
+
#
|
480
519
|
def batch_optimize_tours request, options = nil
|
481
520
|
raise ::ArgumentError, "request must be provided" if request.nil?
|
482
521
|
|
@@ -136,6 +136,26 @@ module Google
|
|
136
136
|
# @return [::Gapic::Operation]
|
137
137
|
#
|
138
138
|
# @raise [::Google::Cloud::Error] if the REST call is aborted.
|
139
|
+
#
|
140
|
+
# @example Basic example
|
141
|
+
# require "google/longrunning"
|
142
|
+
#
|
143
|
+
# # Create a client object. The client can be reused for multiple calls.
|
144
|
+
# client = Google::Longrunning::Operations::Rest::Client.new
|
145
|
+
#
|
146
|
+
# # Create a request. To set request fields, pass in keyword arguments.
|
147
|
+
# request = Google::Longrunning::ListOperationsRequest.new
|
148
|
+
#
|
149
|
+
# # Call the list_operations method.
|
150
|
+
# result = client.list_operations request
|
151
|
+
#
|
152
|
+
# # The returned object is of type Gapic::PagedEnumerable. You can iterate
|
153
|
+
# # over elements, and API calls will be issued to fetch pages as needed.
|
154
|
+
# result.each do |item|
|
155
|
+
# # Each element is of type ::Google::Longrunning::Operation.
|
156
|
+
# p item
|
157
|
+
# end
|
158
|
+
#
|
139
159
|
def list_operations request, options = nil
|
140
160
|
raise ::ArgumentError, "request must be provided" if request.nil?
|
141
161
|
|
@@ -201,6 +221,29 @@ module Google
|
|
201
221
|
# @return [::Gapic::Operation]
|
202
222
|
#
|
203
223
|
# @raise [::Google::Cloud::Error] if the REST call is aborted.
|
224
|
+
#
|
225
|
+
# @example Basic example
|
226
|
+
# require "google/longrunning"
|
227
|
+
#
|
228
|
+
# # Create a client object. The client can be reused for multiple calls.
|
229
|
+
# client = Google::Longrunning::Operations::Rest::Client.new
|
230
|
+
#
|
231
|
+
# # Create a request. To set request fields, pass in keyword arguments.
|
232
|
+
# request = Google::Longrunning::GetOperationRequest.new
|
233
|
+
#
|
234
|
+
# # Call the get_operation method.
|
235
|
+
# result = client.get_operation request
|
236
|
+
#
|
237
|
+
# # The returned object is of type Gapic::Operation. You can use it to
|
238
|
+
# # check the status of an operation, cancel it, or wait for results.
|
239
|
+
# # Here is how to wait for a response.
|
240
|
+
# result.wait_until_done! timeout: 60
|
241
|
+
# if result.response?
|
242
|
+
# p result.response
|
243
|
+
# else
|
244
|
+
# puts "No response received."
|
245
|
+
# end
|
246
|
+
#
|
204
247
|
def get_operation request, options = nil
|
205
248
|
raise ::ArgumentError, "request must be provided" if request.nil?
|
206
249
|
|
@@ -267,6 +310,22 @@ module Google
|
|
267
310
|
# @return [::Google::Protobuf::Empty]
|
268
311
|
#
|
269
312
|
# @raise [::Google::Cloud::Error] if the REST call is aborted.
|
313
|
+
#
|
314
|
+
# @example Basic example
|
315
|
+
# require "google/longrunning"
|
316
|
+
#
|
317
|
+
# # Create a client object. The client can be reused for multiple calls.
|
318
|
+
# client = Google::Longrunning::Operations::Rest::Client.new
|
319
|
+
#
|
320
|
+
# # Create a request. To set request fields, pass in keyword arguments.
|
321
|
+
# request = Google::Longrunning::DeleteOperationRequest.new
|
322
|
+
#
|
323
|
+
# # Call the delete_operation method.
|
324
|
+
# result = client.delete_operation request
|
325
|
+
#
|
326
|
+
# # The returned object is of type Google::Protobuf::Empty.
|
327
|
+
# p result
|
328
|
+
#
|
270
329
|
def delete_operation request, options = nil
|
271
330
|
raise ::ArgumentError, "request must be provided" if request.nil?
|
272
331
|
|
@@ -338,6 +397,22 @@ module Google
|
|
338
397
|
# @return [::Google::Protobuf::Empty]
|
339
398
|
#
|
340
399
|
# @raise [::Google::Cloud::Error] if the REST call is aborted.
|
400
|
+
#
|
401
|
+
# @example Basic example
|
402
|
+
# require "google/longrunning"
|
403
|
+
#
|
404
|
+
# # Create a client object. The client can be reused for multiple calls.
|
405
|
+
# client = Google::Longrunning::Operations::Rest::Client.new
|
406
|
+
#
|
407
|
+
# # Create a request. To set request fields, pass in keyword arguments.
|
408
|
+
# request = Google::Longrunning::CancelOperationRequest.new
|
409
|
+
#
|
410
|
+
# # Call the cancel_operation method.
|
411
|
+
# result = client.cancel_operation request
|
412
|
+
#
|
413
|
+
# # The returned object is of type Google::Protobuf::Empty.
|
414
|
+
# p result
|
415
|
+
#
|
341
416
|
def cancel_operation request, options = nil
|
342
417
|
raise ::ArgumentError, "request must be provided" if request.nil?
|
343
418
|
|
@@ -14,7 +14,7 @@ require 'google/protobuf/timestamp_pb'
|
|
14
14
|
require 'google/type/latlng_pb'
|
15
15
|
|
16
16
|
|
17
|
-
descriptor_data = "\n0google/cloud/optimization/v1/fleet_routing.proto\x12\x1cgoogle.cloud.optimization.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a.google/cloud/optimization/v1/async_model.proto\x1a#google/longrunning/operations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x18google/type/latlng.proto\"\xa4\t\n\x14OptimizeToursRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12*\n\x07timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12:\n\x05model\x18\x03 \x01(\x0b\x32+.google.cloud.optimization.v1.ShipmentModel\x12T\n\x0csolving_mode\x18\x04 \x01(\x0e\x32>.google.cloud.optimization.v1.OptimizeToursRequest.SolvingMode\x12\"\n\x15max_validation_errors\x18\x05 \x01(\x05H\x00\x88\x01\x01\x12R\n\x0bsearch_mode\x18\x06 \x01(\x0e\x32=.google.cloud.optimization.v1.OptimizeToursRequest.SearchMode\x12S\n\x1einjected_first_solution_routes\x18\x07 \x03(\x0b\x32+.google.cloud.optimization.v1.ShipmentRoute\x12^\n\x1cinjected_solution_constraint\x18\x08 \x01(\x0b\x32\x38.google.cloud.optimization.v1.InjectedSolutionConstraint\x12K\n\x16refresh_details_routes\x18\t \x03(\x0b\x32+.google.cloud.optimization.v1.ShipmentRoute\x12\x31\n)interpret_injected_solutions_using_labels\x18\n \x01(\x08\x12\x1d\n\x15\x63onsider_road_traffic\x18\x0b \x01(\x08\x12\x1a\n\x12populate_polylines\x18\x0c \x01(\x08\x12%\n\x1dpopulate_transition_polylines\x18\r \x01(\x08\x12\x36\n.allow_large_deadline_despite_interruption_risk\x18\x0e \x01(\x08\x12\x1e\n\x16use_geodesic_distances\x18\x0f \x01(\x08\x12\'\n\x1ageodesic_meters_per_second\x18\x10 \x01(\x01H\x01\x88\x01\x01\x12\r\n\x05label\x18\x11 \x01(\t\x12*\n\x1epopulate_travel_step_polylines\x18\x14 \x01(\x08\x42\x02\x18\x01\"Y\n\x0bSolvingMode\x12\x11\n\rDEFAULT_SOLVE\x10\x00\x12\x11\n\rVALIDATE_ONLY\x10\x01\x12$\n DETECT_SOME_INFEASIBLE_SHIPMENTS\x10\x02\"Z\n\nSearchMode\x12\x1b\n\x17SEARCH_MODE_UNSPECIFIED\x10\x00\x12\x0f\n\x0bRETURN_FAST\x10\x01\x12\x1e\n\x1a\x43ONSUME_ALL_AVAILABLE_TIME\x10\x02\x42\x18\n\x16_max_validation_errorsB\x1d\n\x1b_geodesic_meters_per_second\"\xae\x06\n\x15OptimizeToursResponse\x12;\n\x06routes\x18\x01 \x03(\x0b\x32+.google.cloud.optimization.v1.ShipmentRoute\x12\x15\n\rrequest_label\x18\x03 \x01(\t\x12H\n\x11skipped_shipments\x18\x04 \x03(\x0b\x32-.google.cloud.optimization.v1.SkippedShipment\x12U\n\x11validation_errors\x18\x05 \x03(\x0b\x32:.google.cloud.optimization.v1.OptimizeToursValidationError\x12L\n\x07metrics\x18\x06 \x01(\x0b\x32;.google.cloud.optimization.v1.OptimizeToursResponse.Metrics\x12\x16\n\ntotal_cost\x18\x02 \x01(\x01\x42\x02\x18\x01\x1a\xb9\x03\n\x07Metrics\x12Q\n\x18\x61ggregated_route_metrics\x18\x01 \x01(\x0b\x32/.google.cloud.optimization.v1.AggregatedMetrics\x12(\n skipped_mandatory_shipment_count\x18\x02 \x01(\x05\x12\x1a\n\x12used_vehicle_count\x18\x03 \x01(\x05\x12?\n\x1b\x65\x61rliest_vehicle_start_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12;\n\x17latest_vehicle_end_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12U\n\x05\x63osts\x18\n \x03(\x0b\x32\x46.google.cloud.optimization.v1.OptimizeToursResponse.Metrics.CostsEntry\x12\x12\n\ntotal_cost\x18\x06 \x01(\x01\x1a,\n\nCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"\xeb\x02\n\x19\x42\x61tchOptimizeToursRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x64\n\rmodel_configs\x18\x02 \x03(\x0b\x32H.google.cloud.optimization.v1.BatchOptimizeToursRequest.AsyncModelConfigB\x03\xe0\x41\x02\x1a\xd2\x01\n\x10\x41syncModelConfig\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x44\n\x0cinput_config\x18\x02 \x01(\x0b\x32).google.cloud.optimization.v1.InputConfigB\x03\xe0\x41\x02\x12\x46\n\routput_config\x18\x03 \x01(\x0b\x32*.google.cloud.optimization.v1.OutputConfigB\x03\xe0\x41\x02\x12\x1a\n\x12\x65nable_checkpoints\x18\x04 \x01(\x08\"\x1c\n\x1a\x42\x61tchOptimizeToursResponse\"\x9a\x0f\n\rShipmentModel\x12\x39\n\tshipments\x18\x01 \x03(\x0b\x32&.google.cloud.optimization.v1.Shipment\x12\x37\n\x08vehicles\x18\x02 \x03(\x0b\x32%.google.cloud.optimization.v1.Vehicle\x12 \n\x13max_active_vehicles\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x35\n\x11global_start_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\x0fglobal_end_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12%\n\x1dglobal_duration_cost_per_hour\x18\x07 \x01(\x01\x12\x66\n\x1a\x64uration_distance_matrices\x18\x08 \x03(\x0b\x32\x42.google.cloud.optimization.v1.ShipmentModel.DurationDistanceMatrix\x12)\n!duration_distance_matrix_src_tags\x18\t \x03(\t\x12)\n!duration_distance_matrix_dst_tags\x18\n \x03(\t\x12Q\n\x15transition_attributes\x18\x0b \x03(\x0b\x32\x32.google.cloud.optimization.v1.TransitionAttributes\x12\x62\n\x1fshipment_type_incompatibilities\x18\x0c \x03(\x0b\x32\x39.google.cloud.optimization.v1.ShipmentTypeIncompatibility\x12Y\n\x1ashipment_type_requirements\x18\r \x03(\x0b\x32\x35.google.cloud.optimization.v1.ShipmentTypeRequirement\x12T\n\x10precedence_rules\x18\x0e \x03(\x0b\x32:.google.cloud.optimization.v1.ShipmentModel.PrecedenceRule\x12N\n\x0b\x62reak_rules\x18\x0f \x03(\x0b\x32\x35.google.cloud.optimization.v1.ShipmentModel.BreakRuleB\x02\x18\x01\x1a\xce\x01\n\x16\x44urationDistanceMatrix\x12T\n\x04rows\x18\x01 \x03(\x0b\x32\x46.google.cloud.optimization.v1.ShipmentModel.DurationDistanceMatrix.Row\x12\x19\n\x11vehicle_start_tag\x18\x02 \x01(\t\x1a\x43\n\x03Row\x12,\n\tdurations\x18\x01 \x03(\x0b\x32\x19.google.protobuf.Duration\x12\x0e\n\x06meters\x18\x02 \x03(\x01\x1a\xd1\x01\n\x0ePrecedenceRule\x12\x18\n\x0b\x66irst_index\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\x19\n\x11\x66irst_is_delivery\x18\x03 \x01(\x08\x12\x19\n\x0csecond_index\x18\x02 \x01(\x05H\x01\x88\x01\x01\x12\x1a\n\x12second_is_delivery\x18\x04 \x01(\x08\x12\x32\n\x0foffset_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0e\n\x0c_first_indexB\x0f\n\r_second_index\x1a\xac\x04\n\tBreakRule\x12Z\n\x0e\x62reak_requests\x18\x01 \x03(\x0b\x32\x42.google.cloud.optimization.v1.ShipmentModel.BreakRule.BreakRequest\x12h\n\x15\x66requency_constraints\x18\x02 \x03(\x0b\x32I.google.cloud.optimization.v1.ShipmentModel.BreakRule.FrequencyConstraint\x1a\xbe\x01\n\x0c\x42reakRequest\x12<\n\x13\x65\x61rliest_start_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02\x12:\n\x11latest_start_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02\x12\x34\n\x0cmin_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02\x1a\x93\x01\n\x13\x46requencyConstraint\x12:\n\x12min_break_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02\x12@\n\x18max_inter_break_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02:\x02\x18\x01\x42\x16\n\x14_max_active_vehicles\"\x80\x0c\n\x08Shipment\x12\x44\n\x07pickups\x18\x01 \x03(\x0b\x32\x33.google.cloud.optimization.v1.Shipment.VisitRequest\x12G\n\ndeliveries\x18\x02 \x03(\x0b\x32\x33.google.cloud.optimization.v1.Shipment.VisitRequest\x12M\n\x0cload_demands\x18\x0e \x03(\x0b\x32\x37.google.cloud.optimization.v1.Shipment.LoadDemandsEntry\x12\x19\n\x0cpenalty_cost\x18\x04 \x01(\x01H\x00\x88\x01\x01\x12\x1f\n\x17\x61llowed_vehicle_indices\x18\x05 \x03(\x05\x12\x19\n\x11\x63osts_per_vehicle\x18\x06 \x03(\x01\x12!\n\x19\x63osts_per_vehicle_indices\x18\x07 \x03(\x05\x12\x35\n(pickup_to_delivery_relative_detour_limit\x18\x08 \x01(\x01H\x01\x88\x01\x01\x12K\n(pickup_to_delivery_absolute_detour_limit\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12@\n\x1dpickup_to_delivery_time_limit\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x15\n\rshipment_type\x18\x0b \x01(\t\x12\r\n\x05label\x18\x0c \x01(\t\x12\x0e\n\x06ignore\x18\r \x01(\x08\x12\x43\n\x07\x64\x65mands\x18\x03 \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x1a\xa3\x05\n\x0cVisitRequest\x12-\n\x10\x61rrival_location\x18\x01 \x01(\x0b\x32\x13.google.type.LatLng\x12@\n\x10\x61rrival_waypoint\x18\x02 \x01(\x0b\x32&.google.cloud.optimization.v1.Waypoint\x12/\n\x12\x64\x65parture_location\x18\x03 \x01(\x0b\x32\x13.google.type.LatLng\x12\x42\n\x12\x64\x65parture_waypoint\x18\x04 \x01(\x0b\x32&.google.cloud.optimization.v1.Waypoint\x12\x0c\n\x04tags\x18\x05 \x03(\t\x12>\n\x0ctime_windows\x18\x06 \x03(\x0b\x32(.google.cloud.optimization.v1.TimeWindow\x12+\n\x08\x64uration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04\x63ost\x18\x08 \x01(\x01\x12Z\n\x0cload_demands\x18\x0c \x03(\x0b\x32\x44.google.cloud.optimization.v1.Shipment.VisitRequest.LoadDemandsEntry\x12\x13\n\x0bvisit_types\x18\n \x03(\t\x12\r\n\x05label\x18\x0b \x01(\t\x12\x43\n\x07\x64\x65mands\x18\t \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x1a_\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.google.cloud.optimization.v1.Shipment.Load:\x02\x38\x01\x1a\x16\n\x04Load\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x1a_\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.google.cloud.optimization.v1.Shipment.Load:\x02\x38\x01\x42\x0f\n\r_penalty_costB+\n)_pickup_to_delivery_relative_detour_limit\"\xa2\x02\n\x1bShipmentTypeIncompatibility\x12\r\n\x05types\x18\x01 \x03(\t\x12k\n\x14incompatibility_mode\x18\x02 \x01(\x0e\x32M.google.cloud.optimization.v1.ShipmentTypeIncompatibility.IncompatibilityMode\"\x86\x01\n\x13IncompatibilityMode\x12$\n INCOMPATIBILITY_MODE_UNSPECIFIED\x10\x00\x12!\n\x1dNOT_PERFORMED_BY_SAME_VEHICLE\x10\x01\x12&\n\"NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY\x10\x02\"\xe8\x02\n\x17ShipmentTypeRequirement\x12+\n#required_shipment_type_alternatives\x18\x01 \x03(\t\x12 \n\x18\x64\x65pendent_shipment_types\x18\x02 \x03(\t\x12_\n\x10requirement_mode\x18\x03 \x01(\x0e\x32\x45.google.cloud.optimization.v1.ShipmentTypeRequirement.RequirementMode\"\x9c\x01\n\x0fRequirementMode\x12 \n\x1cREQUIREMENT_MODE_UNSPECIFIED\x10\x00\x12\x1d\n\x19PERFORMED_BY_SAME_VEHICLE\x10\x01\x12\"\n\x1eIN_SAME_VEHICLE_AT_PICKUP_TIME\x10\x02\x12$\n IN_SAME_VEHICLE_AT_DELIVERY_TIME\x10\x03\"\xc1\x14\n\x07Vehicle\x12\x45\n\x0btravel_mode\x18\x01 \x01(\x0e\x32\x30.google.cloud.optimization.v1.Vehicle.TravelMode\x12+\n\x0estart_location\x18\x03 \x01(\x0b\x32\x13.google.type.LatLng\x12>\n\x0estart_waypoint\x18\x04 \x01(\x0b\x32&.google.cloud.optimization.v1.Waypoint\x12)\n\x0c\x65nd_location\x18\x05 \x01(\x0b\x32\x13.google.type.LatLng\x12<\n\x0c\x65nd_waypoint\x18\x06 \x01(\x0b\x32&.google.cloud.optimization.v1.Waypoint\x12\x12\n\nstart_tags\x18\x07 \x03(\t\x12\x10\n\x08\x65nd_tags\x18\x08 \x03(\t\x12\x44\n\x12start_time_windows\x18\t \x03(\x0b\x32(.google.cloud.optimization.v1.TimeWindow\x12\x42\n\x10\x65nd_time_windows\x18\n \x03(\x0b\x32(.google.cloud.optimization.v1.TimeWindow\x12%\n\x18travel_duration_multiple\x18\x0b \x01(\x01H\x00\x88\x01\x01\x12O\n\x10unloading_policy\x18\x0c \x01(\x0e\x32\x35.google.cloud.optimization.v1.Vehicle.UnloadingPolicy\x12J\n\x0bload_limits\x18\x1e \x03(\x0b\x32\x35.google.cloud.optimization.v1.Vehicle.LoadLimitsEntry\x12\x15\n\rcost_per_hour\x18\x10 \x01(\x01\x12\x1e\n\x16\x63ost_per_traveled_hour\x18\x11 \x01(\x01\x12\x1a\n\x12\x63ost_per_kilometer\x18\x12 \x01(\x01\x12\x12\n\nfixed_cost\x18\x13 \x01(\x01\x12\x1e\n\x16used_if_route_is_empty\x18\x14 \x01(\x08\x12Q\n\x14route_duration_limit\x18\x15 \x01(\x0b\x32\x33.google.cloud.optimization.v1.Vehicle.DurationLimit\x12R\n\x15travel_duration_limit\x18\x16 \x01(\x0b\x32\x33.google.cloud.optimization.v1.Vehicle.DurationLimit\x12I\n\x14route_distance_limit\x18\x17 \x01(\x0b\x32+.google.cloud.optimization.v1.DistanceLimit\x12v\n#extra_visit_duration_for_visit_type\x18\x18 \x03(\x0b\x32I.google.cloud.optimization.v1.Vehicle.ExtraVisitDurationForVisitTypeEntry\x12;\n\nbreak_rule\x18\x19 \x01(\x0b\x32\'.google.cloud.optimization.v1.BreakRule\x12\r\n\x05label\x18\x1b \x01(\t\x12\x0e\n\x06ignore\x18\x1c \x01(\x08\x12\x1e\n\x12\x62reak_rule_indices\x18\x1d \x03(\x05\x42\x02\x18\x01\x12\x46\n\ncapacities\x18\r \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x12X\n\x14start_load_intervals\x18\x0e \x03(\x0b\x32\x36.google.cloud.optimization.v1.CapacityQuantityIntervalB\x02\x18\x01\x12V\n\x12\x65nd_load_intervals\x18\x0f \x03(\x0b\x32\x36.google.cloud.optimization.v1.CapacityQuantityIntervalB\x02\x18\x01\x1a\xcb\x02\n\tLoadLimit\x12\x15\n\x08max_load\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x15\n\rsoft_max_load\x18\x02 \x01(\x03\x12$\n\x1c\x63ost_per_unit_above_soft_max\x18\x03 \x01(\x01\x12U\n\x13start_load_interval\x18\x04 \x01(\x0b\x32\x38.google.cloud.optimization.v1.Vehicle.LoadLimit.Interval\x12S\n\x11\x65nd_load_interval\x18\x05 \x01(\x0b\x32\x38.google.cloud.optimization.v1.Vehicle.LoadLimit.Interval\x1a\x31\n\x08Interval\x12\x0b\n\x03min\x18\x01 \x01(\x03\x12\x10\n\x03max\x18\x02 \x01(\x03H\x00\x88\x01\x01\x42\x06\n\x04_maxB\x0b\n\t_max_load\x1a\xf0\x02\n\rDurationLimit\x12/\n\x0cmax_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11soft_max_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12)\n\x1c\x63ost_per_hour_after_soft_max\x18\x03 \x01(\x01H\x00\x88\x01\x01\x12>\n\x1bquadratic_soft_max_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12:\n-cost_per_square_hour_after_quadratic_soft_max\x18\x05 \x01(\x01H\x01\x88\x01\x01\x42\x1f\n\x1d_cost_per_hour_after_soft_maxB0\n._cost_per_square_hour_after_quadratic_soft_max\x1a\x62\n\x0fLoadLimitsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.google.cloud.optimization.v1.Vehicle.LoadLimit:\x02\x38\x01\x1a`\n#ExtraVisitDurationForVisitTypeEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration:\x02\x38\x01\"6\n\nTravelMode\x12\x1b\n\x17TRAVEL_MODE_UNSPECIFIED\x10\x00\x12\x0b\n\x07\x44RIVING\x10\x01\"b\n\x0fUnloadingPolicy\x12 \n\x1cUNLOADING_POLICY_UNSPECIFIED\x10\x00\x12\x15\n\x11LAST_IN_FIRST_OUT\x10\x01\x12\x16\n\x12\x46IRST_IN_FIRST_OUT\x10\x02\x42\x1b\n\x19_travel_duration_multiple\"\x84\x03\n\nTimeWindow\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\x0fsoft_start_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\rsoft_end_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n$cost_per_hour_before_soft_start_time\x18\x05 \x01(\x01H\x00\x88\x01\x01\x12.\n!cost_per_hour_after_soft_end_time\x18\x06 \x01(\x01H\x01\x88\x01\x01\x42\'\n%_cost_per_hour_before_soft_start_timeB$\n\"_cost_per_hour_after_soft_end_time\"3\n\x10\x43\x61pacityQuantity\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x18\x01\"x\n\x18\x43\x61pacityQuantityInterval\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x16\n\tmin_value\x18\x02 \x01(\x03H\x00\x88\x01\x01\x12\x16\n\tmax_value\x18\x03 \x01(\x03H\x01\x88\x01\x01:\x02\x18\x01\x42\x0c\n\n_min_valueB\x0c\n\n_max_value\"\xbf\x01\n\rDistanceLimit\x12\x17\n\nmax_meters\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x1c\n\x0fsoft_max_meters\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12.\n!cost_per_kilometer_above_soft_max\x18\x03 \x01(\x01H\x02\x88\x01\x01\x42\r\n\x0b_max_metersB\x12\n\x10_soft_max_metersB$\n\"_cost_per_kilometer_above_soft_max\"\x85\x02\n\x14TransitionAttributes\x12\x0f\n\x07src_tag\x18\x01 \x01(\t\x12\x18\n\x10\x65xcluded_src_tag\x18\x02 \x01(\t\x12\x0f\n\x07\x64st_tag\x18\x03 \x01(\t\x12\x18\n\x10\x65xcluded_dst_tag\x18\x04 \x01(\t\x12\x0c\n\x04\x63ost\x18\x05 \x01(\x01\x12\x1a\n\x12\x63ost_per_kilometer\x18\x06 \x01(\x01\x12\x43\n\x0e\x64istance_limit\x18\x07 \x01(\x0b\x32+.google.cloud.optimization.v1.DistanceLimit\x12(\n\x05\x64\x65lay\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x81\x01\n\x08Waypoint\x12:\n\x08location\x18\x01 \x01(\x0b\x32&.google.cloud.optimization.v1.LocationH\x00\x12\x12\n\x08place_id\x18\x02 \x01(\tH\x00\x12\x14\n\x0cside_of_road\x18\x03 \x01(\x08\x42\x0f\n\rlocation_type\"R\n\x08Location\x12$\n\x07lat_lng\x18\x01 \x01(\x0b\x32\x13.google.type.LatLng\x12\x14\n\x07heading\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\n\n\x08_heading\"\x8c\x04\n\tBreakRule\x12L\n\x0e\x62reak_requests\x18\x01 \x03(\x0b\x32\x34.google.cloud.optimization.v1.BreakRule.BreakRequest\x12Z\n\x15\x66requency_constraints\x18\x02 \x03(\x0b\x32;.google.cloud.optimization.v1.BreakRule.FrequencyConstraint\x1a\xbe\x01\n\x0c\x42reakRequest\x12<\n\x13\x65\x61rliest_start_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02\x12:\n\x11latest_start_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02\x12\x34\n\x0cmin_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02\x1a\x93\x01\n\x13\x46requencyConstraint\x12:\n\x12min_break_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02\x12@\n\x18max_inter_break_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02\"\xc3\x16\n\rShipmentRoute\x12\x15\n\rvehicle_index\x18\x01 \x01(\x05\x12\x15\n\rvehicle_label\x18\x02 \x01(\t\x12\x36\n\x12vehicle_start_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x10vehicle_end_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x41\n\x06visits\x18\x07 \x03(\x0b\x32\x31.google.cloud.optimization.v1.ShipmentRoute.Visit\x12K\n\x0btransitions\x18\x08 \x03(\x0b\x32\x36.google.cloud.optimization.v1.ShipmentRoute.Transition\x12#\n\x1bhas_traffic_infeasibilities\x18\t \x01(\x08\x12S\n\x0eroute_polyline\x18\n \x01(\x0b\x32;.google.cloud.optimization.v1.ShipmentRoute.EncodedPolyline\x12\x41\n\x06\x62reaks\x18\x0b \x03(\x0b\x32\x31.google.cloud.optimization.v1.ShipmentRoute.Break\x12@\n\x07metrics\x18\x0c \x01(\x0b\x32/.google.cloud.optimization.v1.AggregatedMetrics\x12P\n\x0broute_costs\x18\x11 \x03(\x0b\x32;.google.cloud.optimization.v1.ShipmentRoute.RouteCostsEntry\x12\x18\n\x10route_total_cost\x18\x12 \x01(\x01\x12\x45\n\tend_loads\x18\r \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x12P\n\x0ctravel_steps\x18\x0e \x03(\x0b\x32\x36.google.cloud.optimization.v1.ShipmentRoute.TravelStepB\x02\x18\x01\x12\x35\n\x0evehicle_detour\x18\x0f \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\x12W\n\x18\x64\x65lay_before_vehicle_end\x18\x10 \x01(\x0b\x32\x31.google.cloud.optimization.v1.ShipmentRoute.DelayB\x02\x18\x01\x1ah\n\x05\x44\x65lay\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration:\x02\x18\x01\x1a\xf5\x04\n\x05Visit\x12\x16\n\x0eshipment_index\x18\x01 \x01(\x05\x12\x11\n\tis_pickup\x18\x02 \x01(\x08\x12\x1b\n\x13visit_request_index\x18\x03 \x01(\x05\x12.\n\nstart_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12X\n\x0cload_demands\x18\x0b \x03(\x0b\x32\x42.google.cloud.optimization.v1.ShipmentRoute.Visit.LoadDemandsEntry\x12)\n\x06\x64\x65tour\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x16\n\x0eshipment_label\x18\x07 \x01(\t\x12\x13\n\x0bvisit_label\x18\x08 \x01(\t\x12I\n\rarrival_loads\x18\t \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x12Q\n\x12\x64\x65lay_before_start\x18\n \x01(\x0b\x32\x31.google.cloud.optimization.v1.ShipmentRoute.DelayB\x02\x18\x01\x12\x43\n\x07\x64\x65mands\x18\x05 \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x1a_\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.google.cloud.optimization.v1.Shipment.Load:\x02\x38\x01\x1a\xe4\x05\n\nTransition\x12\x32\n\x0ftravel_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1e\n\x16travel_distance_meters\x18\x02 \x01(\x01\x12 \n\x18traffic_info_unavailable\x18\x03 \x01(\x08\x12\x31\n\x0e\x64\x65lay_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x62reak_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x30\n\rwait_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0etotal_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\nstart_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12S\n\x0eroute_polyline\x18\t \x01(\x0b\x32;.google.cloud.optimization.v1.ShipmentRoute.EncodedPolyline\x12_\n\rvehicle_loads\x18\x0b \x03(\x0b\x32H.google.cloud.optimization.v1.ShipmentRoute.Transition.VehicleLoadsEntry\x12\x41\n\x05loads\x18\n \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x1al\n\x11VehicleLoadsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x37.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad:\x02\x38\x01\x1a\x1d\n\x0bVehicleLoad\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x03\x1a!\n\x0f\x45ncodedPolyline\x12\x0e\n\x06points\x18\x01 \x01(\t\x1a\x64\n\x05\x42reak\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\xcd\x01\n\nTravelStep\x12+\n\x08\x64uration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x17\n\x0f\x64istance_meters\x18\x02 \x01(\x01\x12 \n\x18traffic_info_unavailable\x18\x03 \x01(\x08\x12S\n\x0eroute_polyline\x18\x04 \x01(\x0b\x32;.google.cloud.optimization.v1.ShipmentRoute.EncodedPolyline:\x02\x18\x01\x1a\x31\n\x0fRouteCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"\xfe\x04\n\x0fSkippedShipment\x12\r\n\x05index\x18\x01 \x01(\x05\x12\r\n\x05label\x18\x02 \x01(\t\x12\x45\n\x07reasons\x18\x03 \x03(\x0b\x32\x34.google.cloud.optimization.v1.SkippedShipment.Reason\x1a\x85\x04\n\x06Reason\x12G\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x39.google.cloud.optimization.v1.SkippedShipment.Reason.Code\x12\"\n\x15\x65xample_vehicle_index\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12&\n\x1e\x65xample_exceeded_capacity_type\x18\x03 \x01(\t\"\xcb\x02\n\x04\x43ode\x12\x14\n\x10\x43ODE_UNSPECIFIED\x10\x00\x12\x0e\n\nNO_VEHICLE\x10\x01\x12#\n\x1f\x44\x45MAND_EXCEEDS_VEHICLE_CAPACITY\x10\x02\x12\x35\n1CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT\x10\x03\x12\x35\n1CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT\x10\x04\x12<\n8CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT\x10\x05\x12\x33\n/CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS\x10\x06\x12\x17\n\x13VEHICLE_NOT_ALLOWED\x10\x07\x42\x18\n\x16_example_vehicle_index\"\xd8\x05\n\x11\x41ggregatedMetrics\x12 \n\x18performed_shipment_count\x18\x01 \x01(\x05\x12\x32\n\x0ftravel_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x30\n\rwait_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x64\x65lay_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x62reak_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0evisit_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0etotal_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1e\n\x16travel_distance_meters\x18\x08 \x01(\x01\x12P\n\tmax_loads\x18\t \x03(\x0b\x32=.google.cloud.optimization.v1.AggregatedMetrics.MaxLoadsEntry\x12M\n\x05\x63osts\x18\n \x03(\x0b\x32:.google.cloud.optimization.v1.AggregatedMetrics.CostsEntryB\x02\x18\x01\x12\x16\n\ntotal_cost\x18\x0b \x01(\x01\x42\x02\x18\x01\x1ah\n\rMaxLoadsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x37.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad:\x02\x38\x01\x1a,\n\nCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"\x9f\x06\n\x1aInjectedSolutionConstraint\x12;\n\x06routes\x18\x01 \x03(\x0b\x32+.google.cloud.optimization.v1.ShipmentRoute\x12H\n\x11skipped_shipments\x18\x02 \x03(\x0b\x32-.google.cloud.optimization.v1.SkippedShipment\x12m\n\x16\x63onstraint_relaxations\x18\x03 \x03(\x0b\x32M.google.cloud.optimization.v1.InjectedSolutionConstraint.ConstraintRelaxation\x1a\x8a\x04\n\x14\x43onstraintRelaxation\x12m\n\x0brelaxations\x18\x01 \x03(\x0b\x32X.google.cloud.optimization.v1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation\x12\x17\n\x0fvehicle_indices\x18\x02 \x03(\x05\x1a\xe9\x02\n\nRelaxation\x12m\n\x05level\x18\x01 \x01(\x0e\x32^.google.cloud.optimization.v1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level\x12\x32\n\x0ethreshold_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1d\n\x15threshold_visit_count\x18\x03 \x01(\x05\"\x98\x01\n\x05Level\x12\x15\n\x11LEVEL_UNSPECIFIED\x10\x00\x12%\n!RELAX_VISIT_TIMES_AFTER_THRESHOLD\x10\x01\x12\x32\n.RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD\x10\x02\x12\x1d\n\x19RELAX_ALL_AFTER_THRESHOLD\x10\x03\"\xfd\x02\n\x1cOptimizeToursValidationError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12Y\n\x06\x66ields\x18\x03 \x03(\x0b\x32I.google.cloud.optimization.v1.OptimizeToursValidationError.FieldReference\x12\x15\n\rerror_message\x18\x04 \x01(\t\x12\x18\n\x10offending_values\x18\x05 \x01(\t\x1a\xac\x01\n\x0e\x46ieldReference\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x05index\x18\x02 \x01(\x05H\x00\x12\r\n\x03key\x18\x04 \x01(\tH\x00\x12\\\n\tsub_field\x18\x03 \x01(\x0b\x32I.google.cloud.optimization.v1.OptimizeToursValidationError.FieldReferenceB\x0e\n\x0cindex_or_key2\xe0\x04\n\x0c\x46leetRouting\x12\xe2\x01\n\rOptimizeTours\x12\x32.google.cloud.optimization.v1.OptimizeToursRequest\x1a\x33.google.cloud.optimization.v1.OptimizeToursResponse\"h\x82\xd3\xe4\x93\x02\x62\"1/v1/{parent=projects/*/locations/*}:optimizeTours:\x01*Z*\"%/v1/{parent=projects/*}:optimizeTours:\x01*\x12\x94\x02\n\x12\x42\x61tchOptimizeTours\x12\x37.google.cloud.optimization.v1.BatchOptimizeToursRequest\x1a\x1d.google.longrunning.Operation\"\xa5\x01\x82\xd3\xe4\x93\x02l\"6/v1/{parent=projects/*/locations/*}:batchOptimizeTours:\x01*Z/\"*/v1/{parent=projects/*}:batchOptimizeTours:\x01*\xca\x41\x30\n\x1a\x42\x61tchOptimizeToursResponse\x12\x12\x41syncModelMetadata\x1aT\xca\x41 cloudoptimization.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB}\n com.google.cloud.optimization.v1B\x11\x46leetRoutingProtoP\x01ZDcloud.google.com/go/optimization/apiv1/optimizationpb;optimizationpbb\x06proto3"
|
17
|
+
descriptor_data = "\n0google/cloud/optimization/v1/fleet_routing.proto\x12\x1cgoogle.cloud.optimization.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a.google/cloud/optimization/v1/async_model.proto\x1a#google/longrunning/operations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x18google/type/latlng.proto\"\xa4\t\n\x14OptimizeToursRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12*\n\x07timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12:\n\x05model\x18\x03 \x01(\x0b\x32+.google.cloud.optimization.v1.ShipmentModel\x12T\n\x0csolving_mode\x18\x04 \x01(\x0e\x32>.google.cloud.optimization.v1.OptimizeToursRequest.SolvingMode\x12R\n\x0bsearch_mode\x18\x06 \x01(\x0e\x32=.google.cloud.optimization.v1.OptimizeToursRequest.SearchMode\x12S\n\x1einjected_first_solution_routes\x18\x07 \x03(\x0b\x32+.google.cloud.optimization.v1.ShipmentRoute\x12^\n\x1cinjected_solution_constraint\x18\x08 \x01(\x0b\x32\x38.google.cloud.optimization.v1.InjectedSolutionConstraint\x12K\n\x16refresh_details_routes\x18\t \x03(\x0b\x32+.google.cloud.optimization.v1.ShipmentRoute\x12\x31\n)interpret_injected_solutions_using_labels\x18\n \x01(\x08\x12\x1d\n\x15\x63onsider_road_traffic\x18\x0b \x01(\x08\x12\x1a\n\x12populate_polylines\x18\x0c \x01(\x08\x12%\n\x1dpopulate_transition_polylines\x18\r \x01(\x08\x12\x36\n.allow_large_deadline_despite_interruption_risk\x18\x0e \x01(\x08\x12\x1e\n\x16use_geodesic_distances\x18\x0f \x01(\x08\x12\'\n\x1ageodesic_meters_per_second\x18\x10 \x01(\x01H\x00\x88\x01\x01\x12\"\n\x15max_validation_errors\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\r\n\x05label\x18\x11 \x01(\t\x12*\n\x1epopulate_travel_step_polylines\x18\x14 \x01(\x08\x42\x02\x18\x01\"Y\n\x0bSolvingMode\x12\x11\n\rDEFAULT_SOLVE\x10\x00\x12\x11\n\rVALIDATE_ONLY\x10\x01\x12$\n DETECT_SOME_INFEASIBLE_SHIPMENTS\x10\x02\"Z\n\nSearchMode\x12\x1b\n\x17SEARCH_MODE_UNSPECIFIED\x10\x00\x12\x0f\n\x0bRETURN_FAST\x10\x01\x12\x1e\n\x1a\x43ONSUME_ALL_AVAILABLE_TIME\x10\x02\x42\x1d\n\x1b_geodesic_meters_per_secondB\x18\n\x16_max_validation_errors\"\xae\x06\n\x15OptimizeToursResponse\x12;\n\x06routes\x18\x01 \x03(\x0b\x32+.google.cloud.optimization.v1.ShipmentRoute\x12\x15\n\rrequest_label\x18\x03 \x01(\t\x12H\n\x11skipped_shipments\x18\x04 \x03(\x0b\x32-.google.cloud.optimization.v1.SkippedShipment\x12U\n\x11validation_errors\x18\x05 \x03(\x0b\x32:.google.cloud.optimization.v1.OptimizeToursValidationError\x12L\n\x07metrics\x18\x06 \x01(\x0b\x32;.google.cloud.optimization.v1.OptimizeToursResponse.Metrics\x12\x16\n\ntotal_cost\x18\x02 \x01(\x01\x42\x02\x18\x01\x1a\xb9\x03\n\x07Metrics\x12Q\n\x18\x61ggregated_route_metrics\x18\x01 \x01(\x0b\x32/.google.cloud.optimization.v1.AggregatedMetrics\x12(\n skipped_mandatory_shipment_count\x18\x02 \x01(\x05\x12\x1a\n\x12used_vehicle_count\x18\x03 \x01(\x05\x12?\n\x1b\x65\x61rliest_vehicle_start_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12;\n\x17latest_vehicle_end_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12U\n\x05\x63osts\x18\n \x03(\x0b\x32\x46.google.cloud.optimization.v1.OptimizeToursResponse.Metrics.CostsEntry\x12\x12\n\ntotal_cost\x18\x06 \x01(\x01\x1a,\n\nCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"\xeb\x02\n\x19\x42\x61tchOptimizeToursRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x64\n\rmodel_configs\x18\x02 \x03(\x0b\x32H.google.cloud.optimization.v1.BatchOptimizeToursRequest.AsyncModelConfigB\x03\xe0\x41\x02\x1a\xd2\x01\n\x10\x41syncModelConfig\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x44\n\x0cinput_config\x18\x02 \x01(\x0b\x32).google.cloud.optimization.v1.InputConfigB\x03\xe0\x41\x02\x12\x46\n\routput_config\x18\x03 \x01(\x0b\x32*.google.cloud.optimization.v1.OutputConfigB\x03\xe0\x41\x02\x12\x1a\n\x12\x65nable_checkpoints\x18\x04 \x01(\x08\"\x1c\n\x1a\x42\x61tchOptimizeToursResponse\"\x9a\x0f\n\rShipmentModel\x12\x39\n\tshipments\x18\x01 \x03(\x0b\x32&.google.cloud.optimization.v1.Shipment\x12\x37\n\x08vehicles\x18\x02 \x03(\x0b\x32%.google.cloud.optimization.v1.Vehicle\x12 \n\x13max_active_vehicles\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x35\n\x11global_start_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\x0fglobal_end_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12%\n\x1dglobal_duration_cost_per_hour\x18\x07 \x01(\x01\x12\x66\n\x1a\x64uration_distance_matrices\x18\x08 \x03(\x0b\x32\x42.google.cloud.optimization.v1.ShipmentModel.DurationDistanceMatrix\x12)\n!duration_distance_matrix_src_tags\x18\t \x03(\t\x12)\n!duration_distance_matrix_dst_tags\x18\n \x03(\t\x12Q\n\x15transition_attributes\x18\x0b \x03(\x0b\x32\x32.google.cloud.optimization.v1.TransitionAttributes\x12\x62\n\x1fshipment_type_incompatibilities\x18\x0c \x03(\x0b\x32\x39.google.cloud.optimization.v1.ShipmentTypeIncompatibility\x12Y\n\x1ashipment_type_requirements\x18\r \x03(\x0b\x32\x35.google.cloud.optimization.v1.ShipmentTypeRequirement\x12T\n\x10precedence_rules\x18\x0e \x03(\x0b\x32:.google.cloud.optimization.v1.ShipmentModel.PrecedenceRule\x12N\n\x0b\x62reak_rules\x18\x0f \x03(\x0b\x32\x35.google.cloud.optimization.v1.ShipmentModel.BreakRuleB\x02\x18\x01\x1a\xce\x01\n\x16\x44urationDistanceMatrix\x12T\n\x04rows\x18\x01 \x03(\x0b\x32\x46.google.cloud.optimization.v1.ShipmentModel.DurationDistanceMatrix.Row\x12\x19\n\x11vehicle_start_tag\x18\x02 \x01(\t\x1a\x43\n\x03Row\x12,\n\tdurations\x18\x01 \x03(\x0b\x32\x19.google.protobuf.Duration\x12\x0e\n\x06meters\x18\x02 \x03(\x01\x1a\xd1\x01\n\x0ePrecedenceRule\x12\x18\n\x0b\x66irst_index\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\x19\n\x11\x66irst_is_delivery\x18\x03 \x01(\x08\x12\x19\n\x0csecond_index\x18\x02 \x01(\x05H\x01\x88\x01\x01\x12\x1a\n\x12second_is_delivery\x18\x04 \x01(\x08\x12\x32\n\x0foffset_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0e\n\x0c_first_indexB\x0f\n\r_second_index\x1a\xac\x04\n\tBreakRule\x12Z\n\x0e\x62reak_requests\x18\x01 \x03(\x0b\x32\x42.google.cloud.optimization.v1.ShipmentModel.BreakRule.BreakRequest\x12h\n\x15\x66requency_constraints\x18\x02 \x03(\x0b\x32I.google.cloud.optimization.v1.ShipmentModel.BreakRule.FrequencyConstraint\x1a\xbe\x01\n\x0c\x42reakRequest\x12<\n\x13\x65\x61rliest_start_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02\x12:\n\x11latest_start_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02\x12\x34\n\x0cmin_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02\x1a\x93\x01\n\x13\x46requencyConstraint\x12:\n\x12min_break_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02\x12@\n\x18max_inter_break_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02:\x02\x18\x01\x42\x16\n\x14_max_active_vehicles\"\x80\x0c\n\x08Shipment\x12\x44\n\x07pickups\x18\x01 \x03(\x0b\x32\x33.google.cloud.optimization.v1.Shipment.VisitRequest\x12G\n\ndeliveries\x18\x02 \x03(\x0b\x32\x33.google.cloud.optimization.v1.Shipment.VisitRequest\x12M\n\x0cload_demands\x18\x0e \x03(\x0b\x32\x37.google.cloud.optimization.v1.Shipment.LoadDemandsEntry\x12\x19\n\x0cpenalty_cost\x18\x04 \x01(\x01H\x00\x88\x01\x01\x12\x1f\n\x17\x61llowed_vehicle_indices\x18\x05 \x03(\x05\x12\x19\n\x11\x63osts_per_vehicle\x18\x06 \x03(\x01\x12!\n\x19\x63osts_per_vehicle_indices\x18\x07 \x03(\x05\x12\x35\n(pickup_to_delivery_relative_detour_limit\x18\x08 \x01(\x01H\x01\x88\x01\x01\x12K\n(pickup_to_delivery_absolute_detour_limit\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12@\n\x1dpickup_to_delivery_time_limit\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x15\n\rshipment_type\x18\x0b \x01(\t\x12\r\n\x05label\x18\x0c \x01(\t\x12\x0e\n\x06ignore\x18\r \x01(\x08\x12\x43\n\x07\x64\x65mands\x18\x03 \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x1a\xa3\x05\n\x0cVisitRequest\x12-\n\x10\x61rrival_location\x18\x01 \x01(\x0b\x32\x13.google.type.LatLng\x12@\n\x10\x61rrival_waypoint\x18\x02 \x01(\x0b\x32&.google.cloud.optimization.v1.Waypoint\x12/\n\x12\x64\x65parture_location\x18\x03 \x01(\x0b\x32\x13.google.type.LatLng\x12\x42\n\x12\x64\x65parture_waypoint\x18\x04 \x01(\x0b\x32&.google.cloud.optimization.v1.Waypoint\x12\x0c\n\x04tags\x18\x05 \x03(\t\x12>\n\x0ctime_windows\x18\x06 \x03(\x0b\x32(.google.cloud.optimization.v1.TimeWindow\x12+\n\x08\x64uration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04\x63ost\x18\x08 \x01(\x01\x12Z\n\x0cload_demands\x18\x0c \x03(\x0b\x32\x44.google.cloud.optimization.v1.Shipment.VisitRequest.LoadDemandsEntry\x12\x13\n\x0bvisit_types\x18\n \x03(\t\x12\r\n\x05label\x18\x0b \x01(\t\x12\x43\n\x07\x64\x65mands\x18\t \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x1a_\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.google.cloud.optimization.v1.Shipment.Load:\x02\x38\x01\x1a\x16\n\x04Load\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x1a_\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.google.cloud.optimization.v1.Shipment.Load:\x02\x38\x01\x42\x0f\n\r_penalty_costB+\n)_pickup_to_delivery_relative_detour_limit\"\xa2\x02\n\x1bShipmentTypeIncompatibility\x12\r\n\x05types\x18\x01 \x03(\t\x12k\n\x14incompatibility_mode\x18\x02 \x01(\x0e\x32M.google.cloud.optimization.v1.ShipmentTypeIncompatibility.IncompatibilityMode\"\x86\x01\n\x13IncompatibilityMode\x12$\n INCOMPATIBILITY_MODE_UNSPECIFIED\x10\x00\x12!\n\x1dNOT_PERFORMED_BY_SAME_VEHICLE\x10\x01\x12&\n\"NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY\x10\x02\"\xe8\x02\n\x17ShipmentTypeRequirement\x12+\n#required_shipment_type_alternatives\x18\x01 \x03(\t\x12 \n\x18\x64\x65pendent_shipment_types\x18\x02 \x03(\t\x12_\n\x10requirement_mode\x18\x03 \x01(\x0e\x32\x45.google.cloud.optimization.v1.ShipmentTypeRequirement.RequirementMode\"\x9c\x01\n\x0fRequirementMode\x12 \n\x1cREQUIREMENT_MODE_UNSPECIFIED\x10\x00\x12\x1d\n\x19PERFORMED_BY_SAME_VEHICLE\x10\x01\x12\"\n\x1eIN_SAME_VEHICLE_AT_PICKUP_TIME\x10\x02\x12$\n IN_SAME_VEHICLE_AT_DELIVERY_TIME\x10\x03\"\xce\x14\n\x07Vehicle\x12\x45\n\x0btravel_mode\x18\x01 \x01(\x0e\x32\x30.google.cloud.optimization.v1.Vehicle.TravelMode\x12+\n\x0estart_location\x18\x03 \x01(\x0b\x32\x13.google.type.LatLng\x12>\n\x0estart_waypoint\x18\x04 \x01(\x0b\x32&.google.cloud.optimization.v1.Waypoint\x12)\n\x0c\x65nd_location\x18\x05 \x01(\x0b\x32\x13.google.type.LatLng\x12<\n\x0c\x65nd_waypoint\x18\x06 \x01(\x0b\x32&.google.cloud.optimization.v1.Waypoint\x12\x12\n\nstart_tags\x18\x07 \x03(\t\x12\x10\n\x08\x65nd_tags\x18\x08 \x03(\t\x12\x44\n\x12start_time_windows\x18\t \x03(\x0b\x32(.google.cloud.optimization.v1.TimeWindow\x12\x42\n\x10\x65nd_time_windows\x18\n \x03(\x0b\x32(.google.cloud.optimization.v1.TimeWindow\x12%\n\x18travel_duration_multiple\x18\x0b \x01(\x01H\x00\x88\x01\x01\x12O\n\x10unloading_policy\x18\x0c \x01(\x0e\x32\x35.google.cloud.optimization.v1.Vehicle.UnloadingPolicy\x12J\n\x0bload_limits\x18\x1e \x03(\x0b\x32\x35.google.cloud.optimization.v1.Vehicle.LoadLimitsEntry\x12\x15\n\rcost_per_hour\x18\x10 \x01(\x01\x12\x1e\n\x16\x63ost_per_traveled_hour\x18\x11 \x01(\x01\x12\x1a\n\x12\x63ost_per_kilometer\x18\x12 \x01(\x01\x12\x12\n\nfixed_cost\x18\x13 \x01(\x01\x12\x1e\n\x16used_if_route_is_empty\x18\x14 \x01(\x08\x12Q\n\x14route_duration_limit\x18\x15 \x01(\x0b\x32\x33.google.cloud.optimization.v1.Vehicle.DurationLimit\x12R\n\x15travel_duration_limit\x18\x16 \x01(\x0b\x32\x33.google.cloud.optimization.v1.Vehicle.DurationLimit\x12I\n\x14route_distance_limit\x18\x17 \x01(\x0b\x32+.google.cloud.optimization.v1.DistanceLimit\x12v\n#extra_visit_duration_for_visit_type\x18\x18 \x03(\x0b\x32I.google.cloud.optimization.v1.Vehicle.ExtraVisitDurationForVisitTypeEntry\x12;\n\nbreak_rule\x18\x19 \x01(\x0b\x32\'.google.cloud.optimization.v1.BreakRule\x12\r\n\x05label\x18\x1b \x01(\t\x12\x0e\n\x06ignore\x18\x1c \x01(\x08\x12\x1e\n\x12\x62reak_rule_indices\x18\x1d \x03(\x05\x42\x02\x18\x01\x12\x46\n\ncapacities\x18\r \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x12X\n\x14start_load_intervals\x18\x0e \x03(\x0b\x32\x36.google.cloud.optimization.v1.CapacityQuantityIntervalB\x02\x18\x01\x12V\n\x12\x65nd_load_intervals\x18\x0f \x03(\x0b\x32\x36.google.cloud.optimization.v1.CapacityQuantityIntervalB\x02\x18\x01\x1a\xcb\x02\n\tLoadLimit\x12\x15\n\x08max_load\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x15\n\rsoft_max_load\x18\x02 \x01(\x03\x12$\n\x1c\x63ost_per_unit_above_soft_max\x18\x03 \x01(\x01\x12U\n\x13start_load_interval\x18\x04 \x01(\x0b\x32\x38.google.cloud.optimization.v1.Vehicle.LoadLimit.Interval\x12S\n\x11\x65nd_load_interval\x18\x05 \x01(\x0b\x32\x38.google.cloud.optimization.v1.Vehicle.LoadLimit.Interval\x1a\x31\n\x08Interval\x12\x0b\n\x03min\x18\x01 \x01(\x03\x12\x10\n\x03max\x18\x02 \x01(\x03H\x00\x88\x01\x01\x42\x06\n\x04_maxB\x0b\n\t_max_load\x1a\xf0\x02\n\rDurationLimit\x12/\n\x0cmax_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11soft_max_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12)\n\x1c\x63ost_per_hour_after_soft_max\x18\x03 \x01(\x01H\x00\x88\x01\x01\x12>\n\x1bquadratic_soft_max_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12:\n-cost_per_square_hour_after_quadratic_soft_max\x18\x05 \x01(\x01H\x01\x88\x01\x01\x42\x1f\n\x1d_cost_per_hour_after_soft_maxB0\n._cost_per_square_hour_after_quadratic_soft_max\x1a\x62\n\x0fLoadLimitsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.google.cloud.optimization.v1.Vehicle.LoadLimit:\x02\x38\x01\x1a`\n#ExtraVisitDurationForVisitTypeEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration:\x02\x38\x01\"C\n\nTravelMode\x12\x1b\n\x17TRAVEL_MODE_UNSPECIFIED\x10\x00\x12\x0b\n\x07\x44RIVING\x10\x01\x12\x0b\n\x07WALKING\x10\x02\"b\n\x0fUnloadingPolicy\x12 \n\x1cUNLOADING_POLICY_UNSPECIFIED\x10\x00\x12\x15\n\x11LAST_IN_FIRST_OUT\x10\x01\x12\x16\n\x12\x46IRST_IN_FIRST_OUT\x10\x02\x42\x1b\n\x19_travel_duration_multiple\"\x84\x03\n\nTimeWindow\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\x0fsoft_start_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\rsoft_end_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n$cost_per_hour_before_soft_start_time\x18\x05 \x01(\x01H\x00\x88\x01\x01\x12.\n!cost_per_hour_after_soft_end_time\x18\x06 \x01(\x01H\x01\x88\x01\x01\x42\'\n%_cost_per_hour_before_soft_start_timeB$\n\"_cost_per_hour_after_soft_end_time\"3\n\x10\x43\x61pacityQuantity\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x18\x01\"x\n\x18\x43\x61pacityQuantityInterval\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x16\n\tmin_value\x18\x02 \x01(\x03H\x00\x88\x01\x01\x12\x16\n\tmax_value\x18\x03 \x01(\x03H\x01\x88\x01\x01:\x02\x18\x01\x42\x0c\n\n_min_valueB\x0c\n\n_max_value\"\x95\x02\n\rDistanceLimit\x12\x17\n\nmax_meters\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x1c\n\x0fsoft_max_meters\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12.\n!cost_per_kilometer_below_soft_max\x18\x04 \x01(\x01H\x02\x88\x01\x01\x12.\n!cost_per_kilometer_above_soft_max\x18\x03 \x01(\x01H\x03\x88\x01\x01\x42\r\n\x0b_max_metersB\x12\n\x10_soft_max_metersB$\n\"_cost_per_kilometer_below_soft_maxB$\n\"_cost_per_kilometer_above_soft_max\"\x85\x02\n\x14TransitionAttributes\x12\x0f\n\x07src_tag\x18\x01 \x01(\t\x12\x18\n\x10\x65xcluded_src_tag\x18\x02 \x01(\t\x12\x0f\n\x07\x64st_tag\x18\x03 \x01(\t\x12\x18\n\x10\x65xcluded_dst_tag\x18\x04 \x01(\t\x12\x0c\n\x04\x63ost\x18\x05 \x01(\x01\x12\x1a\n\x12\x63ost_per_kilometer\x18\x06 \x01(\x01\x12\x43\n\x0e\x64istance_limit\x18\x07 \x01(\x0b\x32+.google.cloud.optimization.v1.DistanceLimit\x12(\n\x05\x64\x65lay\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x81\x01\n\x08Waypoint\x12:\n\x08location\x18\x01 \x01(\x0b\x32&.google.cloud.optimization.v1.LocationH\x00\x12\x12\n\x08place_id\x18\x02 \x01(\tH\x00\x12\x14\n\x0cside_of_road\x18\x03 \x01(\x08\x42\x0f\n\rlocation_type\"R\n\x08Location\x12$\n\x07lat_lng\x18\x01 \x01(\x0b\x32\x13.google.type.LatLng\x12\x14\n\x07heading\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\n\n\x08_heading\"\x8c\x04\n\tBreakRule\x12L\n\x0e\x62reak_requests\x18\x01 \x03(\x0b\x32\x34.google.cloud.optimization.v1.BreakRule.BreakRequest\x12Z\n\x15\x66requency_constraints\x18\x02 \x03(\x0b\x32;.google.cloud.optimization.v1.BreakRule.FrequencyConstraint\x1a\xbe\x01\n\x0c\x42reakRequest\x12<\n\x13\x65\x61rliest_start_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02\x12:\n\x11latest_start_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02\x12\x34\n\x0cmin_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02\x1a\x93\x01\n\x13\x46requencyConstraint\x12:\n\x12min_break_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02\x12@\n\x18max_inter_break_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02\"\xc3\x16\n\rShipmentRoute\x12\x15\n\rvehicle_index\x18\x01 \x01(\x05\x12\x15\n\rvehicle_label\x18\x02 \x01(\t\x12\x36\n\x12vehicle_start_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x10vehicle_end_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x41\n\x06visits\x18\x07 \x03(\x0b\x32\x31.google.cloud.optimization.v1.ShipmentRoute.Visit\x12K\n\x0btransitions\x18\x08 \x03(\x0b\x32\x36.google.cloud.optimization.v1.ShipmentRoute.Transition\x12#\n\x1bhas_traffic_infeasibilities\x18\t \x01(\x08\x12S\n\x0eroute_polyline\x18\n \x01(\x0b\x32;.google.cloud.optimization.v1.ShipmentRoute.EncodedPolyline\x12\x41\n\x06\x62reaks\x18\x0b \x03(\x0b\x32\x31.google.cloud.optimization.v1.ShipmentRoute.Break\x12@\n\x07metrics\x18\x0c \x01(\x0b\x32/.google.cloud.optimization.v1.AggregatedMetrics\x12P\n\x0broute_costs\x18\x11 \x03(\x0b\x32;.google.cloud.optimization.v1.ShipmentRoute.RouteCostsEntry\x12\x18\n\x10route_total_cost\x18\x12 \x01(\x01\x12\x45\n\tend_loads\x18\r \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x12P\n\x0ctravel_steps\x18\x0e \x03(\x0b\x32\x36.google.cloud.optimization.v1.ShipmentRoute.TravelStepB\x02\x18\x01\x12\x35\n\x0evehicle_detour\x18\x0f \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\x12W\n\x18\x64\x65lay_before_vehicle_end\x18\x10 \x01(\x0b\x32\x31.google.cloud.optimization.v1.ShipmentRoute.DelayB\x02\x18\x01\x1ah\n\x05\x44\x65lay\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration:\x02\x18\x01\x1a\xf5\x04\n\x05Visit\x12\x16\n\x0eshipment_index\x18\x01 \x01(\x05\x12\x11\n\tis_pickup\x18\x02 \x01(\x08\x12\x1b\n\x13visit_request_index\x18\x03 \x01(\x05\x12.\n\nstart_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12X\n\x0cload_demands\x18\x0b \x03(\x0b\x32\x42.google.cloud.optimization.v1.ShipmentRoute.Visit.LoadDemandsEntry\x12)\n\x06\x64\x65tour\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x16\n\x0eshipment_label\x18\x07 \x01(\t\x12\x13\n\x0bvisit_label\x18\x08 \x01(\t\x12I\n\rarrival_loads\x18\t \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x12Q\n\x12\x64\x65lay_before_start\x18\n \x01(\x0b\x32\x31.google.cloud.optimization.v1.ShipmentRoute.DelayB\x02\x18\x01\x12\x43\n\x07\x64\x65mands\x18\x05 \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x1a_\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.google.cloud.optimization.v1.Shipment.Load:\x02\x38\x01\x1a\xe4\x05\n\nTransition\x12\x32\n\x0ftravel_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1e\n\x16travel_distance_meters\x18\x02 \x01(\x01\x12 \n\x18traffic_info_unavailable\x18\x03 \x01(\x08\x12\x31\n\x0e\x64\x65lay_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x62reak_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x30\n\rwait_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0etotal_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\nstart_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12S\n\x0eroute_polyline\x18\t \x01(\x0b\x32;.google.cloud.optimization.v1.ShipmentRoute.EncodedPolyline\x12_\n\rvehicle_loads\x18\x0b \x03(\x0b\x32H.google.cloud.optimization.v1.ShipmentRoute.Transition.VehicleLoadsEntry\x12\x41\n\x05loads\x18\n \x03(\x0b\x32..google.cloud.optimization.v1.CapacityQuantityB\x02\x18\x01\x1al\n\x11VehicleLoadsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x37.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad:\x02\x38\x01\x1a\x1d\n\x0bVehicleLoad\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x03\x1a!\n\x0f\x45ncodedPolyline\x12\x0e\n\x06points\x18\x01 \x01(\t\x1a\x64\n\x05\x42reak\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\xcd\x01\n\nTravelStep\x12+\n\x08\x64uration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x17\n\x0f\x64istance_meters\x18\x02 \x01(\x01\x12 \n\x18traffic_info_unavailable\x18\x03 \x01(\x08\x12S\n\x0eroute_polyline\x18\x04 \x01(\x0b\x32;.google.cloud.optimization.v1.ShipmentRoute.EncodedPolyline:\x02\x18\x01\x1a\x31\n\x0fRouteCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"\xfe\x04\n\x0fSkippedShipment\x12\r\n\x05index\x18\x01 \x01(\x05\x12\r\n\x05label\x18\x02 \x01(\t\x12\x45\n\x07reasons\x18\x03 \x03(\x0b\x32\x34.google.cloud.optimization.v1.SkippedShipment.Reason\x1a\x85\x04\n\x06Reason\x12G\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x39.google.cloud.optimization.v1.SkippedShipment.Reason.Code\x12\"\n\x15\x65xample_vehicle_index\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12&\n\x1e\x65xample_exceeded_capacity_type\x18\x03 \x01(\t\"\xcb\x02\n\x04\x43ode\x12\x14\n\x10\x43ODE_UNSPECIFIED\x10\x00\x12\x0e\n\nNO_VEHICLE\x10\x01\x12#\n\x1f\x44\x45MAND_EXCEEDS_VEHICLE_CAPACITY\x10\x02\x12\x35\n1CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT\x10\x03\x12\x35\n1CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT\x10\x04\x12<\n8CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT\x10\x05\x12\x33\n/CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS\x10\x06\x12\x17\n\x13VEHICLE_NOT_ALLOWED\x10\x07\x42\x18\n\x16_example_vehicle_index\"\xd8\x05\n\x11\x41ggregatedMetrics\x12 \n\x18performed_shipment_count\x18\x01 \x01(\x05\x12\x32\n\x0ftravel_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x30\n\rwait_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x64\x65lay_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x62reak_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0evisit_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0etotal_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1e\n\x16travel_distance_meters\x18\x08 \x01(\x01\x12P\n\tmax_loads\x18\t \x03(\x0b\x32=.google.cloud.optimization.v1.AggregatedMetrics.MaxLoadsEntry\x12M\n\x05\x63osts\x18\n \x03(\x0b\x32:.google.cloud.optimization.v1.AggregatedMetrics.CostsEntryB\x02\x18\x01\x12\x16\n\ntotal_cost\x18\x0b \x01(\x01\x42\x02\x18\x01\x1ah\n\rMaxLoadsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x37.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad:\x02\x38\x01\x1a,\n\nCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"\x9f\x06\n\x1aInjectedSolutionConstraint\x12;\n\x06routes\x18\x01 \x03(\x0b\x32+.google.cloud.optimization.v1.ShipmentRoute\x12H\n\x11skipped_shipments\x18\x02 \x03(\x0b\x32-.google.cloud.optimization.v1.SkippedShipment\x12m\n\x16\x63onstraint_relaxations\x18\x03 \x03(\x0b\x32M.google.cloud.optimization.v1.InjectedSolutionConstraint.ConstraintRelaxation\x1a\x8a\x04\n\x14\x43onstraintRelaxation\x12m\n\x0brelaxations\x18\x01 \x03(\x0b\x32X.google.cloud.optimization.v1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation\x12\x17\n\x0fvehicle_indices\x18\x02 \x03(\x05\x1a\xe9\x02\n\nRelaxation\x12m\n\x05level\x18\x01 \x01(\x0e\x32^.google.cloud.optimization.v1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level\x12\x32\n\x0ethreshold_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1d\n\x15threshold_visit_count\x18\x03 \x01(\x05\"\x98\x01\n\x05Level\x12\x15\n\x11LEVEL_UNSPECIFIED\x10\x00\x12%\n!RELAX_VISIT_TIMES_AFTER_THRESHOLD\x10\x01\x12\x32\n.RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD\x10\x02\x12\x1d\n\x19RELAX_ALL_AFTER_THRESHOLD\x10\x03\"\xfd\x02\n\x1cOptimizeToursValidationError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12Y\n\x06\x66ields\x18\x03 \x03(\x0b\x32I.google.cloud.optimization.v1.OptimizeToursValidationError.FieldReference\x12\x15\n\rerror_message\x18\x04 \x01(\t\x12\x18\n\x10offending_values\x18\x05 \x01(\t\x1a\xac\x01\n\x0e\x46ieldReference\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x05index\x18\x02 \x01(\x05H\x00\x12\r\n\x03key\x18\x04 \x01(\tH\x00\x12\\\n\tsub_field\x18\x03 \x01(\x0b\x32I.google.cloud.optimization.v1.OptimizeToursValidationError.FieldReferenceB\x0e\n\x0cindex_or_key2\xe0\x04\n\x0c\x46leetRouting\x12\xe2\x01\n\rOptimizeTours\x12\x32.google.cloud.optimization.v1.OptimizeToursRequest\x1a\x33.google.cloud.optimization.v1.OptimizeToursResponse\"h\x82\xd3\xe4\x93\x02\x62\"1/v1/{parent=projects/*/locations/*}:optimizeTours:\x01*Z*\"%/v1/{parent=projects/*}:optimizeTours:\x01*\x12\x94\x02\n\x12\x42\x61tchOptimizeTours\x12\x37.google.cloud.optimization.v1.BatchOptimizeToursRequest\x1a\x1d.google.longrunning.Operation\"\xa5\x01\x82\xd3\xe4\x93\x02l\"6/v1/{parent=projects/*/locations/*}:batchOptimizeTours:\x01*Z/\"*/v1/{parent=projects/*}:batchOptimizeTours:\x01*\xca\x41\x30\n\x1a\x42\x61tchOptimizeToursResponse\x12\x12\x41syncModelMetadata\x1aT\xca\x41 cloudoptimization.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB}\n com.google.cloud.optimization.v1B\x11\x46leetRoutingProtoP\x01ZDcloud.google.com/go/optimization/apiv1/optimizationpb;optimizationpbb\x06proto3"
|
18
18
|
|
19
19
|
pool = Google::Protobuf::DescriptorPool.generated_pool
|
20
20
|
|
@@ -66,6 +66,20 @@ module Google
|
|
66
66
|
# a non-empty value will be returned. The user will not be aware of what
|
67
67
|
# non-empty value to expect.
|
68
68
|
NON_EMPTY_DEFAULT = 7
|
69
|
+
|
70
|
+
# Denotes that the field in a resource (a message annotated with
|
71
|
+
# google.api.resource) is used in the resource name to uniquely identify the
|
72
|
+
# resource. For AIP-compliant APIs, this should only be applied to the
|
73
|
+
# `name` field on the resource.
|
74
|
+
#
|
75
|
+
# This behavior should not be applied to references to other resources within
|
76
|
+
# the message.
|
77
|
+
#
|
78
|
+
# The identifier field of resources often have different field behavior
|
79
|
+
# depending on the request it is embedded in (e.g. for Create methods name
|
80
|
+
# is optional and unused, while for Update methods it is required). Instead
|
81
|
+
# of method-specific annotations, only `IDENTIFIER` is required.
|
82
|
+
IDENTIFIER = 8
|
69
83
|
end
|
70
84
|
end
|
71
85
|
end
|
@@ -44,15 +44,6 @@ module Google
|
|
44
44
|
# @!attribute [rw] solving_mode
|
45
45
|
# @return [::Google::Cloud::Optimization::V1::OptimizeToursRequest::SolvingMode]
|
46
46
|
# By default, the solving mode is `DEFAULT_SOLVE` (0).
|
47
|
-
# @!attribute [rw] max_validation_errors
|
48
|
-
# @return [::Integer]
|
49
|
-
# Truncates the number of validation errors returned. These errors are
|
50
|
-
# typically attached to an INVALID_ARGUMENT error payload as a BadRequest
|
51
|
-
# error detail (https://cloud.google.com/apis/design/errors#error_details),
|
52
|
-
# unless solving_mode=VALIDATE_ONLY: see the
|
53
|
-
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#validation_errors OptimizeToursResponse.validation_errors}
|
54
|
-
# field.
|
55
|
-
# This defaults to 100 and is capped at 10,000.
|
56
47
|
# @!attribute [rw] search_mode
|
57
48
|
# @return [::Google::Cloud::Optimization::V1::OptimizeToursRequest::SearchMode]
|
58
49
|
# Search mode used to solve the request.
|
@@ -218,6 +209,15 @@ module Google
|
|
218
209
|
# When `use_geodesic_distances` is true, this field must be set and defines
|
219
210
|
# the speed applied to compute travel times. Its value must be at least 1.0
|
220
211
|
# meters/seconds.
|
212
|
+
# @!attribute [rw] max_validation_errors
|
213
|
+
# @return [::Integer]
|
214
|
+
# Truncates the number of validation errors returned. These errors are
|
215
|
+
# typically attached to an INVALID_ARGUMENT error payload as a BadRequest
|
216
|
+
# error detail (https://cloud.google.com/apis/design/errors#error_details),
|
217
|
+
# unless solving_mode=VALIDATE_ONLY: see the
|
218
|
+
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#validation_errors OptimizeToursResponse.validation_errors}
|
219
|
+
# field.
|
220
|
+
# This defaults to 100 and is capped at 10,000.
|
221
221
|
# @!attribute [rw] label
|
222
222
|
# @return [::String]
|
223
223
|
# Label that may be used to identify this request, reported back in the
|
@@ -249,12 +249,20 @@ module Google
|
|
249
249
|
VALIDATE_ONLY = 1
|
250
250
|
|
251
251
|
# Only populates
|
252
|
+
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#validation_errors OptimizeToursResponse.validation_errors}
|
253
|
+
# or
|
252
254
|
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#skipped_shipments OptimizeToursResponse.skipped_shipments},
|
253
255
|
# and doesn't actually solve the rest of the request (`status` and `routes`
|
254
256
|
# are unset in the response).
|
257
|
+
# If infeasibilities in `injected_solution_constraint` routes are detected
|
258
|
+
# they are populated in the
|
259
|
+
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#validation_errors OptimizeToursResponse.validation_errors}
|
260
|
+
# field and
|
261
|
+
# {::Google::Cloud::Optimization::V1::OptimizeToursResponse#skipped_shipments OptimizeToursResponse.skipped_shipments}
|
262
|
+
# is left empty.
|
255
263
|
#
|
256
264
|
# *IMPORTANT*: not all infeasible shipments are returned here, but only the
|
257
|
-
# ones that are detected as infeasible
|
265
|
+
# ones that are detected as infeasible during preprocessing.
|
258
266
|
DETECT_SOME_INFEASIBLE_SHIPMENTS = 2
|
259
267
|
end
|
260
268
|
|
@@ -1458,6 +1466,9 @@ module Google
|
|
1458
1466
|
|
1459
1467
|
# Travel mode corresponding to driving directions (car, ...).
|
1460
1468
|
DRIVING = 1
|
1469
|
+
|
1470
|
+
# Travel mode corresponding to walking directions.
|
1471
|
+
WALKING = 2
|
1461
1472
|
end
|
1462
1473
|
|
1463
1474
|
# Policy on how a vehicle can be unloaded. Applies only to shipments having
|
@@ -1587,6 +1598,15 @@ module Google
|
|
1587
1598
|
#
|
1588
1599
|
# If defined soft_max_meters must be less than max_meters and must be
|
1589
1600
|
# nonnegative.
|
1601
|
+
# @!attribute [rw] cost_per_kilometer_below_soft_max
|
1602
|
+
# @return [::Float]
|
1603
|
+
# Cost per kilometer incurred, increasing up to `soft_max_meters`, with
|
1604
|
+
# formula:
|
1605
|
+
# ```
|
1606
|
+
# min(distance_meters, soft_max_meters) / 1000.0 *
|
1607
|
+
# cost_per_kilometer_below_soft_max.
|
1608
|
+
# ```
|
1609
|
+
# This cost is not supported in `route_distance_limit`.
|
1590
1610
|
# @!attribute [rw] cost_per_kilometer_above_soft_max
|
1591
1611
|
# @return [::Float]
|
1592
1612
|
# Cost per kilometer incurred if distance is above `soft_max_meters` limit.
|
@@ -2390,10 +2410,10 @@ module Google
|
|
2390
2410
|
# @!attribute [rw] total_duration
|
2391
2411
|
# @return [::Google::Protobuf::Duration]
|
2392
2412
|
# The total duration should be equal to the sum of all durations above.
|
2393
|
-
# For routes, it also corresponds to
|
2413
|
+
# For routes, it also corresponds to:
|
2394
2414
|
# {::Google::Cloud::Optimization::V1::ShipmentRoute#vehicle_end_time ShipmentRoute.vehicle_end_time}
|
2395
|
-
#
|
2396
|
-
# {::Google::Cloud::Optimization::V1::ShipmentRoute#vehicle_start_time ShipmentRoute.vehicle_start_time}
|
2415
|
+
# `-`
|
2416
|
+
# {::Google::Cloud::Optimization::V1::ShipmentRoute#vehicle_start_time ShipmentRoute.vehicle_start_time}
|
2397
2417
|
# @!attribute [rw] travel_distance_meters
|
2398
2418
|
# @return [::Float]
|
2399
2419
|
# Total travel distance for a route or a solution.
|
@@ -2563,7 +2583,8 @@ module Google
|
|
2563
2583
|
RELAX_VISIT_TIMES_AFTER_THRESHOLD = 1
|
2564
2584
|
|
2565
2585
|
# Same as `RELAX_VISIT_TIMES_AFTER_THRESHOLD`, but the visit sequence
|
2566
|
-
# is also relaxed: visits
|
2586
|
+
# is also relaxed: visits can only be performed by this vehicle, but
|
2587
|
+
# can potentially become unperformed.
|
2567
2588
|
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD = 2
|
2568
2589
|
|
2569
2590
|
# Same as `RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD`, but the
|
@@ -2628,6 +2649,7 @@ module Google
|
|
2628
2649
|
# * INJECTED_SOLUTION_CONCURRENT_SOLUTION_TYPES = 2005;
|
2629
2650
|
# * INJECTED_SOLUTION_MORE_THAN_ONE_PER_TYPE = 2006;
|
2630
2651
|
# * INJECTED_SOLUTION_REFRESH_WITHOUT_POPULATE = 2008;
|
2652
|
+
# * INJECTED_SOLUTION_CONSTRAINED_ROUTE_PORTION_INFEASIBLE = 2010;
|
2631
2653
|
# * SHIPMENT_MODEL_ERROR = 22;
|
2632
2654
|
# * SHIPMENT_MODEL_TOO_LARGE = 2200;
|
2633
2655
|
# * SHIPMENT_MODEL_TOO_MANY_CAPACITY_TYPES = 2201;
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-optimization-v1
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Google LLC
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gapic-common
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.20.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 2.a
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.20.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 2.a
|
@@ -218,7 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
218
218
|
- !ruby/object:Gem::Version
|
219
219
|
version: '0'
|
220
220
|
requirements: []
|
221
|
-
rubygems_version: 3.4.
|
221
|
+
rubygems_version: 3.4.19
|
222
222
|
signing_key:
|
223
223
|
specification_version: 4
|
224
224
|
summary: Cloud Optimization API provides a portfolio of solvers to address common
|