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