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