OptimizeToursResponse

각 차량이 따라간 경로, 건너뛴 배송, 솔루션의 전체 비용이 포함된 순회 최적화 문제를 해결한 후의 응답입니다.

JSON 표현
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "metrics": {
    object (Metrics)
  }
}
필드
routes[]

object (ShipmentRoute)

각 차량에 대해 계산된 경로입니다. i번째 경로는 모델의 i번째 차량에 해당합니다.

requestLabel

string

요청에 라벨이 지정된 경우 OptimizeToursRequest.label 사본입니다.

skippedShipments[]

object (SkippedShipment)

건너뛴 모든 배송의 목록입니다.

validationErrors[]

object (OptimizeToursValidationError)

Google에서 독립적으로 감지할 수 있었던 모든 유효성 검사 오류 목록입니다. OptimizeToursValidationError 메시지에 대한 'MULTIPLE ERRORS' 설명을 참고하세요. solvingModeDEFAULT_SOLVE인 경우 오류 대신 경고가 포함됩니다.

metrics

object (Metrics)

이 솔루션의 기간, 거리, 사용량 측정항목

OptimizeToursValidationError

OptimizeToursRequest를 검증할 때 발생한 오류 또는 경고를 설명합니다.

JSON 표현
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
필드
code

integer

유효성 검사 오류는 항상 존재하는 쌍 (code, displayName)으로 정의됩니다.

이 섹션 다음에 있는 필드는 오류에 관한 추가 컨텍스트를 제공합니다.

MULTIPLE ERRORS: 오류가 여러 개 있는 경우 검증 프로세스에서 여러 오류를 출력하려고 시도합니다. 컴파일러와 마찬가지로 이는 불완전한 프로세스입니다. 일부 유효성 검사 오류는 '심각'하여 전체 유효성 검사 프로세스가 중지됩니다. 특히 displayName="UNSPECIFIED" 오류가 이러한 경우에 해당합니다. 일부 오류는 유효성 검사 프로세스에서 다른 오류를 건너뛰게 할 수 있습니다.

안정성: codedisplayName는 매우 안정적이어야 합니다. 하지만 시간이 지남에 따라 새 코드와 표시 이름이 표시될 수 있으며, 이로 인해 새 오류가 이전 오류를 숨기기 때문에 특정 (잘못된) 요청이 다른 (code, displayName) 쌍을 생성할 수 있습니다. 예를 들어 'MULTIPLE ERRORS'를 참고하세요.

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

사람이 읽을 수 있는 오류를 설명하는 문자열입니다. codeerrorMessage는 일대일 매핑 관계입니다 (code != 'UNSPECIFIED'인 경우).

안정성: 안정적이지 않음: 특정 code에 연결된 오류 메시지는 시간이 지남에 따라 명확해지도록 변경될 수 있습니다. 대신 displayNamecode를 사용하세요.

offendingValues

string

필드의 값을 포함할 수 있습니다. 이 기능을 사용할 수 없는 경우도 있습니다. 이 방법에 의존해서는 안 되며 수동 모델 디버깅에만 사용해야 합니다.

FieldReference

유효성 검사 오류의 컨텍스트를 지정합니다. FieldReference는 항상 이 파일의 지정된 필드를 참조하며 동일한 계층 구조를 따릅니다. 예를 들어 다음을 사용하여 차량 5의 startTimeWindows 요소 2를 지정할 수 있습니다.

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)

필요한 경우 중첩된 하위 필드를 재귀적으로 중첩합니다.

통합 필드 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이 true인 경우 차량이 사용된 것으로 간주됩니다.

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"] 는 솔루션의 모든 수령 비용의 합계입니다. 모델에 정의된 모든 비용은 여기에 자세히 보고됩니다. 단, 2022년 1월 현재 집계된 방식으로만 보고되는 TransitionAttributes와 관련된 비용은 예외입니다.

totalCost

number

솔루션의 총 비용입니다. 비용 맵의 모든 값의 합계입니다.