Route Optimization API จะแสดงเส้นทางสำหรับยานพาหนะในคำขอที่เกี่ยวข้อง ระบบจะกำหนดการจัดส่งให้กับยานพาหนะ หรืออาจข้ามไปโดยขึ้นอยู่กับพร็อพเพอร์ตี้ของคำขอ
ข้อความ OptimizeToursResponse (REST, gRPC) มีคุณสมบัติหลักระดับบนสุด 2 รายการ ได้แก่
routes[]คือเส้นทางของยานพาหนะแต่ละคันที่มีการจัดส่งที่กำหนดRouteแต่ละรายการจะมีเมตริกที่แสดงถึงพร็อพเพอร์ตี้ของเส้นทางนั้นๆmetricsคือเมตริกรวมสำหรับการตอบสนองทั้งหมดในยานพาหนะและแผนเส้นทางทั้งหมด เมตริกระดับบนสุดมีพร็อพเพอร์ตี้เดียวกับเมตริกต่อเส้นทาง โดยมีค่าที่รวบรวมจากทุกเส้นทาง
พร็อพเพอร์ตี้บางรายการอาจไม่แสดงเสมอไป ทั้งนี้ขึ้นอยู่กับผลลัพธ์การเพิ่มประสิทธิภาพ
skippedShipments[]แสดงการจัดส่งที่ไม่ได้ดำเนินการโดยยานพาหนะใดๆ คุณข้ามการจัดส่งได้หากดำเนินการภายในข้อจำกัดที่ระบุไว้ไม่ได้ หรือหากค่าใช้จ่ายในการดำเนินการจัดส่งสูงกว่าค่าปรับ เช่น หากการรับหรือการนำส่งสินค้ามีเวลารับส่งที่แคบมากtimeWindowยานพาหนะอาจไม่สามารถไปรับหรือนำส่งสินค้าได้ภายในกรอบเวลาที่กำหนดหรืออาจไม่คุ้มค่าvalidationErrors[]ระบุข้อผิดพลาดที่ทำให้คำขอไม่ถูกต้องหรือแก้ไขไม่ได้เมื่อตั้งค่าsolvingModeของคำขอเป็นVALIDATE_ONLYในโหมดDEFAULT_SOLVEปกติ ข้อผิดพลาดในการตรวจสอบจะปรากฏในข้อความแสดงข้อผิดพลาดแทนเนื้อหาการตอบกลับ โปรดทราบว่าVALIDATE_ONLYโหมดการแก้ปัญหาจะรายงานข้อผิดพลาดหลายรายการพร้อมกันได้ ซึ่งเป็นประโยชน์สำหรับการแก้ไขข้อบกพร่องของคำขออย่างรวดเร็ว
พร็อพเพอร์ตี้เส้นทาง
รายการ routes[] แต่ละรายการคือข้อความ ShipmentRoute (REST, gRPC) แต่ละ ShipmentRoute แสดงถึงการกำหนดเส้นทางสำหรับยานพาหนะหนึ่งๆ จากคำขอ พร็อพเพอร์ตี้ ShipmentRoute ที่สําคัญซึ่งเกี่ยวข้องกับ Vehicle ที่เกี่ยวข้อง ได้แก่
vehicleIndexคือดัชนีแบบนับจาก 0 ของVehicleในข้อความขอที่เกี่ยวข้อง การตอบกลับ REST จะละเว้นพร็อพเพอร์ตี้นี้เมื่อค่าเป็น 0vehicleStartTimeคือเวลาที่ยานพาหนะต้องเริ่มเส้นทางvehicleEndTimeคือเวลาที่คาดว่ายานพาหนะจะวิ่งครบเส้นทาง
routes ในการตอบกลับจะมีลักษณะดังนี้
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
...
],
"transitions": [
...
],
"metrics": {
...
},
...
}
],
...
}
ShipmentRoute แต่ละรายการจะมีรายการ visits ตามลำดับที่ยานพาหนะจะดำเนินการ Visit แต่ละรายการ (REST, gRPC) แสดงถึง VisitRequest
(REST, gRPC) จากคําขอที่เกี่ยวข้อง Visit
พร็อพเพอร์ตี้ที่สําคัญ ได้แก่
shipmentIndexคือดัชนีฐาน 0 ของการจัดส่งที่การเข้าชมนี้อยู่ในการร้องขอที่เกี่ยวข้องisPickupเป็นจริงเมื่อการเข้าชมเป็นการไปรับสินค้าและเป็นเท็จเมื่อการเข้าชมเป็นการไปส่งสินค้า การตอบกลับ REST จะละเว้นพร็อพเพอร์ตี้นี้เมื่อค่าเป็นเท็จvisitRequestIndexคือดัชนีแบบนับจาก 0 ของVisitRequestจากShipment.pickupsหรือShipment.deliveriesในคําขอที่เกี่ยวข้องซึ่งVisitแสดง การตอบกลับ REST จะละเว้นพร็อพเพอร์ตี้นี้เมื่อค่าเป็น 0startTimeคือเวลาที่คาดว่าการเรียกให้แสดงโฆษณาจะเริ่มขึ้นloadDemandsแมปประเภทการโหลดกับจำนวนการโหลดที่จําเป็นเพื่อดำเนินการVisitให้เสร็จสมบูรณ์ จำนวนการโหลดจะเป็นลบสำหรับการเข้าชมเพื่อนำส่ง ซึ่งแสดงถึงการนําโหลดออกจากยานพาหนะ
ตัวอย่าง Visit มีดังนี้
{
"routes": [
{
...
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
...
],
},
...
],
...
}
ShipmentRoute แต่ละรายการจะมีรายการ transitions ที่เรียงลําดับซึ่งแสดงการเดินทางระหว่าง visits สําหรับยานพาหนะหนึ่งๆ พร็อพเพอร์ตี้Transitionข้อความ (REST, gRPC) ที่สําคัญ ได้แก่
startTimeคือเวลาที่รถจะเริ่มเปลี่ยนtravelDurationคือระยะเวลาที่ยานพาหนะต้องเดินทางเพื่อเปลี่ยนเลนtravelDistanceMetersคือระยะทางเป็นเมตรที่ยานพาหนะต้องเคลื่อนที่เพื่อเปลี่ยนเลนจนเสร็จสมบูรณ์trafficInfoUnavailableระบุว่ามีข้อมูลการเข้าชมสําหรับการเปลี่ยนรุ่นหรือไม่waitDurationแสดงถึงเวลาที่ไม่มีการใช้งานที่ยานพาหนะรอก่อนที่จะเริ่มVisitครั้งถัดไป ซึ่งอาจเกิดจากstart_timeของVisitต่อไปนี้totalDurationคือระยะเวลาทั้งหมดของการเปลี่ยน ซึ่งรวมถึงเวลาเดินทาง รอ พัก และเวลาหน่วงvehicleLoadsจะจับคู่ประเภทน้ำหนักบรรทุกกับปริมาณน้ำหนักบรรทุกที่ยานพาหนะบรรทุกระหว่างการเปลี่ยนประเภทนี้
ตัวอย่าง Transition มีดังนี้
{
"routes": [
{
...
"transitions": [
...
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
...
],
...
}
],
...
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับความสัมพันธ์ระหว่าง vists กับ transitions ได้ที่การเพิ่มประสิทธิภาพคำสั่งหยุดรับและนำส่งและเอกสารอ้างอิง ShipmentRoute (REST, gRPC) ดูข้อมูลเพิ่มเติมเกี่ยวกับพร็อพเพอร์ตี้ routePolyline และ routeToken ของข้อความ Transition ได้ที่เส้นประกอบการเปลี่ยนเส้นทางและโทเค็นเส้นทาง
พร็อพเพอร์ตี้เมตริก
ข้อความ Metrics (REST, gRPC) จะสรุปโซลูชันทั้งหมด
พร็อพเพอร์ตี้ Metrics ที่สําคัญบางรายการมีดังนี้
totalCostคือต้นทุนทั้งหมดที่เกิดขึ้นในเส้นทาง อ่านข้อมูลเพิ่มเติมเกี่ยวกับค่าใช้จ่ายในพารามิเตอร์รูปแบบต้นทุนusedVehicleCountคือจํานวนยานพาหนะทั้งหมดที่ใช้ในโซลูชัน ยานพาหนะอาจมีเส้นทางว่างเมื่อเครื่องมือเพิ่มประสิทธิภาพพิจารณาว่าไม่จําเป็นต้องใช้skippedMandatoryShipmentCountคือจํานวนการจัดส่งที่ข้ามซึ่ง "ต้องดำเนินการ" การจัดส่งที่ต้องดำเนินการไม่ได้ระบุpenaltyCostที่ต้องชำระหากข้ามการจัดส่ง คุณยังคงข้ามการจัดส่งที่ต้องดำเนินการได้หากประสิทธิภาพของการจัดส่งนั้นไม่สามารถทำได้ภายใต้ข้อจำกัดที่ระบุ อ่านข้อมูลเพิ่มเติมเกี่ยวกับต้นทุนในพารามิเตอร์รูปแบบต้นทุน
ระบบจะรายงานเมตริกเพิ่มเติมเป็นข้อความ AggregatedMetrics (REST,
gRPC) ระบบจะใช้ประเภทข้อความ AggregatedMetrics สําหรับพร็อพเพอร์ตี้ Metrics.aggregatedRouteMetrics และพร็อพเพอร์ตี้ ShipmentRoute.metrics โดย Metrics.aggregatedRouteMetrics จะมีเมตริกที่รวบรวมจาก ShipmentRoute ทั้งหมดใน OptimizeToursResponse พร็อพเพอร์ตี้ ShipmentRoute.metrics แต่ละรายการจะมีเมตริกสําหรับ ShipmentRoute ที่เฉพาะเจาะจงนั้น
พร็อพเพอร์ตี้ AggregatedMetrics ที่สําคัญ ได้แก่
performedShipmentCountคือจํานวนการจัดส่งที่ยานพาหนะดำเนินการตลอดเส้นทางtravelDurationคือเวลาทั้งหมดที่ยานพาหนะใช้ในการขนส่งขณะที่ดำเนินการตามเส้นทางwaitDurationคือเวลาทั้งหมดที่ยานพาหนะรอขณะทำเส้นทางdelayDurationคือเวลารวมที่ล่าช้าของยานพาหนะ ซึ่งโดยปกติแล้วจะมีค่าเป็น 0 เว้นแต่จะมีการใช้TransitionAttributesในคำขอbreakDurationคือเวลาทั้งหมดที่ยานพาหนะหยุดพักขณะทำเส้นทางvisitDurationคือเวลาทั้งหมดที่ยานพาหนะใช้ในการเข้าชมขณะที่วิ่งไปตามเส้นทาง ซึ่งก็คือผลรวมของค่าVisitRequest.durationทั้งหมดสำหรับVisitRequestที่สอดคล้องกับVisitที่กำหนดให้กับยานพาหนะที่ใช้งานได้totalDurationคือระยะเวลาทั้งหมดที่ใช้ในการวิ่งเส้นทางของยานพาหนะtravelDistanceMetersคือระยะทางรวมที่ยานพาหนะเดินทางขณะทำเส้นทางmaxLoadsจะแมปประเภทน้ำหนักบรรทุกกับปริมาณน้ำหนักบรรทุกสูงสุดที่ยานพาหนะบรรทุก ณ จุดใดก็ได้ในเส้นทาง
ตัวอย่างข้อความ Metrics มีดังนี้
{
"routes": [
...
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}
ตัวอย่างที่สมบูรณ์
ตัวอย่างคำตอบที่สมบูรณ์สำหรับคำขอจากสร้างคำขอมีลักษณะดังนี้
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2024-02-13T00:19:31Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1151s",
"travelDistanceMeters": 9599,
"waitDuration": "0s",
"totalDuration": "1151s",
"startTime": "2024-02-13T00:19:31Z"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"routeCosts": {
"model.vehicles.cost_per_kilometer": 18.603
},
"routeTotalCost": 18.603
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}