การตอบสนองหลังจากแก้ไขปัญหาการเพิ่มประสิทธิภาพการทัวร์ชมที่มีเส้นทางซึ่งตามด้วยยานพาหนะแต่ละคัน การจัดส่งที่ข้าม และค่าใช้จ่ายโดยรวมของโซลูชัน
| การแสดง 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 | 
 ชื่อช่อง เช่น "vehicles" | 
| subField | 
 ช่องย่อยที่ฝังแบบซ้ำซ้อน หากจำเป็น | 
| ฟิลด์สหภาพ  
 | |
| index | 
 ดัชนีของช่องหากซ้ำ | 
| key | 
 คีย์หากช่องเป็นแผนที่ | 
เมตริก
เมตริกโดยรวมที่รวบรวมจากทุกเส้นทาง
| การแสดง JSON | 
|---|
| {
  "aggregatedRouteMetrics": {
    object ( | 
| ช่อง | |
|---|---|
| aggregatedRouteMetrics | 
 รวบรวมจากเส้นทางต่างๆ เมตริกแต่ละรายการคือผลรวม (หรือค่าสูงสุดสำหรับการโหลด) ของช่อง  | 
| skippedMandatoryShipmentCount | 
 จำนวนการจัดส่งที่จำเป็นที่ข้าม | 
| usedVehicleCount | 
 จํานวนยานพาหนะที่ใช้งาน หมายเหตุ: หากเส้นทางของยานพาหนะว่างเปล่าและ  | 
| earliestVehicleStartTime | 
 เวลาเริ่มต้นเร็วที่สุดของยานพาหนะมือสอง ซึ่งคํานวณจากค่าต่ำสุดของ  การประทับเวลาจะอยู่ในรูปแบบ RFC3339 UTC "Zulu" ที่มีความละเอียดระดับนาโนวินาทีและมีตัวเลขเศษส่วนสูงสุด 9 หลัก ตัวอย่าง:  | 
| latestVehicleEndTime | 
 เวลาสิ้นสุดล่าสุดของยานพาหนะมือสอง ซึ่งคํานวณเป็นค่าสูงสุดของ  การประทับเวลาจะอยู่ในรูปแบบ RFC3339 UTC "Zulu" ที่มีความละเอียดระดับนาโนวินาทีและมีตัวเลขเศษส่วนสูงสุด 9 หลัก ตัวอย่าง:  | 
| costs | 
 ค่าใช้จ่ายของโซลูชันที่แจกแจงตามช่องคำขอที่เกี่ยวข้องกับค่าใช้จ่าย คีย์คือเส้นทางโปรโตคอลซึ่งสัมพันธ์กับอินพุต OptimizeToursRequest เช่น "model.shipments.pickups.cost" และค่าคือต้นทุนทั้งหมดที่สร้างขึ้นจากช่องต้นทุนที่เกี่ยวข้อง ซึ่งรวบรวมจากโซลูชันทั้งหมด กล่าวคือ costs["model.shipments.pickups.cost"] คือผลรวมของค่าใช้จ่ายในการรับสินค้าทั้งหมดในโซลูชัน ระบบจะรายงานต้นทุนทั้งหมดที่กําหนดไว้ในรูปแบบอย่างละเอียดที่นี่ ยกเว้นต้นทุนที่เกี่ยวข้องกับ TransitionAttributes ซึ่งจะรายงานแบบรวมเท่านั้น ณ วันที่ 01/2022 | 
| totalCost | 
 ต้นทุนรวมของโซลูชัน ผลรวมของค่าทั้งหมดในแผนที่ต้นทุน |