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

สตริงที่มนุษย์อ่านได้ซึ่งอธิบายถึงข้อผิดพลาด code และ errorMessage มีการแมปแบบ 1:1 (เมื่อรหัส != "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)
  },

  // Union field index_or_key can be only one of the following:
  "index": integer,
  "key": string
  // End of list of possible types for union field index_or_key.
}
ช่อง
name

string

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

subField

object (FieldReference)

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

ฟิลด์ Union index_or_key

index_or_key ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น

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

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