Chỉ mục
RouteOptimization(giao diện)AggregatedMetrics(thông báo)BatchOptimizeToursMetadata(thông báo)BatchOptimizeToursRequest(thông báo)BatchOptimizeToursRequest.AsyncModelConfig(thông báo)BatchOptimizeToursResponse(thông báo)BreakRule(thông báo)BreakRule.BreakRequest(thông báo)BreakRule.FrequencyConstraint(thông báo)DataFormat(enum)DistanceLimit(thông báo)GcsDestination(thông báo)GcsSource(thông báo)InjectedSolutionConstraint(thông báo)InjectedSolutionConstraint.ConstraintRelaxation(thông báo)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation(thông báo)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level(enum)InputConfig(thông báo)Location(thông báo)OptimizeToursLongRunningMetadata(thông báo)OptimizeToursRequest(thông báo)OptimizeToursRequest.SearchMode(enum)OptimizeToursRequest.SolvingMode(enum)OptimizeToursResponse(thông báo)OptimizeToursResponse.Metrics(thông báo)OptimizeToursUriMetadata(thông báo)OptimizeToursUriRequest(thông báo)OptimizeToursUriResponse(thông báo)OptimizeToursValidationError(thông báo)OptimizeToursValidationError.FieldReference(thông báo)OutputConfig(thông báo)RouteModifiers(thông báo)Shipment(thông báo)Shipment.Load(thông báo)Shipment.VisitRequest(thông báo)ShipmentModel(thông báo)ShipmentModel.DurationDistanceMatrix(thông báo)ShipmentModel.DurationDistanceMatrix.Row(thông báo)ShipmentModel.Objective(thông báo)ShipmentModel.Objective.Type(enum)ShipmentModel.PrecedenceRule(thông báo)ShipmentRoute(thông báo)ShipmentRoute.Break(thông báo)ShipmentRoute.EncodedPolyline(thông báo)ShipmentRoute.Transition(thông báo)ShipmentRoute.VehicleLoad(thông báo)ShipmentRoute.Visit(thông báo)ShipmentRoute.Visit.VisitType(enum)ShipmentTypeIncompatibility(thông báo)ShipmentTypeIncompatibility.IncompatibilityMode(enum)ShipmentTypeRequirement(thông báo)ShipmentTypeRequirement.RequirementMode(enum)SkippedShipment(thông báo)SkippedShipment.Reason(thông báo)SkippedShipment.Reason.Code(enum)TimeWindow(thông báo)TransitionAttributes(thông báo)Uri(thông báo)Vehicle(thông báo)Vehicle.DurationLimit(thông báo)Vehicle.LoadLimit(thông báo)Vehicle.LoadLimit.Interval(thông báo)Vehicle.LoadLimit.LoadCost(thông báo)Vehicle.TravelMode(enum)Vehicle.UnloadingPolicy(enum)VehicleFullness(thông báo)Waypoint(thông báo)
RouteOptimization
Dịch vụ tối ưu hoá lộ trình của xe.
Tính hợp lệ của một số loại trường:
google.protobuf.Timestamp- Thời gian được tính theo giờ Unix: số giây kể từ 1970-01-01T00:00:00+00:00.
- giây phải nằm trong khoảng [0, 253402300799], tức là trong khoảng [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- nanos phải được đặt thành 0 hoặc không được đặt.
google.protobuf.Duration- giây phải nằm trong khoảng [0, 253402300799], tức là trong khoảng [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- nanos phải được đặt thành 0 hoặc không được đặt.
google.type.LatLng- vĩ độ phải nằm trong khoảng [-90,0, 90,0].
- kinh độ phải nằm trong khoảng [-180,0, 180,0].
- ít nhất một trong hai giá trị vĩ độ và kinh độ phải khác 0.
| BatchOptimizeTours |
|---|
|
Tối ưu hoá hành trình của xe cho một hoặc nhiều thông báo Phương thức này là một Thao tác diễn ra trong thời gian dài (LRO). Dữ liệu đầu vào cho quá trình tối ưu hoá ( Người dùng có thể thăm dò ý kiến Nếu trường Nếu trường
|
| OptimizeTours |
|---|
|
Gửi Mô hình Mục tiêu là chỉ định
|
| OptimizeToursLongRunning |
|---|
|
Đây là một biến thể của phương thức
|
| OptimizeToursUri |
|---|
|
Đây là một biến thể của phương thức Ứng dụng khách chỉ định URI của Bạn nên ưu tiên phương thức này hơn phương thức
|
AggregatedMetrics
Chỉ số tổng hợp cho ShipmentRoute (tương ứng với OptimizeToursResponse) trên tất cả các phần tử Transition và/hoặc Visit (tương ứng với tất cả các phần tử ShipmentRoute).
| Trường | |
|---|---|
performed_shipment_count |
Số lượng lô hàng đã vận chuyển. Xin lưu ý rằng một cặp điểm lấy hàng và điểm giao hàng chỉ được tính một lần. |
travel_duration |
Tổng thời gian di chuyển cho một tuyến đường hoặc một giải pháp. |
wait_duration |
Tổng thời gian chờ cho một tuyến đường hoặc một giải pháp. |
delay_duration |
Tổng thời gian trễ của một tuyến đường hoặc giải pháp. |
break_duration |
Tổng thời gian nghỉ cho một tuyến đường hoặc một giải pháp. |
visit_duration |
Tổng thời gian ghé thăm cho một tuyến đường hoặc một giải pháp. |
total_duration |
Tổng thời lượng phải bằng tổng của tất cả các thời lượng ở trên. Đối với tuyến đường, giá trị này cũng tương ứng với: |
travel_distance_meters |
Tổng quãng đường di chuyển cho một tuyến đường hoặc giải pháp. |
max_loads |
Tải trọng tối đa đạt được trên toàn bộ tuyến đường (tương ứng với giải pháp), cho mỗi số lượng trên tuyến đường này (tương ứng với giải pháp), được tính là giá trị tối đa trên tất cả |
performed_mandatory_shipment_count |
Số lượng lô hàng bắt buộc đã thực hiện. Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
performed_shipment_penalty_cost_sum |
Tổng Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
BatchOptimizeToursMetadata
Loại này không có trường nào.
Siêu dữ liệu thao tác cho các lệnh gọi BatchOptimizeToursRequest.
BatchOptimizeToursRequest
Yêu cầu tối ưu hoá hàng loạt hành trình dưới dạng một thao tác không đồng bộ. Mỗi tệp đầu vào phải chứa một OptimizeToursRequest và mỗi tệp đầu ra sẽ chứa một OptimizeToursResponse. Yêu cầu này chứa thông tin để đọc/ghi và phân tích cú pháp tệp. Tất cả tệp đầu vào và đầu ra phải nằm trong cùng một dự án.
| Trường | |
|---|---|
parent |
Bắt buộc. Dự án và vị trí mục tiêu để thực hiện lệnh gọi. Định dạng:
Giá trị |
model_configs[] |
Bắt buộc. Thông tin đầu vào/đầu ra của từng mô hình mua, chẳng hạn như đường dẫn tệp và định dạng dữ liệu. |
AsyncModelConfig
Thông tin để giải quyết một mô hình tối ưu hoá không đồng bộ.
| Trường | |
|---|---|
display_name |
Không bắt buộc. Tên mô hình do người dùng xác định, có thể được người dùng sử dụng làm bí danh để theo dõi các mô hình. |
input_config |
Bắt buộc. Thông tin về mô hình đầu vào. |
output_config |
Bắt buộc. Thông tin vị trí đầu ra mong muốn. |
BatchOptimizeToursResponse
Loại này không có trường nào.
Phản hồi cho BatchOptimizeToursRequest. Giá trị này được trả về trong Thao tác chạy trong thời gian dài sau khi thao tác hoàn tất.
BreakRule
Quy tắc tạo thời gian nghỉ cho một xe (ví dụ: giờ nghỉ trưa). Thời gian nghỉ là một khoảng thời gian liên tục mà trong đó, xe vẫn ở trạng thái rảnh tại vị trí hiện tại và không thể thực hiện bất kỳ lượt ghé thăm nào. Quảng cáo có thể xuất hiện:
- trong quá trình di chuyển giữa hai lượt ghé thăm (bao gồm cả thời gian ngay trước hoặc ngay sau một lượt ghé thăm, nhưng không phải ở giữa một lượt ghé thăm), trong trường hợp đó, thời gian này sẽ kéo dài thời gian di chuyển tương ứng giữa các lượt ghé thăm,
- hoặc trước khi xe khởi hành (xe có thể không khởi hành giữa giờ nghỉ), trong trường hợp đó, việc này không ảnh hưởng đến thời gian khởi hành của xe.
- hoặc sau khi kết thúc chuyến đi (tương tự, với thời gian kết thúc chuyến đi).
| Trường | |
|---|---|
break_requests[] |
Trình tự các điểm chèn quảng cáo. Xem thông báo |
frequency_constraints[] |
Có thể áp dụng một số |
BreakRequest
Bạn phải biết trước trình tự nghỉ giải lao (tức là số lần và thứ tự nghỉ giải lao) áp dụng cho từng xe. BreakRequest lặp lại xác định trình tự đó, theo thứ tự mà các sự kiện phải xảy ra. Khung thời gian của họ (earliest_start_time / latest_start_time) có thể trùng lặp, nhưng phải tương thích với đơn đặt hàng (điều này đã được kiểm tra).
| Trường | |
|---|---|
earliest_start_time |
Bắt buộc. Giới hạn dưới (bao gồm) khi bắt đầu nghỉ giải lao. |
latest_start_time |
Bắt buộc. Giới hạn trên (bao gồm) khi bắt đầu nghỉ giải lao. |
min_duration |
Bắt buộc. Thời lượng tối thiểu của điểm chèn quảng cáo. Phải là số dương. |
FrequencyConstraint
Bạn có thể hạn chế thêm tần suất và thời lượng của các khoảng nghỉ được chỉ định ở trên bằng cách thực thi tần suất nghỉ tối thiểu, chẳng hạn như "Phải có khoảng nghỉ ít nhất 1 giờ sau mỗi 12 giờ". Giả sử quy định này có thể được hiểu là "Trong bất kỳ khoảng thời gian trượt nào là 12 giờ, phải có ít nhất một khoảng nghỉ ít nhất một giờ", thì ví dụ đó sẽ được chuyển thành FrequencyConstraint sau:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Thời gian và thời lượng của các điểm nghỉ trong giải pháp sẽ tuân thủ tất cả các quy tắc ràng buộc đó, ngoài khoảng thời gian và thời lượng tối thiểu đã được chỉ định trong BreakRequest.
Trên thực tế, FrequencyConstraint có thể áp dụng cho các điểm chèn quảng cáo không liên tiếp. Ví dụ: lịch biểu sau đây tuân thủ ví dụ "1 giờ mỗi 12 giờ":
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
| Trường | |
|---|---|
min_break_duration |
Bắt buộc. Thời lượng nghỉ tối thiểu cho quy tắc ràng buộc này. Không âm. Xem nội dung mô tả về |
max_inter_break_duration |
Bắt buộc. Khoảng thời gian tối đa được phép của bất kỳ khoảng thời gian nào trong tuyến đường không bao gồm ít nhất một phần thời gian nghỉ là |
DataFormat
Định dạng dữ liệu cho tệp đầu vào và đầu ra.
| Enum | |
|---|---|
DATA_FORMAT_UNSPECIFIED |
Giá trị không hợp lệ, định dạng không được là UNSPECIFIED. |
JSON |
Ký hiệu đối tượng JavaScript. |
PROTO_TEXT |
Định dạng văn bản của vùng đệm giao thức. Xem https://protobuf.dev/reference/protobuf/textformat-spec/ |
DistanceLimit
Giới hạn xác định khoảng cách tối đa có thể di chuyển. Đó có thể là giới hạn cứng hoặc giới hạn mềm.
Nếu bạn xác định giới hạn mềm, thì cả soft_max_meters và cost_per_kilometer_above_soft_max đều phải được xác định và không âm.
| Trường | |
|---|---|
max_meters |
Giới hạn nghiêm ngặt ràng buộc khoảng cách tối đa là max_meters. Giới hạn phải là số không âm. |
soft_max_meters |
Giới hạn mềm không thực thi giới hạn khoảng cách tối đa, nhưng khi vi phạm sẽ dẫn đến chi phí cộng dồn vào các chi phí khác được xác định trong mô hình, có cùng đơn vị. Nếu được xác định, soft_max_meters phải nhỏ hơn max_meters và phải là số không âm. |
cost_per_kilometer_below_soft_max |
Chi phí phát sinh trên mỗi km, tăng lên đến
|
cost_per_kilometer_above_soft_max |
Chi phí mỗi km phát sinh nếu quãng đường vượt quá giới hạn Chi phí không được là số âm. |
GcsDestination
Vị trí trên Google Cloud Storage nơi(các) tệp đầu ra sẽ được ghi vào.
| Trường | |
|---|---|
uri |
Bắt buộc. URI Google Cloud Storage. |
GcsSource
Vị trí Google Cloud Storage nơi tệp đầu vào sẽ được đọc.
| Trường | |
|---|---|
uri |
Bắt buộc. URI của một đối tượng Google Cloud Storage có định dạng |
InjectedSolutionConstraint
Giải pháp được chèn vào yêu cầu, bao gồm cả thông tin về những lượt ghé thăm phải bị ràng buộc và cách ràng buộc.
| Trường | |
|---|---|
routes[] |
Các tuyến của giải pháp cần chèn. Một số tuyến đường có thể bị bỏ qua trong giải pháp ban đầu. Các tuyến và lô hàng bị bỏ qua phải đáp ứng các giả định về tính hợp lệ cơ bản được liệt kê cho |
skipped_shipments[] |
Đã bỏ qua các lô hàng của giải pháp cần chèn. Một số bước có thể bị bỏ qua trong giải pháp ban đầu. Xem trường |
constraint_relaxations[] |
Đối với không hoặc nhiều nhóm xe, hãy chỉ định thời điểm và mức độ nới lỏng các quy tắc ràng buộc. Nếu trường này trống, thì tất cả các tuyến đường không trống của xe đều bị ràng buộc hoàn toàn. |
ConstraintRelaxation
Đối với một nhóm xe, hãy chỉ định(các) ngưỡng mà tại đó các quy tắc ràng buộc về lượt ghé thăm sẽ được nới lỏng và ở mức nào. Các lô hàng được liệt kê trong trường skipped_shipment bị ràng buộc phải bỏ qua; tức là không thể thực hiện được.
| Trường | |
|---|---|
relaxations[] |
Tất cả các quy tắc nới lỏng ràng buộc về lượt ghé thăm sẽ áp dụng cho các lượt ghé thăm trên tuyến đường có xe trong |
vehicle_indices[] |
Chỉ định chỉ mục xe áp dụng quy tắc ràng buộc về lượt ghé thăm Chỉ mục xe được liên kết giống như |
Thư giãn
Nếu relaxations trống, thời gian bắt đầu và trình tự của tất cả các lượt ghé thăm trên routes sẽ bị ràng buộc hoàn toàn và không có lượt ghé thăm mới nào có thể được chèn hoặc thêm vào các tuyến đường đó. Ngoài ra, thời gian bắt đầu và kết thúc của một xe trong routes bị ràng buộc hoàn toàn, trừ phi xe đó trống (tức là không có lượt ghé thăm và có used_if_route_is_empty được đặt thành false trong mô hình).
relaxations(i).level chỉ định mức độ nới lỏng quy tắc ràng buộc được áp dụng cho lượt ghé thăm #j thoả mãn:
route.visits(j).start_time >= relaxations(i).threshold_timeVÀj + 1 >= relaxations(i).threshold_visit_count
Tương tự, thời gian khởi động xe được nới lỏng thành relaxations(i).level nếu đáp ứng:
vehicle_start_time >= relaxations(i).threshold_timeVÀrelaxations(i).threshold_visit_count == 0và điểm cuối của xe được nới lỏng thànhrelaxations(i).levelnếu thoả mãn:vehicle_end_time >= relaxations(i).threshold_timeVÀroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Để áp dụng mức độ nới lỏng nếu một lượt ghé thăm đáp ứng threshold_visit_count HOẶC threshold_time, hãy thêm hai relaxations có cùng level: một có chỉ đặt threshold_visit_count và một có chỉ đặt threshold_time. Nếu một lượt truy cập đáp ứng điều kiện của nhiều relaxations, thì cấp độ ít nghiêm ngặt nhất sẽ được áp dụng. Do đó, từ điểm xuất phát của xe đến các điểm ghé thăm trên tuyến đường theo thứ tự đến điểm kết thúc của xe, mức độ nới lỏng sẽ trở nên thoải mái hơn: tức là mức độ nới lỏng không giảm khi tuyến đường tiến triển.
Thời gian và trình tự của các lượt ghé thăm tuyến đường không đáp ứng điều kiện ngưỡng của bất kỳ relaxations nào đều bị ràng buộc hoàn toàn và không được chèn lượt ghé thăm nào vào các trình tự này. Ngoài ra, nếu điểm bắt đầu hoặc điểm kết thúc của một phương tiện không đáp ứng các điều kiện của bất kỳ mức nới lỏng nào, thì thời gian sẽ được cố định, trừ phi phương tiện đó trống.
| Trường | |
|---|---|
level |
Mức độ nới lỏng quy tắc ràng buộc áp dụng khi các điều kiện tại hoặc sau |
threshold_time |
Thời điểm có thể áp dụng quy định nới lỏng |
threshold_visit_count |
Số lượt truy cập mà tại đó hoặc sau đó, quy tắc nới lỏng Nếu là |
Cấp độ
Thể hiện các mức độ nới lỏng quy tắc ràng buộc khác nhau, được áp dụng cho một lượt ghé thăm và những lượt ghé thăm tiếp theo khi lượt ghé thăm đó đáp ứng các điều kiện về ngưỡng.
Bảng liệt kê dưới đây được sắp xếp theo thứ tự nới lỏng tăng dần.
| Enum | |
|---|---|
LEVEL_UNSPECIFIED |
Mức độ nới lỏng mặc định ngầm định: không có quy tắc ràng buộc nào được nới lỏng, tức là tất cả các lượt ghé thăm đều bị ràng buộc hoàn toàn. Bạn không được sử dụng rõ ràng giá trị này trong |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Thời gian bắt đầu ghé thăm và thời gian bắt đầu/kết thúc của xe sẽ được nới lỏng, nhưng mỗi lượt ghé thăm vẫn liên kết với cùng một xe và phải tuân thủ trình tự ghé thăm: không thể chèn lượt ghé thăm nào vào giữa hoặc trước các lượt ghé thăm đó. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Tương tự như RELAX_VISIT_TIMES_AFTER_THRESHOLD, nhưng trình tự ghé thăm cũng được nới lỏng: chỉ xe này mới có thể thực hiện các lượt ghé thăm, nhưng có thể không thực hiện được. |
RELAX_ALL_AFTER_THRESHOLD |
Tương tự như RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, nhưng xe cũng được nới lỏng: các lượt ghé thăm hoàn toàn miễn phí tại hoặc sau thời gian ngưỡng và có thể không được thực hiện. |
InputConfig
Chỉ định dữ liệu đầu vào cho [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| Trường | |
|---|---|
data_format |
Bắt buộc. Định dạng dữ liệu đầu vào. |
Trường nhóm source. Bắt buộc. source chỉ có thể là một trong những trạng thái sau: |
|
gcs_source |
Vị trí Google Cloud Storage. Đây phải là một đối tượng (tệp) duy nhất. |
Thông tin vị trí
Đóng gói một vị trí (một điểm địa lý và một tiêu đề không bắt buộc).
| Trường | |
|---|---|
lat_lng |
Toạ độ địa lý của điểm tham chiếu. |
heading |
Hướng la bàn liên quan đến hướng của luồng giao thông. Giá trị này được dùng để chỉ định lề đường cần sử dụng cho việc đón và trả khách. Giá trị hướng có thể từ 0 đến 360, trong đó 0 chỉ định hướng chính Bắc, 90 chỉ định hướng chính Đông, v.v. |
OptimizeToursLongRunningMetadata
Loại này không có trường nào.
Siêu dữ liệu thao tác cho các lệnh gọi OptimizeToursLongRunning.
OptimizeToursRequest
Yêu cầu được gửi đến trình giải quyết tối ưu hoá hành trình, trong đó xác định mô hình lô hàng cần giải quyết cũng như các tham số tối ưu hoá.
| Trường | |
|---|---|
parent |
Bắt buộc. Dự án hoặc vị trí mục tiêu để thực hiện cuộc gọi. Định dạng:
Giá trị |
timeout |
Nếu bạn đặt thời gian chờ này, máy chủ sẽ trả về phản hồi trước khi hết thời gian chờ hoặc trước khi đến thời hạn của máy chủ cho các yêu cầu đồng bộ, tuỳ theo thời điểm nào đến trước. Đối với các tài nguyên không đồng bộ, máy chủ sẽ tạo một giải pháp (nếu có thể) trước khi hết thời gian chờ. |
model |
Mô hình lô hàng cần giải quyết. |
solving_mode |
Theo mặc định, chế độ giải là |
search_mode |
Chế độ tìm kiếm được dùng để giải quyết yêu cầu. |
injected_first_solution_routes[] |
Hướng dẫn thuật toán tối ưu hoá tìm ra giải pháp đầu tiên tương tự như giải pháp trước đó. Mô hình bị ràng buộc khi giải pháp đầu tiên được xây dựng. Mọi lô hàng không được thực hiện trên một tuyến đường đều được bỏ qua ngầm định trong giải pháp đầu tiên, nhưng có thể được thực hiện trong các giải pháp tiếp theo. Giải pháp phải đáp ứng một số giả định cơ bản về tính hợp lệ:
Nếu giải pháp được chèn không khả thi, thì hệ thống không nhất thiết phải trả về lỗi xác thực mà có thể trả về lỗi cho biết giải pháp không khả thi. |
injected_solution_constraint |
Ràng buộc thuật toán tối ưu hoá để tìm ra giải pháp cuối cùng tương tự như giải pháp trước đó. Ví dụ: bạn có thể dùng thuộc tính này để cố định các phần của tuyến đường đã hoàn thành hoặc sắp hoàn thành nhưng không được sửa đổi. Nếu giải pháp được chèn không khả thi, thì hệ thống không nhất thiết phải trả về lỗi xác thực mà có thể trả về lỗi cho biết giải pháp không khả thi. |
refresh_details_routes[] |
Nếu không trống, các tuyến đường đã cho sẽ được làm mới mà không sửa đổi trình tự ghé thăm hoặc thời gian di chuyển cơ bản: chỉ các thông tin chi tiết khác mới được cập nhật. Thao tác này không giải quyết được mô hình. Kể từ tháng 11 năm 2020, thuộc tính này chỉ điền sẵn các hình nhiều đường của những tuyến đường không trống và yêu cầu Trường Bạn không được sử dụng trường này cùng với
|
interpret_injected_solutions_using_labels |
Nếu đúng:
Cách diễn giải này áp dụng cho các trường Nếu đúng, nhãn trong các danh mục sau đây chỉ được xuất hiện tối đa một lần trong danh mục của chúng:
Nếu một Việc xoá các lượt ghé thăm tuyến đường hoặc toàn bộ tuyến đường khỏi một giải pháp được chèn có thể ảnh hưởng đến các quy tắc ràng buộc ngầm định, dẫn đến thay đổi trong giải pháp, lỗi xác thực hoặc không khả thi. LƯU Ý: Phương thức gọi phải đảm bảo rằng mỗi |
consider_road_traffic |
Cân nhắc thông tin ước tính lưu lượng truy cập khi tính toán các trường |
populate_polylines |
Nếu đúng, các hình nhiều đường sẽ được điền sẵn trong |
populate_transition_polylines |
Nếu đúng, hình nhiều đường và mã thông báo tuyến đường sẽ được điền vào phản hồi |
allow_large_deadline_despite_interruption_risk |
Nếu bạn đặt giá trị này, thì yêu cầu có thể có thời hạn (xem https://grpc.io/blog/deadlines) lên đến 60 phút. Nếu không, thời hạn tối đa chỉ là 30 phút. Xin lưu ý rằng các yêu cầu có thời gian hoạt động dài có nguy cơ bị gián đoạn cao hơn đáng kể (nhưng vẫn ở mức thấp). |
use_geodesic_distances |
Nếu đúng, quãng đường di chuyển sẽ được tính bằng khoảng cách trắc địa thay vì khoảng cách trên Google Maps và thời gian di chuyển sẽ được tính bằng khoảng cách trắc địa với tốc độ do |
label |
Nhãn có thể được dùng để xác định yêu cầu này, được báo cáo lại trong |
geodesic_meters_per_second |
Khi |
max_validation_errors |
Cắt bớt số lỗi xác thực được trả về. Các lỗi này thường được đính kèm vào tải trọng lỗi INVALID_ARGUMENT dưới dạng thông tin chi tiết về lỗi BadRequest (https://cloud.google.com/apis/design/errors#error_details), trừ phi solving_mode=VALIDATE_ONLY: hãy xem trường |
SearchMode
Chế độ xác định hành vi của nội dung tìm kiếm, đánh đổi độ trễ so với chất lượng giải pháp. Trong tất cả các chế độ, thời hạn yêu cầu chung đều được thực thi.
| Enum | |
|---|---|
SEARCH_MODE_UNSPECIFIED |
Chế độ tìm kiếm không xác định, tương đương với RETURN_FAST. |
RETURN_FAST |
Dừng tìm kiếm sau khi tìm thấy giải pháp phù hợp đầu tiên. |
CONSUME_ALL_AVAILABLE_TIME |
Dành toàn bộ thời gian có thể để tìm giải pháp tốt hơn. |
SolvingMode
Xác định cách trình giải quyết yêu cầu. Trong tất cả các chế độ ngoại trừ VALIDATE_ONLY, nếu yêu cầu không hợp lệ, bạn sẽ nhận được lỗi INVALID_REQUEST. Hãy xem max_validation_errors để giới hạn số lượng lỗi được trả về.
| Enum | |
|---|---|
DEFAULT_SOLVE |
Giải mô hình. Cảnh báo có thể được đưa ra trong [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]. |
VALIDATE_ONLY |
Chỉ xác thực mô hình mà không giải quyết mô hình: điền nhiều OptimizeToursResponse.validation_errors nhất có thể. |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
Chỉ điền QUAN TRỌNG: không phải tất cả lô hàng không khả thi đều được trả về tại đây, mà chỉ những lô hàng được phát hiện là không khả thi trong quá trình xử lý trước. |
TRANSFORM_AND_RETURN_REQUEST |
Chế độ này chỉ hoạt động nếu Thử nghiệm: Hãy xem https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request để biết thêm thông tin. |
OptimizeToursResponse
Phản hồi sau khi giải quyết vấn đề tối ưu hoá chuyến tham quan, trong đó có các tuyến đường mà mỗi xe đi theo, các lô hàng đã bị bỏ qua và tổng chi phí của giải pháp.
| Trường | |
|---|---|
routes[] |
Tuyến đường được tính toán cho từng xe; tuyến đường thứ i tương ứng với xe thứ i trong mô hình. |
request_label |
Bản sao của |
skipped_shipments[] |
Danh sách tất cả các lô hàng bị bỏ qua. |
validation_errors[] |
Danh sách tất cả lỗi xác thực mà chúng tôi có thể phát hiện một cách độc lập. Hãy xem phần giải thích về "NHIỀU LỖI" cho thông báo |
processed_request |
Trong một số trường hợp, chúng tôi sẽ sửa đổi yêu cầu nhận được trước khi giải quyết, tức là thêm chi phí. Nếu solving_mode == TRANSFORM_AND_RETURN_REQUEST, thì yêu cầu đã sửa đổi sẽ được trả về tại đây. Thử nghiệm: Hãy xem https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request để biết thêm thông tin chi tiết. |
metrics |
Các chỉ số về thời lượng, khoảng cách và mức sử dụng cho giải pháp này. |
Chỉ số
Chỉ số tổng thể, được tổng hợp trên tất cả các tuyến đường.
| Trường | |
|---|---|
aggregated_route_metrics |
Dữ liệu được tổng hợp theo tuyến đường. Mỗi chỉ số là tổng (hoặc giá trị tối đa, đối với tải) trên tất cả các trường |
skipped_mandatory_shipment_count |
Số lô hàng bắt buộc đã bỏ qua. |
used_vehicle_count |
Số lượng xe được sử dụng. Lưu ý: nếu tuyến đường của xe trống và |
earliest_vehicle_start_time |
Thời gian bắt đầu sớm nhất cho một xe đã sử dụng, được tính là giá trị tối thiểu trong tất cả các xe đã sử dụng của |
latest_vehicle_end_time |
Thời gian kết thúc muộn nhất cho một xe đã qua sử dụng, được tính là thời gian tối đa trong tất cả các xe đã qua sử dụng của |
costs |
Chi phí của giải pháp, được phân tích theo các trường yêu cầu liên quan đến chi phí. Khoá là đường dẫn proto, tương ứng với OptimizeToursRequest đầu vào, ví dụ: "model.shipments.pickups.cost" và giá trị là tổng chi phí do trường chi phí tương ứng tạo ra, được tổng hợp trên toàn bộ giải pháp. Nói cách khác, costs["model.shipments.pickups.cost"] là tổng của tất cả chi phí đến lấy hàng trong giải pháp. Tất cả chi phí được xác định trong mô hình đều được báo cáo chi tiết tại đây, ngoại trừ chi phí liên quan đến TransitionAttributes chỉ được báo cáo theo cách tổng hợp kể từ tháng 1 năm 2022. |
total_cost |
Tổng chi phí của giải pháp. Tổng của tất cả các giá trị trong bản đồ chi phí. |
OptimizeToursUriMetadata
Loại này không có trường nào.
Siêu dữ liệu thao tác cho các lệnh gọi OptimizeToursUri.
OptimizeToursUriRequest
Yêu cầu mà phương thức OptimizeToursUri sử dụng.
| Trường | |
|---|---|
parent |
Bắt buộc. Dự án hoặc vị trí mục tiêu để thực hiện cuộc gọi. Định dạng:
Giá trị |
input |
Bắt buộc. URI của đối tượng Cloud Storage chứa |
output |
Bắt buộc. URI của đối tượng Cloud Storage sẽ chứa |
OptimizeToursUriResponse
Phản hồi do phương thức OptimizeToursUri trả về.
| Trường | |
|---|---|
output |
Không bắt buộc. URI của đối tượng Cloud Storage chứa Bạn có thể sử dụng |
OptimizeToursValidationError
Mô tả lỗi hoặc cảnh báo gặp phải khi xác thực OptimizeToursRequest.
| Trường | |
|---|---|
code |
Lỗi xác thực được xác định bằng cặp ( Các trường sau phần này cung cấp thêm thông tin về lỗi. NHIỀU LỖI: Khi có nhiều lỗi, quy trình xác thực sẽ cố gắng đưa ra một số lỗi trong số đó. Tương tự như trình biên dịch, đây là một quy trình chưa hoàn hảo. Một số lỗi xác thực sẽ là "lỗi nghiêm trọng", tức là chúng sẽ dừng toàn bộ quá trình xác thực. Đây là trường hợp xảy ra lỗi TÍNH ỔN ĐỊNH: |
display_name |
Tên hiển thị của lỗi. |
fields[] |
Bối cảnh lỗi có thể liên quan đến 0, 1 (hầu hết thời gian) hoặc nhiều trường. Ví dụ: bạn có thể tham chiếu đến xe số 4 và lần đến lấy hàng đầu tiên của lô hàng số 2 như sau: Tuy nhiên, xin lưu ý rằng số lượng giá trị riêng biệt của |
error_message |
Chuỗi ký tự mà con người có thể đọc được, dùng để mô tả lỗi. Có mối liên kết 1:1 giữa TÍNH ỔN ĐỊNH: Không ổn định: thông báo lỗi liên quan đến một |
offending_values |
Có thể chứa(các) giá trị của(các) trường. Tính năng này không phải lúc nào cũng có sẵn. Bạn tuyệt đối không nên dựa vào phương thức này và chỉ sử dụng phương thức này để gỡ lỗi mô hình theo cách thủ công. |
FieldReference
Chỉ định ngữ cảnh cho lỗi xác thực. FieldReference luôn tham chiếu đến một trường nhất định trong tệp này và tuân theo cùng một cấu trúc phân cấp. Ví dụ: chúng ta có thể chỉ định phần tử số 2 của start_time_windows của xe số 5 bằng cách sử dụng:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
Tuy nhiên, chúng tôi bỏ qua các thực thể cấp cao nhất như OptimizeToursRequest hoặc ShipmentModel để tránh làm thông báo quá dài.
| Trường | |
|---|---|
name |
Tên của trường, ví dụ: "vehicles". |
sub_field |
Trường phụ lồng nhau đệ quy, nếu cần. |
Trường nhóm
|
|
index |
Chỉ mục của trường nếu lặp lại. |
key |
Khoá nếu trường là một bản đồ. |
OutputConfig
Chỉ định đích đến cho kết quả của [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| Trường | |
|---|---|
data_format |
Bắt buộc. Định dạng dữ liệu đầu ra. |
Trường nhóm destination. Bắt buộc. destination chỉ có thể là một trong những trạng thái sau: |
|
gcs_destination |
Vị trí Google Cloud Storage để ghi kết quả đầu ra. |
RouteModifiers
Đóng gói một tập hợp các điều kiện không bắt buộc cần đáp ứng khi tính toán tuyến đường của xe. Trường này tương tự như RouteModifiers trong Routes Preferred API của Google Maps Platform; hãy xem: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
| Trường | |
|---|---|
avoid_tolls |
Chỉ định xem có nên tránh đường có thu phí khi hợp lý hay không. Ưu tiên các tuyến đường không có thu phí. Chỉ áp dụng cho các phương tiện di chuyển có động cơ. |
avoid_highways |
Chỉ định xem có nên tránh đường cao tốc khi hợp lý hay không. Ưu tiên các tuyến đường không có đường cao tốc. Chỉ áp dụng cho các phương thức di chuyển bằng xe cơ giới. |
avoid_ferries |
Chỉ định xem có nên tránh đi phà khi hợp lý hay không. Ưu tiên các tuyến đường không cần đi phà. Chỉ áp dụng cho các phương thức di chuyển bằng xe cơ giới. |
avoid_indoor |
Không bắt buộc. Chỉ định xem có nên tránh đi vào trong nhà khi có thể hay không. Ưu tiên các tuyến đường không có tính năng chỉ đường trong nhà. Chỉ áp dụng cho phương thức di chuyển |
Shipment
Việc vận chuyển một mặt hàng, từ một trong các điểm lấy hàng đến một trong các điểm giao hàng. Để lô hàng được coi là đã thực hiện, một chiếc xe duy nhất phải ghé thăm một trong các địa điểm lấy hàng (và giảm dung tích dự phòng tương ứng), sau đó ghé thăm một trong các địa điểm giao hàng (và do đó tăng lại dung tích dự phòng tương ứng).
| Trường | |
|---|---|
display_name |
Tên hiển thị do người dùng xác định của lô hàng. Tên này có thể dài tối đa 63 ký tự và có thể sử dụng các ký tự UTF-8. |
pickups[] |
Tập hợp các phương án lấy hàng thay thế liên quan đến lô hàng. Nếu bạn không chỉ định, thì xe chỉ cần đến một địa điểm tương ứng với các chuyến giao hàng. |
deliveries[] |
Tập hợp các phương án giao hàng liên quan đến lô hàng. Nếu không được chỉ định, xe chỉ cần đến một vị trí tương ứng với các điểm đến lấy hàng. |
load_demands |
Nhu cầu tải của lô hàng (ví dụ: trọng lượng, thể tích, số lượng pallet, v.v.). Khoá trong bản đồ phải là giá trị nhận dạng mô tả loại tải tương ứng, lý tưởng nhất là bao gồm cả đơn vị. Ví dụ: "weight_kg", "volume_gallons", "pallet_count", v.v. Nếu một khoá nhất định không xuất hiện trong bản đồ, thì tải tương ứng sẽ được coi là rỗng. |
allowed_vehicle_indices[] |
Nhóm xe có thể thực hiện lô hàng này. Nếu bạn để trống, tất cả các xe đều có thể thực hiện hành động này. Xe được cung cấp theo chỉ mục trong danh sách |
costs_per_vehicle[] |
Chỉ định chi phí phát sinh khi lô hàng này được giao bằng từng xe. Nếu được chỉ định, thì thuộc tính này phải có MỘT TRONG HAI giá trị sau:
Các chi phí này phải có cùng đơn vị với |
costs_per_vehicle_indices[] |
Chỉ mục của các phương tiện áp dụng |
pickup_to_delivery_absolute_detour_limit |
Chỉ định thời gian đi đường vòng tuyệt đối tối đa so với tuyến đường ngắn nhất từ điểm đến lấy hàng đến điểm giao hàng. Nếu được chỉ định, giá trị này phải không âm và lô hàng phải có ít nhất một lần đến lấy hàng và một lần giao hàng. Ví dụ: giả sử t là thời gian ngắn nhất để đi từ điểm lấy hàng thay thế đã chọn đến thẳng điểm giao hàng thay thế đã chọn. Sau đó, chế độ cài đặt Nếu cả giới hạn tương đối và tuyệt đối đều được chỉ định trên cùng một lô hàng, thì giới hạn ràng buộc hơn sẽ được sử dụng cho mỗi cặp lấy hàng/giao hàng có thể xảy ra. Kể từ tháng 10 năm 2017, đường vòng chỉ được hỗ trợ khi thời gian di chuyển không phụ thuộc vào phương tiện. |
pickup_to_delivery_time_limit |
Chỉ định thời gian tối đa từ khi bắt đầu lấy hàng đến khi bắt đầu giao hàng. Nếu được chỉ định, giá trị này phải không âm và lô hàng phải có ít nhất một lần đến lấy hàng và một lần giao hàng. Điều này không phụ thuộc vào phương án nào được chọn để đến lấy hàng và giao hàng, cũng như không phụ thuộc vào tốc độ của xe. Bạn có thể chỉ định giá trị này cùng với các quy tắc ràng buộc về đường vòng tối đa: giải pháp sẽ tuân thủ cả hai thông số kỹ thuật. |
shipment_type |
Chuỗi không trống chỉ định "loại" cho lô hàng này. Bạn có thể dùng tính năng này để xác định các điểm không tương thích hoặc yêu cầu giữa Khác với |
label |
Chỉ định nhãn cho lô hàng này. Nhãn này được báo cáo trong phản hồi trong |
ignore |
Nếu đúng, hãy bỏ qua lô hàng này nhưng không áp dụng Việc bỏ qua một lô hàng sẽ dẫn đến lỗi xác thực khi có bất kỳ Bạn được phép bỏ qua một lô hàng được thực hiện trong |
penalty_cost |
Nếu lô hàng không được hoàn tất, hình phạt này sẽ được thêm vào tổng chi phí của các tuyến đường. Một lô hàng được coi là đã hoàn tất nếu một trong các phương án đến lấy hàng và giao hàng được ghé thăm. Chi phí có thể được thể hiện bằng cùng một đơn vị dùng cho tất cả các trường khác liên quan đến chi phí trong mô hình và phải là số dương. QUAN TRỌNG: Nếu không được chỉ định, hình phạt này được coi là vô hạn, tức là lô hàng phải được hoàn tất. |
pickup_to_delivery_relative_detour_limit |
Chỉ định thời gian đi đường vòng tương đối tối đa so với tuyến đường ngắn nhất từ điểm đến lấy hàng đến điểm giao hàng. Nếu được chỉ định, giá trị này phải không âm và lô hàng phải có ít nhất một lần đến lấy hàng và một lần giao hàng. Ví dụ: giả sử t là thời gian ngắn nhất để đi từ điểm lấy hàng thay thế đã chọn đến thẳng điểm giao hàng thay thế đã chọn. Sau đó, chế độ cài đặt Nếu cả giới hạn tương đối và tuyệt đối đều được chỉ định trên cùng một lô hàng, thì giới hạn ràng buộc hơn sẽ được sử dụng cho mỗi cặp lấy hàng/giao hàng có thể xảy ra. Kể từ tháng 10 năm 2017, đường vòng chỉ được hỗ trợ khi thời gian di chuyển không phụ thuộc vào phương tiện. |
Hoạt động tải
Khi thực hiện một lượt ghé thăm, một lượng hàng hoá được xác định trước có thể được thêm vào tải trọng của xe nếu đó là lượt lấy hàng hoặc bị trừ đi nếu đó là lượt giao hàng. Thông báo này xác định số tiền đó. Vui lòng xem load_demands.
| Trường | |
|---|---|
amount |
Mức thay đổi tải trọng của phương tiện thực hiện lượt ghé thăm tương ứng. Vì đây là số nguyên, nên người dùng nên chọn một đơn vị thích hợp để tránh mất độ chính xác. Phải ≥ 0. |
VisitRequest
Yêu cầu về một lượt ghé thăm có thể được thực hiện bằng một phương tiện: lượt ghé thăm này có một vị trí địa lý (hoặc hai, xem bên dưới), thời gian mở và đóng cửa được biểu thị bằng khung thời gian và thời gian dịch vụ (thời gian mà phương tiện dành ra sau khi đến để lấy hoặc giao hàng).
| Trường | |
|---|---|
arrival_location |
Vị trí địa lý mà xe đến khi thực hiện |
arrival_waypoint |
Điểm tham chiếu mà xe đến khi thực hiện |
departure_location |
Vị trí địa lý nơi xe khởi hành sau khi hoàn thành |
departure_waypoint |
Điểm tham chiếu nơi xe khởi hành sau khi hoàn thành |
tags[] |
Chỉ định các thẻ được đính kèm vào yêu cầu truy cập. Không được phép sử dụng chuỗi trống hoặc chuỗi trùng lặp. |
time_windows[] |
Khung thời gian ràng buộc thời gian đến tại một lượt ghé thăm. Xin lưu ý rằng một xe có thể khởi hành ngoài khung thời gian đến, tức là thời gian đến + thời lượng không cần phải nằm trong khung thời gian. Điều này có thể khiến bạn phải chờ đợi nếu xe đến trước Nếu không có Các khoảng thời gian phải tách biệt, tức là không có khoảng thời gian nào được trùng lặp hoặc liền kề với khoảng thời gian khác và phải theo thứ tự tăng dần. Bạn chỉ có thể đặt |
duration |
Thời gian ghé thăm, tức là thời gian xe dừng lại giữa lúc đến và lúc đi (được cộng vào thời gian chờ có thể xảy ra; xem |
cost |
Chi phí để phục vụ yêu cầu ghé thăm này trên một tuyến đường của xe. Bạn có thể dùng thuộc tính này để thanh toán các mức phí khác nhau cho từng phương thức lấy hàng hoặc giao hàng thay thế của một lô hàng. Chi phí này phải có cùng đơn vị với |
load_demands |
Tải nhu cầu của yêu cầu truy cập này. Trường này giống hệt trường |
visit_types[] |
Chỉ định loại lượt ghé thăm. Bạn có thể dùng thuộc tính này để phân bổ thêm thời gian cần thiết để một phương tiện hoàn tất lượt ghé thăm này (xem Mỗi loại chỉ có thể xuất hiện một lần. |
label |
Chỉ định nhãn cho |
avoid_u_turns |
Chỉ định xem có nên tránh quay đầu xe trên tuyến đường lái xe tại vị trí này hay không. Tính năng tránh quay đầu xe chỉ hoạt động trong khả năng tốt nhất và không đảm bảo tránh được hoàn toàn. Đây là một tính năng thử nghiệm và hành vi có thể thay đổi. Thử nghiệm: Hãy xem https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request để biết thêm thông tin chi tiết. |
ShipmentModel
Mô hình lô hàng chứa một tập hợp các lô hàng phải được thực hiện bằng một tập hợp các phương tiện, đồng thời giảm thiểu tổng chi phí, tức là tổng của:
- chi phí định tuyến xe (tổng chi phí trên tổng thời gian, chi phí trên thời gian di chuyển và chi phí cố định cho tất cả xe).
- hình phạt đối với lô hàng không được thực hiện.
- chi phí cho toàn bộ thời gian vận chuyển
| Trường | |
|---|---|
shipments[] |
Tập hợp các lô hàng phải được thực hiện trong mô hình. |
vehicles[] |
Tập hợp các phương tiện có thể dùng để thực hiện các lượt ghé thăm. |
objectives[] |
Tập hợp các mục tiêu cho mô hình này mà chúng ta sẽ chuyển đổi thành chi phí. Nếu không trống, mô hình đầu vào phải không có chi phí. Để nhận yêu cầu đã sửa đổi, vui lòng sử dụng Thử nghiệm: Hãy xem https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request để biết thêm thông tin. |
global_start_time |
Thời gian bắt đầu và kết thúc chung của mô hình: mọi thời gian nằm ngoài phạm vi này đều được coi là không hợp lệ. Khoảng thời gian của mô hình phải dưới một năm, tức là Khi sử dụng các trường |
global_end_time |
Nếu bạn không đặt, thì 00:00:00 UTC, ngày 1 tháng 1 năm 1971 (tức là giây: 31536000, nano giây: 0) sẽ được dùng làm giá trị mặc định. |
global_duration_cost_per_hour |
"Thời lượng tổng thể" của toàn bộ kế hoạch là khoảng thời gian giữa thời gian bắt đầu có hiệu lực sớm nhất và thời gian kết thúc có hiệu lực muộn nhất của tất cả các xe. Người dùng có thể chỉ định chi phí mỗi giờ cho số lượng đó để cố gắng và tối ưu hoá cho việc hoàn thành công việc sớm nhất, chẳng hạn. Chi phí này phải có cùng đơn vị với |
duration_distance_matrices[] |
Chỉ định ma trận thời lượng và khoảng cách được dùng trong mô hình. Nếu trường này trống, thì Google Maps hoặc khoảng cách trắc địa sẽ được sử dụng, tuỳ thuộc vào giá trị của trường Ví dụ về cách sử dụng:
|
duration_distance_matrix_src_tags[] |
Các thẻ xác định nguồn của ma trận thời lượng và khoảng cách; Thẻ tương ứng với |
duration_distance_matrix_dst_tags[] |
Thẻ xác định đích đến của ma trận thời lượng và khoảng cách; Thẻ tương ứng với |
transition_attributes[] |
Đã thêm các thuộc tính chuyển đổi vào mô hình. |
shipment_type_incompatibilities[] |
Các nhóm shipment_types không tương thích (xem |
shipment_type_requirements[] |
Tập hợp |
precedence_rules[] |
Tập hợp các quy tắc ưu tiên phải được thực thi trong mô hình. QUAN TRỌNG: Việc sử dụng quy tắc ưu tiên sẽ giới hạn quy mô của bài toán có thể tối ưu hoá. Những yêu cầu sử dụng quy tắc ưu tiên có nhiều lô hàng có thể bị từ chối. |
max_active_vehicles |
Giới hạn số lượng xe đang hoạt động tối đa. Một phương tiện được coi là đang hoạt động nếu tuyến đường của phương tiện đó thực hiện ít nhất một chuyến hàng. Bạn có thể dùng thuộc tính này để giới hạn số lượng tuyến đường trong trường hợp có ít tài xế hơn số xe và đội xe không đồng nhất. Sau đó, quy trình tối ưu hoá sẽ chọn một nhóm nhỏ phương tiện phù hợp nhất để sử dụng. Phải là số dương. |
DurationDistanceMatrix
Chỉ định ma trận thời lượng và khoảng cách từ vị trí bắt đầu của lượt ghé thăm và xe đến vị trí kết thúc của lượt ghé thăm và xe.
| Trường | |
|---|---|
rows[] |
Chỉ định các hàng của ma trận thời lượng và khoảng cách. Mảng này phải có số phần tử bằng với |
vehicle_start_tag |
Thẻ xác định những phương tiện áp dụng ma trận thời gian và khoảng cách này. Nếu bạn để trống, quy tắc này sẽ áp dụng cho tất cả các xe và chỉ có thể có một ma trận. Mỗi điểm xuất phát của xe phải khớp với đúng một ma trận, tức là đúng một trong các trường Tất cả ma trận phải có |
Hàng
Chỉ định một hàng của ma trận thời lượng và khoảng cách.
| Trường | |
|---|---|
durations[] |
Giá trị thời lượng cho một hàng nhất định. Mảng này phải có số phần tử bằng với |
meters[] |
Giá trị khoảng cách cho một hàng nhất định. Nếu không có chi phí hoặc quy tắc ràng buộc nào liên quan đến khoảng cách trong mô hình, thì bạn có thể để trống; nếu không, thì mô hình phải có nhiều phần tử như |
Mục tiêu
Mục tiêu thay thế hoàn toàn mô hình chi phí, do đó không tương thích với chi phí đã có từ trước. Mỗi mục tiêu liên kết với một số chi phí được xác định trước, ví dụ: phương tiện, lô hàng hoặc thuộc tính chuyển đổi.
Thử nghiệm: Hãy xem https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request để biết thêm thông tin.
| Trường | |
|---|---|
type |
Loại mục tiêu. |
weight |
Mức độ quan trọng của mục tiêu này so với các mục tiêu khác. Đây có thể là bất kỳ số không âm nào, tổng trọng số không nhất thiết phải bằng 1. Trọng số mặc định là 1.0. |
Loại
Loại mục tiêu sẽ được liên kết với một nhóm chi phí.
| Enum | |
|---|---|
DEFAULT |
Một tập hợp chi phí mặc định sẽ được sử dụng để đảm bảo giải pháp hợp lý. Lưu ý: bạn có thể sử dụng riêng mục tiêu này, nhưng mục tiêu này cũng sẽ luôn được thêm với trọng số 1,0 (làm cơ sở) vào các mục tiêu do người dùng chỉ định, nếu chưa có. |
MIN_DISTANCE |
"MIN". Giảm thiểu tổng quãng đường đã đi. |
MIN_WORKING_TIME |
Giảm thiểu tổng thời gian làm việc, được tính tổng trên tất cả các xe. |
MIN_TRAVEL_TIME |
Tương tự như trên nhưng chỉ tập trung vào thời gian di chuyển. |
MIN_NUM_VEHICLES |
Giảm thiểu số lượng xe được sử dụng. |
PrecedenceRule
Quy tắc ưu tiên giữa hai sự kiện (mỗi sự kiện là việc lấy hàng hoặc giao hàng của một lô hàng): sự kiện "thứ hai" phải bắt đầu ít nhất offset_duration sau khi sự kiện "đầu tiên" bắt đầu.
Nhiều thứ tự ưu tiên có thể tham chiếu đến cùng một sự kiện (hoặc các sự kiện có liên quan), ví dụ: "việc lấy hàng B diễn ra sau khi giao hàng A" và "việc lấy hàng C diễn ra sau khi lấy hàng B".
Hơn nữa, mức độ ưu tiên chỉ áp dụng khi cả hai lô hàng đều được thực hiện và bị bỏ qua trong các trường hợp khác.
| Trường | |
|---|---|
first_is_delivery |
Cho biết liệu sự kiện "đầu tiên" có phải là sự kiện giao hàng hay không. |
second_is_delivery |
Cho biết liệu sự kiện "thứ hai" có phải là sự kiện phân phối hay không. |
offset_duration |
Độ lệch giữa sự kiện "đầu tiên" và sự kiện "thứ hai". Giá trị này có thể là số âm. |
first_index |
Chỉ mục lô hàng của sự kiện "đầu tiên". Bạn phải chỉ định trường này. |
second_index |
Chỉ mục lô hàng của sự kiện "thứ hai". Bạn phải chỉ định trường này. |
ShipmentRoute
Tuyến đường của một xe có thể được phân tách theo trục thời gian như sau (giả sử có n lượt ghé thăm):
| | | | | 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
Lưu ý rằng chúng tôi phân biệt giữa:
- "sự kiện đúng giờ", chẳng hạn như thời điểm bắt đầu và kết thúc của xe cũng như thời điểm bắt đầu và kết thúc của mỗi lượt ghé thăm (hay còn gọi là thời điểm đến và đi). Các sự kiện này xảy ra tại một giây nhất định.
- "khoảng thời gian", chẳng hạn như chính các lượt ghé thăm và quá trình chuyển đổi giữa các lượt ghé thăm. Mặc dù khoảng thời gian đôi khi có thể có thời lượng bằng 0, tức là bắt đầu và kết thúc trong cùng một giây, nhưng chúng thường có thời lượng dương.
Bất biến:
- Nếu có n lượt truy cập, thì sẽ có n+1 lượt chuyển đổi.
- Một lượt ghé thăm luôn được bao quanh bởi một lượt chuyển đổi trước đó (cùng chỉ mục) và một lượt chuyển đổi sau đó (chỉ mục + 1).
- Quá trình khởi động xe luôn theo sau quá trình chuyển đổi #0.
- Điểm kết thúc của xe luôn đứng sau lượt chuyển đổi #n.
Sau đây là những gì xảy ra trong quá trình Transition và 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
Cuối cùng, dưới đây là cách sắp xếp các trạng thái DI CHUYỂN, NGHỈ GIẢI LAO, TRÌ HOÃN và CHỜ trong quá trình chuyển đổi.
- Các khoảng thời gian này không trùng lặp.
- DELAY là duy nhất và phải là một khoảng thời gian liên tục ngay trước lượt ghé thăm tiếp theo (hoặc điểm kết thúc của xe). Do đó, bạn chỉ cần biết thời gian trễ để biết thời gian bắt đầu và kết thúc của thời gian trễ đó.
- BREAKS là các khoảng thời gian liên tiếp, không chồng chéo. Phản hồi này chỉ định thời gian bắt đầu và thời lượng của mỗi điểm chèn quảng cáo.
- TRAVEL và WAIT là "có thể ưu tiên": chúng có thể bị gián đoạn nhiều lần trong quá trình chuyển đổi này. Ứng dụng có thể giả định rằng việc di chuyển diễn ra "càng sớm càng tốt" và "chờ" lấp đầy thời gian còn lại.
Ví dụ (phức tạp):
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 | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
| Trường | |
|---|---|
vehicle_index |
Xe thực hiện tuyến đường, được xác định bằng chỉ mục trong nguồn |
vehicle_label |
Nhãn của xe thực hiện tuyến đường này, bằng |
vehicle_start_time |
Thời gian xe bắt đầu hành trình. |
vehicle_end_time |
Thời điểm xe hoàn tất tuyến đường. |
visits[] |
Trình tự có thứ tự của các lượt ghé thăm đại diện cho một tuyến đường. visits[i] là lượt ghé thăm thứ i trong tuyến đường. Nếu trường này trống, thì xe được coi là chưa qua sử dụng. |
transitions[] |
Danh sách chuyển đổi theo thứ tự cho tuyến đường. |
has_traffic_infeasibilities |
Khi Thời gian đến next_visit có thể sẽ muộn hơn khung thời gian hiện tại do thời gian di chuyển ước tính tăng thêm |
route_polyline |
Biểu thị hình nhiều đường được mã hoá của tuyến đường. Trường này chỉ được điền sẵn nếu |
breaks[] |
Thời gian nghỉ theo lịch trình của xe thực hiện tuyến đường này. Chuỗi |
metrics |
Các chỉ số về thời lượng, khoảng cách và tải cho tuyến đường này. Các trường của |
vehicle_fullness |
Trường Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
route_costs |
Chi phí của tuyến đường, được phân tích theo các trường yêu cầu liên quan đến chi phí. Khoá là đường dẫn proto, tương ứng với OptimizeToursRequest đầu vào, ví dụ: "model.shipments.pickups.cost" và giá trị là tổng chi phí do trường chi phí tương ứng tạo ra, được tổng hợp trên toàn bộ tuyến đường. Nói cách khác, costs["model.shipments.pickups.cost"] là tổng của tất cả chi phí đến lấy hàng trong tuyến đường. Tất cả chi phí được xác định trong mô hình đều được báo cáo chi tiết tại đây, ngoại trừ chi phí liên quan đến TransitionAttributes chỉ được báo cáo theo cách tổng hợp kể từ tháng 1 năm 2022. |
route_total_cost |
Tổng chi phí của tuyến đường. Tổng của tất cả chi phí trong bản đồ chi phí. |
Nghỉ
Dữ liệu thể hiện việc thực thi một điểm chèn quảng cáo.
| Trường | |
|---|---|
start_time |
Thời gian bắt đầu của một điểm chèn quảng cáo. |
duration |
Thời gian nghỉ giải lao. |
EncodedPolyline
Biểu diễn được mã hoá của một hình nhiều đường. Bạn có thể xem thêm thông tin về phương thức mã hoá hình nhiều đường tại đây: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
| Trường | |
|---|---|
points |
Chuỗi đại diện cho các điểm được mã hoá của hình nhiều đường. |
Hiệu ứng chuyển cảnh
Chuyển đổi giữa hai sự kiện trên tuyến đường. Xem nội dung mô tả về ShipmentRoute.
Nếu xe không có start_location và/hoặc end_location, thì các chỉ số di chuyển tương ứng sẽ là 0.
| Trường | |
|---|---|
travel_duration |
Thời gian di chuyển trong quá trình chuyển đổi này. |
travel_distance_meters |
Khoảng cách đã di chuyển trong quá trình chuyển đổi. |
traffic_info_unavailable |
Khi lưu lượng truy cập được yêu cầu thông qua |
delay_duration |
Tổng thời gian trễ áp dụng cho quá trình chuyển đổi này. Nếu có, độ trễ sẽ bắt đầu chính xác |
break_duration |
Tổng thời lượng của các điểm nghỉ xảy ra trong quá trình chuyển đổi này (nếu có). Thông tin chi tiết về thời gian bắt đầu và thời lượng của mỗi điểm chèn quảng cáo được lưu trữ trong |
wait_duration |
Thời gian chờ trong quá trình chuyển đổi này. Thời gian chờ tương ứng với thời gian rảnh và không bao gồm thời gian nghỉ. Cũng xin lưu ý rằng thời gian chờ này có thể được chia thành nhiều khoảng thời gian không liền kề. |
total_duration |
Tổng thời lượng của hiệu ứng chuyển đổi, được cung cấp để thuận tiện. Giá trị này bằng:
|
start_time |
Thời gian bắt đầu của quá trình chuyển đổi này. |
route_polyline |
Biểu diễn hình nhiều đường được mã hoá của tuyến đường đã đi trong quá trình chuyển đổi. Trường này chỉ được điền sẵn nếu |
route_token |
Chỉ có đầu ra. Một mã thông báo mờ có thể được truyền đến SDK điều hướng để tạo lại tuyến đường trong quá trình điều hướng và trong trường hợp định tuyến lại, hãy tuân thủ ý định ban đầu khi tuyến đường được tạo. Hãy coi mã thông báo này là một blob mờ. Đừng so sánh giá trị của trường này giữa các yêu cầu vì giá trị có thể thay đổi ngay cả khi dịch vụ trả về cùng một tuyến đường. Trường này chỉ được điền sẵn nếu |
vehicle_loads |
Tải trọng của xe trong quá trình chuyển đổi này, đối với mỗi loại xuất hiện trong Tải trọng trong quá trình chuyển đổi đầu tiên là tải trọng bắt đầu của tuyến đường của xe. Sau đó, sau mỗi lượt ghé thăm, |
VehicleLoad
Báo cáo tải trọng thực tế của xe tại một số điểm dọc theo tuyến đường, cho một loại nhất định (xem Transition.vehicle_loads).
| Trường | |
|---|---|
amount |
Tải trọng của xe, đối với loại đã cho. Đơn vị tải thường được chỉ định theo loại. Vui lòng xem |
Truy cập
Một lượt ghé thăm được thực hiện trong một tuyến đường. Lượt ghé thăm này tương ứng với một lần đến lấy hàng hoặc giao hàng của Shipment.
| Trường | |
|---|---|
shipment_index |
Chỉ mục của trường |
is_pickup |
Nếu đúng, lượt ghé thăm tương ứng với một lượt đến lấy |
visit_request_index |
Chỉ mục của |
start_time |
Thời gian bắt đầu lượt ghé thăm. Xin lưu ý rằng xe có thể đến địa điểm ghé thăm sớm hơn thời gian này. Thời gian nhất quán với |
load_demands |
Tổng nhu cầu tải của lượt ghé thăm là tổng của lô hàng và yêu cầu ghé thăm |
detour |
Thời gian đi đường vòng tăng thêm do các lô hàng được ghé thăm trên tuyến đường trước khi ghé thăm và thời gian chờ tiềm năng do khung thời gian gây ra. Nếu lượt ghé thăm là một lượt giao hàng, thì đường vòng sẽ được tính từ lượt ghé thăm lấy hàng tương ứng và bằng: Nếu không, giá trị này sẽ được tính từ |
shipment_label |
Bản sao của |
visit_label |
Bản sao của |
visit_type |
Không bắt buộc. Chỉ định loại lượt ghé thăm. Ghi đè trường |
injected_solution_location_token |
Mã thông báo mờ đại diện cho thông tin về một địa điểm ghé thăm. Trường này có thể được điền sẵn trong các lượt ghé thăm của tuyến đường kết quả khi Thử nghiệm: Hãy xem https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request để biết thêm thông tin chi tiết. |
VisitType
Cho biết lượt ghé thăm là để lấy hàng, giao hàng hay ghé thăm một Stop. Lượt ghé thăm một điểm dừng chỉ được sử dụng khi bạn bật tính năng tối ưu hoá đa phương thức.
| Enum | |
|---|---|
VISIT_TYPE_UNSPECIFIED |
Loại lượt ghé thăm không xác định. |
PICKUP_SHIPMENT |
Lượt ghé thăm tương ứng với một lần đến lấy hàng. |
DELIVER_SHIPMENT |
Lượt ghé thăm tương ứng với một lần giao hàng. |
ShipmentTypeIncompatibility
Chỉ định các trường hợp không tương thích giữa các lô hàng tuỳ thuộc vào shipment_type của lô hàng. Sự xuất hiện của các lô hàng không tương thích trên cùng một tuyến đường bị hạn chế dựa trên chế độ không tương thích.
| Trường | |
|---|---|
types[] |
Danh sách các loại không tương thích. Hai lô hàng có |
incompatibility_mode |
Chế độ được áp dụng cho trường hợp không tương thích. |
IncompatibilityMode
Các chế độ xác định cách hạn chế việc xuất hiện các lô hàng không tương thích trên cùng một tuyến đường.
| Enum | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Chế độ không tương thích không xác định. Không bao giờ được sử dụng giá trị này. |
NOT_PERFORMED_BY_SAME_VEHICLE |
Ở chế độ này, hai lô hàng có loại không tương thích không bao giờ có thể dùng chung một phương tiện. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Ở chế độ này, hai lô hàng có loại không tương thích không bao giờ có thể ở trên cùng một xe cùng một lúc:
|
ShipmentTypeRequirement
Chỉ định các yêu cầu giữa các lô hàng dựa trên shipment_type của chúng. Thông tin cụ thể về yêu cầu được xác định theo chế độ yêu cầu.
| Trường | |
|---|---|
required_shipment_type_alternatives[] |
Danh sách các loại lô hàng thay thế mà |
dependent_shipment_types[] |
Tất cả lô hàng có loại trong trường LƯU Ý: Không cho phép chuỗi yêu cầu mà trong đó |
requirement_mode |
Chế độ được áp dụng cho yêu cầu. |
RequirementMode
Các chế độ xác định hình thức của các lô hàng phụ thuộc trên một tuyến đường.
| Enum | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Chế độ yêu cầu không xác định. Không bao giờ được sử dụng giá trị này. |
PERFORMED_BY_SAME_VEHICLE |
Ở chế độ này, tất cả lô hàng "phụ thuộc" phải dùng chung một xe với ít nhất một trong các lô hàng "bắt buộc". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Với chế độ Do đó, một lô hàng "phụ thuộc" phải có:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Tương tự như trước, ngoại trừ việc các lô hàng "phụ thuộc" cần phải có một lô hàng "bắt buộc" trên xe tại thời điểm giao hàng. |
SkippedShipment
Chỉ định thông tin chi tiết về các lô hàng chưa được thực hiện trong một giải pháp. Đối với các trường hợp không đáng kể và/hoặc nếu có thể xác định nguyên nhân bỏ qua, chúng tôi sẽ báo cáo lý do tại đây.
| Trường | |
|---|---|
index |
Chỉ mục tương ứng với chỉ mục của lô hàng trong |
label |
Bản sao của |
reasons[] |
Danh sách lý do giải thích tại sao lô hàng bị bỏ qua. Xem bình luận ở trên |
penalty_cost |
Đây là bản sao của Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
estimated_incompatible_vehicle_ratio |
Tỷ lệ ước tính số xe không thể thực hiện chuyến hàng này vì ít nhất một trong các lý do bên dưới. Lưu ý: thông tin này chỉ được điền khi lý do liên quan đến một chiếc xe. Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
Lý do
Nếu chúng tôi có thể giải thích lý do lô hàng bị bỏ qua, thì lý do sẽ được liệt kê tại đây. Nếu lý do không như nhau cho tất cả các xe, thì reason sẽ có nhiều hơn 1 phần tử. Một lô hàng bị bỏ qua không được có lý do trùng lặp, tức là tất cả các trường đều giống nhau, ngoại trừ example_vehicle_index. Ví dụ:
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
}
Lô hàng bị bỏ qua không tương thích với tất cả các xe. Lý do có thể khác nhau đối với tất cả các xe, nhưng ít nhất một xe sẽ vượt quá sức chứa "Táo" (bao gồm cả xe 1), ít nhất một xe sẽ vượt quá sức chứa "Lê" (bao gồm cả xe 3) và ít nhất một xe sẽ vượt quá giới hạn khoảng cách (bao gồm cả xe 1).
| Trường | |
|---|---|
code |
Tham khảo các nhận xét về Mã. |
example_vehicle_indices[] |
Tương tự như Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
example_exceeded_capacity_type |
Nếu mã lý do là |
example_vehicle_index |
Nếu lý do liên quan đến việc lô hàng không tương thích với xe, thì trường này sẽ cung cấp chỉ mục của một xe có liên quan. |
Mã
Mã xác định loại lý do. Thứ tự ở đây không có ý nghĩa. Cụ thể, phương thức này không cho biết liệu một lý do nhất định có xuất hiện trước một lý do khác trong giải pháp hay không, nếu cả hai đều áp dụng.
| Enum | |
|---|---|
CODE_UNSPECIFIED |
Bạn không nên sử dụng thuộc tính này. |
NO_VEHICLE |
Không có xe nào trong mô hình khiến tất cả các lô hàng đều không khả thi. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
Nhu cầu của lô hàng vượt quá sức chứa của xe đối với một số loại sức chứa, một trong số đó là example_exceeded_capacity_type. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
Khoảng cách tối thiểu cần thiết để thực hiện lô hàng này, tức là từ Xin lưu ý rằng đối với phép tính này, chúng tôi sử dụng khoảng cách trắc địa. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
Thời gian tối thiểu cần thiết để thực hiện lô hàng này, bao gồm cả thời gian di chuyển, thời gian chờ và thời gian phục vụ, vượt quá Lưu ý: thời gian di chuyển được tính theo trường hợp tốt nhất, cụ thể là khoảng cách trắc địa x 36 m/giây (khoảng 130 km/giờ). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
Tương tự như trên nhưng chúng tôi chỉ so sánh thời gian di chuyển tối thiểu và travel_duration_limit của xe. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
Xe không thể thực hiện lô hàng này trong trường hợp tốt nhất (xem CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT để biết cách tính thời gian) nếu xe bắt đầu vào thời gian bắt đầu sớm nhất: tổng thời gian sẽ khiến xe kết thúc sau thời gian kết thúc muộn nhất. |
VEHICLE_NOT_ALLOWED |
Trường allowed_vehicle_indices của lô hàng không trống và xe này không thuộc lô hàng đó. |
VEHICLE_IGNORED |
Trường Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
SHIPMENT_IGNORED |
Trường Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT |
Lô hàng bị bỏ qua trong Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED |
Việc nới lỏng tuyến đường của xe được chỉ định trong Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
ZERO_PENALTY_COST |
Lô hàng có chi phí phạt bằng 0. Mặc dù điều này có thể hữu ích khi là một lựa chọn lập mô hình nâng cao, nhưng cũng có thể giải thích lý do một lô hàng bị bỏ qua sau khi thực tế xảy ra. Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
TimeWindow
Khung thời gian ràng buộc thời gian của một sự kiện, chẳng hạn như thời gian đến của một lượt ghé thăm hoặc thời gian bắt đầu và kết thúc của một xe.
Các giới hạn khung thời gian cố định, start_time và end_time, thực thi thời gian sớm nhất và muộn nhất của sự kiện, sao cho start_time <= event_time <=
end_time. Giới hạn dưới của khoảng thời gian linh hoạt, soft_start_time, thể hiện lựa chọn ưu tiên cho sự kiện xảy ra tại hoặc sau soft_start_time bằng cách chịu một khoản chi phí tỷ lệ thuận với thời gian trước thời gian bắt đầu mềm mà sự kiện xảy ra. Giới hạn trên của khoảng thời gian mềm, soft_end_time, thể hiện lựa chọn ưu tiên cho sự kiện xảy ra tại hoặc trước soft_end_time bằng cách chịu chi phí tỷ lệ thuận với thời gian sau khi soft_end_time sự kiện xảy ra. start_time, end_time, soft_start_time và soft_end_time phải nằm trong giới hạn thời gian chung (xem ShipmentModel.global_start_time và ShipmentModel.global_end_time) và phải tuân thủ:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
| Trường | |
|---|---|
start_time |
Thời gian bắt đầu của khung thời gian cố định. Nếu không được chỉ định, giá trị này sẽ được đặt thành |
end_time |
Thời gian kết thúc của khung thời gian cố định. Nếu không được chỉ định, giá trị này sẽ được đặt thành |
soft_start_time |
Thời gian bắt đầu mềm của khoảng thời gian. |
soft_end_time |
Thời gian kết thúc không bắt buộc của khoảng thời gian. |
cost_per_hour_before_soft_start_time |
Chi phí mỗi giờ được thêm vào các chi phí khác trong mô hình nếu sự kiện xảy ra trước soft_start_time, được tính như sau: Chi phí này phải là số dương và bạn chỉ có thể đặt trường này nếu đã đặt soft_start_time. |
cost_per_hour_after_soft_end_time |
Chi phí mỗi giờ được thêm vào các chi phí khác trong mô hình nếu sự kiện xảy ra sau Chi phí này phải là số dương và bạn chỉ có thể đặt trường này nếu đã đặt |
TransitionAttributes
Chỉ định các thuộc tính của quá trình chuyển đổi giữa hai lượt ghé thăm liên tiếp trên một tuyến đường. Một số TransitionAttributes có thể áp dụng cho cùng một quá trình chuyển đổi: trong trường hợp đó, tất cả chi phí bổ sung sẽ được cộng dồn và áp dụng quy tắc ràng buộc hoặc giới hạn nghiêm ngặt nhất (theo ngữ nghĩa "AND" tự nhiên).
| Trường | |
|---|---|
src_tag |
Thẻ xác định tập hợp các hiệu ứng chuyển đổi (src->dst) mà các thuộc tính này áp dụng. Một lượt ghé thăm hoặc lượt khởi hành xe nguồn sẽ khớp nếu |
excluded_src_tag |
Vui lòng xem |
dst_tag |
Lượt ghé thăm điểm đến hoặc điểm kết thúc của xe khớp nếu |
excluded_dst_tag |
Vui lòng xem |
cost |
Chỉ định chi phí để thực hiện quá trình chuyển đổi này. Giá trị này có cùng đơn vị với tất cả các chi phí khác trong mô hình và không được là số âm. Phí này được áp dụng ngoài tất cả các chi phí hiện có khác. |
cost_per_kilometer |
Chỉ định chi phí cho mỗi km áp dụng cho quãng đường đã đi trong khi thực hiện quá trình chuyển đổi này. Giá trị này được cộng vào mọi |
distance_limit |
Chỉ định giới hạn về quãng đường đã đi trong khi thực hiện quá trình chuyển đổi này. Kể từ tháng 6 năm 2021, chỉ hỗ trợ giới hạn mềm. |
delay |
Chỉ định độ trễ phát sinh khi thực hiện chuyển đổi này. Độ trễ này luôn xảy ra sau khi kết thúc lượt truy cập nguồn và trước khi bắt đầu lượt truy cập đích. |
URI
Giá trị nhận dạng tài nguyên thống nhất trỏ đến một tài nguyên mà Route Optimization API có thể đọc và ghi.
| Trường | |
|---|---|
uri |
URI của tài nguyên. Tài nguyên có thể chưa tồn tại. Nội dung của tài nguyên được mã hoá dưới dạng JSON hoặc textproto. Chỉ hỗ trợ tài nguyên Google Cloud Storage. Nếu tài nguyên được mã hoá dưới dạng JSON, thì tên tài nguyên phải có hậu tố |
Xe
Mô hình hoá một chiếc xe trong bài toán vận chuyển. Việc giải quyết vấn đề về lô hàng sẽ tạo ra một tuyến đường bắt đầu từ start_location và kết thúc tại end_location cho xe này. Tuyến đường là một chuỗi các lượt ghé thăm (xem ShipmentRoute).
| Trường | |
|---|---|
display_name |
Tên hiển thị do người dùng xác định của xe. Tên này có thể dài tối đa 63 ký tự và có thể sử dụng các ký tự UTF-8. |
travel_mode |
Phương thức di chuyển ảnh hưởng đến những tuyến đường mà xe có thể đi và tốc độ của xe. Xem thêm |
route_modifiers |
Một nhóm điều kiện cần đáp ứng, ảnh hưởng đến cách tính toán tuyến đường cho phương tiện nhất định. |
start_location |
Vị trí địa lý nơi xe bắt đầu trước khi nhận bất kỳ lô hàng nào. Nếu không được chỉ định, xe sẽ bắt đầu tại điểm đón đầu tiên. Nếu mô hình lô hàng có ma trận thời lượng và khoảng cách, bạn không được chỉ định |
start_waypoint |
Điểm tham chiếu đại diện cho một vị trí địa lý nơi xe bắt đầu trước khi nhận bất kỳ lô hàng nào. Nếu bạn không chỉ định cả |
end_location |
Vị trí địa lý nơi xe dừng lại sau khi hoàn thành |
end_waypoint |
Điểm tham chiếu đại diện cho một vị trí địa lý nơi xe dừng lại sau khi hoàn tất |
start_tags[] |
Chỉ định các thẻ được đính kèm vào điểm bắt đầu của tuyến đường của xe. Không được phép sử dụng chuỗi trống hoặc chuỗi trùng lặp. |
end_tags[] |
Chỉ định các thẻ được đính kèm vào cuối tuyến đường của xe. Không được phép sử dụng chuỗi trống hoặc chuỗi trùng lặp. |
start_time_windows[] |
Khung thời gian mà xe có thể khởi hành từ vị trí xuất phát. Các giá trị này phải nằm trong giới hạn thời gian chung (xem các trường Các khoảng thời gian thuộc cùng một trường lặp lại phải tách biệt, tức là không có khoảng thời gian nào có thể trùng lặp hoặc liền kề với khoảng thời gian khác và các khoảng thời gian đó phải theo thứ tự thời gian. Bạn chỉ có thể đặt |
end_time_windows[] |
Khung thời gian mà xe có thể đến vị trí cuối cùng. Các giá trị này phải nằm trong giới hạn thời gian chung (xem các trường Các khoảng thời gian thuộc cùng một trường lặp lại phải tách biệt, tức là không có khoảng thời gian nào có thể trùng lặp hoặc liền kề với khoảng thời gian khác và các khoảng thời gian đó phải theo thứ tự thời gian. Bạn chỉ có thể đặt |
unloading_policy |
Chính sách dỡ hàng được thực thi trên xe. |
load_limits |
Sức chứa của xe (ví dụ: trọng lượng, thể tích, số lượng pallet). Các khoá trong bản đồ là giá trị nhận dạng của loại tải, nhất quán với các khoá của trường |
cost_per_hour |
Chi phí xe: tất cả chi phí cộng lại và phải có cùng đơn vị với Chi phí mỗi giờ của tuyến đường của xe. Chi phí này được áp dụng cho tổng thời gian của tuyến đường, bao gồm cả thời gian di chuyển, thời gian chờ và thời gian ghé thăm. Việc sử dụng |
cost_per_traveled_hour |
Chi phí cho mỗi giờ di chuyển của tuyến đường của xe. Chi phí này chỉ áp dụng cho thời gian di chuyển của tuyến đường (tức là thời gian được báo cáo trong |
cost_per_kilometer |
Chi phí trên mỗi km của tuyến đường xe đi. Chi phí này được áp dụng cho khoảng cách được báo cáo trong |
fixed_cost |
Chi phí cố định được áp dụng nếu xe này được dùng để xử lý một lô hàng. |
used_if_route_is_empty |
Trường này chỉ áp dụng cho các xe khi tuyến đường của xe không phục vụ bất kỳ lô hàng nào. Thuộc tính này cho biết liệu xe có được coi là đã qua sử dụng hay không trong trường hợp này. Nếu đúng, xe sẽ đi từ vị trí xuất phát đến vị trí kết thúc ngay cả khi không phục vụ bất kỳ lô hàng nào, đồng thời chi phí thời gian và quãng đường phát sinh từ hành trình xuất phát --> kết thúc sẽ được tính đến. Nếu không, xe sẽ không di chuyển từ vị trí xuất phát đến vị trí kết thúc và không có |
route_duration_limit |
Giới hạn áp dụng cho tổng thời lượng của tuyến đường của xe. Trong một |
travel_duration_limit |
Giới hạn áp dụng cho thời gian di chuyển của tuyến đường của xe. Trong một |
route_distance_limit |
Giới hạn áp dụng cho tổng quãng đường của tuyến đường mà xe đi. Trong một |
extra_visit_duration_for_visit_type |
Chỉ định bản đồ từ chuỗi visit_types đến thời lượng. Thời lượng là thời gian ngoài Nếu một yêu cầu ghé thăm có nhiều loại, thì thời lượng sẽ được thêm cho từng loại trong bản đồ. |
break_rule |
Mô tả lịch nghỉ giải lao cần thực thi trên xe này. Nếu bạn để trống, hệ thống sẽ không lên lịch nghỉ giải lao cho xe này. |
label |
Chỉ định nhãn cho xe này. Nhãn này được báo cáo trong phản hồi dưới dạng |
ignore |
Nếu đúng, Nếu một lô hàng được thực hiện bằng một xe bị bỏ qua trong Nếu một lô hàng được thực hiện bằng một phương tiện bị bỏ qua trong |
travel_duration_multiple |
Chỉ định một hệ số nhân có thể dùng để tăng hoặc giảm thời gian di chuyển của phương tiện này. Ví dụ: nếu bạn đặt giá trị này thành 2,0, thì phương tiện này sẽ chậm hơn và có thời gian di chuyển gấp đôi so với phương tiện tiêu chuẩn. Bội số này không ảnh hưởng đến thời lượng của lượt ghé thăm. Điều này ảnh hưởng đến chi phí nếu bạn chỉ định CẢNH BÁO: Thời gian di chuyển sẽ được làm tròn đến giây gần nhất sau khi áp dụng bội số này nhưng trước khi thực hiện bất kỳ phép toán số nào. Do đó, bội số nhỏ có thể dẫn đến mất độ chính xác. Xem thêm |
DurationLimit
Giới hạn xác định thời lượng tối đa của tuyến đường của một phương tiện. Đó có thể là giới hạn cứng hoặc giới hạn mềm.
Khi xác định trường giới hạn mềm, bạn phải xác định cả ngưỡng tối đa mềm và chi phí liên quan.
| Trường | |
|---|---|
max_duration |
Giới hạn cứng ràng buộc thời lượng tối đa là max_duration. |
soft_max_duration |
Giới hạn mềm không thực thi giới hạn thời lượng tối đa, nhưng khi bị vi phạm, tuyến đường sẽ phải chịu chi phí. Chi phí này được cộng vào các chi phí khác được xác định trong mô hình, có cùng đơn vị. Nếu được xác định, |
quadratic_soft_max_duration |
Giới hạn mềm không thực thi giới hạn thời lượng tối đa, nhưng khi bị vi phạm, tuyến đường sẽ phải chịu chi phí, bậc hai trong thời lượng. Chi phí này được cộng vào các chi phí khác được xác định trong mô hình, có cùng đơn vị. Nếu bạn đặt
|
cost_per_hour_after_soft_max |
Chi phí mỗi giờ phát sinh nếu vi phạm ngưỡng Chi phí không được là số âm. |
cost_per_square_hour_after_quadratic_soft_max |
Chi phí mỗi giờ bình phương phát sinh nếu vi phạm ngưỡng Chi phí bổ sung là 0 nếu thời lượng dưới ngưỡng, nếu không, chi phí sẽ phụ thuộc vào thời lượng như sau: Chi phí không được là số âm. |
LoadLimit
Xác định giới hạn tải trọng áp dụng cho một phương tiện, ví dụ: "xe tải này chỉ được chở tối đa 3.500 kg". Vui lòng xem load_limits.
| Trường | |
|---|---|
soft_max_load |
Giới hạn linh hoạt của tải trọng. Vui lòng xem |
cost_per_unit_above_soft_max |
Nếu tải trọng vượt quá |
start_load_interval |
Khoảng tải trọng chấp nhận được của xe khi bắt đầu tuyến đường. |
end_load_interval |
Khoảng tải trọng chấp nhận được của xe ở cuối tuyến đường. |
max_load |
Mức tải tối đa có thể chấp nhận được. |
cost_per_kilometer |
Chi phí vận chuyển một đơn vị tải trọng trên một km đối với xe này. Bạn có thể dùng giá trị này làm giá trị đại diện cho mức tiêu thụ nhiên liệu: nếu tải trọng là trọng lượng (tính bằng Newton), thì tải trọng*km sẽ có đơn vị là năng lượng. Thử nghiệm: Hãy xem https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request để biết thêm thông tin chi tiết. |
cost_per_traveled_hour |
Chi phí di chuyển với một đơn vị tải trọng trong một giờ cho xe này. Thử nghiệm: Hãy xem https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request để biết thêm thông tin chi tiết. |
Khoảng cách
Khoảng thời gian của số tiền nạp được chấp nhận.
| Trường | |
|---|---|
min |
Tải trọng tối thiểu được chấp nhận. Phải ≥ 0. Nếu bạn chỉ định cả hai, thì |
max |
Tải trọng tối đa có thể chấp nhận được. Phải ≥ 0. Nếu không được chỉ định, tải trọng tối đa sẽ không bị hạn chế bởi thông báo này. Nếu bạn chỉ định cả hai, thì |
LoadCost
Chi phí di chuyển một đơn vị tải trong Transition. Đối với một tải nhất định, chi phí là tổng của hai phần:
- min(load,
load_threshold) *cost_per_unit_below_threshold - max(0, load -
load_threshold) *cost_per_unit_above_threshold
Với chi phí này, các giải pháp ưu tiên đáp ứng nhu cầu cao trước hoặc tương đương với việc nhận nhu cầu cao sau cùng. Ví dụ: nếu một chiếc xe có
load_limit {
key: "weight"
value {
cost_per_kilometer {
load_threshold: 15
cost_per_unit_below_threshold: 2.0
cost_per_unit_above_threshold: 10.0
}
}
}
và tuyến đường của xe là start,pickup,pickup,delivery,delivery,end với các lượt chuyển đổi:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
thì chi phí phát sinh cho LoadCost này là (cost_below * load_below * kilometers + cost_above * load_above * kms)
- chuyển cảnh 0: 0.0
- chuyển đổi 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20
- chuyển đổi 2: 2,0 * 15 * 1,0 + 10,0 * (20 – 15) * 1,0 = 80
- chuyển đổi 3: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- chuyển cảnh 4: 0.0
Vì vậy, LoadCost trên tuyến đường là 120.0.
Tuy nhiên, nếu tuyến đường là start,pickup,delivery,pickup,delivery,end với các lượt chuyển đổi:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
thì chi phí phát sinh từ LoadCost này là
- chuyển cảnh 0: 0.0
- chuyển đổi 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20
- chuyển cảnh 2: 0.0
- chuyển đổi 3: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- chuyển cảnh 4: 0.0
Ở đây, LoadCost trên tuyến đường là 40.0.
LoadCost khiến các giải pháp có hiệu ứng chuyển đổi nặng trở nên tốn kém hơn.
Thử nghiệm: Hãy xem https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request để biết thêm thông tin chi tiết.
| Trường | |
|---|---|
load_threshold |
Lượng tải mà trên đó, chi phí di chuyển một đơn vị tải thay đổi từ cost_per_unit_below_threshold thành cost_per_unit_above_threshold. Phải lớn hơn hoặc bằng 0. |
cost_per_unit_below_threshold |
Chi phí di chuyển một đơn vị tải, cho mỗi đơn vị từ 0 đến ngưỡng. Phải là một giá trị hữu hạn và >= 0. |
cost_per_unit_above_threshold |
Chi phí di chuyển một đơn vị tải, cho mỗi đơn vị vượt quá ngưỡng. Trong trường hợp đặc biệt khi ngưỡng = 0, đây là chi phí cố định cho mỗi đơn vị. Phải là một giá trị hữu hạn và >= 0. |
TravelMode
Các phương tiện di chuyển mà xe có thể sử dụng.
Đây phải là một nhóm nhỏ các phương thức di chuyển của Routes API trên Google Maps Platform, hãy xem: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
Lưu ý: Các tuyến đường WALKING đang trong giai đoạn thử nghiệm và đôi khi có thể thiếu vỉa hè hoặc lối đi rõ ràng cho người đi bộ. Bạn phải hiển thị cảnh báo này cho người dùng đối với tất cả tuyến đường đi bộ mà bạn hiển thị trong ứng dụng của mình.
| Enum | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
Phương thức di chuyển không xác định, tương đương với DRIVING. |
DRIVING |
Phương thức di chuyển tương ứng với đường lái xe (ô tô, ...). |
WALKING |
Phương thức di chuyển tương ứng với đường đi bộ. |
UnloadingPolicy
Chính sách về cách dỡ hàng khỏi xe. Chỉ áp dụng cho các lô hàng có cả điểm lấy hàng và điểm giao hàng.
Các lô hàng khác có thể được giao ở bất cứ đâu trên tuyến đường, không phụ thuộc vào unloading_policy.
| Enum | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
Chính sách dỡ hàng không xác định; việc giao hàng chỉ được thực hiện sau khi lấy hàng tương ứng. |
LAST_IN_FIRST_OUT |
Việc giao hàng phải diễn ra theo thứ tự ngược lại với việc lấy hàng |
FIRST_IN_FIRST_OUT |
Các điểm giao hàng phải theo cùng thứ tự với các điểm lấy hàng |
VehicleFullness
VehicleFullness là một chỉ số tính toán mức độ đầy của một chiếc xe. Mỗi trường VehicleFullness nằm trong khoảng từ 0 đến 1, được tính bằng tỷ lệ giữa một trường chỉ số bị giới hạn (ví dụ: AggregatedMetrics.travel_distance_meters) và giới hạn liên quan của xe (ví dụ: Vehicle.route_distance_limit), nếu có. Nếu không, tỷ lệ lấp đầy sẽ không được đặt. Nếu giới hạn là 0, thì trường này sẽ được đặt thành 1. Lưu ý: khi một tuyến đường không khả thi về lưu lượng truy cập, một số tỷ lệ lấp đầy thô có thể vượt quá 1,0, ví dụ: xe có thể vượt quá giới hạn khoảng cách. Trong những trường hợp này, chúng tôi giới hạn giá trị độ đầy đủ ở mức 1.0.
| Trường | |
|---|---|
max_fullness |
Tối đa tất cả các trường khác trong thông báo này. |
distance |
Tỷ lệ giữa |
travel_duration |
Tỷ lệ giữa [AggregatedMetrics.travel_duration_seconds][] và |
active_duration |
Tỷ lệ giữa [AggregatedMetrics.total_duration_seconds][] và |
max_load |
Tỷ lệ tối đa trong số tất cả các loại [AggregatedMetrics.max_load][] và |
active_span |
Tỷ lệ (vehicle_end_time - vehicle_start_time) / (latest_vehicle_end_time - earliest_vehicle_start_time) cho một xe cụ thể. Nếu không có mẫu số, hệ thống sẽ sử dụng ( |
Waypoint
Đóng gói một điểm tham chiếu. Điểm tham chiếu đánh dấu vị trí đến và đi của VisitRequests, cũng như vị trí bắt đầu và kết thúc của Vehicles.
| Trường | |
|---|---|
side_of_road |
Không bắt buộc. Cho biết rằng vị trí của điểm tham chiếu này ưu tiên cho xe dừng ở một bên đường cụ thể. Khi bạn đặt giá trị này, tuyến đường sẽ đi qua vị trí đó để xe có thể dừng ở bên đường mà vị trí đó thiên về từ giữa đường. Lựa chọn này không hoạt động với phương thức di chuyển "WALKING" (ĐI BỘ). |
vehicle_stopover |
Cho biết rằng điểm tham chiếu là nơi xe dừng lại để đón hoặc trả khách. Lựa chọn này chỉ hoạt động cho phương thức di chuyển "DRIVING" và khi "location_type" là "location". Thử nghiệm: Hành vi hoặc sự tồn tại của trường này có thể thay đổi trong tương lai. |
Trường nhóm location_type. Các cách khác nhau để biểu thị một vị trí. location_type chỉ có thể là một trong những trạng thái sau: |
|
location |
Một điểm được chỉ định bằng toạ độ địa lý, bao gồm cả hướng (không bắt buộc). |
place_id |
Mã địa điểm yêu thích liên kết với điểm tham chiếu. Khi sử dụng mã địa điểm để chỉ định vị trí đến hoặc đi của một VisitRequest, hãy sử dụng mã địa điểm đủ cụ thể để xác định vị trí LatLng cho việc đi theo chỉ dẫn đến địa điểm đó. Ví dụ: mã địa điểm đại diện cho một toà nhà là phù hợp, nhưng không nên dùng mã địa điểm đại diện cho một con đường. |