ตอบกลับหลังจากแก้ไขปัญหาการเพิ่มประสิทธิภาพการทัวร์ชมที่มีเส้นทางตามด้วยยานพาหนะแต่ละคัน การจัดส่งที่ถูกข้าม และค่าใช้จ่ายโดยรวมของวิธีแก้ปัญหา
การแสดง JSON |
---|
{ "routes": [ { object ( |
ช่อง | |
---|---|
routes[] |
เส้นทางที่คำนวณสำหรับยานพาหนะแต่ละคัน เส้นทางที่ i ตรงกับยานพาหนะ i ในโมเดล |
requestLabel |
สำเนาของ |
skippedShipments[] |
รายการการจัดส่งทั้งหมดที่ข้าม |
validationErrors[] |
รายการข้อผิดพลาดในการตรวจสอบทั้งหมดที่เราสามารถตรวจพบได้อย่างอิสระ ดูคำอธิบาย "ข้อผิดพลาดหลายรายการ" สำหรับข้อความ |
metrics |
เมตริกระยะเวลา ระยะทาง และการใช้งานสำหรับโซลูชันนี้ |
OptimizeToursValidationError
อธิบายข้อผิดพลาดที่พบเมื่อตรวจสอบความถูกต้องของ OptimizeToursRequest
การแสดง JSON |
---|
{
"code": integer,
"displayName": string,
"fields": [
{
object ( |
ช่อง | |
---|---|
code |
ข้อผิดพลาดในการตรวจสอบจะกำหนดโดยคู่อุปกรณ์ ( ช่องอื่นๆ (ด้านล่าง) จะให้บริบทเพิ่มเติมเกี่ยวกับข้อผิดพลาด ข้อผิดพลาดหลายข้อ: เมื่อมีข้อผิดพลาดหลายรายการ กระบวนการตรวจสอบจะพยายามแสดงผลข้อผิดพลาดหลายรายการ นี่เป็นกระบวนการที่ไม่สมบูรณ์แบบ คล้ายกับคอมไพเลอร์ ข้อผิดพลาดในการตรวจสอบความถูกต้องบางอย่างอาจ "ร้ายแรง" ซึ่งหมายความว่าจะเป็นการหยุดกระบวนการตรวจสอบทั้งหมด โดยในกรณีนี้คือข้อผิดพลาด ความเสถียร: การอ้างอิง: รายการคู่ (รหัส, ชื่อ) ทั้งหมด
|
displayName |
ชื่อที่แสดงของข้อผิดพลาด |
fields[] |
บริบทของข้อผิดพลาดอาจเกี่ยวข้องกับช่อง 0, 1 (ส่วนใหญ่) หรือมีช่องมากกว่านั้น เช่น การอ้างอิงยานพาหนะหมายเลข 4 และการมารับสินค้าที่ร้าน #2 อาจมีลักษณะดังนี้
อย่างไรก็ตาม โปรดทราบว่า Cardinality ของ |
errorMessage |
สตริงที่มนุษย์อ่านได้ซึ่งอธิบายถึงข้อผิดพลาด มีการแมปแบบ 1:1 ระหว่าง ความเสถียร: ไม่เสถียร: ข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับ |
offendingValues |
อาจมีค่าของฟิลด์ ทั้งนี้อาจไม่มีให้บริการเสมอไป คุณไม่ควรเชื่อถือเป็นอย่างยิ่งและใช้เพื่อแก้ไขข้อบกพร่องของโมเดลด้วยตนเองเท่านั้น |
FieldReference
ระบุบริบทสำหรับข้อผิดพลาดในการตรวจสอบความถูกต้อง FieldReference
จะอ้างอิงช่องที่ระบุในไฟล์นี้เสมอและใช้โครงสร้างลำดับชั้นเดียวกัน ตัวอย่างเช่น เราอาจระบุองค์ประกอบ #2 ของ startTimeWindows
ของยานพาหนะ #5 โดยใช้:
name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }
แต่เราไม่ระบุเอนทิตีระดับบนสุด เช่น OptimizeToursRequest
หรือ ShipmentModel
เพื่อไม่ให้ข้อความแสดงมากเกินไป
การแสดง JSON |
---|
{ "name": string, "subField": { object ( |
ช่อง | |
---|---|
name |
ชื่อช่อง เช่น "ยานพาหนะ" |
subField |
ช่องย่อยที่ซ้อนกันซ้ำๆ หากจำเป็น |
ฟิลด์สหภาพ
|
|
index |
ดัชนีของช่องหากมีค่าซ้ำ |
key |
คีย์ ถ้าช่องนี้เป็นแผนที่ |
เมตริก
เมตริกโดยรวม ซึ่งรวมจากเส้นทางทั้งหมด
การแสดง JSON |
---|
{
"aggregatedRouteMetrics": {
object ( |
ช่อง | |
---|---|
aggregatedRouteMetrics |
ซึ่งรวมอยู่บนเส้นทาง เมตริกแต่ละรายการคือผลรวม (หรือค่าสูงสุดสำหรับการโหลด) จากช่อง |
skippedMandatoryShipmentCount |
จำนวนการจัดส่งที่จำเป็นซึ่งข้าม |
usedVehicleCount |
จำนวนยานพาหนะที่ใช้ หมายเหตุ: หากเส้นทางยานพาหนะว่างเปล่าและ |
earliestVehicleStartTime |
เวลาเริ่มต้นเร็วที่สุดสำหรับยานพาหนะมือสอง โดยคำนวณเป็นระยะเวลาต่ำสุดสำหรับยานพาหนะมือสองทั้งหมดของ การประทับเวลาจะอยู่ในรูปแบบ RFC3339 UTC "Zulu" ที่มีความละเอียดระดับนาโนวินาทีและมีตัวเลขที่เป็นเศษส่วนได้สูงสุด 9 หลัก ตัวอย่าง: |
latestVehicleEndTime |
เวลาสิ้นสุดล่าสุดของยานพาหนะมือสอง ซึ่งคำนวณจากค่าสูงสุดจากยานพาหนะมือสองทั้งหมดของ การประทับเวลาจะอยู่ในรูปแบบ RFC3339 UTC "Zulu" ที่มีความละเอียดระดับนาโนวินาทีและมีตัวเลขที่เป็นเศษส่วนได้สูงสุด 9 หลัก ตัวอย่าง: |
costs |
ค่าใช้จ่ายของโซลูชัน แยกตามช่องคำขอที่เกี่ยวข้องกับค่าใช้จ่าย คีย์คือเส้นทาง Proto ซึ่งสัมพันธ์กับอินพุต OptimizeToursRequest เช่น "model.shipments.pickups.cost" และค่าเหล่านี้คือค่าใช้จ่ายทั้งหมดที่สร้างขึ้นจากช่องค่าใช้จ่ายที่เกี่ยวข้อง ซึ่งรวบรวมจากทั้งโซลูชัน หรือพูดอีกอย่างก็คือ ต้นทุน ["model.shipments.pickups.cost"] คือผลรวมของต้นทุนในการรับสินค้าทั้งหมดเมื่อเทียบกับโซลูชัน ค่าใช้จ่ายทั้งหมดที่กำหนดไว้ในโมเดลจะรายงานอย่างละเอียดที่นี่ ยกเว้นค่าใช้จ่ายที่เกี่ยวข้องกับแอตทริบิวต์การเปลี่ยน ซึ่งจะรายงานแบบรวม ณ วันที่ 01/2022 เท่านั้น ออบเจ็กต์ที่มีรายการคู่ |
totalCost |
ต้นทุนรวมของโซลูชัน ผลรวมของค่าทั้งหมดในแมปต้นทุน |