OptimizeToursResponse

Thông tin phản hồi sau khi giải quyết vấn đề về việc tối ưu hoá chuyến tham quan, trong đó có thông tin về các tuyến đường của mỗi chiếc xe, những lô hàng bị bỏ qua và tổng chi phí của giải pháp.

Biểu diễn dưới dạng JSON
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "metrics": {
    object (Metrics)
  }
}
Trường
routes[]

object (ShipmentRoute)

Các tuyến đường được tính toán cho mỗi xe; tuyến đường thứ i tương ứng với xe thứ i trong mô hình.

requestLabel

string

Bản sao của OptimizeToursRequest.label, nếu nhãn được chỉ định trong yêu cầu.

skippedShipments[]

object (SkippedShipment)

Danh sách tất cả các lô hàng bị bỏ qua.

validationErrors[]

object (OptimizeToursValidationError)

Danh sách tất cả các lỗi xác thực mà chúng tôi có thể phát hiện riêng. Xem nội dung giải thích "Nhiều lỗi" cho thông báo OptimizeToursValidationError. Thay vì báo cáo lỗi, biến này sẽ bao gồm cảnh báo trong trường hợp solvingModeDEFAULT_SOLVE.

metrics

object (Metrics)

Chỉ số về thời lượng, khoảng cách và mức sử dụng của giải pháp này.

OptimizeToursValidationError

Mô tả lỗi hoặc cảnh báo gặp phải khi xác thực OptimizeToursRequest.

Biểu diễn dưới dạng JSON
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
Trường
code

integer

Lỗi xác thực được xác định bằng cặp (code, displayName) luôn xuất hiện.

Các trường sau phần này cung cấp thêm thông tin về lỗi.

NHIỀU LỖI: Khi có nhiều lỗi, quá trình xác thực sẽ cố gắng đưa ra một vài lỗi. Giống như trình biên dịch, đây là một quy trình không hoàn hảo. Một số lỗi xác thực sẽ là "lỗi nghiêm trọng", nghĩa là các lỗi này sẽ dừng toàn bộ quá trình xác thực. Đây là trường hợp của lỗi displayName="UNSPECIFIED", trong số các lỗi khác. Một số lỗi có thể khiến quá trình xác thực bỏ qua các lỗi khác.

TÍNH ỔN ĐỊNH: codedisplayName phải rất ổn định. Tuy nhiên, các mã và tên hiển thị mới có thể xuất hiện theo thời gian, điều này có thể khiến một yêu cầu (không hợp lệ) nhất định tạo ra một cặp (code, displayName) khác vì lỗi mới đã ẩn lỗi cũ. Ví dụ: xem "MULTIPLE ERRORS".

displayName

string

Tên hiển thị của lỗi.

fields[]

object (FieldReference)

Ngữ cảnh lỗi có thể liên quan đến 0, 1 (trong hầu hết trường hợp) hoặc nhiều trường. Ví dụ: tham khảo xe #4 và lượt lấy hàng đầu tiên của lô hàng #2 như sau:

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

Tuy nhiên, lưu ý rằng số lượng giá trị riêng biệt của fields không được thay đổi đối với một mã lỗi nhất định.

errorMessage

string

Chuỗi ký tự mà con người đọc được, dùng để mô tả lỗi. Có mối liên kết 1:1 giữa codeerrorMessage (khi code != "UNSPECIFIED").

TÍNH NĂNG: Không ổn định: thông báo lỗi liên quan đến một code nhất định có thể thay đổi (hy vọng có thể làm rõ vấn đề) theo thời gian. Thay vào đó, vui lòng sử dụng displayNamecode.

offendingValues

string

Có thể chứa (các) giá trị của (các) trường. Tính năng này không phải lúc nào cũng có. Bạn tuyệt đối không nên dựa vào và chỉ sử dụng tính năng này để gỡ lỗi mô hình theo cách thủ công.

FieldReference

Chỉ định ngữ cảnh cho lỗi xác thực. FieldReference luôn tham chiếu đến một trường nhất định trong tệp này và tuân theo cùng một cấu trúc phân cấp. Ví dụ: chúng ta có thể chỉ định phần tử #2 của startTimeWindows của xe #5 bằng cách sử dụng:

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

Tuy nhiên, chúng ta sẽ bỏ qua các thực thể cấp cao nhất như OptimizeToursRequest hoặc ShipmentModel để tránh làm rối thông báo.

Biểu diễn dưới dạng 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.
}
Trường
name

string

Tên của trường, ví dụ: "vehicles".

subField

object (FieldReference)

Trường phụ lồng nhau theo quy tắc đệ quy, nếu cần.

Trường kết hợp index_or_key.

index_or_key chỉ có thể là một trong những giá trị sau:

index

integer

Chỉ mục của trường nếu lặp lại.

key

string

Khoá nếu trường là bản đồ.

Chỉ số

Chỉ số tổng thể, được tổng hợp trên tất cả các tuyến đường.

Biểu diễn dưới dạng JSON
{
  "aggregatedRouteMetrics": {
    object (AggregatedMetrics)
  },
  "skippedMandatoryShipmentCount": integer,
  "usedVehicleCount": integer,
  "earliestVehicleStartTime": string,
  "latestVehicleEndTime": string,
  "costs": {
    string: number,
    ...
  },
  "totalCost": number
}
Trường
aggregatedRouteMetrics

object (AggregatedMetrics)

Dữ liệu được tổng hợp qua các tuyến đường. Mỗi chỉ số là tổng (hoặc tối đa, đối với tải) trên tất cả các trường ShipmentRoute.metrics có cùng tên.

skippedMandatoryShipmentCount

integer

Số lô hàng bắt buộc đã bỏ qua.

usedVehicleCount

integer

Số lượng xe được sử dụng. Lưu ý: Nếu tuyến đường của xe trống và Vehicle.used_if_route_is_empty là đúng, thì xe đó sẽ được coi là đã sử dụng.

earliestVehicleStartTime

string (Timestamp format)

Thời gian bắt đầu sớm nhất của một xe đã qua sử dụng, được tính là giá trị tối thiểu trên tất cả xe đã qua sử dụng của ShipmentRoute.vehicle_start_time.

Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, với độ phân giải nano giây và tối đa 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

latestVehicleEndTime

string (Timestamp format)

Thời gian kết thúc muộn nhất của một xe đã qua sử dụng, được tính là thời gian tối đa trên tất cả xe đã qua sử dụng của ShipmentRoute.vehicle_end_time.

Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, có độ phân giải nano giây và tối đa 9 chữ số thập phân. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

costs

map (key: string, value: number)

Chi phí của giải pháp, được phân tích theo các trường yêu cầu liên quan đến chi phí. Các khoá là đường dẫn proto, tương ứng với OptimizeToursRequest đầu vào, ví dụ: "model.shipments.pickups.cost" và các giá trị là tổng chi phí do trường chi phí tương ứng tạo ra, được tổng hợp trên toàn bộ giải pháp. Nói cách khác, costs["model.shipments.pickups.cost"] là tổng chi phí lấy hàng trên giải pháp. Tất cả chi phí được xác định trong mô hình đều được báo cáo chi tiết tại đây, ngoại trừ các chi phí liên quan đến TransitionAttributes chỉ được báo cáo theo cách tổng hợp kể từ ngày 1/1/2022.

totalCost

number

Tổng chi phí của giải pháp. Tổng của tất cả các giá trị trong bản đồ chi phí.