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)
พร็อพเพอร์ตี้เมตริก
ข้อความ 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
}
}
}