OptimizeToursResponse

การตอบกลับหลังจากแก้ปัญหาการเพิ่มประสิทธิภาพเส้นทางที่มีเส้นทางที่ยานพาหนะแต่ละคันใช้ การจัดส่งที่ข้ามไป และต้นทุนโดยรวมของโซลูชัน

การแสดง JSON
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "processedRequest": {
    object (OptimizeToursRequest)
  },
  "metrics": {
    object (Metrics)
  }
}
ช่อง
routes[]

object (ShipmentRoute)

เส้นทางที่คำนวณสำหรับยานพาหนะแต่ละคัน โดยเส้นทางที่ i จะสอดคล้องกับยานพาหนะที่ i ในโมเดล

requestLabel

string

สำเนาของOptimizeToursRequest.label หากมีการระบุป้ายกำกับในคำขอ

skippedShipments[]

object (SkippedShipment)

รายการการจัดส่งทั้งหมดที่ข้าม

validationErrors[]

object (OptimizeToursValidationError)

รายการข้อผิดพลาดในการตรวจสอบความถูกต้องทั้งหมดที่เราตรวจพบได้โดยอิสระ ดูคำอธิบาย "ข้อผิดพลาดหลายรายการ" สำหรับข้อความ OptimizeToursValidationError ในกรณีที่ solvingMode เป็น DEFAULT_SOLVE ระบบจะแสดงคำเตือนแทนข้อผิดพลาด

processedRequest

object (OptimizeToursRequest)

ในบางกรณี เราจะแก้ไขคำขอที่เข้ามา ก่อนที่จะแก้ปัญหา เช่น การเพิ่มค่าใช้จ่าย หาก solvingMode == TRANSFORM_AND_RETURN_REQUEST ระบบจะแสดงคำขอที่แก้ไขแล้วที่นี่

ทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request

metrics

object (Metrics)

เมตริกระยะเวลา ระยะทาง และการใช้งานสําหรับโซลูชันนี้

OptimizeToursValidationError

อธิบายข้อผิดพลาดหรือประกาศเตือนที่พบเมื่อตรวจสอบ OptimizeToursRequest

การแสดง JSON
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
ช่อง
code

integer

ข้อผิดพลาดในการตรวจสอบความถูกต้องกำหนดโดยคู่ (code, displayName) ซึ่งมีอยู่เสมอ

ฟิลด์หลังจากส่วนนี้จะให้บริบทเพิ่มเติมเกี่ยวกับข้อผิดพลาด

ข้อผิดพลาดหลายรายการ: เมื่อมีข้อผิดพลาดหลายรายการ กระบวนการตรวจสอบจะพยายามแสดงข้อผิดพลาดหลายรายการ ซึ่งกระบวนการนี้ก็ไม่สมบูรณ์แบบเช่นเดียวกับคอมไพเลอร์ ข้อผิดพลาดในการตรวจสอบบางอย่างจะเป็น "ร้ายแรง" ซึ่งหมายความว่าข้อผิดพลาดดังกล่าวจะหยุดกระบวนการตรวจสอบทั้งหมด ซึ่งรวมถึงข้อผิดพลาด displayName="UNSPECIFIED" เป็นต้น ข้อผิดพลาดบางอย่างอาจทำให้กระบวนการตรวจสอบข้ามข้อผิดพลาดอื่นๆ

ความเสถียร: code และ displayName ควรมีความเสถียรมาก แต่โค้ดและชื่อที่แสดงใหม่อาจปรากฏขึ้นเมื่อเวลาผ่านไป ซึ่งอาจทำให้คำขอที่ระบุ (ไม่ถูกต้อง) แสดงคู่ (code, displayName) ที่แตกต่างกันเนื่องจากข้อผิดพลาดใหม่ซ่อนข้อผิดพลาดเก่า เช่น ดู "ข้อผิดพลาดหลายรายการ"

displayName

string

ชื่อที่แสดงของข้อผิดพลาด

fields[]

object (FieldReference)

บริบทของข้อผิดพลาดอาจเกี่ยวข้องกับฟิลด์ 0, 1 (ส่วนใหญ่) หรือมากกว่า เช่น การอ้างอิงการรับสินค้าครั้งแรกของยานพาหนะ #4 และการจัดส่ง #2 สามารถทำได้ดังนี้

fields { name: "vehicles" index: 4}
fields { name: "shipments" index: 2 subField {name: "pickups" index: 0} }

อย่างไรก็ตาม โปรดทราบว่าจำนวนค่าที่ไม่ซ้ำกันของ fields ไม่ควรเปลี่ยนแปลงสำหรับรหัสข้อผิดพลาดที่กำหนด

errorMessage

string

สตริงที่มนุษย์อ่านได้ซึ่งอธิบายถึงข้อผิดพลาด มีการแมปแบบ 1:1 ระหว่าง code กับ errorMessage (เมื่อรหัส != "UNSPECIFIED")

ความเสถียร: ไม่เสถียร: ข้อความแสดงข้อผิดพลาดที่เชื่อมโยงกับ code ที่ระบุอาจเปลี่ยนแปลงได้ (หวังว่าจะทำให้ชัดเจนขึ้น) เมื่อเวลาผ่านไป โปรดใช้ displayName และ code แทน

offendingValues

string

อาจมีค่าของช่อง แต่ตัวเลือกนี้อาจไม่มีให้ใช้งานเสมอไป คุณไม่ควรพึ่งพาฟีเจอร์นี้และควรใช้สำหรับการแก้ไขข้อบกพร่องของโมเดลด้วยตนเองเท่านั้น

FieldReference

ระบุบริบทสำหรับข้อผิดพลาดในการตรวจสอบ FieldReference จะอ้างอิงฟิลด์ที่ระบุในไฟล์นี้เสมอและมีโครงสร้างลำดับชั้นเดียวกัน เช่น เราอาจระบุองค์ประกอบ #2 ของ startTimeWindows ของยานพาหนะ #5 โดยใช้

name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }

อย่างไรก็ตาม เราจะละเว้นเอนทิตีระดับบนสุด เช่น OptimizeToursRequest หรือ ShipmentModel เพื่อไม่ให้ข้อความดูรก

การแสดง JSON
{
  "name": string,
  "subField": {
    object (FieldReference)
  },

  // The following is a list of mutually exclusive fields. At most one of the
  // fields will be set in a response:
  "index": integer,
  "key": string
  // End of mutually exclusive fields.
}
ช่อง
name

string

ชื่อฟิลด์ เช่น "vehicles"

subField

object (FieldReference)

ฟิลด์ย่อยที่ซ้อนกันแบบเรียกซ้ำ หากจำเป็น

ต่อไปนี้คือรายการฟิลด์ที่ใช้ร่วมกันไม่ได้ ระบบจะตั้งค่าฟิลด์อย่างน้อย 1 รายการในการตอบกลับ
index

integer

ดัชนีของฟิลด์หากซ้ำ

key

string

คีย์หากฟิลด์เป็นแผนที่

สิ้นสุดฟิลด์ที่แยกกัน

เมตริก

เมตริกโดยรวมที่รวบรวมจากเส้นทางทั้งหมด

การแสดง JSON
{
  "aggregatedRouteMetrics": {
    object (AggregatedMetrics)
  },
  "skippedMandatoryShipmentCount": integer,
  "usedVehicleCount": integer,
  "earliestVehicleStartTime": string,
  "latestVehicleEndTime": string,
  "costs": {
    string: number,
    ...
  },
  "totalCost": number
}
ช่อง
aggregatedRouteMetrics

object (AggregatedMetrics)

ซึ่งเป็นค่าที่รวบรวมจากเส้นทาง เมตริกแต่ละรายการคือผลรวม (หรือค่าสูงสุดสำหรับการโหลด) ของShipmentRoute.metricsฟิลด์ทั้งหมดที่มีชื่อเดียวกัน

skippedMandatoryShipmentCount

integer

จำนวนการจัดส่งที่ต้องดำเนินการซึ่งถูกข้าม

usedVehicleCount

integer

จำนวนยานพาหนะที่ใช้ หมายเหตุ: หากเส้นทางของยานพาหนะว่างเปล่าและ Vehicle.used_if_route_is_empty เป็นจริง ระบบจะถือว่ายานพาหนะเป็นยานพาหนะมือสอง

earliestVehicleStartTime

string (Timestamp format)

เวลาเริ่มต้นที่เร็วที่สุดสำหรับยานพาหนะมือสอง ซึ่งคำนวณเป็นค่าต่ำสุดของยานพาหนะมือสองทั้งหมดที่ ShipmentRoute.vehicle_start_time

ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30"

latestVehicleEndTime

string (Timestamp format)

เวลาสิ้นสุดล่าสุดสำหรับยานพาหนะมือสอง ซึ่งคำนวณเป็นค่าสูงสุดของยานพาหนะมือสองทั้งหมดของ ShipmentRoute.vehicle_end_time

ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30"

costs

map (key: string, value: number)

ต้นทุนของโซลูชันที่แยกย่อยตามช่องคำขอที่เกี่ยวข้องกับต้นทุน คีย์คือเส้นทาง Proto ที่สัมพันธ์กับ OptimizeToursRequest ของอินพุต เช่น "model.shipments.pickups.cost" และค่าคือต้นทุนทั้งหมดที่สร้างโดยฟิลด์ต้นทุนที่เกี่ยวข้อง ซึ่งรวบรวมไว้ในโซลูชันทั้งหมด กล่าวคือ costs["model.shipments.pickups.cost"] คือผลรวมของค่าใช้จ่ายในการรับสินค้าทั้งหมดในโซลูชัน ต้นทุนทั้งหมดที่กําหนดไว้ในโมเดลจะรายงานอย่างละเอียดที่นี่ ยกเว้นต้นทุนที่เกี่ยวข้องกับ TransitionAttributes ซึ่งจะรายงานในลักษณะที่รวบรวมไว้เท่านั้น ณ วันที่ 01/2022

totalCost

number

ค่าใช้จ่ายทั้งหมดของโซลูชัน ผลรวมของค่าทั้งหมดในแผนที่ค่าใช้จ่าย