OptimizeToursResponse

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

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

object (ShipmentRoute)

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

requestLabel

string

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

skippedShipments[]

object (SkippedShipment)

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

validationErrors[]

object (OptimizeToursValidationError)

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

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

อย่างไรก็ตาม โปรดทราบว่า Cardinality ของ 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)
  },

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

ชื่อช่อง เช่น "ยานพาหนะ"

subField

object (FieldReference)

ช่องย่อยที่ฝังแบบซ้ำซ้อน หากจำเป็น

ช่องการรวม 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

การประทับเวลาจะอยู่ในรูปแบบ RFC3339 UTC "Zulu" ที่มีความละเอียดระดับนาโนวินาทีและมีตัวเลขเศษส่วนสูงสุด 9 หลัก ตัวอย่าง: "2014-10-02T15:01:23Z" และ "2014-10-02T15:01:23.045123456Z"

latestVehicleEndTime

string (Timestamp format)

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

การประทับเวลาจะอยู่ในรูปแบบ RFC3339 UTC "Zulu" ที่มีความละเอียดระดับนาโนวินาทีและทศนิยมสูงสุด 9 หลัก ตัวอย่างเช่น "2014-10-02T15:01:23Z" และ "2014-10-02T15:01:23.045123456Z"

costs

map (key: string, value: number)

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

totalCost

number

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