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
}
}
}