Lưu ý cho bản phát hành công khai
Để đơn giản, hướng dẫn này sử dụng REST và JSON. Tuy nhiên, đối với môi trường thực tế, bạn nên sử dụng gRPC và thư viện ứng dụng để có hiệu suất tốt hơn. Để biết thêm thông tin, hãy xem thư viện ứng dụng API Route Optimization.
Sau khi bạn gửi yêu cầu trong phần Gửi yêu cầu đầu tiên, trình tối ưu hoá sẽ trả về một OptimizeToursResponse. Phản hồi này là kế hoạch tuyến đường để tài xế của bạn làm theo. Hướng dẫn này sẽ chỉ cho bạn cách đọc báo cáo này.
Tóm tắt kế hoạch tuyến đường
Đối với trường hợp chăm sóc chó ban ngày, trình tối ưu hoá sẽ chỉ định chó núi Bernese và Chihuahua vào xe tải của bạn và bỏ qua chó chăn cừu Đức. Kế hoạch lộ trình của tài xế như sau:
- Bắt đầu ca làm việc lúc 7:55 sáng tại nhà trẻ.
- Đón chú chó núi Bernese gần Tháp Coit lúc 8:20 sáng.
- Đón chú chó Chihuahua tại Công viên South Sunset Playground lúc 8:58 sáng.
- Quay lại nhà trẻ lúc 9:24 sáng và đợi đến khi giờ đón trẻ bắt đầu lúc 9:30 sáng.
- Đưa chó núi Bernese đến lúc 9:30 sáng.
- Đưa Chihuahua đến lúc 9:35 sáng.
- Kết thúc ca làm việc lúc 9:40 sáng.
Kế hoạch lộ trình có chi phí là 147,22 USD, bao gồm cả khoản phạt 100 USD vì bỏ qua chú chó chăn cừu Đức.
Để kiểm tra kết quả, hãy so sánh phản hồi của bạn với phản hồi mẫu đầy đủ. Kết quả của bạn có thể hơi khác vì thời gian và khoảng cách di chuyển phụ thuộc vào dữ liệu đường hiện tại.
Ví dụ về phản hồi đầy đủ
{ "routes": [ { "vehicleStartTime": "2024-02-13T15:55:04Z", "vehicleEndTime": "2024-02-13T17:40:00Z", "visits": [ { "isPickup": true, "startTime": "2024-02-13T16:20:00Z", "detour": "0s", "shipmentLabel": "Bernese mountain dog", "visitType": "PICKUP_SHIPMENT" }, { "shipmentIndex": 1, "isPickup": true, "startTime": "2024-02-13T16:58:12Z", "detour": "2600s", "shipmentLabel": "Chihuahua", "visitType": "PICKUP_SHIPMENT" }, { "startTime": "2024-02-13T17:30:00Z", "detour": "2297s", "shipmentLabel": "Bernese mountain dog", "visitType": "DELIVER_SHIPMENT" }, { "shipmentIndex": 1, "startTime": "2024-02-13T17:35:00Z", "detour": "656s", "shipmentLabel": "Chihuahua", "visitType": "DELIVER_SHIPMENT" } ], "transitions": [ { "travelDuration": "1496s", "travelDistanceMeters": 7082, "waitDuration": "0s", "totalDuration": "1496s", "startTime": "2024-02-13T15:55:04Z" }, { "travelDuration": "1992s", "travelDistanceMeters": 16589, "waitDuration": "0s", "totalDuration": "1992s", "startTime": "2024-02-13T16:25:00Z" }, { "travelDuration": "1252s", "travelDistanceMeters": 7860, "waitDuration": "356s", "totalDuration": "1608s", "startTime": "2024-02-13T17:03:12Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:35:00Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:40:00Z" } ], "metrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "routeCosts": { "model.vehicles.cost_per_hour": 47.22 }, "routeTotalCost": 47.22, "vehicleFullness": { "maxFullness": 0.3497777777777778, "activeSpan": 0.3497777777777778 } } ], "skippedShipments": [ { "index": 2, "label": "German shepherd", "penaltyCost": 100 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2024-02-13T15:55:04Z", "latestVehicleEndTime": "2024-02-13T17:40:00Z", "totalCost": 147.22, "costs": { "model.vehicles.cost_per_hour": 47.22, "model.shipments.penalty_cost": 100 } } }
Cấu trúc phản hồi
OptimizeToursResponse có hai thành phần chính:
routes: Kế hoạch lộ trình cho từng xe trong đội xe của bạn, bao gồm cả thứ tự và thời gian cho mỗi lần lấy hàng và giao hàng. Bạn có một xe tải, nên chỉ có một kế hoạch lộ trình.metrics: Bản tóm tắt toàn bộ kế hoạch tuyến đường, bao gồm tổng chi phí, thời gian và quãng đường.
Vì trình tối ưu hoá bỏ qua chó chăn cừu Đức, nên phản hồi cũng bao gồm skippedShipments.
Các phần sau đây cho bạn biết nơi tìm từng thông tin chi tiết của bản tóm tắt kế hoạch tuyến đường trong phản hồi.
Xe nào chạy tuyến nào?
Trình tối ưu hoá sẽ tạo một kế hoạch tuyến đường (mảng routes) tương ứng với thứ tự của vehicles trong yêu cầu của bạn.
Trường vehicleIndex xác định từng xe dựa trên vị trí của xe đó (bắt đầu từ 0). Đối với xe tải của bạn, vị trí này là 0. Trường vehicleStartTime và vehicleEndTime hướng dẫn tài xế thời điểm bắt đầu và kết thúc ca làm việc.
Route Optimization API trả về dấu thời gian theo giờ UTC, được đánh dấu bằng hậu tố Z, bất kể độ lệch trong yêu cầu của bạn. Để biết giờ ở San Francisco, hãy trừ đi 8 giờ. Đối với xe tải, ca làm việc kéo dài từ 7:55 sáng đến 9:40 sáng, như trong mã mẫu sau.
{
"routes": [
{
// "vehicleIndex": 0, // Omitted in actual JSON response because it's 0
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
}
]
...
}
Thứ tự đón và trả khách là gì?
Trong mỗi tuyến, mảng visits chứa mọi điểm đến lấy hàng và giao hàng cho xe được chỉ định theo thứ tự thời gian.
shipmentIndex của mỗi lượt ghé thăm là vị trí dựa trên số 0 của lô hàng trong yêu cầu của bạn: 0 là chó núi Bernese và 1 là Chihuahua. Trường shipmentLabel cho biết nhãn mà bạn đặt cho mỗi lô hàng.
Để phân biệt giữa điểm đến lấy hàng và điểm đến trả hàng (hoặc giao hàng), bạn có thể kiểm tra trường visitType hoặc isPickup:
visitType: Xác định rõ ràng hành động truy cập.- Đến lấy hàng:
visitType="PICKUP_SHIPMENT" - Phân phối:
visitType="DELIVER_SHIPMENT"
- Đến lấy hàng:
isPickup: Trường trợ giúp boolean.- Đến lấy hàng:
isPickup=true - Giao hàng:
isPickup=false(bỏ qua trong JSON)
- Đến lấy hàng:
Để xác định trình tự chính xác của các sự kiện và thời gian đến dự kiến tại mỗi vị trí, hãy đọc mảng visits theo thứ tự. Bảng sau đây cho biết hành động của kế hoạch định tuyến dựa trên thứ tự và giá trị của các trường shipmentIndex, isPickup hoặc visitType và startTime.
| Trình tự | Giá trị shipmentIndex |
Giá trị isPickup hoặc visitType |
Giá trị startTime (UTC) |
Hành động |
|---|---|---|---|---|
| Lượt truy cập đầu tiên | 0 (bỏ qua trong JSON) | Đúng hay PICKUP_SHIPMENT |
2024-02-13T16:20:00Z | Đón chó núi Bernese lúc 8:20 sáng. |
| Lượt truy cập thứ hai | 1 | Đúng hay PICKUP_SHIPMENT |
2024-02-13T16:58:12Z | Đón Chihuahua lúc 8:58 sáng. |
| Lượt truy cập thứ ba | 0 (bỏ qua trong JSON) | False (bỏ qua) hoặc DELIVER_SHIPMENT |
2024-02-13T17:30:00Z | Đưa chó núi Bernese đến trung tâm chăm sóc chó ban ngày lúc 9:30 sáng. |
| Lượt truy cập thứ tư | 1 | False (bỏ qua) hoặc DELIVER_SHIPMENT |
2024-02-13T17:35:00Z | Đưa chú chó Chihuahua đến trung tâm chăm sóc chó lúc 9:35 sáng. |
Mã mẫu sau đây cho thấy cách phản hồi cung cấp trình tự này:
{
"routes": [
{
"visits": [
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
"isPickup": true,
"startTime": "2024-02-13T16:20:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "PICKUP_SHIPMENT"
},
{
"shipmentIndex": 1,
"isPickup": true,
"startTime": "2024-02-13T16:58:12Z",
"shipmentLabel": "Chihuahua",
"visitType": "PICKUP_SHIPMENT"
},
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:30:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "DELIVER_SHIPMENT"
},
{
"shipmentIndex": 1,
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:35:00Z",
"shipmentLabel": "Chihuahua",
"visitType": "DELIVER_SHIPMENT"
}
]
}
]
}
Mỗi lượt ghé thăm cũng có một visitRequestIndex, là vị trí dựa trên số 0 của lựa chọn đến lấy hàng hoặc giao hàng mà trình tối ưu hoá đã chọn cho lô hàng. Mỗi chú chó trong trường hợp này chỉ có một lựa chọn đón và một lựa chọn trả, vì vậy, visitRequestIndex luôn là 0 và phản hồi sẽ bỏ qua lựa chọn này.
Điều gì xảy ra giữa các lần khám?
Trong mỗi tuyến đường, mảng transitions liệt kê thông tin chi tiết về chuyến đi giữa các lượt ghé thăm. Mặc dù visits và transitions là các danh sách riêng biệt, nhưng chúng xen kẽ nhau theo thời gian như sau:
transitions[0](Lái xe từ điểm xuất phát đến điểm tham quan đầu tiên)visits[0](Lượt truy cập đầu tiên)transitions[1](Lái xe từ lần ghé thăm đầu tiên đến lần ghé thăm thứ hai)visits[1](Lần truy cập thứ hai)...visits[N-1](Lần truy cập gần đây nhất, trong đó N là tổng số lượt truy cập)transitions[N](Lái xe từ lần ghé thăm gần nhất đến điểm cuối)
Bạn có thể theo dõi dòng thời gian của tuyến đường bằng cách xem trường startTime trong cả hai mảng. startTime của quá trình chuyển đổi là khi tài xế bắt đầu di chuyển và startTime của lượt ghé thăm là khi tài xế bắt đầu đón hoặc trả khách.
Mỗi lần chuyển đổi cho biết thời gian lái xe và khoảng cách dự kiến giữa các địa điểm.
Bảng sau đây liên kết cả trường transitions và visits với các hành động theo trình tự thời gian trên tuyến đường cho trường hợp dịch vụ trông giữ chó ban ngày.
| Trình tự | Tên trường | Giá trị startTime (UTC) |
Thông tin chi tiết | Hành động |
|---|---|---|---|---|
| Lần chuyển đổi đầu tiên | transitions[0] |
2024-02-13T15:55:04Z |
travelDuration: 1496stravelDistanceMeters: 7082 |
Lái xe 7 km trong 25 phút từ trung tâm chăm sóc ban ngày để đón chú chó núi Bernese. Ca làm việc bắt đầu lúc 7:55 sáng. |
| Lượt truy cập đầu tiên | visits[0] |
2024-02-13T16:20:00Z |
shipmentIndex: 0 (bỏ qua trong JSON)isPickup: Đúng |
Đón chó núi Bernese từ 8:20 sáng. Chuyến thăm kéo dài 5 phút. |
| Chuyển đổi thứ hai | transitions[1] |
2024-02-13T16:25:00Z |
travelDuration: 1992stravelDistanceMeters: 16589 |
Lái xe 17 km trong 33 phút từ Tháp Coit để đón chú chó Chihuahua, bắt đầu từ 8:25 sáng. |
| Lần truy cập thứ hai | visits[1] |
2024-02-13T16:58:12Z |
shipmentIndex: 1isPickup: True |
Đón Chihuahua từ 8:58 sáng. Chuyến thăm kéo dài 5 phút. |
| Chuyển đổi lần thứ ba | transitions[2] |
2024-02-13T17:03:12Z |
travelDuration: 1252 giâytravelDistanceMeters: 7860waitDuration: 356 giây |
Lái xe 8 km trong 21 phút từ Sân chơi South Sunset về lại trung tâm giữ trẻ, bắt đầu lúc 9:03 sáng. Đến nơi lúc 9:24 sáng và đợi 6 phút cho đến khi mở cửa đón trẻ. |
| Lần truy cập thứ ba | visits[2] |
2024-02-13T17:30:00Z |
shipmentIndex: 0 (bỏ qua trong JSON)isPickup: False (bỏ qua trong JSON) |
Đưa chó núi Bernese đến trung tâm chăm sóc chó ban ngày từ 9:30 sáng. Chuyến đi mất 5 phút. |
| Fourth transition | transitions[3] |
2024-02-13T17:35:00Z |
travelDuration: 0 giâytravelDistanceMeters: 0 (bỏ qua trong JSON) |
Không lái xe. Sẵn sàng đưa chú chó Chihuahua đến trung tâm chăm sóc thú cưng lúc 9:35 sáng. |
| Lần truy cập thứ tư | visits[3] |
2024-02-13T17:35:00Z |
shipmentIndex: 1isPickup: Sai (bị bỏ qua trong JSON) |
Đưa chú chó Chihuahua đến trung tâm chăm sóc chó ban ngày từ 9:35 sáng. Chuyến đi mất 5 phút. |
| Lần chuyển đổi thứ năm | transitions[4] |
2024-02-13T17:40:00Z |
travelDuration: 0 giâytravelDistanceMeters: 0 (bỏ qua trong JSON) |
Không lái xe. Tài xế kết thúc ca làm việc lúc 9:40 sáng. |
Mã mẫu sau đây cho thấy cách phản hồi cung cấp trình tự này cho transitions[0] và transitions[1]:
{
"routes": [
{
"transitions": [
{
"travelDuration": "1496s",
"travelDistanceMeters": 7082,
"waitDuration": "0s",
"totalDuration": "1496s",
"startTime": "2024-02-13T15:55:04Z"
},
{
"travelDuration": "1992s",
"travelDistanceMeters": 16589,
"waitDuration": "0s",
"totalDuration": "1992s",
"startTime": "2024-02-13T16:25:00Z"
},
...
]
}
]
}
Tuyến đường này có giá bao nhiêu?
Bạn có thể xem một số trường trong phản hồi, tuỳ thuộc vào việc bạn cần chi phí cho một chiếc xe cụ thể hay tổng chi phí cho toàn bộ đội xe.
Bảng sau đây liệt kê tất cả các cách bạn có thể tìm thông tin chi phí trong phản hồi:
| Cha mẹ | Tham số | Phạm vi | Mô tả |
|---|---|---|---|
ShipmentRoute |
routeCosts |
Theo tuyến đường | Bảng chi tiết về các thành phần chi phí cụ thể (như chi phí mỗi giờ) cho tuyến đường cụ thể đó. |
routeTotalCost |
Theo tuyến đường | Tổng chi phí được tính cho tuyến đường cụ thể đó. | |
Metrics |
totalCost |
Tổng cộng (Tất cả các tuyến đường) | Tổng chi phí tổng hợp cho tất cả các tuyến đường trong giải pháp. |
costs |
Tổng cộng (Tất cả các tuyến đường) | Bảng chi tiết về các thành phần chi phí tổng hợp trên tất cả các tuyến đường trong giải pháp. |
Chi phí được chỉ định trong routeCosts và costs phản ánh các quy tắc ràng buộc về chi phí mà bạn chỉ định trong yêu cầu của mình. Để biết thêm thông tin, hãy xem tài liệu Khái niệm chính về mô hình chi phí.
Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, vì bạn có một lô hàng bị bỏ qua, nên chi phí cho mỗi tuyến đường và tổng chi phí tổng hợp sẽ khác nhau. Chi phí tuyến đường chỉ bao gồm các chi phí liên quan đến tuyến đường cụ thể đó (tiền lương của tài xế), trong khi tổng chi phí tổng hợp cũng bao gồm cả hình phạt cho lô hàng bị bỏ qua. Mã mẫu sau đây cho biết vị trí tìm các giá trị này trong phản hồi:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
"routeCosts": {
"model.vehicles.cost_per_hour": 47.22
},
"routeTotalCost": 47.22
}
],
"metrics": {
"totalCost": 147.22,
"costs": {
"model.shipments.penalty_cost": 100,
"model.vehicles.cost_per_hour": 47.22
},
...
}
}
Theo kế hoạch tuyến đường, tài xế lái xe từ 7:55 sáng đến 9:40 sáng, tức là khoảng 1 giờ 45 phút (6.296 giây). Với mức giá bạn xác định là 27 USD/giờ, chi phí cho tuyến đường này là 47,22 USD. Vì trình tối ưu hoá đã bỏ qua lô hàng chó chăn cừu Đức, nên trình tối ưu hoá sẽ thêm chi phí phạt là 100 đô la, nâng tổng chi phí tổng hợp lên 147,22 đô la.
Tại sao một lô hàng bị bỏ qua?
Trình tối ưu hoá liệt kê mọi lô hàng mà trình tối ưu hoá không thực hiện trong mảng skippedShipments. Lý do bỏ qua một lô hàng phụ thuộc vào việc bạn có đặt penaltyCost hay không:
- Lô hàng bắt buộc (không có
penaltyCost): Trình tối ưu hoá không bao giờ bỏ qua các lô hàng này chỉ vì chi phí thực hiện cao. Trình tối ưu hoá chỉ bỏ qua một lô hàng nếu không thể đưa lô hàng đó vào bất kỳ tuyến đường nào, chẳng hạn như do khung thời gian của lô hàng đó xung đột với các lô hàng khác. - Lô hàng không bắt buộc (có
penaltyCost): Trình tối ưu hoá cũng có thể bỏ qua các lô hàng này khi chi phí thực hiện cao hơn mức phạt. Bạn có thể đặt các chi phí phạt khác nhau để ưu tiên một số lô hàng hơn các lô hàng khác.
Trong trường hợp này, khung giờ đón chó chăn cừu Đức xung đột với khung giờ đón chó núi Bernese. Tháp Coit và Land's End cách nhau 25 phút, nên tài xế không thể đón cả hai khách trong vòng 20 phút. Trình tối ưu hoá phải bỏ qua một trong hai. Vì chó chăn cừu Đức có chi phí phạt thấp hơn (100 đô la so với 1.000 đô la cho khách hàng thông thường), nên trình tối ưu hoá sẽ bỏ qua và chịu khoản phạt 100 đô la.
Mã mẫu sau đây cho thấy đối tượng skippedShipments trong phản hồi:
{
...
"skippedShipments": [
{
"index": 2,
"label": "German shepherd",
"penaltyCost": 100
}
],
...
}
Đối tượng skippedShipments trong phản hồi chứa các trường sau:
index: Chỉ mục dựa trên số 0 của lô hàng trong yêu cầu của bạn (2 cho lô hàng thứ ba).label: Nhãn bạn chỉ định trong yêu cầu ("German shepherd").penaltyCost: Chi phí phạt mà bạn đã chỉ định trong yêu cầu, được API thêm vào tổng chi phí.
Để trình tối ưu hoá không bỏ qua một lô hàng, hãy nới lỏng quy tắc ràng buộc gây ra xung đột. Ví dụ: yêu cầu chủ sở hữu của chú chó chăn cừu Đức cung cấp khung thời gian đón linh hoạt hơn, sau đó cập nhật timeWindows cho lần đón đó trong yêu cầu của bạn.
Các trường phản hồi trong ví dụ
Bảng sau đây mô tả tất cả các trường phản hồi được trả về trong OptimizeToursResponse của trường hợp ví dụ. Mặc dù không cần sử dụng mọi trường để hiểu kế hoạch tuyến đường, nhưng bạn có thể phân tích các trường này để xác định cách điều chỉnh OptimizeToursRequest cho phù hợp với nhu cầu kinh doanh của mình. Để biết thêm thông tin, hãy xem phần Vòng đời của kế hoạch tuyến đường.
Bạn có thể lọc nội dung theo thành phần mẹ hoặc bằng cách tìm kiếm văn bản.
| Cha mẹ | Tham số | Loại thuộc tính | Mô tả |
|---|---|---|---|
OptimizeToursResponse |
routes |
Mảng đối tượng (ShipmentRoute) |
Danh sách này chứa danh sách các tuyến đường được tính toán cho mỗi xe (một tuyến đường cho mỗi xe). Đối với trường hợp dịch vụ trông giữ chó này, tệp này chứa kế hoạch tuyến đường chi tiết cho một chiếc xe tải của bạn. |
metrics |
Đối tượng (Metrics) |
Phần này chứa các chỉ số tổng thể cho giải pháp, được tổng hợp trên tất cả tuyến đường. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, đây là thông tin tóm tắt về chi phí và thời gian hoạt động trong ngày. | |
skippedShipments |
Mảng đối tượng (SkippedShipment) |
Trường này chứa danh sách các lô hàng đã bị bỏ qua trong giải pháp. Đối với trường hợp này, chú chó thứ ba (chó chăn cừu Đức) sẽ bị bỏ qua. | |
ShipmentRoute |
vehicleStartTime |
Dấu thời gian | Đây là thời điểm xe bắt đầu hành trình. Trong trường hợp dịch vụ chăm sóc chó ban ngày này, tài xế bắt đầu lái xe tải lúc 7:55 sáng. |
vehicleEndTime |
Dấu thời gian | Đây là thời điểm xe hoàn tất lộ trình. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, tài xế hoàn tất việc lái xe tải lúc 9:40 sáng. | |
visits |
Mảng đối tượng (Visit) |
Đây là danh sách theo thứ tự các điểm đến lấy hàng và giao hàng trên tuyến đường. Đối với trường hợp trung tâm chăm sóc chó ban ngày này, đây là trình tự đón và trả hai chú chó. | |
transitions |
Mảng đối tượng (Transition) |
Đây là danh sách theo thứ tự về khoảng cách, thời gian di chuyển và thời gian chờ giữa các lượt ghé thăm. Đối với kịch bản dịch vụ chăm sóc chó này, thông tin này trình bày chi tiết khoảng cách và thời gian lái xe giữa Tháp Coit, Công viên South Sunset Playground và dịch vụ chăm sóc chó. | |
metrics |
Đối tượng (AggregatedMetrics) |
Đây là các chỉ số dành riêng cho tuyến đường này. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, đây là số liệu thống kê cho chiếc xe tải cụ thể này. Các chỉ số này dựa trên chi phí mà bạn đã chỉ định trong yêu cầu của mình. Để biết thêm thông tin, hãy xem tài liệu Khái niệm chính về mô hình chi phí. | |
routeCosts |
Đối tượng (Bản đồ) | Đây là thông tin chi tiết về các chi phí cụ thể cho tuyến đường này. Đối với trường hợp dịch vụ trông giữ chó, đây là chi phí được tính từ mức lương của tài xế là 27 USD/giờ. | |
routeTotalCost |
Số | Đây là tổng chi phí cho tuyến đường cụ thể này. Trong trường hợp dịch vụ chăm sóc chó ban ngày này, tổng chi phí cho tuyến đường của xe tải này là 47.22. |
|
vehicleFullness |
Đối tượng (VehicleFullness) |
Đây là thông tin chi tiết về mức độ gần của xe với giới hạn hoạt động, chẳng hạn như thời gian, khoảng cách và tải trọng. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, chỉ có thời gian bắt đầu và kết thúc ca làm việc mới ràng buộc tài xế, vì vậy, trình tối ưu hoá sẽ tính toán vehicleFullness dưới dạng tỷ lệ giữa thời lượng thực tế của tuyến đường và thời gian tối đa cho ca làm việc của tài xế. |
|
Visit |
shipmentIndex |
Số nguyên | Đây là chỉ mục dựa trên số 0 của lô hàng trong yêu cầu ban đầu. Trong trường hợp dịch vụ chăm sóc chó này, 0 đại diện cho chó núi Bernese và 1 đại diện cho Chihuahua. |
isPickup |
Boolean | Trường này là true nếu lượt ghé thăm này là một lượt đến lấy hàng. Đối với trường hợp dịch vụ trông giữ chó này, giá trị sẽ là true khi đón chó và false (hoặc thiếu) khi gửi chó tại dịch vụ trông giữ. | |
startTime |
Dấu thời gian | Đây là thời gian bắt đầu ước tính của lượt ghé thăm. Đối với trường hợp dịch vụ chăm sóc chó, đây là lúc tài xế gõ cửa. | |
detour |
Thời lượng | Đây là thời gian bổ sung mà trình tối ưu hoá thêm vào hành trình của lô hàng cụ thể này. Đường vòng là sự khác biệt giữa kế hoạch tuyến đường thực tế và
chuyến đi thẳng lý tưởng nếu tài xế không có lô hàng hoặc nhiệm vụ nào khác
cần hoàn thành. Đối với trường hợp dịch vụ trông giữ chó này, lượt ghé thăm đầu tiên (để đón chú chó núi Bernese) có quãng đường đi vòng là 0 vì tài xế đi thẳng từ trung tâm trông giữ chó đến điểm đón này. Đối với việc đón chú chó Chihuahua, thời gian đi đường vòng là 43 phút vì tài xế đón chú chó Bernese Mountain trước (và mất 5 phút để đón). |
|
shipmentLabel |
Chuỗi | Đây là nhãn trong yêu cầu cho mỗi lô hàng. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, nhãn là "Chihuahua" hoặc "Chó núi Bernese". | |
visitType |
Chuỗi (Enum) | Trường này cho biết loại lượt ghé thăm, có thể là PICKUP_SHIPMENT
đối với lượt đến lấy hàng hoặc DELIVER_SHIPMENT đối với lượt giao hàng. Đối với trường hợp này,
đó là PICKUP_SHIPMENT hoặc DELIVER_SHIPMENT. |
|
Transition |
travelDuration |
Thời lượng | Đây là thời gian di chuyển trong quá trình chuyển đổi giữa các lượt ghé thăm. Ví dụ: trong trường hợp dịch vụ trông giữ chó này, tài xế mất khoảng 25 phút lái xe từ nơi trông giữ đến Tháp Coit để đón chú chó núi Bernese. |
travelDistanceMeters |
Số nguyên | Đây là quãng đường đã đi (tính bằng mét) trong quá trình chuyển đổi này. Ví dụ: trong trường hợp dịch vụ trông giữ chó này, tài xế di chuyển 7 km từ nhà trẻ đến Tháp Coit để đón chú chó núi Bernese. | |
waitDuration |
Thời lượng | Đây là thời gian chờ trước khi đến điểm lấy hàng hoặc giao hàng tiếp theo. Đối với trường hợp dịch vụ trông giữ chó này, thời gian chờ là 6 phút (356 giây) cho lần chuyển đổi thứ ba, vì tài xế đến trung tâm trông giữ chó trước khi thời gian trả chó bắt đầu lúc 9:30 sáng. Đối với các lần chuyển đổi khác, giá trị này là 0. | |
totalDuration |
Thời lượng | Đây là tổng thời gian chuyển đổi, bao gồm cả thời gian lái xe và thời gian chờ. Ví dụ: tài xế mất 25 phút (25 phút lái xe và 0 phút chờ) cho lần di chuyển đầu tiên và 27 phút (21 phút lái xe và 6 phút chờ) cho lần di chuyển thứ ba trở lại nhà trẻ. | |
startTime |
Dấu thời gian | Đây là thời điểm bắt đầu chuyến đi. Thời gian này khớp với thời gian hoàn tất của lượt ghé thăm trước đó (hoặc đối với lượt chuyển đổi đầu tiên, thời gian bắt đầu của xe). Đối với trường hợp dịch vụ trông giữ chó ban ngày, quá trình chuyển đổi đầu tiên bắt đầu lúc 7:55 sáng khi tài xế rời khỏi dịch vụ trông giữ chó ban ngày và quá trình chuyển đổi thứ hai bắt đầu lúc 8:25 sáng khi tài xế rời khỏi Tháp Coit. | |
Metrics |
aggregatedRouteMetrics |
Đối tượng (AggregatedMetrics) |
Đây là tổng số liệu của tất cả các tuyến đường. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, đây là tổng số liệu cho một chiếc xe tải của bạn. |
usedVehicleCount |
Số nguyên | Đây là số lượng xe được sử dụng trong giải pháp. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, bạn chỉ sử dụng một xe tải. | |
earliestVehicleStartTime |
Dấu thời gian | Đây là thời gian bắt đầu sớm nhất trong số tất cả các xe. Trong trường hợp dịch vụ chăm sóc chó ban ngày này, tuyến đường của xe tải bắt đầu lúc 7:55 sáng. | |
latestVehicleEndTime |
Dấu thời gian | Đây là thời gian kết thúc muộn nhất trong số tất cả các xe. Trong trường hợp dịch vụ chăm sóc chó ban ngày này, tuyến đường của xe tải kết thúc lúc 9:40 sáng. | |
totalCost |
Số | Đây là tổng chi phí của giải pháp. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, toàn bộ kế hoạch lộ trình có chi phí là 147.22 cho ngày (bao gồm 47.22 tiền lương của tài xế và 100 tiền phạt cho lô hàng bị bỏ qua). |
|
costs |
Đối tượng (Bản đồ) | Đây là thông tin chi tiết về tổng chi phí theo danh mục. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, trình tối ưu hoá đã tính toán chi phí của tuyến đường dựa trên chi phí mỗi giờ và chi phí phạt cho chú chó chăn cừu Đức bị bỏ qua. | |
AggregatedMetrics |
performedShipmentCount |
Số nguyên | Đây là số lượng lô hàng được định tuyến thành công. Trong trường hợp dịch vụ chăm sóc chó ban ngày này, tài xế sẽ vận chuyển hai chú chó. |
travelDuration |
Thời lượng | Đây là tổng thời gian di chuyển. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, tài xế di chuyển trong 79 phút. | |
waitDuration |
Thời lượng | Đây là tổng thời gian chờ đợi. Trong trường hợp dịch vụ trông giữ chó này, tài xế sẽ chờ 6 phút (356 giây) tại trung tâm trông giữ chó để đợi đến giờ trả chó. | |
delayDuration |
Thời lượng | Đây là thời gian bổ sung mà bạn xác định bằng các thuộc tính chuyển đổi, chẳng hạn như thời gian dành riêng cho việc đỗ xe. Đối với trường hợp dịch vụ trông giữ chó này, bạn không xác định bất kỳ thuộc tính chuyển đổi nào trong yêu cầu, vì vậy giá trị này bằng 0. | |
breakDuration |
Thời lượng | Đây là tổng thời gian nghỉ giải lao. Trong trường hợp dịch vụ chăm sóc chó này, không có giờ nghỉ. | |
visitDuration |
Thời lượng | Đây là tổng thời gian thực hiện dịch vụ trong các lượt ghé thăm. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, thời gian là 20 phút (5 phút mỗi lần truy cập cho 4 lần truy cập). | |
totalDuration |
Thời lượng | Đây là tổng của tất cả các thành phần thời lượng. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, tổng thời lượng là 105 phút (6.296 giây). | |
travelDistanceMeters |
Số nguyên | Đây là tổng quãng đường di chuyển tính bằng mét. Đối với trường hợp dịch vụ chăm sóc chó ban ngày này, tài xế di chuyển tổng quãng đường là 31,5 km. | |
performedShipmentPenaltyCostSum |
Đôi | Đây là tổng chi phí phạt của tất cả các lô hàng đã thực hiện. Trong trường hợp này, chi phí phạt là 2000 vì tài xế đã đón chó núi Bernese và Chihuahua (mỗi con có chi phí phạt là 1000). |
|
VehicleFullness |
maxFullness |
Số | Đây là tỷ lệ sử dụng cao nhất trong tất cả các trường VehicleFullness. Đối với trường hợp dịch vụ trông giữ chó này, giá trị này là 0,35 vì tài xế chỉ lái xe trong 105 phút của toàn bộ ca sáng, tức là 5 giờ trong yêu cầu. |
activeSpan |
Số | Đây là tỷ lệ giữa tổng thời gian làm việc của tài xế so với giờ hoạt động của kế hoạch tuyến đường. Số càng thấp nghĩa là tài xế càng dành ít thời gian trong ngày làm việc để vận hành xe. Đối với trường hợp dịch vụ trông giữ chó ban ngày này, tỷ lệ này là 0,35 vì tài xế lái xe tải trong 105 phút trong ca làm việc kéo dài 5 giờ. | |
SkippedShipment |
index |
Số nguyên | Đây là chỉ mục dựa trên số 0 của lô hàng trong yêu cầu ban đầu. Trong trường hợp này, 2 đại diện cho chó chăn cừu Đức. |
label |
Chuỗi | Đây là nhãn mà bạn đã chỉ định cho lô hàng trong yêu cầu. | |
penaltyCost |
Số | Đây là chi phí phạt mà bạn phải chịu khi trình tối ưu hoá bỏ qua lô hàng này. Giá trị này khớp với penaltyCost mà bạn đã chỉ định trong yêu cầu. |