- Biểu diễn dưới dạng JSON
- Giao hàng
- VisitRequest
- LatLng
- Waypoint
- Vị trí
- TimeWindow
- Phương tiện
- TravelMode
- UnloadingPolicy
- LoadLimit
- Khoảng thời gian
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- Hàng
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
Mô hình vận chuyển bao gồm một nhóm phương tiện vận chuyển mà trong đó một nhóm phương tiện vận chuyển phải được thực hiện, đồng thời giảm thiểu tổng chi phí, tổng cộ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 trên tất cả xe).
- các khoản phạt đối với lô hàng chưa thực hiện.
- chi phí trong toàn bộ thời gian giao hàng
Biểu diễn dưới dạng JSON |
---|
{ "shipments": [ { object ( |
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 xe có thể dùng để thực hiện lượt ghé thăm. |
globalStartTime |
Thời gian bắt đầu và kết thúc chung của mô hình: không có thời gian nào nằm ngoài phạm vi này được coi là 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 Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, với độ phân giải nano giây và tối đa 9 chữ số phân số. Ví dụ: |
globalEndTime |
Nếu bạn không đặt chính sách này, thì 00:00:00 giờ UTC, ngày 1 tháng 1 năm 1971 (tức là giây: 31536000, nano: 0) sẽ được sử dụng theo mặc định. Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, với độ phân giải nano giây và tối đa 9 chữ số phân số. Ví dụ: |
globalDurationCostPerHour |
"Thời lượng chung" của kế hoạch tổng thể là chênh lệch 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ả xe. Ví dụ: người dùng có thể chỉ định chi phí mỗi giờ cho số lượng đó để thử và tối ưu hoá nhằm hoàn thành công việc sớm nhất. Chi phí này phải có cùng đơn vị với |
durationDistanceMatrices[] |
Chỉ định ma trận thời lượng và khoảng cách được sử dụng trong mô hình. Nếu trường này trống, 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:
|
durationDistanceMatrixSrcTags[] |
Thẻ xác định nguồn thời lượng và ma trận khoảng cách; Thẻ tương ứng với |
durationDistanceMatrixDstTags[] |
Thẻ xác định đích đến của ma trận thời lượng và khoảng cách; Các thẻ tương ứng với |
transitionAttributes[] |
Đã thêm các thuộc tính chuyển đổi vào mô hình. |
shipmentTypeIncompatibilities[] |
Tập hợp các loại lô hàng không tương thích (xem |
shipmentTypeRequirements[] |
Bộ yêu cầu |
precedenceRules[] |
Tập hợp các quy tắc ưu tiên phải được thực thi trong mô hình. |
maxActiveVehicles |
Giới hạn số lượng tối đa của xe đang hoạt động. Xe được coi là đang hoạt động nếu tuyến đường của xe thực hiện ít nhất một chuyến hàng. Bạn có thể dùng thông tin này để giới hạn số lượng tuyến trong trường hợp có ít tài xế hơn số lượng xe và đội xe không đồng nhất. Sau đó, quá trình tối ưu hoá sẽ chọn một nhóm nhỏ xe phù hợp nhất để sử dụng. Phải là số dương. |
Lô hàng
Quá trình vận chuyển một mặt hàng, từ một trong những lần đến lấy hàng cho đến một trong những lần giao hàng. Để lô hàng được coi là đã thực hiện, một xe riêng biệt phải ghé thăm một trong các vị trí lấy hàng (và giảm dung lượng dự phòng tương ứng), sau đó ghé thăm một trong các vị trí giao hàng sau đó (và do đó tăng lại dung lượng dự phòng tương ứng).
Biểu diễn dưới dạng JSON |
---|
{ "displayName": string, "pickups": [ { object ( |
Trường | |
---|---|
displayName |
Tên hiển thị của lô hàng do người dùng xác định. Tên này có thể dài tối đa 63 ký tự và có thể sử dụng ký tự UTF-8. |
pickups[] |
Tập hợp các lựa chọn đến lấy hàng thay thế liên quan đến lô hàng. Nếu không được chỉ định, xe chỉ cần ghé thăm một vị trí tương ứng với các đơn hàng giao. |
deliveries[] |
Tập hợp các phương thức giao hàng thay thế liên kết với lô hàng. Nếu bạn không chỉ định, xe chỉ cần ghé thăm một địa điểm tương ứng với việc đến lấy hàng. |
loadDemands |
Nhu cầu về tải trọng 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, tốt nhất là cũng 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. Một đối tượng chứa danh sách các cặp |
allowedVehicleIndices[] |
Tập hợp các phương tiện có thể thực hiện lô hàng này. Nếu trống, tất cả xe đều có thể thực hiện thao tác này. Xe được cung cấp theo chỉ mục trong danh sách |
costsPerVehicle[] |
Chỉ định chi phí phát sinh khi mỗi xe vận chuyển lô hàng này. Nếu được chỉ định, thuộc tính này phải có MỘT trong những thuộc tính sau:
Các chi phí này phải có cùng đơn vị với |
costsPerVehicleIndices[] |
Chỉ mục của các xe mà |
pickupToDeliveryAbsoluteDetourLimit |
Chỉ định thời gian đường vòng tuyệt đối tối đa so với đoạn đường ngắn nhất từ lúc đến lấy hàng đến khi giao hàng. Nếu được chỉ định thì giá trị này phải là số không âm và kiện hàng phải có dịch vụ đến lấy hàng và giao hàng. Ví dụ: giả sử t là thời gian ngắn nhất để đi từ lựa chọn đến lấy hàng đã chọn đến lựa chọn giao hàng đã chọn. Sau đó, việc đặt
Nếu cả giới hạn tương đối và giới hạn tuyệt đối đều được chỉ định trên cùng một lô hàng, thì giới hạn hạn chế hơn sẽ được dùng cho mỗi cặp điểm đến lấy hàng/điểm đến giao hàng có thể có. Kể từ năm 2017/10, đườ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. Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng " |
pickupToDeliveryTimeLimit |
Chỉ định khoảng thời gian tối đa từ khi bắt đầu lấy hàng cho đến khi bắt đầu giao lô hàng. Nếu được chỉ định, giá trị này phải là số không âm và lô hàng phải chứa ít nhất một lượt lấy hàng và một lượt giao hàng. Thời gian này không phụ thuộc vào phương án thay thế được chọn để đến lấy hàng và giao hàng, cũng như không phụ thuộc vào tốc độ xe. Bạn có thể chỉ định điều này cùng với các quy tắc ràng buộc về quãng đường đi vòng quanh tối đa: giải pháp sẽ tuân thủ cả hai thông số kỹ thuật. Thời lượng tính bằng giây, có tối đa 9 chữ số thập phân, kết thúc bằng " |
shipmentType |
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 yêu cầu hoặc sự không tương thích 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 |
penaltyCost |
Nếu việc vận chuyển không hoàn tất, hình phạt này đượ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 khách hàng sử dụng một trong các cách khác để đến lấy hàng và giao hàng. Chi phí có thể được biểu thị 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. LƯU Ý QUAN TRỌNG: Nếu bạn không chỉ định hình phạt này, thì hình phạt này sẽ được coi là vô thời hạn, tức là đơn hàng phải được hoàn tất. |
pickupToDeliveryRelativeDetourLimit |
Chỉ định thời gian đi đường vòng tương đối tối đa so với đường ngắn nhất từ điểm đến điểm lấy hàng đến điểm giao hàng. Nếu được chỉ định, giá trị này phải là số không âm và lô hàng phải chứa ít nhất một lượt lấy hàng và một lượt giao hàng. Ví dụ: giả sử t là thời gian ngắn nhất để đi từ lựa chọn đến lấy hàng đã chọn đến lựa chọn giao hàng đã chọn. Sau đó, việc đặt
Nếu bạn chỉ định cả giới hạn tương đối và giới hạn tuyệt đối cho cùng một lô hàng, thì giới hạn ràng buộc nhiều hơn sẽ được áp dụng cho mỗi cặp đến lấy hàng/giao hàng. Kể từ năm 2017/10, đườ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. |
VisitRequest
Yêu cầu ghé thăm mà một chiếc xe có thể thực hiện: có một vị trí địa lý (hoặc hai, xem bên dưới), thời gian mở cửa và đóng cửa được thể hiện theo khoảng thời gian và thời gian phục vụ (thời gian mà xe đã sử dụng khi đến lấy hàng hoặc trả hàng).
Biểu diễn dưới dạng JSON |
---|
{ "arrivalLocation": { object ( |
Trường | |
---|---|
arrivalLocation |
Vị trí địa lý nơi xe đến khi thực hiện |
arrivalWaypoint |
Điểm tham chiếu nơi xe đến khi thực hiện |
departureLocation |
Vị trí địa lý nơi xe khởi hành sau khi hoàn thành |
departureWaypoint |
Điểm trung gian mà xe khởi hành sau khi hoàn tất |
tags[] |
Chỉ định các thẻ được đính kèm với yêu cầu truy cập. Không được phép sử dụng chuỗi trống hoặc trùng lặp. |
timeWindows[] |
Khung thời gian ràng buộc thời gian đến trong một lượt truy cập. Xin lưu ý rằng xe có thể khởi hành ngoài khung thời gian đến, tức là thời gian đến và thời gian đến không nhất thiết phải nằm trong khung thời gian. Điều này có thể dẫn đến thời gian chờ nếu xe đến trước Nếu không có Các khoảng thời gian phải rời rạc, tức là không có khoảng thời gian nào phải chồng chéo hoặc liền kề một 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 lượng của lượt truy cập, tức là thời gian xe ở lại từ khi đến đến khi rời đi (sẽ được thêm vào thời gian chờ có thể xảy ra; xem Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng " |
cost |
Chi phí để thực hiện yêu cầu về lượt ghé thăm này trên tuyến đường của xe. Bạn có thể dùng phương thức thanh toán này để thanh toán các khoản phí khác nhau cho mỗi lần lấy hàng hoặc giao hàng thay thế. Chi phí này phải có cùng đơn vị với |
loadDemands |
Tải các yêu cầu của yêu cầu truy cập này. Trường này cũng giống như trường Một đối tượng chứa danh sách các cặp |
visitTypes[] |
Chỉ định các loại lượt truy cập. Bạn có thể sử dụng thông tin này để phân bổ thêm thời gian cần thiết cho một xe 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 |
avoidUTurns |
Chỉ định liệu có nên tránh các đường rẽ đầu xe tại vị trí này trong tuyến đường lái xe hay không. Tốt nhất là bạn nên tránh quay đầu và không chắc chắn có thể tránh được hoàn toàn. Đây là tính năng thử nghiệm và hành vi có thể thay đổi. |
LatLng
Đối tượng đại diện cho cặp vĩ độ/kinh độ. Giá trị này được biểu thị dưới dạng cặp số đại diện cho vĩ độ và độ kinh độ. Trừ phi có quy định khác, đối tượng này phải tuân thủ tiêu chuẩn WGS84. Giá trị phải nằm trong phạm vi chuẩn hoá.
Biểu diễn dưới dạng JSON |
---|
{ "latitude": number, "longitude": number } |
Trường | |
---|---|
latitude |
Vĩ độ tính bằng độ. Giá trị này phải nằm trong khoảng [-90.0, +90.0]. |
longitude |
Kinh độ tính bằng độ. Giá trị này phải nằm trong khoảng [-180.0, +180.0]. |
Waypoint
Đóng gói một điểm tham chiếu. Điểm trung gian đá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 Xe.
Biểu diễn dưới dạng JSON |
---|
{ "sideOfRoad": boolean, // Union field |
Trường | |
---|---|
sideOfRoad |
Không bắt buộc. Cho biết vị trí của điểm trung gian này là để 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í đó nghiêng về phía trung tâm đường. Tuỳ chọn này không hoạt động với chế độ đi bộ. |
Trường kết hợp location_type . Các cách khác nhau để thể hiện một vị trí. location_type chỉ có thể là một trong những trạng thái sau đây: |
|
location |
Một điểm được chỉ định bằng toạ độ địa lý, bao gồm cả tiêu đề không bắt buộc. |
placeId |
Mã địa điểm POI được liên kết với điểm tham chiếu. |
Vị trí
Đóng gói vị trí (điểm địa lý và tiêu đề tùy chọn).
Biểu diễn dưới dạng JSON |
---|
{
"latLng": {
object ( |
Trường | |
---|---|
latLng |
Toạ độ địa lý của điểm trung gian. |
heading |
Hướng la bàn liên kết với hướng cho phép lưu thông. Giá trị này dùng để chỉ định bên đường để đó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. |
TimeWindow
Cửa sổ 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 truy cập hoặc thời gian bắt đầu và kết thúc của một xe.
Giới hạn khung thời gian cứng, startTime
và endTime
, thực thi thời gian sớm nhất và muộn nhất của sự kiện, chẳng hạn như startTime <= event_time <=
endTime
. Giới hạn dưới của khoảng thời gian mềm, softStartTime
, thể hiện lựa chọn ưu tiên cho sự kiện xảy ra vào hoặc sau softStartTime
bằng cách chịu chi phí tương ứng với khoảng thời gian trước khi softStartTime xảy ra. Giới hạn trên của khoảng thời gian mềm softEndTime
cho biết sự kiện cần xảy ra vào lúc hoặc trước softEndTime
bằng cách phát sinh chi phí tỷ lệ với khoảng thời gian sau khi softEndTime
xảy ra sự kiện. startTime
, endTime
, softStartTime
và softEndTime
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 <= `startTime` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `softEndTime` <= `endTime`.
Biểu diễn dưới dạng JSON |
---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
Trường | |
---|---|
startTime |
Thời gian bắt đầu của khoảng thời gian cố định. Nếu bạn chưa chỉ định, thì chế độ cài đặt này sẽ được đặt thành Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, với độ phân giải nano giây và tối đa 9 chữ số phân số. Ví dụ: |
endTime |
Thời gian kết thúc của khoảng thời gian cố định. Nếu không được chỉ định, giá trị này sẽ được đặt thành Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, với độ phân giải nano giây và tối đa 9 chữ số phân số. Ví dụ: |
softStartTime |
Thời gian khởi động mềm của khoảng thời gian. Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, với độ phân giải nano giây và tối đa 9 chữ số phân số. Ví dụ: |
softEndTime |
Thời gian kết thúc mềm của khung thời gian. Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, có độ phân giải nano giây và tối đa 9 chữ số thập phân. Ví dụ: |
costPerHourBeforeSoftStartTime |
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 softStartTime, đượ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 softStartTime. |
costPerHourAfterSoftEndTime |
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 |
Loại xe
Lập mô hình một chiếc xe trong một vấn đề vận chuyển. Việc giải quyết vấn đề về lô hàng sẽ tạo một tuyến đường bắt đầu từ startLocation
và kết thúc tại endLocation
cho xe này. Tuyến đường là một chuỗi các lượt truy cập (xem ShipmentRoute
).
Biểu diễn dưới dạng JSON |
---|
{ "displayName": string, "travelMode": enum ( |
Trường | |
---|---|
displayName |
Tên hiển thị do người dùng xác định của xe. Mã này có thể dài tối đa 63 ký tự và có thể sử dụng ký tự UTF-8. |
travelMode |
Phương tiện đi lại ảnh hưởng đến đường mà xe có thể sử dụng và tốc độ của xe. Xem thêm |
startLocation |
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, chiếc xe sẽ bắt đầu ngay từ lần đến lấy hàng đầu tiên. Nếu mô hình vận chuyển có ma trận thời lượng và khoảng cách, bạn không được chỉ định |
startWaypoint |
Điểm trung gian thể hiện 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 |
endLocation |
Vị trí địa lý nơi xe kết thúc sau khi hoàn thành |
endWaypoint |
Điểm tham chiếu biểu thị một vị trí địa lý nơi chiếc xe kết thúc sau khi đã chạy xong |
startTags[] |
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 trùng lặp. |
endTags[] |
Chỉ định các thẻ được gắn ở cuối tuyến đường của xe. Không được phép sử dụng chuỗi trống hoặc trùng lặp. |
startTimeWindows[] |
Khoảng thời gian mà xe có thể rời khỏi vị trí bắt đầu. Các trường 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 định kỳ 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, đồng thời các khoảng thời gian này phải được sắp xếp theo thứ tự thời gian. Bạn chỉ có thể đặt |
endTimeWindows[] |
Khoảng 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 định kỳ 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, đồng thời các khoảng thời gian này phải được sắp xếp theo thứ tự thời gian. Bạn chỉ có thể đặt |
unloadingPolicy |
Chính sách về việc dỡ hàng được thực thi trên xe. |
loadLimits |
Sức chứa của xe (ví dụ: trọng lượng, thể tích, số lượng pallet). Các khoá trong tệp ánh xạ 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 Một đối tượng chứa danh sách các cặp |
costPerHour |
Chi phí xe: tất cả chi phí đều cộng lại và phải có cùng đơn vị với Chi phí mỗi giờ trên tuyến đường của phương tiện. Chi phí này được áp dụng cho tổng thời gian đi theo 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 |
costPerTraveledHour |
Chi phí mỗi giờ di chuyển của tuyến đường xe. Chi phí này chỉ áp dụng cho thời gian di chuyển theo tuyến đường (tức là thời gian được báo cáo trong |
costPerKilometer |
Chi phí mỗi km trên tuyến đường của xe. Chi phí này được áp dụng cho quãng đường được báo cáo trong |
fixedCost |
Chi phí cố định được áp dụng nếu xe này được dùng để xử lý một lô hàng. |
usedIfRouteIsEmpty |
Trường này chỉ áp dụng cho các phương tiện vận chuyển khi tuyến đường của xe không vận chuyển bất kỳ lô hàng nào. Giá trị 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, chiếc xe sẽ đi từ điểm xuất phát đến vị trí kết thúc ngay cả khi không có phương thức vận chuyển nào, đồng thời chi phí về thời gian và quãng đường phát sinh từ điểm xuất phát --> điểm kết thúc sẽ được tính đến. Nếu không, xe sẽ không di chuyển từ vị trí bắt đầu đến vị trí kết thúc và không có |
routeDurationLimit |
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 |
travelDurationLimit |
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 |
routeDistanceLimit |
Giới hạn áp dụng cho tổng quãng đường của tuyến đường của xe. Trong một |
extraVisitDurationForVisitType |
Chỉ định một bản đồ từ các chuỗi visitTypes đến thời lượng. Khoảng thời gian này là thời gian ngoài Nếu một yêu cầu truy cập có nhiều loại, thì thời lượng sẽ được thêm cho mỗi loại trong bản đồ. Một đối tượng chứa danh sách các cặp |
breakRule |
Mô tả lịch nghỉ sẽ được thực thi trên xe này. Nếu trống, xe này sẽ không được lên lịch nghỉ. |
label |
Chỉ định một 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 quá trình vận chuyển được thực hiện bởi một phương tiện bị bỏ qua trong Nếu quá trình vận chuyển do một phương tiện bị bỏ qua thực hiện trong |
travelDurationMultiple |
Chỉ định một hệ số nhân mà bạn có thể dùng để tăng hoặc giảm thời gian di chuyển của xe này. Ví dụ: việc đặt giá trị này thành 2.0 có nghĩa là xe này chạy chậm hơn và có thời gian di chuyển gấp đôi so với xe tiêu chuẩn. Hệ số này không ảnh hưởng đến thời lượng truy cập. Giá trị 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 đó, một bội số nhỏ có thể làm giảm độ chính xác. Hãy xem thêm |
TravelMode
Phương tiện đi lại mà xe có thể sử dụng.
Đây phải là một tập hợp con của các phương thức di chuyển trong API Routes Preferred của Nền tảng Google Maps, xem: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
Enum | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
Chế độ đi lại không được chỉ định, tương đương với DRIVING . |
DRIVING |
Chế độ đi lại tương ứng với chỉ đường lái xe (ô tô, ...). |
WALKING |
Chế độ đi lại 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 đơn hàng có cả phương thức đến lấy hàng và giao hàng.
Các gói vận chuyển khác được miễn phí tại bất cứ đâu trên tuyến đường mà không phụ thuộc vào unloadingPolicy
.
Enum | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
Chính sách dỡ hàng không xác định; việc giao hàng chỉ được diễn ra sau các lần đến lấy hàng tương ứng. |
LAST_IN_FIRST_OUT |
Các lần giao hàng phải diễn ra theo thứ tự ngược lại với các lần đến lấy hàng |
FIRST_IN_FIRST_OUT |
Các đơn hàng giao hàng phải được thực hiện theo thứ tự tương tự như các đơn hàng đến lấy hàng |
LoadLimit
Xác định giới hạn tải trọng áp dụng cho một xe, ví dụ: "xe tải này chỉ có thể chở tối đa 3500 kg". Vui lòng xem loadLimits
.
Biểu diễn dưới dạng JSON |
---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
Trường | |
---|---|
softMaxLoad |
Giới hạn tải nhẹ. Vui lòng xem |
costPerUnitAboveSoftMax |
Nếu tải trọng vượt quá |
startLoadInterval |
Khoảng thời gian tải chấp nhận được của xe ở đầu tuyến. |
endLoadInterval |
Khoảng tải trọng chấp nhận được của xe ở cuối tuyến đường. |
maxLoad |
Tải trọng tối đa chấp nhận được. |
Khoảng thời gian
Khoảng thời gian tải chấp nhận được.
Biểu diễn dưới dạng JSON |
---|
{ "min": string, "max": string } |
Trường | |
---|---|
min |
Tải tối thiểu chấp nhận được. Phải ≥ 0. Nếu cả hai đều được chỉ định, |
max |
Mức tải tối đa chấp nhận được. Phải ≥ 0. Nếu không được chỉ định, tải tối đa sẽ không bị hạn chế bởi thông báo này. Nếu cả hai đều được chỉ định, |
DurationLimit
Giới hạn xác định thời lượng tối đa của tuyến đường của một xe. Lớp phủ này có thể cứng hoặc 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.
Biểu diễn dưới dạng JSON |
---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
Trường | |
---|---|
maxDuration |
Giới hạn cứng ràng buộc thời lượng tối đa là maxDuration. Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng " |
softMaxDuration |
Giới hạn mềm không áp dụng giới hạn thời lượng tối đa, nhưng khi bị vi phạm sẽ khiến tuyến đường phải chịu phí. Chi phí này cộng với 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, Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng " |
quadraticSoftMaxDuration |
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 một chi phí, theo hàm bậc hai trong thời lượng. Chi phí này cộng với các chi phí khác được xác định trong mô hình, với cùng một đơn vị. Nếu được xác định,
Thời lượng tính bằng giây, có tối đa 9 chữ số thập phân, kết thúc bằng " |
costPerHourAfterSoftMax |
Chi phí mỗi giờ phát sinh nếu vi phạm ngưỡng
Chi phí không được là số âm. |
costPerSquareHourAfterQuadraticSoftMax |
Chi phí mỗi giờ vuông phát sinh nếu vi phạm ngưỡng Chi phí bổ sung là 0 nếu thời lượng nằm dưới ngưỡng, nếu không thì chi phí sẽ phụ thuộc vào thời lượng như sau:
Chi phí không được là số âm. |
DistanceLimit
Giới hạn xác định khoảng cách tối đa có thể di chuyển. Tấm này có thể cứng hoặc mềm.
Nếu đã xác định một giới hạn mềm thì cả softMaxMeters
và costPerKilometerAboveSoftMax
đều phải được xác định và không được là số âm.
Biểu diễn dưới dạng JSON |
---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number } |
Trường | |
---|---|
maxMeters |
Giới hạn cứng ràng buộc khoảng cách ở mức tối đa là maxMeters. Giới hạn không được là số âm. |
softMaxMeters |
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 bị vi phạm sẽ dẫn đến chi phí cộng với các chi phí khác được xác định trong mô hình, với cùng một đơn vị. Nếu đã xác định, softMaxMeters phải nhỏ hơn maxMeters và không được là số âm. |
costPerKilometerAboveSoftMax |
Chi phí mỗi km phát sinh nếu khoảng cách vượt quá hạn mức
Chi phí phải là số không âm. |
BreakRule
Quy tắc tạo giờ nghỉ giải lao trên 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 ở vị trí hiện tại và không thể thực hiện bất kỳ lượt truy cập nào. Ngắt kết nối có thể xảy ra:
- trong quá trình di chuyển giữa hai lượt truy cập (bao gồm cả thời gian ngay trước hoặc ngay sau một lượt truy cập, nhưng không phải giữa một lượt truy cập), trong trường hợp này, thời gian di chuyển tương ứng giữa các lượt truy cập sẽ được kéo dài,
- hoặc trước khi xe khởi động (xe có thể không khởi động giữa giờ nghỉ), trong trường hợp này, thời gian sạc không ảnh hưởng đến thời gian khởi động xe.
- hoặc sau khi kết thúc chuyến xe (tương tự như thời gian kết thúc chuyến xe).
Biểu diễn dưới dạng JSON |
---|
{ "breakRequests": [ { object ( |
Trường | |
---|---|
breakRequests[] |
Trình tự nghỉ ngơi. Xem thông báo |
frequencyConstraints[] |
Có thể áp dụng nhiều |
BreakRequest
Bạn phải biết trước trình tự nghỉ (tức là số lượng và thứ tự) áp dụng cho từng xe. Các BreakRequest
lặp lại xác định trình tự đó theo thứ tự mà chúng phải xảy ra. Các khoảng thời gian của chúng (earliestStartTime
/latestStartTime
) có thể trùng lặp, nhưng phải tương thích với thứ tự (được kiểm tra).
Biểu diễn dưới dạng JSON |
---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
Trường | |
---|---|
earliestStartTime |
Bắt buộc. Giới hạn dưới (bao gồm) ở đầu điểm chèn. Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, có độ phân giải nano giây và tối đa 9 chữ số thập phân. Ví dụ: |
latestStartTime |
Bắt buộc. Giới hạn trên (bao gồm cả giá trị này) tại thời điểm bắt đầu khoảng nghỉ. Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, có độ phân giải nano giây và tối đa 9 chữ số thập phân. Ví dụ: |
minDuration |
Bắt buộc. Thời lượng tối thiểu của điểm chèn quảng cáo. Phải dương. Thời lượng tính bằng giây, có tối đa 9 chữ số thập phân, kết thúc bằng " |
FrequencyConstraint
Một thời gian có thể hạn chế hơn nữa tần suất và thời lượng của các điểm chèn nêu trên bằng cách áp dụng tần suất chèn tối thiểu, chẳng hạn như "Cứ 12 giờ phải có một khoảng nghỉ ít nhất là 1 giờ". Giả sử điều này có thể được hiểu là "Trong khoảng thời gian trượt bất kỳ 12 giờ, phải có ít nhất một lần nghỉ ít nhất một giờ", thì ví dụ đó sẽ chuyển thành FrequencyConstraint
sau:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Thời gian và thời lượng của các điểm chèn quảng cáo trong giải pháp sẽ tuân thủ tất cả các quy tắc ràng buộc như vậy, ngoài khoảng thời gian và thời lượng tối thiểu đã chỉ định trong BreakRequest
.
Trên thực tế, FrequencyConstraint
có thể áp dụng cho các điểm nghỉ không liên tiếp. Ví dụ: lịch biểu sau đây tuân theo 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
Biểu diễn dưới dạng JSON |
---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
Trường | |
---|---|
minBreakDuration |
Bắt buộc. Thời lượng chèn tối thiểu cho quy tắc ràng buộc này. Không âm. Xem nội dung mô tả về Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng " |
maxInterBreakDuration |
Bắt buộc. Khoảng thời gian tối đa cho 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 ngắt kết nối Thời lượng tính bằng giây, có tối đa 9 chữ số thập phân, kết thúc bằng " |
DurationDistanceMatrix
Cho biết thời lượng và khoảng cách từ vị trí lượt ghé thăm và vị trí bắt đầu của xe để đến lượt ghé thăm và vị trí kết thúc xe.
Biểu diễn dưới dạng JSON |
---|
{
"rows": [
{
object ( |
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 |
vehicleStartTag |
Thẻ xác định những loại xe áp dụng cho ma trận thời lượng và quãng đường này. Nếu trống, giá trị 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 lần khởi động xe phải khớp chính xác với một ma trận, tức là đúng một trường Tất cả cá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.
Biểu diễn dưới dạng JSON |
---|
{ "durations": [ string ], "meters": [ number ] } |
Trường | |
---|---|
durations[] |
Giá trị thời lượng cho một hàng nhất định. Phải có nhiều phần tử bằng Thời lượng tính bằng giây, có tối đa 9 chữ số thập phân, kết thúc bằng " |
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 tham chiếu đến khoảng cách trong mô hình, thì bạn có thể để trống phần này; nếu không, phần này phải có số phần tử bằng |
TransitionAttributes
Chỉ định các thuộc tính của lượt chuyển đổi giữa hai lượt truy cập liên tiếp trên một tuyến đường. Có thể áp dụng nhiều TransitionAttributes
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 lại và áp dụng quy tắc ràng buộc hoặc giới hạn nghiêm ngặt nhất (tuân theo ngữ nghĩa "AND" tự nhiên).
Biểu diễn dưới dạng JSON |
---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
Trường | |
---|---|
srcTag |
Thẻ xác định tập hợp các chuyển đổi (src->dst) mà các thuộc tính này áp dụng. Lượt truy cập nguồn hoặc lượt bắt đầu xe khớp với nếu |
excludedSrcTag |
Vui lòng xem |
dstTag |
Một lượt truy cập đích đến hoặc điểm kết thúc của xe sẽ khớp nếu |
excludedDstTag |
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 âm. Khoản phí này được áp dụng ngoài tất cả các chi phí hiện có khác. |
costPerKilometer |
Chỉ định chi phí trên 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. Tổng số tiền bằng |
distanceLimit |
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ừ ngày 6 tháng 2 năm 2021, chúng tôi chỉ hỗ trợ các giới hạn tạm thời. |
delay |
Chỉ định độ trễ phát sinh khi thực hiện quá trình 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. Thời lượng tính bằng giây, có tối đa 9 chữ số thập phân, kết thúc bằ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 shipmentType của lô hàng. Việc các kiện hàng không tương thích trong cùng một tuyến đường bị hạn chế do chế độ không tương thích.
Biểu diễn dưới dạng JSON |
---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
Trường | |
---|---|
types[] |
Danh sách các loại không tương thích. Hai gói hàng có |
incompatibilityMode |
Chế độ á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 chưa được chỉ định. Không đượ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 xe. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Đối với hai gói hàng có loại hình không tương thích có chế độ không tương thích với
|
ShipmentTypeRequirement
Chỉ định các yêu cầu giữa các lô hàng dựa trên shipmentType của lô hàng. Các nội dung cụ thể của yêu cầu này được xác định theo chế độ yêu cầu.
Biểu diễn dưới dạng JSON |
---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
Trường | |
---|---|
requiredShipmentTypeAlternatives[] |
Danh sách các loại phương thức vận chuyển thay thế mà |
dependentShipmentTypes[] |
Tất cả các lô hàng có loại trong trường LƯU Ý: Không được phép sử dụng chuỗi yêu cầu mà |
requirementMode |
Chế độ được áp dụng cho yêu cầu. |
RequirementMode
Các phương thức xác định cách thức xuất hiện của các gói hàng phụ thuộc trên một tuyến đường.
Enum | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Chế độ yêu cầu chưa xác định. Tuyệt đối không sử dụng giá trị này. |
PERFORMED_BY_SAME_VEHICLE |
Ở chế độ này, tất cả các gói hàng "phụ thuộc" phải dùng chung một phương tiện vận chuyển với ít nhất một trong các gói hàng "bắt buộc". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Với chế độ Do đó, đơn hàng "phụ thuộc" đến lấy hàng vận chuyển phải đáp ứng một trong hai điều kiện sau:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Tương tự như trước, ngoại trừ các lô hàng "phụ thuộc" cần có một lô hàng "bắt buộc" trên xe tại thời điểm giao hàng. |
PrecedenceRule
Quy tắc ưu tiên giữa 2 sự kiện (mỗi sự kiện là sự kiện đến lấy hàng hoặc giao hàng): sự kiện "thứ hai" phải bắt đầu ít nhất offsetDuration
sau khi sự kiện "đầu tiên" bắt đầu.
Một số mức độ ưu tiên có thể tham chiếu đến các sự kiện giống nhau (hoặc có liên quan), ví dụ: "đến lấy hàng B sau khi giao hàng A" và "đến lấy hàng C sau khi đến lấy 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.
Biểu diễn dưới dạng JSON |
---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
Trường | |
---|---|
firstIsDelivery |
Cho biết liệu sự kiện "đầu tiên" có phải là một lượt phân phối hay không. |
secondIsDelivery |
Cho biết liệu sự kiện "thứ hai" có phải là một lượt phân phối hay không. |
offsetDuration |
Mức chênh lệch giữa sự kiện "đầu tiên" và "thứ hai". Nó có thể mang giá trị âm. Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng " |
firstIndex |
Chỉ mục lô hàng của sự kiện "đầu tiên". Bạn phải chỉ định trường này. |
secondIndex |
Chỉ mục vận chuyển của sự kiện "second". Bạn phải chỉ định trường này. |