หมายเหตุสำหรับเวอร์ชันที่ใช้งานจริง
คู่มือนี้ใช้ REST และ JSON เพื่อความง่าย อย่างไรก็ตาม สำหรับสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ คำแนะนำโดยรวมคือให้ใช้ gRPC และไลบรารีของไคลเอ็นต์เพื่อให้มีประสิทธิภาพดีขึ้น ดูข้อมูลเพิ่มเติมได้ที่ไลบรารีของไคลเอ็นต์ Route Optimization API
หลังจากส่งคำขอในส่งคำขอแรก เครื่องมือเพิ่มประสิทธิภาพจะแสดงผล OptimizeToursResponse การตอบกลับนี้คือแผนเส้นทางที่คนขับต้องปฏิบัติตาม คู่มือนี้จะแสดงวิธีอ่านรายงานดังกล่าว
สรุปแผนเส้นทาง
สำหรับสถานการณ์การรับเลี้ยงสุนัข เครื่องมือเพิ่มประสิทธิภาพจะกำหนดสุนัขพันธุ์เบอร์นีสเมาน์เทนด็อกและชิวาวาให้กับรถตู้ของคุณ และข้ามสุนัขพันธุ์เยอรมันเชพเพิร์ดไป แผนเส้นทางของคนขับมีดังนี้
- เริ่มกะเวลา 07:55 น. ที่ศูนย์รับเลี้ยงเด็ก
- รับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อกใกล้กับหอคอยคอยต์เวลา 08:20 น.
- รับสุนัขพันธุ์ชิวาวาที่ South Sunset Playground Park เวลา 08:58 น.
- กลับมาถึงศูนย์รับเลี้ยงเด็กเวลา 09:24 น. และรอจนกว่าจะถึงเวลาส่งบุตรหลานตอน 09:30 น.
- ส่งสุนัขพันธุ์เบอร์นีส เมาน์เทน ด็อกตอน 9:30 น.
- ส่งชิวาวาเวลา 09:35 น.
- สิ้นสุดกะเวลา 09:40 น.
แผนเส้นทางมีค่าใช้จ่าย $147.22 ซึ่งรวมค่าปรับ $100 สำหรับการข้ามสุนัขพันธุ์เยอรมันเชพเพิร์ด
หากต้องการตรวจสอบผลลัพธ์ ให้เปรียบเทียบการตอบกลับของคุณกับการตอบกลับตัวอย่างแบบเต็ม ผลลัพธ์อาจแตกต่างกันเล็กน้อยเนื่องจากระยะเวลาเดินทางและระยะทางขึ้นอยู่กับข้อมูลถนนปัจจุบัน
ตัวอย่างการตอบกลับแบบเต็ม
{ "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 } } }
โครงสร้างคำตอบ
OptimizeToursResponse ประกอบด้วย 2 องค์ประกอบหลัก ได้แก่
routes: แผนเส้นทางสำหรับยานพาหนะแต่ละคันในกลุ่มยานพาหนะ รวมถึงลำดับและเวลาสำหรับการรับและการนำส่งแต่ละครั้ง คุณมีรถตู้ 1 คัน จึงมีแผนเส้นทาง 1 แผนmetrics: สรุปแผนเส้นทางทั้งหมด รวมถึงค่าใช้จ่าย ระยะเวลา และระยะทางรวม
เนื่องจากเครื่องมือเพิ่มประสิทธิภาพข้ามเยอรมันเชพเพิร์ด การตอบกลับจึงรวม skippedShipments ด้วย
ส่วนต่อไปนี้จะแสดงตำแหน่งที่จะค้นหารายละเอียดแต่ละรายการของสรุปแผนเส้นทางในการตอบกลับ
ยานพาหนะคันใดวิ่งเส้นทางใด
เครื่องมือเพิ่มประสิทธิภาพจะสร้างแผนเส้นทาง (อาร์เรย์ routes) ที่สอดคล้องกับลำดับของ vehicles ในคำขอ
ฟิลด์ vehicleIndex จะระบุยานพาหนะแต่ละคันตามตำแหน่งที่อิงตามเลขศูนย์ ซึ่งสำหรับรถตู้ของคุณคือ 0 ช่อง vehicleStartTime และ vehicleEndTime จะบอกคนขับว่าควรเริ่มและสิ้นสุดกะเมื่อใด
Route Optimization API จะแสดงผลการประทับเวลาในรูปแบบ UTC โดยมีคำต่อท้าย Z ไม่ว่าออฟเซ็ตในคำขอจะเป็นอย่างไรก็ตาม หากต้องการทราบเวลาในซานฟรานซิสโก ให้ลบออก 8 ชั่วโมง สำหรับรถตู้ของคุณ กะจะเริ่มตั้งแต่เวลา 7:55 น. ถึง 9:40 น. ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้
{
"routes": [
{
// "vehicleIndex": 0, // Omitted in actual JSON response because it's 0
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
}
]
...
}
ลำดับการรับและส่งคืออะไร
ภายในแต่ละเส้นทาง อาร์เรย์ visits จะมีจุดรับและจุดนำส่งทั้งหมดสำหรับยานพาหนะที่กำหนดตามลำดับเวลา
shipmentIndex ของการเข้าชมแต่ละครั้งคือตำแหน่งแบบ Zero-Based ของการจัดส่งในคำขอของคุณ โดย 0 คือสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก และ 1 คือสุนัขพันธุ์ชิวาวา ช่อง shipmentLabel จะแสดงป้ายกำกับที่คุณตั้งค่าไว้สำหรับการจัดส่งแต่ละรายการ
หากต้องการแยกความแตกต่างระหว่างการรับและการส่ง (หรือการนำส่ง) คุณสามารถตรวจสอบช่อง visitType หรือ isPickup ได้
visitType: กำหนดการดำเนินการเข้าชมอย่างชัดเจน- การรับสินค้า:
visitType="PICKUP_SHIPMENT" - การนำส่ง:
visitType="DELIVER_SHIPMENT"
- การรับสินค้า:
isPickup: ช่องตัวช่วยบูลีน- รับสินค้า:
isPickup=true - การนำส่ง:
isPickup=false(ละไว้ใน JSON)
- รับสินค้า:
หากต้องการระบุลำดับเหตุการณ์ที่แน่นอนและเวลาที่คาดว่าจะถึงในแต่ละสถานที่ ให้อ่านอาร์เรย์ visits ตามลำดับ ตารางต่อไปนี้แสดงการดำเนินการของแผนเส้นทางตามลำดับและค่าของช่อง shipmentIndex, isPickup หรือ visitType และ startTime
| ลำดับ | ค่า shipmentIndex |
ค่า isPickup หรือ visitType |
ค่า startTime (UTC) |
การดำเนินการ |
|---|---|---|---|---|
| การเข้าชมครั้งแรก | 0 (ละเว้นใน JSON) | จริงหรือPICKUP_SHIPMENT |
2024-02-13T16:20:00Z | รับสุนัขพันธุ์เบอร์นีส เมาน์เทน ด็อก เวลา 08:20 น. |
| การเข้าชมครั้งที่ 2 | 1 | จริงหรือPICKUP_SHIPMENT |
2024-02-13T16:58:12Z | รับชิวาวาเวลา 8:58 น. |
| การเข้าชมครั้งที่ 3 | 0 (ละเว้นใน JSON) | False (ละเว้น) หรือ DELIVER_SHIPMENT |
2024-02-13T17:30:00Z | พาสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อกไปส่งที่ศูนย์รับเลี้ยงสุนัขตอน 09:30 น. |
| การเข้าชมครั้งที่ 4 | 1 | False (ละเว้น) หรือ DELIVER_SHIPMENT |
2024-02-13T17:35:00Z | พาสุนัขพันธุ์ชิวาวาไปส่งที่ศูนย์รับเลี้ยงสุนัขตอน 09:35 น. |
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีที่การตอบกลับแสดงลำดับนี้
{
"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"
}
]
}
]
}
การเข้าชมแต่ละครั้งยังมี visitRequestIndex ซึ่งเป็นตำแหน่งแบบอิงตามเลขศูนย์ของตัวเลือกการรับหรือการนำส่งที่เครื่องมือเพิ่มประสิทธิภาพเลือกสำหรับการจัดส่ง สุนัขแต่ละตัวในสถานการณ์นี้มีตัวเลือกการรับเพียงตัวเลือกเดียวและตัวเลือกการส่งเพียงตัวเลือกเดียว ดังนั้น visitRequestIndex จึงเป็น 0 เสมอ และการตอบกลับจะละเว้นตัวเลือกนี้
เกิดอะไรขึ้นระหว่างการเข้าชมแต่ละครั้ง
ภายในแต่ละเส้นทาง อาร์เรย์ transitions จะแสดงรายละเอียดการเดินทางระหว่างการเข้าชมแต่ละครั้ง แม้ว่า visits และ transitions จะเป็นรายการที่แยกกัน แต่ก็มีการสลับกันตามเวลาดังนี้
transitions[0](ขับรถจากจุดเริ่มต้นไปยังจุดแวะพักแรก)visits[0](การเข้าชมครั้งแรก)transitions[1](ขับรถจากการเข้าชมครั้งแรกไปยังการเข้าชมครั้งที่ 2)visits[1](การเข้าชมครั้งที่ 2)...visits[N-1](การเข้าชมครั้งล่าสุด โดยที่ N คือจำนวนการเข้าชมทั้งหมด)transitions[N](ขับรถจากการเข้าชมครั้งล่าสุดจนถึงจุดสิ้นสุด)
คุณสามารถติดตามไทม์ไลน์ของเส้นทางได้โดยดูที่ช่อง startTime ในอาร์เรย์ทั้ง 2 รายการ startTime ของการเปลี่ยนผ่านคือเวลาที่คนขับเริ่มเดินทาง และ startTime ของการเข้าชมคือเวลาที่คนขับเริ่มรับหรือส่งผู้โดยสาร
การเปลี่ยนแต่ละครั้งจะแสดงเวลาและระยะทางในการขับรถที่คาดไว้ระหว่างสถานที่ต่างๆ
ตารางต่อไปนี้จะจับคู่ทั้งช่อง transitions และ visits กับการดำเนินการตามเส้นทางตามลำดับเวลาสำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัข
| ลำดับ | ชื่อช่อง | ค่า startTime (UTC) |
รายละเอียด | การดำเนินการ |
|---|---|---|---|---|
| การเปลี่ยนผ่านครั้งแรก | transitions[0] |
2024-02-13T15:55:04Z |
travelDuration: 1496stravelDistanceMeters: 7082 |
ขับรถ 7 กม. เป็นเวลา 25 นาทีจากศูนย์รับเลี้ยงสุนัขเพื่อไปรับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก กะเริ่มเวลา 07:55 น. |
| การเข้าชมครั้งแรก | visits[0] |
2024-02-13T16:20:00Z |
shipmentIndex: 0 (ละเว้นใน JSON)isPickup: True |
รับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อกตั้งแต่เวลา 08:20 น. โดยใช้เวลา 5 นาที |
| การเปลี่ยนผ่านครั้งที่ 2 | transitions[1] |
2024-02-13T16:25:00Z |
travelDuration: 1992stravelDistanceMeters: 16589 |
ขับรถ 17 กม. เป็นเวลา 33 นาทีจากหอคอยคอยต์เพื่อไปรับสุนัขพันธุ์ชิวาวา โดยเริ่มตั้งแต่เวลา 08:25 น. |
| การเข้าชมครั้งที่ 2 | visits[1] |
2024-02-13T16:58:12Z |
shipmentIndex: 1isPickup: True |
รับสุนัขพันธุ์ชิวาวาตั้งแต่เวลา 08:58 น. การเข้าชมใช้เวลา 5 นาที |
| การเปลี่ยนผ่านครั้งที่ 3 | transitions[2] |
2024-02-13T17:03:12Z |
travelDuration: 1252stravelDistanceMeters: 7860waitDuration: 356s |
ขับรถ 8 กม. เป็นเวลา 21 นาทีจาก South Sunset Playground กลับไปยังศูนย์รับเลี้ยงเด็ก โดยเริ่มเวลา 09:03 น. ถึงเวลา 09:24 น. และรอ 6 นาทีเพื่อให้ถึงช่วงเวลาส่ง |
| การเข้าชมครั้งที่ 3 | visits[2] |
2024-02-13T17:30:00Z |
shipmentIndex: 0 (ละเว้นใน JSON)isPickup: False (ละเว้นใน JSON) |
ส่งสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อกที่ศูนย์รับเลี้ยงสุนัขตั้งแต่เวลา 09:30 น. ใช้เวลา 5 นาที |
| การเปลี่ยนผ่านครั้งที่ 4 | transitions[3] |
2024-02-13T17:35:00Z |
travelDuration: 0stravelDistanceMeters: 0 (ละเว้นใน JSON) |
ห้ามขับรถ พร้อมไปส่งชิวาวาที่ศูนย์รับเลี้ยงสุนัขตอน 9:35 น. |
| การเข้าชมครั้งที่ 4 | visits[3] |
2024-02-13T17:35:00Z |
shipmentIndex: 1isPickup: False (ละเว้นใน JSON) |
ส่งชิวาวาที่ศูนย์รับเลี้ยงสุนัขตั้งแต่เวลา 09:35 น. ใช้เวลา 5 นาที |
| การเปลี่ยนผ่านครั้งที่ 5 | transitions[4] |
2024-02-13T17:40:00Z |
travelDuration: 0stravelDistanceMeters: 0 (ละเว้นใน JSON) |
ห้ามขับรถ คนขับสิ้นสุดกะเวลา 09:40 น. |
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีที่การตอบกลับให้ลำดับนี้สำหรับ transitions[0] และ 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"
},
...
]
}
]
}
เส้นทางนี้มีค่าใช้จ่ายเท่าใด
คุณสามารถดูช่องต่างๆ ในการตอบกลับได้ โดยขึ้นอยู่กับว่าคุณต้องการค่าใช้จ่ายสำหรับยานพาหนะที่เฉพาะเจาะจงหรือค่าใช้จ่ายทั้งหมดสำหรับทั้งกลุ่มยานพาหนะ
ตารางต่อไปนี้แสดงวิธีทั้งหมดที่คุณสามารถค้นหาข้อมูลค่าใช้จ่ายในการตอบกลับ
| ผู้ปกครอง | พารามิเตอร์ | ขอบเขต | คำอธิบาย |
|---|---|---|---|
ShipmentRoute |
routeCosts |
ต่อเส้นทาง | รายละเอียดขององค์ประกอบต้นทุนที่เฉพาะเจาะจง (เช่น ต้นทุนต่อชั่วโมง) สำหรับเส้นทางนั้นๆ |
routeTotalCost |
ต่อเส้นทาง | ค่าใช้จ่ายทั้งหมดที่คำนวณสำหรับเส้นทางที่เฉพาะเจาะจงนั้น | |
Metrics |
totalCost |
รวม (เส้นทางทั้งหมด) | ต้นทุนรวมที่รวบรวมไว้สำหรับเส้นทางทั้งหมดในโซลูชัน |
costs |
รวม (เส้นทางทั้งหมด) | รายละเอียดขององค์ประกอบต้นทุนรวมในทุกเส้นทางในโซลูชัน |
ค่าใช้จ่ายที่ระบุใน routeCosts และ costs แสดงถึงข้อจำกัดด้านค่าใช้จ่ายที่คุณระบุในคำขอ ดูข้อมูลเพิ่มเติมได้ในเอกสารแนวคิดหลักของรูปแบบต้นทุน
สำหรับสถานการณ์ของศูนย์รับฝากสุนัขนี้ เนื่องจากคุณมีการข้ามการจัดส่ง ค่าใช้จ่ายต่อเส้นทางและค่าใช้จ่ายรวมจึงแตกต่างกัน ต้นทุนเส้นทางจะรวมเฉพาะต้นทุนที่เกี่ยวข้องกับเส้นทางนั้นๆ (ค่าจ้างคนขับ) ส่วนต้นทุนรวมจะรวมค่าปรับสำหรับการจัดส่งที่ข้ามไปด้วย ตัวอย่างโค้ดต่อไปนี้แสดงตำแหน่งที่จะค้นหาค่าเหล่านี้ในการตอบกลับ
{
"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
},
...
}
}
ตามแผนเส้นทาง คนขับจะขับรถตู้ตั้งแต่เวลา 07:55 น. ถึง 09:40 น. ซึ่งใช้เวลาประมาณ 1 ชั่วโมง 45 นาที (6,296 วินาที) เมื่อคิดตามอัตราที่คุณกำหนดไว้ที่ $27 ต่อชั่วโมง ค่าใช้จ่ายของเส้นทางจะเท่ากับ $47.22 เนื่องจากเครื่องมือเพิ่มประสิทธิภาพข้ามการจัดส่งสุนัขพันธุ์เยอรมันเชพเพิร์ด จึงเพิ่มค่าปรับ $100 ทำให้ต้นทุนรวมทั้งหมดเป็น $147.22
เหตุใดจึงมีการข้ามการจัดส่ง
เครื่องมือเพิ่มประสิทธิภาพจะแสดงรายการการจัดส่งที่ไม่ได้ดำเนินการในอาร์เรย์ skippedShipments สาเหตุที่ระบบข้ามการจัดส่งจะขึ้นอยู่กับว่าคุณได้ตั้งค่า penaltyCost ไว้หรือไม่ ดังนี้
- การจัดส่งที่จำเป็น (ไม่มี
penaltyCost): เครื่องมือเพิ่มประสิทธิภาพจะไม่ข้ามการจัดส่งเหล่านี้เพียงเพราะมีค่าใช้จ่ายสูง ระบบจะข้ามการจัดส่งก็ต่อเมื่อไม่สามารถจัดสรรการจัดส่งนั้นลงในเส้นทางใดๆ ได้ เช่น เนื่องจากกรอบเวลาขัดแย้งกับการจัดส่งอื่นๆ - การจัดส่งที่ไม่บังคับ (มี
penaltyCost): เครื่องมือเพิ่มประสิทธิภาพยังข้ามการจัดส่งเหล่านี้ได้ด้วยเมื่อการจัดส่งมีค่าใช้จ่ายมากกว่าค่าปรับ คุณสามารถกำหนดค่าใช้จ่ายในการปรับที่แตกต่างกันเพื่อจัดลำดับความสำคัญของการจัดส่งบางรายการเหนือรายการอื่นๆ
ในสถานการณ์นี้ ช่วงเวลารับสุนัขพันธุ์เยอรมันเชพเพิร์ดขัดแย้งกับช่วงเวลาของสุนัขพันธุ์เบอร์นีสเมาน์เทนด็อก หอคอยคอยต์และแลนด์สเอนด์อยู่ห่างกัน 25 นาที คนขับจึงไม่สามารถรับผู้โดยสารทั้ง 2 คนภายในกรอบเวลา 20 นาทีได้ เครื่องมือเพิ่มประสิทธิภาพต้องข้ามรายการใดรายการหนึ่ง เนื่องจากสุนัขพันธุ์เยอรมันเชพเพิร์ดมีค่าปรับต่ำกว่า (3,000 บาท เทียบกับ 30,000 บาทสำหรับลูกค้าทั่วไป) เครื่องมือเพิ่มประสิทธิภาพจึงข้ามสุนัขตัวนี้และเสียค่าปรับ 3,000 บาท
ตัวอย่างโค้ดต่อไปนี้แสดงออบเจ็กต์ skippedShipments ในการตอบกลับ
{
...
"skippedShipments": [
{
"index": 2,
"label": "German shepherd",
"penaltyCost": 100
}
],
...
}
ออบเจ็กต์ skippedShipments ในการตอบกลับประกอบด้วยช่องต่อไปนี้
index: ดัชนีแบบ Zero-Based ของการจัดส่งในคำขอ (2 สำหรับการจัดส่งครั้งที่ 3)label: ป้ายกำกับที่คุณระบุในคำขอ ("เยอรมันเชพเพิร์ด")penaltyCost: ค่าปรับที่คุณระบุไว้ในคำขอ ซึ่ง API จะเพิ่มลงในต้นทุนรวม
หากต้องการป้องกันไม่ให้เครื่องมือเพิ่มประสิทธิภาพข้ามการจัดส่ง ให้ผ่อนคลายข้อจำกัดที่ทำให้เกิดความขัดแย้ง เช่น ขอให้เจ้าของสุนัขพันธุ์เยอรมันเชพเพิร์ดขยายช่วงเวลารับสุนัขให้กว้างขึ้น แล้วอัปเดต timeWindows สำหรับการรับสุนัขในคำขอของคุณ
ช่องการตอบกลับในตัวอย่าง
ตารางต่อไปนี้อธิบายช่องการตอบกลับทั้งหมดที่แสดงใน OptimizeToursResponse ของสถานการณ์ตัวอย่าง แม้ว่าคุณจะไม่จำเป็นต้องใช้ทุกช่องเพื่อทำความเข้าใจแผนเส้นทาง แต่คุณสามารถวิเคราะห์ช่องเหล่านี้เพื่อพิจารณาวิธีปรับ OptimizeToursRequest ให้เหมาะกับความต้องการทางธุรกิจได้ ดูข้อมูลเพิ่มเติมได้ที่วงจรของแผนเส้นทาง
คุณสามารถกรองเนื้อหาตามระดับบนสุดหรือตามการค้นหาข้อความได้
| ผู้ปกครอง | พารามิเตอร์ | ประเภทพร็อพเพอร์ตี้ | คำอธิบาย |
|---|---|---|---|
OptimizeToursResponse |
routes |
อาร์เรย์ของออบเจ็กต์ (ShipmentRoute) |
ซึ่งประกอบด้วยรายการเส้นทางที่คำนวณสำหรับยานพาหนะแต่ละคัน (1 เส้นทางต่อยานพาหนะ 1 คัน) สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ข้อมูลนี้ประกอบด้วยแผนเส้นทางโดยละเอียดสำหรับรถตู้คันเดียวของคุณ |
metrics |
ออบเจ็กต์ (Metrics) |
ซึ่งประกอบด้วยเมตริกโดยรวมสำหรับโซลูชันที่รวบรวมจากเส้นทางทั้งหมด สำหรับสถานการณ์ของศูนย์รับเลี้ยงสุนัขนี้ นี่คือสรุปค่าใช้จ่ายและระยะเวลาการดำเนินงานสำหรับวันนั้น | |
skippedShipments |
อาร์เรย์ของออบเจ็กต์ (SkippedShipment) |
ซึ่งประกอบด้วยรายการการจัดส่งที่ข้ามไปในโซลูชัน สำหรับสถานการณ์นี้ ระบบจะข้ามสุนัขตัวที่ 3 (เยอรมันเชพเพิร์ด) | |
ShipmentRoute |
vehicleStartTime |
การประทับเวลา | ซึ่งเป็นเวลาที่ยานพาหนะเริ่มออกเดินทาง สำหรับสถานการณ์ของศูนย์รับฝากสุนัขนี้ คนขับเริ่มขับรถตู้เวลา 07:55 น. |
vehicleEndTime |
การประทับเวลา | นี่คือเวลาที่ยานพาหนะสิ้นสุดเส้นทาง สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ คนขับจะขับรถตู้เสร็จตอน 9:40 น. | |
visits |
อาร์เรย์ของออบเจ็กต์ (Visit) |
นี่คือรายการการรับและการนำส่งตามลำดับในเส้นทาง สำหรับสถานการณ์การรับฝากเลี้ยงสุนัขนี้ นี่คือลำดับการรับและส่งสุนัขทั้ง 2 ตัว | |
transitions |
อาร์เรย์ของออบเจ็กต์ (Transition) |
นี่คือรายการตามลำดับของระยะทาง รวมถึงเวลาเดินทางและเวลารอระหว่างการเข้าชม สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ข้อมูลนี้จะแสดงรายละเอียดระยะทางและเวลาในการขับรถระหว่าง Coit Tower, South Sunset Playground Park และศูนย์รับเลี้ยงสุนัข | |
metrics |
ออบเจ็กต์ (AggregatedMetrics) |
เมตริกเหล่านี้เป็นเมตริกเฉพาะสำหรับเส้นทางเดียวนี้ สำหรับสถานการณ์ของศูนย์รับฝากสุนัขนี้ สถิติเหล่านี้เป็นของรถตู้คันนี้โดยเฉพาะ เมตริกเหล่านี้อิงตามค่าใช้จ่ายที่คุณระบุในคำขอ ดูรายละเอียดเพิ่มเติมได้ในเอกสารแนวคิดหลักของรูปแบบต้นทุน | |
routeCosts |
ออบเจ็กต์ (แผนที่) | นี่คือรายละเอียดค่าใช้จ่ายที่เฉพาะเจาะจงสำหรับเส้นทางนี้ สำหรับสถานการณ์ของศูนย์รับฝากสุนัขนี้ ข้อมูลนี้แสดงต้นทุนที่คำนวณจากค่าจ้างของคนขับรถที่ 27 ดอลลาร์ต่อชั่วโมง | |
routeTotalCost |
ตัวเลข | นี่คือค่าใช้จ่ายทั้งหมดสำหรับเส้นทางที่เฉพาะเจาะจงนี้ สำหรับสถานการณ์การรับฝากสุนัขนี้ ต้นทุนรวมคือ 47.22 สำหรับเส้นทางของรถตู้คันนี้ |
|
vehicleFullness |
ออบเจ็กต์ (VehicleFullness) |
ข้อมูลนี้แสดงรายละเอียดว่ายานพาหนะเข้าใกล้ขีดจำกัดในการทำงานมากน้อยเพียงใด เช่น เวลา ระยะทาง และน้ำหนักบรรทุก สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ มีเพียงเวลาเริ่มต้นและสิ้นสุดของกะเท่านั้นที่จำกัดคนขับ ดังนั้นเครื่องมือเพิ่มประสิทธิภาพจึงคำนวณ vehicleFullness เป็นเศษส่วนของระยะเวลาเส้นทางจริงและเวลาสูงสุดที่ใช้ได้สำหรับกะของคนขับ |
|
Visit |
shipmentIndex |
จำนวนเต็ม | นี่คือดัชนีแบบ Zero-Based ของการจัดส่งในคำขอเดิม สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ 0 หมายถึงสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก และ 1 หมายถึงสุนัขพันธุ์ชิวาวา |
isPickup |
บูลีน | ช่องนี้จะเป็นจริงหากการเข้าชมนี้เป็นการรับสินค้า สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ค่าจะเป็นจริงเมื่อรับสุนัข และเป็นเท็จ (หรือไม่มี) เมื่อส่งสุนัขที่ศูนย์รับเลี้ยง | |
startTime |
การประทับเวลา | นี่คือเวลาเริ่มต้นโดยประมาณของการเข้าชม สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ เหตุการณ์นี้จะเกิดขึ้นเมื่อคนขับรถเคาะประตู | |
detour |
ระยะเวลา | นี่คือเวลาเพิ่มเติมที่เครื่องมือเพิ่มประสิทธิภาพเพิ่มให้กับการเดินทางของการจัดส่งนี้โดยเฉพาะ การอ้อมคือความแตกต่างระหว่างแผนเส้นทางจริงกับการเดินทางตรงที่เหมาะสมที่สุดในกรณีที่คนขับไม่มีการจัดส่งหรืองานอื่นๆ ที่ต้องทำให้เสร็จ สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ การเข้าชมครั้งแรกซึ่งเป็นการไปรับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก มีการอ้อมเป็น 0 เนื่องจากคนขับเดินทางจากศูนย์รับเลี้ยงสุนัขไปยังจุดรับนี้โดยตรง สำหรับการรับชิวาวา การอ้อมจะใช้เวลา 43 นาทีเนื่องจากคนขับต้องไปรับเบอร์นีส เมาน์เทนด็อกก่อน (และใช้เวลา 5 นาทีในการรับขึ้นรถ) |
|
shipmentLabel |
สตริง | นี่คือป้ายกำกับจากคำขอสำหรับการจัดส่งแต่ละรายการ สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ป้ายกำกับคือ "ชิวาวา" หรือ "เบอร์นีส เมาน์เทนด็อก" | |
visitType |
สตริง (Enum) | ซึ่งระบุประเภทการเข้าชม ซึ่งอาจเป็น PICKUP_SHIPMENT สำหรับการรับสินค้าหรือ DELIVER_SHIPMENT สำหรับการนำส่ง สำหรับสถานการณ์นี้ จะเป็น PICKUP_SHIPMENT หรือ DELIVER_SHIPMENT |
|
Transition |
travelDuration |
ระยะเวลา | นี่คือเวลาที่ใช้ในการเดินทางระหว่างการเข้าชมแต่ละครั้ง ตัวอย่างเช่น ในสถานการณ์รับเลี้ยงสุนัขนี้ คนขับใช้เวลาประมาณ 25 นาทีในการขับรถจากสถานรับเลี้ยงสุนัขไปยัง Coit Tower เพื่อรับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก |
travelDistanceMeters |
จำนวนเต็ม | นี่คือระยะทางที่เดินทางเป็นเมตรระหว่างการเปลี่ยนนี้ ตัวอย่างเช่น ในสถานการณ์การรับเลี้ยงสุนัขนี้ คนขับเดินทางเป็นระยะทาง 7 กิโลเมตรจากศูนย์รับเลี้ยงสุนัขไปยัง Coit Tower เพื่อรับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก | |
waitDuration |
ระยะเวลา | ซึ่งเป็นเวลาที่ใช้ในการรอก่อนการรับหรือการนำส่งครั้งถัดไป สำหรับสถานการณ์ศูนย์รับฝากสุนัขนี้ ระยะเวลาดังกล่าวคือ 6 นาที (356 วินาที) สำหรับการเปลี่ยนผ่านครั้งที่ 3 เนื่องจากคนขับมาถึงศูนย์รับฝากสุนัขก่อนกรอบเวลาส่งสุนัขจะเปิดในเวลา 09:30 น. สำหรับการเปลี่ยนผ่านอื่นๆ ค่านี้จะเป็น 0 | |
totalDuration |
ระยะเวลา | นี่คือระยะเวลาทั้งหมดของการเปลี่ยนผ่าน ซึ่งรวมถึงการขับรถและการรอ ตัวอย่างเช่น คนขับใช้เวลา 25 นาที (ขับรถ 25 นาทีและรอ 0 นาที) ในการเปลี่ยนเส้นทางครั้งแรก และใช้เวลา 27 นาที (ขับรถ 21 นาทีและรอ 6 นาที) ในการเปลี่ยนเส้นทางครั้งที่ 3 เพื่อกลับไปยังสถานรับเลี้ยงเด็ก | |
startTime |
การประทับเวลา | เวลาที่เริ่มเดินทาง ซึ่งจะตรงกับเวลาที่เสร็จสิ้นการเข้าชมก่อนหน้า (หรือเวลาเริ่มต้นของยานพาหนะสำหรับการเปลี่ยนครั้งแรก) สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัข การเปลี่ยนสถานะครั้งแรกจะเริ่มที่เวลา 07:55 น. เมื่อคนขับออกจากศูนย์รับเลี้ยง และการเปลี่ยนสถานะครั้งที่ 2 จะเริ่มที่เวลา 08:25 น. เมื่อคนขับออกจาก Coit Tower | |
Metrics |
aggregatedRouteMetrics |
ออบเจ็กต์ (AggregatedMetrics) |
ซึ่งเป็นผลรวมของเมตริกในทุกเส้นทาง สำหรับสถานการณ์ของศูนย์รับเลี้ยงสุนัขนี้ เมตริกทั้งหมดสำหรับรถตู้ 1 คันมีดังนี้ |
usedVehicleCount |
จำนวนเต็ม | นี่คือจำนวนยานพาหนะที่ใช้ในโซลูชัน สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ คุณใช้รถตู้เพียงคันเดียว | |
earliestVehicleStartTime |
การประทับเวลา | นี่คือเวลาเริ่มต้นที่เร็วที่สุดในบรรดายานพาหนะทั้งหมด สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ เส้นทางของรถตู้จะเริ่มต้นเวลา 07:55 น. | |
latestVehicleEndTime |
การประทับเวลา | นี่คือเวลาสิ้นสุดล่าสุดของรถทุกคัน สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ เส้นทางของรถตู้จะสิ้นสุดที่เวลา 09:40 น. | |
totalCost |
ตัวเลข | ซึ่งเป็นค่าใช้จ่ายทั้งหมดของโซลูชัน สำหรับสถานการณ์การรับฝากสุนัขนี้ แผนเส้นทางทั้งหมดมีค่าใช้จ่าย 147.22 ต่อวัน (รวมค่าจ้างคนขับ 47.22 และค่าปรับสำหรับการจัดส่งที่ข้ามไป 100) |
|
costs |
ออบเจ็กต์ (แผนที่) | นี่คือรายละเอียดค่าใช้จ่ายทั้งหมดตามหมวดหมู่ สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ เครื่องมือเพิ่มประสิทธิภาพจะคำนวณต้นทุนของเส้นทางโดยอิงตามต้นทุนต่อชั่วโมงและต้นทุนค่าปรับสำหรับสุนัขพันธุ์เยอรมันเชพเพิร์ดที่ข้ามไป | |
AggregatedMetrics |
performedShipmentCount |
จำนวนเต็ม | จำนวนการจัดส่งที่กำหนดเส้นทางสำเร็จ สำหรับสถานการณ์การรับฝากสุนัขนี้ คนขับจะขนส่งสุนัข 2 ตัว |
travelDuration |
ระยะเวลา | นี่คือเวลาทั้งหมดที่ใช้ในการเดินทาง สำหรับสถานการณ์การรับเลี้ยงสุนัขนี้ คนขับจะเดินทางเป็นเวลา 79 นาที | |
waitDuration |
ระยะเวลา | ซึ่งเป็นเวลารอทั้งหมด สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ คนขับจะจอดรถโดยไม่ดับเครื่องเป็นเวลา 6 นาที (356 วินาที) ที่ศูนย์รับเลี้ยงสุนัขเพื่อรอให้ถึงช่วงเวลาส่งสุนัข | |
delayDuration |
ระยะเวลา | นี่คือระยะเวลาเพิ่มเติมที่คุณกำหนดโดยใช้แอตทริบิวต์การเปลี่ยนสถานะ เช่น เวลาที่สำรองไว้สำหรับการจอดรถ สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ คุณไม่ได้กำหนดแอตทริบิวต์การเปลี่ยนผ่านในคำขอ ดังนั้นค่านี้จึงเป็น 0 | |
breakDuration |
ระยะเวลา | นี่คือเวลาทั้งหมดที่ใช้ในช่วงพัก สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ จะไม่มีการหยุดพัก | |
visitDuration |
ระยะเวลา | ซึ่งเป็นเวลาทั้งหมดที่ใช้ในการให้บริการระหว่างการเข้าชม สำหรับสถานการณ์ศูนย์รับฝากสุนัขนี้ ระยะเวลาคือ 20 นาที (5 นาทีต่อการเข้าชม 4 ครั้ง) | |
totalDuration |
ระยะเวลา | ซึ่งเป็นผลรวมของคอมโพเนนต์ระยะเวลาทั้งหมด สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ระยะเวลารวมคือ 105 นาที (6, 296 วินาที) | |
travelDistanceMeters |
จำนวนเต็ม | นี่คือระยะทางรวมในการเดินทางเป็นเมตร สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ คนขับจะเดินทางเป็นระยะทางรวม 31.5 กม. | |
performedShipmentPenaltyCostSum |
ดับเบิล | ซึ่งเป็นผลรวมของค่าใช้จ่ายในการปรับของการจัดส่งที่ดำเนินการทั้งหมด สำหรับสถานการณ์นี้ ค่าใช้จ่ายคือ 2000 เนื่องจากคนขับรับสุนัขพันธุ์เบอร์นีสเมาน์เทนด็อกและชิวาวา (แต่ละตัวมีค่าใช้จ่ายในการลงโทษ 1000) |
|
VehicleFullness |
maxFullness |
ตัวเลข | ซึ่งเป็นอัตราส่วนการใช้งานสูงสุดในทุกช่อง VehicleFullness สำหรับสถานการณ์ศูนย์รับฝากสุนัขนี้ ค่านี้คือ 0.35 เนื่องจากคนขับรถตู้ทำงานเพียง 105 นาทีจากกะเช้าทั้งหมด ซึ่งคุณกำหนดไว้เป็น 5 ชั่วโมงในคำขอ |
activeSpan |
ตัวเลข | ซึ่งเป็นอัตราส่วนของระยะเวลาการทำงานทั้งหมดของคนขับเทียบกับเวลาทำการของแผนเส้นทาง ตัวเลขที่ต่ำกว่าหมายความว่าคนขับใช้เวลาในวันทำการน้อยลงในการขับขี่ยานพาหนะ สำหรับสถานการณ์ของศูนย์รับฝากสุนัขนี้ ค่านี้คือ 0.35 เนื่องจากคนขับรถตู้เป็นเวลา 105 นาทีในช่วงกะ 5 ชั่วโมง | |
SkippedShipment |
index |
จำนวนเต็ม | นี่คือดัชนีแบบ Zero-Based ของการจัดส่งในคำขอเดิม สำหรับสถานการณ์นี้ 2 หมายถึงเยอรมันเชพเพิร์ด |
label |
สตริง | นี่คือป้ายกำกับที่คุณระบุสำหรับการจัดส่งในคำขอ | |
penaltyCost |
ตัวเลข | นี่คือค่าปรับที่คุณต้องจ่ายเมื่อเครื่องมือเพิ่มประสิทธิภาพข้ามการจัดส่งนี้ ซึ่งตรงกับ penaltyCost ที่คุณระบุในคำขอ |