색인
- RouteOptimization(인터페이스)
- AggregatedMetrics(메시지)
- BatchOptimizeToursMetadata(메시지)
- BatchOptimizeToursRequest(메시지)
- BatchOptimizeToursRequest.AsyncModelConfig(메시지)
- BatchOptimizeToursResponse(메시지)
- BreakRule(메시지)
- BreakRule.BreakRequest(메시지)
- BreakRule.FrequencyConstraint(메시지)
- DataFormat(열거형)
- DistanceLimit(메시지)
- GcsDestination(메시지)
- GcsSource(메시지)
- InjectedSolutionConstraint(메시지)
- InjectedSolutionConstraint.ConstraintRelaxation(메시지)
- InjectedSolutionConstraint.ConstraintRelaxation.Relaxation(메시지)
- InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level(열거형)
- InputConfig(메시지)
- Location(메시지)
- OptimizeToursLongRunningMetadata(메시지)
- OptimizeToursRequest(메시지)
- OptimizeToursRequest.SearchMode(열거형)
- OptimizeToursRequest.SolvingMode(열거형)
- OptimizeToursResponse(메시지)
- OptimizeToursResponse.Metrics(메시지)
- OptimizeToursUriMetadata(메시지)
- OptimizeToursUriRequest(메시지)
- OptimizeToursUriResponse(메시지)
- OptimizeToursValidationError(메시지)
- OptimizeToursValidationError.FieldReference(메시지)
- OutputConfig(메시지)
- RouteModifiers(메시지)
- Shipment(메시지)
- Shipment.Load(메시지)
- Shipment.VisitRequest(메시지)
- ShipmentModel(메시지)
- ShipmentModel.DurationDistanceMatrix(메시지)
- ShipmentModel.DurationDistanceMatrix.Row(메시지)
- ShipmentModel.PrecedenceRule(메시지)
- ShipmentRoute(메시지)
- ShipmentRoute.Break(메시지)
- ShipmentRoute.EncodedPolyline(메시지)
- ShipmentRoute.Transition(메시지)
- ShipmentRoute.VehicleLoad(메시지)
- ShipmentRoute.Visit(메시지)
- ShipmentTypeIncompatibility(메시지)
- ShipmentTypeIncompatibility.IncompatibilityMode(열거형)
- ShipmentTypeRequirement(메시지)
- ShipmentTypeRequirement.RequirementMode(열거형)
- SkippedShipment(메시지)
- SkippedShipment.Reason(메시지)
- SkippedShipment.Reason.Code(열거형)
- TimeWindow(메시지)
- TransitionAttributes(메시지)
- Uri(메시지)
- Vehicle(메시지)
- Vehicle.DurationLimit(메시지)
- Vehicle.LoadLimit(메시지)
- Vehicle.LoadLimit.Interval(메시지)
- Vehicle.TravelMode(열거형)
- Vehicle.UnloadingPolicy(열거형)
- Waypoint(메시지)
RouteOptimization
차량 이동 경로를 최적화하는 서비스입니다.
특정 유형의 필드 유효성:
- google.protobuf.Timestamp- 시간은 Unix 시간으로 표시됩니다. 1970-01-01T00:00:00+00:00 이후 경과된 초입니다.
- seconds는 [0, 253402300799] 범위(즉, [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00])여야 합니다.
- nanos는 설정 해제하거나 0으로 설정해야 합니다.
 
- google.protobuf.Duration- seconds는 [0, 253402300799] 범위(즉, [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00])여야 합니다.
- nanos는 설정 해제하거나 0으로 설정해야 합니다.
 
- google.type.LatLng- latitude는 [-90.0, 90.0] 범위여야 합니다.
- 경도는 [-180.0, 180.0] 범위여야 합니다.
- 위도와 경도 중 하나 이상이 0이 아니어야 합니다.
 
| BatchOptimizeTours | 
|---|
| 
 하나 이상의  이 메서드는 장기 실행 작업 (LRO)입니다. 최적화 입력 ( 사용자는  LRO  LRO의  
 | 
| OptimizeTours | 
|---|
| 
 
 
 목표는 비용이  
 | 
| OptimizeToursLongRunning | 
|---|
| 
 이 메서드는 긴 시간 제한 값을 사용한 최적화를 위해 설계된  반환된  
 | 
| OptimizeToursUri | 
|---|
| 
 이 메서드는 제한 시간 값이 크고 입력/출력 크기가 큰 최적화에 맞게 설계된  클라이언트는 Google Cloud Storage에 저장된  이 방법은  반환된  
 | 
AggregatedMetrics
ShipmentRoute (모든 Transition 요소에 대한 OptimizeToursResponse 또는 모든 Visit (모든 ShipmentRoute 요소에 대한 OptimizeToursResponse)) 요소에 대한 집계된 측정항목입니다.
| 필드 | |
|---|---|
| performed_ | 
 처리된 배송 건수입니다. 수령 및 배송 쌍은 한 번만 집계됩니다. | 
| travel_ | 경로 또는 솔루션의 총 이동 시간입니다. | 
| wait_ | 경로 또는 솔루션의 총 대기 시간입니다. | 
| delay_ | 경로 또는 솔루션의 총 지연 시간입니다. | 
| break_ | 경로 또는 솔루션의 총 휴식 시간입니다. | 
| visit_ | 경로 또는 솔루션의 총 방문 시간입니다. | 
| total_ | 총 시간은 위의 모든 시간의 합계와 같아야 합니다. 경로의 경우 다음과도 일치합니다.  | 
| travel_ | 
 경로 또는 솔루션의 총 이동 거리입니다. | 
| max_ | 
 이 경로 (해결 방법)의 각 수량에 대해 전체 경로 (해결 방법)에서 달성된 최대 부하로, 모든  | 
BatchOptimizeToursMetadata
이 유형에는 필드가 없습니다.
BatchOptimizeToursRequest 호출의 작업 메타데이터입니다.
BatchOptimizeToursRequest
비동기 작업으로 이동 경로를 일괄 최적화하도록 요청합니다. 각 입력 파일에는 OptimizeToursRequest가 하나 포함되어야 하며 각 출력 파일에는 OptimizeToursResponse가 하나 포함됩니다. 요청에는 파일을 읽고 쓰고 파싱하는 정보가 포함됩니다. 모든 입력 파일과 출력 파일이 동일한 프로젝트에 있어야 합니다.
| 필드 | |
|---|---|
| parent | 
 필수 항목입니다. 전화를 걸 프로젝트와 위치를 타겟팅합니다. 형식: *  위치를 지정하지 않으면 리전이 자동으로 선택됩니다. | 
| model_ | 필수 항목입니다. 각 구매 모델의 입력/출력 정보(예: 파일 경로, 데이터 형식) | 
AsyncModelConfig
하나의 최적화 모델을 비동기식으로 해결하기 위한 정보입니다.
| 필드 | |
|---|---|
| display_ | 
 선택사항입니다. 사용자가 정의한 모델 이름으로, 사용자가 모델을 추적하기 위해 별칭으로 사용할 수 있습니다. | 
| input_ | 필수 항목입니다. 입력 모델에 대한 정보입니다. | 
| output_ | 필수 항목입니다. 원하는 출력 위치 정보입니다. | 
BatchOptimizeToursResponse
이 유형에는 필드가 없습니다.
BatchOptimizeToursRequest에 대한 응답입니다. 이는 작업이 완료된 후 장기 실행 작업에서 반환됩니다.
BreakRule
차량의 휴식 시간을 생성하는 규칙 (예: 점심 시간) 휴식 시간은 차량이 현재 위치에서 유휴 상태로 유지되고 방문을 수행할 수 없는 연속된 시간입니다. 다음과 같은 경우 중단이 발생할 수 있습니다.
- 두 방문 간의 이동 중에 (방문 직전 또는 직후의 시간이 포함되며 방문 중에는 포함되지 않음) 방문 간의 해당 이동 시간을 연장합니다.
- 또는 차량 시동 전 (휴식 중에는 차량이 시동되지 않을 수 있음)에 전송됩니다. 이 경우 차량 시동 시간에 영향을 미치지 않습니다.
- 또는 차량 종료 후 (차량 종료 시간 포함)
| 필드 | |
|---|---|
| break_ | 시퀀스 휴식 시간  | 
| frequency_ | 여러 개의  | 
BreakRequest
각 차량에 적용되는 휴식 시간의 순서 (즉, 수 및 순서)를 사전에 알고 있어야 합니다. 반복되는 BreakRequest는 시퀀스를 발생해야 하는 순서대로 정의합니다. 시간 범위 (earliest_start_time / latest_start_time)가 겹칠 수 있지만 순서와 호환되어야 합니다 (확인됨).
| 필드 | |
|---|---|
| earliest_ | 필수 항목입니다. 휴식 시간 시작의 하한 (양 끝값 포함)입니다. | 
| latest_ | 필수 항목입니다. 휴식 시간 시작의 상한 (양 끝값 포함)입니다. | 
| min_ | 필수 항목입니다. 시점의 최소 길이입니다. 양수여야 합니다. | 
FrequencyConstraint
'12시간마다 1시간 이상의 휴식이 있어야 함'과 같은 최소 휴식 빈도를 적용하여 위에 지정된 휴식의 빈도와 기간을 추가로 제한할 수 있습니다. 이를 '12시간의 슬라이딩 시간 윈도우 내에 1시간 이상의 휴식 시간이 한 번 이상 있어야 함'으로 해석할 수 있다고 가정하면 이 예시는 다음 FrequencyConstraint로 변환됩니다.
{
   min_break_duration { seconds: 3600 }         # 1 hour.
   max_inter_break_duration { seconds: 39600 }  # 11 hours (12 - 1 = 11).
}
솔루션의 휴식 시간과 기간은 이미 BreakRequest에 지정된 시간 간격 및 최소 기간 외에도 이러한 모든 제약 조건을 준수합니다.
실제로 FrequencyConstraint는 연속되지 않은 시점에 적용될 수 있습니다. 예를 들어 다음 일정은 '12시간마다 1시간' 예시를 따릅니다.
  04:00 vehicle start
   .. performing travel and visits ..
  09:00 1 hour break
  10:00 end of the break
   .. performing travel and visits ..
  12:00 20-min lunch break
  12:20 end of the break
   .. performing travel and visits ..
  21:00 1 hour break
  22:00 end of the break
   .. performing travel and visits ..
  23:59 vehicle end
| 필드 | |
|---|---|
| min_ | 필수 항목입니다. 이 제약 조건의 최소 시점 길이입니다. 0보다 크거나 같은 값입니다.  | 
| max_ | 필수 항목입니다. 경로에서  | 
DataFormat
입력 및 출력 파일의 데이터 형식입니다.
| 열거형 | |
|---|---|
| DATA_FORMAT_UNSPECIFIED | 잘못된 값입니다. 형식이 UNSPECIFIED이 아니어야 합니다. | 
| JSON | JavaScript 객체 표기법 | 
| PROTO_TEXT | Protocol Buffers 텍스트 형식 https://protobuf.dev/reference/protobuf/textformat-spec/ 참고 | 
DistanceLimit
이동할 수 있는 최대 거리를 정의하는 제한입니다. 하드 또는 소프트일 수 있습니다.
조정 가능 한도가 정의된 경우 soft_max_meters 및 cost_per_kilometer_above_soft_max가 모두 정의되어야 하며 음수가 아니어야 합니다.
| 필드 | |
|---|---|
| max_ | 
 거리를 최대 max_meters로 제한하는 하드 제한입니다. 한도는 음수가 아니어야 합니다. | 
| soft_ | 
 최대 거리 제한을 적용하지 않는 소프트 제한이지만 위반하면 모델에 정의된 다른 비용에 동일한 단위로 더해지는 비용이 발생합니다. 정의된 경우 soft_max_meters는 max_meters보다 작고 음수가 아니어야 합니다. | 
| cost_ | 
 발생한 킬로미터당 비용으로, 최대  
 | 
| cost_ | 
 거리가  비용은 음수가 아니어야 합니다. | 
GcsDestination
출력 파일이 기록될 Google Cloud Storage 위치입니다.
| 필드 | |
|---|---|
| uri | 
 필수 항목입니다. Google Cloud Storage URI | 
GcsSource
입력 파일을 읽을 Google Cloud Storage 위치입니다.
| 필드 | |
|---|---|
| uri | 
 필수 항목입니다.  | 
InjectedSolutionConstraint
제한해야 하는 방문과 제한 방법에 관한 정보를 포함하여 요청에 삽입된 솔루션입니다.
| 필드 | |
|---|---|
| routes[] | 삽입할 솔루션의 경로입니다. 일부 경로는 원래 솔루션에서 생략될 수 있습니다. 경로 및 건너뛴 배송은  | 
| skipped_ | 삽입할 솔루션의 배송을 건너뜁니다. 일부는 원래 솔루션에서 생략될 수 있습니다.  | 
| constraint_ | 차량 그룹이 0개 이상인 경우 제약 조건을 완화할 시점과 정도를 지정합니다. 이 필드가 비어 있으면 비어 있지 않은 모든 차량 경로가 완전히 제약됩니다. | 
ConstraintRelaxation
차량 그룹의 경우 방문 제약 조건이 완화되는 임곗값과 완화 수준을 지정합니다. skipped_shipment 필드에 나열된 배송은 건너뛰도록 제약됩니다. 즉, 실행할 수 없습니다.
| 필드 | |
|---|---|
| relaxations[] | 
 | 
| vehicle_ | 
 방문 제약조건  
 | 
휴식
relaxations가 비어 있으면 routes의 모든 방문의 시작 시간과 순서가 완전히 제약되며 이러한 경로에 새 방문을 삽입하거나 추가할 수 없습니다. 또한 차량이 비어 있지 않은 한 (즉, 방문이 없고 모델에서 used_if_route_is_empty가 false로 설정된 경우) routes의 차량 시작 시간과 종료 시간은 완전히 제약됩니다.
relaxations(i).level는 다음을 충족하는 방문 #j에 적용되는 제약 조건 완화 수준을 지정합니다.
- route.visits(j).start_time >= relaxations(i).threshold_time및
- j + 1 >= relaxations(i).threshold_visit_count
마찬가지로 다음을 충족하는 경우 차량 시작이 relaxations(i).level로 완화됩니다.
- vehicle_start_time >= relaxations(i).threshold_time및
- relaxations(i).threshold_visit_count == 0이며 차량 끝이 다음을 충족하는 경우- relaxations(i).level로 완화됩니다.
- vehicle_end_time >= relaxations(i).threshold_time및
- route.visits_size() + 1 >= relaxations(i).threshold_visit_count
방문이 threshold_visit_count 또는 threshold_time를 충족하는 경우 완화 수준을 적용하려면 동일한 level를 사용하여 relaxations를 두 개 추가합니다. 하나는 threshold_visit_count만 설정하고 다른 하나는 threshold_time만 설정합니다. 방문이 여러 relaxations의 조건을 충족하는 경우 가장 완화된 수준이 적용됩니다. 따라서 차량 시작부터 경로 방문을 거쳐 차량 종료까지 이완 수준이 점점 더 완화됩니다. 즉, 경로가 진행될수록 이완 수준이 감소하지 않습니다.
relaxations의 임곗값 조건을 충족하지 않는 경로 방문의 시점과 순서는 완전히 제약되며 이러한 시퀀스에 방문을 삽입할 수 없습니다. 또한 차량 시작 또는 종료가 완화 조건을 충족하지 않는 경우 차량이 비어 있지 않는 한 시간이 고정됩니다.
| 필드 | |
|---|---|
| level | 
 | 
| threshold_ | 이완  | 
| threshold_ | 
 완화  
 | 
수준
방문에 적용되는 다양한 제약 조건 완화 수준과 방문이 기준 조건을 충족할 때 적용되는 수준을 나타냅니다.
아래 열거는 완화 정도가 증가하는 순으로 나열되어 있습니다.
| 열거형 | |
|---|---|
| LEVEL_UNSPECIFIED | 암시적 기본 완화 수준: 제약 조건이 완화되지 않습니다. 즉, 모든 방문이 완전히 제약됩니다. 이 값은  | 
| RELAX_VISIT_TIMES_AFTER_THRESHOLD | 방문 시작 시간과 차량 시작/종료 시간은 완화되지만 각 방문은 동일한 차량에 연결된 상태로 유지되며 방문 순서를 준수해야 합니다. 방문 간에 또는 방문 앞에 방문을 삽입할 수 없습니다. | 
| RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD | RELAX_VISIT_TIMES_AFTER_THRESHOLD와 동일하지만 방문 시퀀스도 완화됩니다. 방문은 이 차량에서만 실행할 수 있지만 실행되지 않을 수도 있습니다. | 
| RELAX_ALL_AFTER_THRESHOLD | RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD와 동일하지만 차량도 완화됩니다. 방문은 기준 시간 이후에 완전히 무료이며 실행되지 않을 수 있습니다. | 
InputConfig
[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours]의 입력을 지정합니다.
| 필드 | |
|---|---|
| data_ | 필수 항목입니다. 입력 데이터 형식입니다. | 
| 통합 필드 source. 필수 항목입니다.source은 다음 중 하나여야 합니다. | |
| gcs_ | Google Cloud Storage 위치입니다. 단일 객체 (파일)여야 합니다. | 
위치
위치 (지리적 지점 및 선택사항인 방향)를 캡슐화합니다.
| 필드 | |
|---|---|
| lat_ | 웨이포인트의 지리적 좌표입니다. | 
| heading | 
 트래픽 흐름 방향과 연결된 나침반 방향입니다. 이 값은 승하차에 사용할 도로의 측면을 지정하는 데 사용됩니다. 방향 값은 0~360이며, 여기서 0은 북쪽 방향을, 90은 동쪽 방향을 지정합니다. | 
OptimizeToursLongRunningMetadata
이 유형에는 필드가 없습니다.
OptimizeToursLongRunning 호출의 작업 메타데이터입니다.
OptimizeToursRequest
해결할 배송 모델과 최적화 매개변수를 정의하는 이동 경로 최적화 솔버에 제공할 요청입니다.
| 필드 | |
|---|---|
| parent | 
 필수 항목입니다. 전화를 걸 프로젝트 또는 위치를 타겟팅합니다. 형식: *  위치를 지정하지 않으면 리전이 자동으로 선택됩니다. | 
| timeout | 이 제한 시간이 설정되면 서버는 제한 시간이 경과하거나 동기식 요청의 서버 기한에 도달하기 전에(둘 중 더 빠른 쪽) 응답을 반환합니다. 비동기 요청의 경우 서버는 제한 시간이 경과하기 전에 (가능한 경우) 솔루션을 생성합니다. | 
| model | 배송 모델을 해결합니다. | 
| solving_ | 기본적으로 솔브 모드는  | 
| search_ | 요청을 해결하는 데 사용된 검색 모드입니다. | 
| injected_ | 최적화 알고리즘이 이전 솔루션과 유사한 첫 번째 솔루션을 찾도록 안내합니다. 첫 번째 솔루션이 빌드될 때 모델이 제약됩니다. 경로에서 실행되지 않은 배송은 첫 번째 솔루션에서 암시적으로 건너뛰지만 후속 솔루션에서는 실행될 수 있습니다. 솔루션은 다음과 같은 몇 가지 기본 유효성 가정을 충족해야 합니다. 
 삽입된 솔루션이 실행 가능하지 않은 경우 반드시 유효성 검사 오류가 반환되지는 않으며 실행 불가능성을 나타내는 오류가 대신 반환될 수 있습니다. | 
| injected_ | 최적화 알고리즘을 제약하여 이전 솔루션과 유사한 최종 솔루션을 찾습니다. 예를 들어 이미 완료되었거나 완료해야 하지만 수정해서는 안 되는 경로의 일부를 고정하는 데 사용할 수 있습니다. 삽입된 솔루션이 실행 가능하지 않은 경우 반드시 유효성 검사 오류가 반환되지는 않으며 실행 불가능성을 나타내는 오류가 대신 반환될 수 있습니다. | 
| refresh_ | 비어 있지 않으면 기본 방문 순서나 이동 시간을 수정하지 않고 지정된 경로가 새로고침됩니다. 다른 세부정보만 업데이트됩니다. 이렇게 해도 모델이 해결되지는 않습니다. 2020년 11월 현재, 비어 있지 않은 경로의 다중선만 채우며  전달된 경로의  이 필드는  
 | 
| interpret_ | 
 true인 경우: 
 이 해석은  이 값이 true인 경우 다음 카테고리의 라벨은 카테고리에서 최대 한 번만 표시되어야 합니다. 
 삽입된 솔루션의  삽입된 솔루션에서 경로 방문 또는 전체 경로를 삭제하면 암시된 제약 조건에 영향을 미쳐 솔루션 변경, 유효성 검사 오류 또는 실행 불가능으로 이어질 수 있습니다. 참고: 호출자는 각  | 
| consider_ | 
 
 | 
| populate_ | 
 true인 경우 응답  | 
| populate_ | 
 true인 경우 응답  | 
| allow_ | 
 이 속성이 설정된 경우 요청에 최대 60분의 기한 (https://grpc.io/blog/deadlines 참고)이 있을 수 있습니다. 그렇지 않으면 최대 기한은 30분입니다. 장기 요청은 중단될 위험이 상당히 높지만 여전히 작습니다. | 
| use_ | 
 이 값이 true이면 이동 거리가 Google 지도 거리 대신 지오데시시크 거리를 사용하여 계산되고 이동 시간은  | 
| label | 
 이 요청을 식별하는 데 사용할 수 있는 라벨로,  | 
| geodesic_ | 
 
 | 
| max_ | 
 반환된 유효성 검사 오류 수를 자릅니다. 이러한 오류는 일반적으로 solving_mode=VALIDATE_ONLY가 아닌 경우 INVALID_ARGUMENT 오류 페이로드에 BadRequest 오류 세부정보 (https://cloud.google.com/apis/design/errors#error_details)로 첨부됩니다.  | 
SearchMode
지연 시간과 솔루션 품질 간의 절충점을 고려하여 검색 동작을 정의하는 모드입니다. 모든 모드에서 전 세계 요청 기한이 적용됩니다.
| 열거형 | |
|---|---|
| SEARCH_MODE_UNSPECIFIED | RETURN_FAST과 동일한 지정되지 않은 검색 모드입니다. | 
| RETURN_FAST | 적절한 해결 방법을 찾으면 검색을 중지합니다. | 
| CONSUME_ALL_AVAILABLE_TIME | 가능한 한 모든 시간을 더 나은 해결 방법을 찾는 데 할애합니다. | 
SolvingMode
솔버가 요청을 처리하는 방법을 정의합니다. VALIDATE_ONLY을 제외한 모든 모드에서 요청이 유효하지 않으면 INVALID_REQUEST 오류가 발생합니다. 반환되는 오류 수를 제한하려면 max_validation_errors를 참고하세요.
| 열거형 | |
|---|---|
| DEFAULT_SOLVE | 모델을 풀고 [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]에서 경고가 발생할 수 있습니다. | 
| VALIDATE_ONLY | 모델을 해결하지 않고 모델만 검증합니다. 최대한 많은 OptimizeToursResponse.validation_errors를 채웁니다. | 
| DETECT_SOME_INFEASIBLE_SHIPMENTS | 
 중요: 여기서는 실행 불가능한 모든 배송이 반환되는 것이 아니라 사전 처리 중에 실행 불가능한 것으로 감지된 배송만 반환됩니다. | 
OptimizeToursResponse
각 차량이 따라간 경로, 건너뛴 배송, 솔루션의 전반적인 비용이 포함된 순회 최적화 문제를 해결한 후의 응답입니다.
| 필드 | |
|---|---|
| routes[] | 각 차량에 대해 계산된 경로입니다. i번째 경로는 모델의 i번째 차량에 해당합니다. | 
| request_ | 
 요청에 라벨이 지정된 경우  | 
| skipped_ | 건너뛴 모든 배송의 목록입니다. | 
| validation_ | Google에서 독립적으로 감지할 수 있었던 모든 유효성 검사 오류 목록입니다.  | 
| metrics | 이 솔루션의 기간, 거리, 사용량 측정항목 | 
측정항목
모든 경로를 기준으로 집계된 전반적인 측정항목입니다.
| 필드 | |
|---|---|
| aggregated_ | 경로별로 집계됩니다. 각 측정항목은 동일한 이름의 모든  | 
| skipped_ | 
 건너뛴 필수 배송 건수입니다. | 
| used_ | 
 사용된 차량 수입니다. 참고: 차량 경로가 비어 있고  | 
| earliest_ | 중고차의 가장 빠른 시작 시간으로, 모든 중고차  | 
| latest_ | 중고차의 최신 종료 시간으로, 모든 중고차  | 
| costs | 
 비용 관련 요청 입력란별로 분류된 솔루션 비용입니다. 키는 입력 OptimizeToursRequest를 기준으로 한 프로토 경로(예: 'model.shipments.pickups.cost')이고 값은 전체 솔루션에 걸쳐 집계된 해당 비용 필드에서 생성된 총 비용입니다. 즉, costs["model.shipments.pickups.cost"] 는 솔루션의 모든 수령 비용의 합계입니다. 모델에 정의된 모든 비용은 여기에 자세히 보고됩니다. 단, 2022년 1월 현재 집계된 방식으로만 보고되는 TransitionAttributes와 관련된 비용은 예외입니다. | 
| total_ | 
 솔루션의 총 비용입니다. 비용 맵의 모든 값의 합계입니다. | 
OptimizeToursUriMetadata
이 유형에는 필드가 없습니다.
OptimizeToursUri 호출의 작업 메타데이터입니다.
OptimizeToursUriRequest
OptimizeToursUri 메서드에서 사용하는 요청입니다.
| 필드 | |
|---|---|
| parent | 
 필수 항목입니다. 전화를 걸 프로젝트 또는 위치를 타겟팅합니다. 형식: *  위치를 지정하지 않으면 리전이 자동으로 선택됩니다. | 
| input | 필수 항목입니다.  | 
| output | 필수 항목입니다.  | 
OptimizeToursUriResponse
OptimizeToursUri 메서드에서 반환한 응답입니다.
| 필드 | |
|---|---|
| output | 선택사항입니다. JSON 또는 textproto로 인코딩된  리소스의  | 
OptimizeToursValidationError
OptimizeToursRequest를 검증할 때 발생한 오류 또는 경고를 설명합니다.
| 필드 | |
|---|---|
| code | 
 유효성 검사 오류는 항상 존재하는 쌍 ( 이 섹션 다음에 있는 필드는 오류에 관한 추가 컨텍스트를 제공합니다. MULTIPLE ERRORS: 오류가 여러 개 있는 경우 검증 프로세스에서 여러 오류를 출력하려고 시도합니다. 컴파일러와 마찬가지로 이는 불완전한 프로세스입니다. 일부 유효성 검사 오류는 '심각'하여 전체 유효성 검사 프로세스가 중지됩니다. 특히  안정성:  | 
| display_ | 
 오류 표시 이름입니다. | 
| fields[] | 오류 컨텍스트에는 0개, 1개 (대부분) 또는 그 이상의 필드가 포함될 수 있습니다. 예를 들어 차량 4번과 배송 2번의 첫 번째 수령을 참조하는 방법은 다음과 같습니다. 단, 지정된 오류 코드의 경우  | 
| error_ | 
 사람이 읽을 수 있는 오류를 설명하는 문자열입니다.  안정성: 안정적이지 않음: 특정  | 
| offending_ | 
 필드의 값을 포함할 수 있습니다. 이 기능을 사용할 수 없는 경우도 있습니다. 이 방법에 의존해서는 안 되며 수동 모델 디버깅에만 사용해야 합니다. | 
FieldReference
유효성 검사 오류의 컨텍스트를 지정합니다. FieldReference는 항상 이 파일의 지정된 필드를 참조하며 동일한 계층 구조를 따릅니다. 예를 들어 다음을 사용하여 차량 5의 start_time_windows 요소 2를 지정할 수 있습니다.
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
그러나 메시지가 복잡해지지 않도록 OptimizeToursRequest 또는 ShipmentModel와 같은 최상위 항목은 생략합니다.
| 필드 | |
|---|---|
| name | 
 필드 이름입니다(예: "vehicles". | 
| sub_ | 필요한 경우 중첩된 하위 필드를 재귀적으로 중첩합니다. | 
| 통합 필드  
 | |
| index | 
 반복되는 경우 필드의 색인입니다. | 
| key | 
 필드가 맵인 경우 키입니다. | 
OutputConfig
[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] 결과의 대상을 지정합니다.
| 필드 | |
|---|---|
| data_ | 필수 항목입니다. 출력 데이터 형식입니다. | 
| 통합 필드 destination. 필수 항목입니다.destination은 다음 중 하나여야 합니다. | |
| gcs_ | 출력을 기록할 Google Cloud Storage 위치입니다. | 
RouteModifiers
차량 경로를 계산할 때 충족해야 하는 선택적 조건 집합을 캡슐화합니다. 이는 Google Maps Platform Routes Preferred API의 RouteModifiers와 유사합니다. https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers를 참고하세요.
| 필드 | |
|---|---|
| avoid_ | 
 합당한 경우 유료 도로를 피할지 지정합니다. 유료 도로가 포함되지 않은 경로가 우선 적용됩니다. 모터가 달린 이동 수단에만 적용됩니다. | 
| avoid_ | 
 합리적인 경우 고속도로를 피할지 지정합니다. 고속도로가 포함되지 않은 경로가 우선됩니다. 모터가 달린 이동 수단에만 적용됩니다. | 
| avoid_ | 
 합당한 경우 페리를 피할지 여부를 지정합니다. 페리 이동이 포함되지 않은 경로가 우선적으로 표시됩니다. 모터가 달린 이동 수단에만 적용됩니다. | 
| avoid_ | 
 선택사항입니다. 합당한 경우 실내에서의 탐색을 피할지 지정합니다. 실내 탐색이 포함되지 않은 경로가 우선 적용됩니다.  | 
배송
픽업에서 배송까지 단일 상품의 배송입니다. 배송이 완료된 것으로 간주되려면 고유한 차량이 하나의 수령 위치를 방문한 후 (따라서 예비 용량을 줄임) 나중에 하나의 배송 위치를 방문해야 합니다 (따라서 예비 용량을 다시 늘림).
| 필드 | |
|---|---|
| display_ | 
 사용자 정의 배송물 표시 이름입니다. 최대 63자(영문 기준)까지 사용할 수 있으며 UTF-8 문자를 사용할 수 있습니다. | 
| pickups[] | 배송과 연결된 픽업 대안 집합입니다. 지정하지 않으면 차량은 배송에 해당하는 위치만 방문하면 됩니다. | 
| deliveries[] | 배송과 연결된 대체 배송 옵션 세트입니다. 지정하지 않으면 차량이 픽업에 해당하는 위치만 방문하면 됩니다. | 
| load_ | 
 배송의 적재 요구사항 (예: 중량, 부피, 팔레트 수 등) 맵의 키는 해당 부하의 유형을 설명하는 식별자여야 하며, 단위도 포함하는 것이 좋습니다. 예를 들어 'weight_kg', 'volume_gallons', 'pallet_count' 등이 있습니다. 지정된 키가 맵에 표시되지 않으면 해당 로드가 null로 간주됩니다. | 
| allowed_ | 
 이 배송을 실행할 수 있는 차량 세트입니다. 비어 있으면 모든 차량에서 실행할 수 있습니다. 차량은  | 
| costs_ | 
 이 배송 상품이 각 차량으로 배송될 때 발생하는 비용을 지정합니다. 지정된 경우 다음 중 하나를 포함해야 합니다. 
 이 비용은  | 
| costs_ | 
 
 | 
| pickup_ | 수령부터 배송까지의 최단 경로에 비해 허용되는 최대 절대 우회 시간을 지정합니다. 지정된 경우 0보다 크거나 같아야 하며 배송에 픽업 및 배송이 하나 이상 포함되어야 합니다. 예를 들어 t는 선택한 수령 대안에서 선택한 배송 대안으로 바로 이동하는 데 걸리는 가장 짧은 시간입니다. 그런 다음  동일한 배송에 상대 한도와 절대 한도가 모두 지정된 경우 가능한 각 수령/배송 쌍에 더 제한적인 한도가 사용됩니다. 2017년 10월부터 우회 경로는 이동 시간이 차량에 종속되지 않는 경우에만 지원됩니다. | 
| pickup_ | 배송의 픽업 시작부터 배송 시작까지의 최대 기간을 지정합니다. 지정된 경우 0보다 크거나 같아야 하며 배송에 픽업 및 배송이 하나 이상 포함되어야 합니다. 이는 수령 및 배송에 선택된 대안이나 차량 속도에 따라 달라지지 않습니다. 최대 우회 제약 조건과 함께 지정할 수 있습니다. 솔루션은 두 사양을 모두 준수합니다. | 
| shipment_ | 
 이 배송의 '유형'을 지정하는 비어 있지 않은 문자열입니다. 이 기능은  단일 방문에 지정된  | 
| label | 
 이 배송의 라벨을 지정합니다. 이 라벨은 상응하는  | 
| ignore | 
 true인 경우 이 배송을 건너뛰지만  배송을 무시하면 모델에  
 | 
| penalty_ | 
 배송이 완료되지 않으면 이 패널티가 경로의 전체 비용에 추가됩니다. 수령 및 배송 대안 중 하나가 방문되면 배송이 완료된 것으로 간주됩니다. 비용은 모델의 다른 모든 비용 관련 필드에 사용되는 것과 동일한 단위로 표현할 수 있으며 양수여야 합니다. 중요: 이 패널티가 지정되지 않으면 무한으로 간주되며, 즉 배송이 완료되어야 합니다. | 
| pickup_ | 
 수령에서 배송까지의 최단 경로와 비교한 최대 상대 우회 시간을 지정합니다. 지정된 경우 0보다 크거나 같아야 하며 배송에 픽업 및 배송이 하나 이상 포함되어야 합니다. 예를 들어 t는 선택한 수령 대안에서 선택한 배송 대안으로 바로 이동하는 데 걸리는 가장 짧은 시간입니다. 그런 다음  동일한 배송에 상대 한도와 절대 한도가 모두 지정된 경우 가능한 각 수령/배송 쌍에 더 제한적인 한도가 사용됩니다. 2017년 10월부터 우회 경로는 이동 시간이 차량에 종속되지 않는 경우에만 지원됩니다. | 
로드
방문을 수행할 때 수령인 경우 사전 정의된 금액이 차량 로드에 추가되며, 배송인 경우 차량 로드에서 차감될 수 있습니다. 이 메시지는 이러한 금액을 정의합니다. load_demands를 참조하세요.
| 필드 | |
|---|---|
| amount | 
 해당 방문을 실행하는 차량의 부하가 달라지는 양입니다. 정수이므로 사용자는 정밀도가 손실되지 않도록 적절한 단위를 선택하는 것이 좋습니다. 0 이상이어야 합니다. | 
VisitRequest
차량으로 수행할 수 있는 방문 요청: 지리적 위치 (2개, 아래 참고), 시간대별로 표시되는 영업시간 및 서비스 기간 (차량이 도착하여 상품을 수령하거나 배송하는 데 소요되는 시간)이 있습니다.
| 필드 | |
|---|---|
| arrival_ | 이  | 
| arrival_ | 이  | 
| departure_ | 이  | 
| departure_ | 이  | 
| tags[] | 
 방문 요청에 연결된 태그를 지정합니다. 빈 문자열 또는 중복 문자열은 허용되지 않습니다. | 
| time_ | 방문 도착 시간을 제한하는 시간 범위입니다. 차량이 도착 시간 범위 외부에서 출발할 수 있습니다. 즉, 도착 시간 + 소요 시간이 시간 범위 내에 있지 않아도 됩니다. 이로 인해 차량이  
 시간 간격은 서로 중복되지 않아야 합니다. 즉, 시간 간격이 다른 시간 간격과 겹치거나 인접해서는 안 되며, 시간 간격은 오름차순으로 정렬되어야 합니다. 
 | 
| duration | 방문 시간, 즉 차량이 도착과 출발 사이에 보낸 시간입니다 (가능한 대기 시간에 추가됨,  | 
| cost | 
 차량 경로에서 이 방문 요청을 처리하는 데 드는 비용입니다. 이를 통해 배송의 대체 수령 또는 배송마다 다른 비용을 지불할 수 있습니다. 이 비용은  | 
| load_ | 
 이 방문 요청의 수요를 로드합니다. 이는 전체  | 
| visit_ | 
 방문 유형을 지정합니다. 차량이 방문을 완료하는 데 필요한 추가 시간을 할당하는 데 사용할 수 있습니다 ( 유형은 한 번만 표시될 수 있습니다. | 
| label | 
 이  | 
ShipmentModel
배송 모델에는 차량 세트로 실행해야 하는 배송 세트가 포함되며, 전체 비용은 다음의 합계입니다.
- 차량 경로 설정 비용 (총 시간당 비용, 이동 시간당 비용, 모든 차량의 고정 비용의 합계)
- 미실행 배송 페널티
- 전 세계 배송 기간의 비용
| 필드 | |
|---|---|
| shipments[] | 모델에서 실행해야 하는 배송 세트입니다. | 
| vehicles[] | 방문을 수행하는 데 사용할 수 있는 차량 세트입니다. | 
| global_ | 모델의 전 세계 시작 및 종료 시간: 이 범위를 벗어나는 시간은 유효하지 않은 것으로 간주됩니다. 모델의 기간은 1년 미만이어야 합니다. 즉,  
 | 
| global_ | 설정하지 않으면 1971년 1월 1일 00:00:00 UTC (즉, 초: 31536000, 나노: 0)가 기본값으로 사용됩니다. | 
| global_ | 
 전체 계획의 '전체 기간'은 모든 차량의 가장 빠른 유효 시작 시간과 가장 늦은 유효 종료 시간의 차이입니다. 예를 들어 사용자는 해당 수량에 시간당 비용을 할당하여 최대한 빨리 작업을 완료하도록 최적화할 수 있습니다. 이 비용은  | 
| duration_ | 모델에 사용되는 시간 및 거리 행렬을 지정합니다. 이 필드가 비어 있으면  사용 예시: 
 
  | 
| duration_ | 
 시간 및 거리 행렬의 소스를 정의하는 태그입니다.  태그는  | 
| duration_ | 
 시간 및 거리 행렬의 대상을 정의하는 태그입니다.  태그는  | 
| transition_ | 모델에 전환 속성이 추가되었습니다. | 
| shipment_ | 호환되지 않는 shipment_types의 집합입니다 ( | 
| shipment_ | 
 | 
| precedence_ | 모델에서 시행해야 하는 우선순위 규칙 집합입니다. | 
| max_ | 
 활성 차량의 최대 수를 제한합니다. 경로에서 배송을 한 번 이상 실행하는 경우 차량이 활성 상태입니다. 운전자 수가 차량 수보다 적고 차량 구성이 이질적인 경우 경로 수를 제한하는 데 사용할 수 있습니다. 그러면 최적화 기능이 사용할 최적의 차량 하위 집합을 선택합니다. 엄격히 양수여야 합니다. | 
DurationDistanceMatrix
방문 및 차량 시작 위치에서 방문 및 차량 종료 위치까지의 시간 및 거리 행렬을 지정합니다.
| 필드 | |
|---|---|
| rows[] | 기간 및 거리 행렬의 행을 지정합니다.  | 
| vehicle_ | 
 이 시간 및 거리 매트릭스가 적용되는 차량을 정의하는 태그입니다. 비어 있으면 모든 차량에 적용되며 매트릭스는 하나만 있을 수 있습니다. 각 차량 시작은 정확히 하나의 행렬과 일치해야 합니다. 즉,  모든 행렬은  | 
행
시간 및 거리 행렬의 행을 지정합니다.
| 필드 | |
|---|---|
| durations[] | 지정된 행의 기간 값입니다.  | 
| meters[] | 
 지정된 행의 거리 값입니다. 모델에서 거리를 참조하는 비용이나 제약 조건이 없는 경우 비워 둘 수 있습니다. 그렇지 않으면  | 
PrecedenceRule
두 이벤트 간의 우선순위 규칙 (각 이벤트는 배송 상품의 수령 또는 배송입니다). '첫 번째' 이벤트가 시작된 후 offset_duration 이상이 지나야 '두 번째' 이벤트가 시작될 수 있습니다.
여러 우선순위가 동일한(또는 관련된) 이벤트를 참조할 수 있습니다(예: 'A 배송 후 B 수령' 및 'B 수령 후 C 수령'
또한 우선순위는 두 배송이 모두 실행되는 경우에만 적용되며 그렇지 않은 경우에는 무시됩니다.
| 필드 | |
|---|---|
| first_ | 
 '첫 번째' 이벤트가 전송인지 여부를 나타냅니다. | 
| second_ | 
 '두 번째' 이벤트가 전송인지 여부를 나타냅니다. | 
| offset_ | '첫 번째' 이벤트와 '두 번째' 이벤트 간의 오프셋입니다. 음수일 수 있습니다. | 
| first_ | 
 '첫 번째' 이벤트의 배송 색인입니다. 이 필드는 지정해야 합니다. | 
| second_ | 
 '두 번째' 이벤트의 배송 색인입니다. 이 필드는 지정해야 합니다. | 
ShipmentRoute
차량의 경로는 시간축을 따라 다음과 같이 분해할 수 있습니다 (방문 횟수가 n이라고 가정).
  |            |            |          |       |  T[2], |        |      |
  | Transition |  Visit #0  |          |       |  V[2], |        |      |
  |     #0     |    aka     |   T[1]   |  V[1] |  ...   | V[n-1] | T[n] |
  |  aka T[0]  |    V[0]    |          |       | V[n-2],|        |      |
  |            |            |          |       | T[n-1] |        |      |
  ^            ^            ^          ^       ^        ^        ^      ^
vehicle    V[0].start   V[0].end     V[1].   V[1].    V[n].    V[n]. vehicle
 start     (arrival)   (departure)   start   end      start    end     end
다음과 같이 구분됩니다.
- 차량 시작 및 종료, 각 방문의 시작 및 종료 (도착 및 출발)와 같은 '정확한 이벤트' 특정 초에 발생합니다.
- '시간 간격'(예: 방문 자체, 방문 간의 전환) 시간 간격의 길이가 0인 경우(즉, 시작과 종료가 같은 초에 있는 경우)도 있지만, 대부분의 경우 길이가 양수입니다.
불변:
- 방문이 n회이면 전환은 n+1회입니다.
- 방문은 항상 그 전의 전환 (동일한 색인)과 그 후의 전환 (색인 + 1)으로 둘러싸여 있습니다.
- 차량 시작 후에는 항상 전환 #0이 이어집니다.
- 차량 종료 앞에는 항상 전환 #n이 표시됩니다.
확대하면 Transition 및 Visit 중에 다음과 같은 일이 발생합니다.
---+-------------------------------------+-----------------------------+-->
   |           TRANSITION[i]             |           VISIT[i]          |
   |                                     |                             |
   |  * TRAVEL: the vehicle moves from   |      PERFORM the visit:     |
   |    VISIT[i-1].departure_location to |                             |
   |    VISIT[i].arrival_location, which |  * Spend some time:         |
   |    takes a given travel duration    |    the "visit duration".    |
   |    and distance                     |                             |
   |                                     |  * Load or unload           |
   |  * BREAKS: the driver may have      |    some quantities from the |
   |    breaks (e.g. lunch break).       |    vehicle: the "demand".   |
   |                                     |                             |
   |  * WAIT: the driver/vehicle does    |                             |
   |    nothing. This can happen for     |                             |
   |    many reasons, for example when   |                             |
   |    the vehicle reaches the next     |                             |
   |    event's destination before the   |                             |
   |    start of its time window         |                             |
   |                                     |                             |
   |  * DELAY: *right before* the next   |                             |
   |    arrival. E.g. the vehicle and/or |                             |
   |    driver spends time unloading.    |                             |
   |                                     |                             |
---+-------------------------------------+-----------------------------+-->
   ^                                     ^                             ^
V[i-1].end                           V[i].start                    V[i].end
마지막으로 전환 중에 TRAVEL, BREAKS, DELAY, WAIT를 배치하는 방법은 다음과 같습니다.
- 겹치지 않습니다.
- DELAY는 고유하며 다음 방문 (또는 차량 종료) 직전의 연속된 시간으로 여야 합니다. 따라서 시작 시간과 종료 시간을 알기 위해서는 지연 시간을 알면 충분합니다.
- BREAKS는 중복되지 않는 연속된 시간입니다. 응답은 각 광고 시점의 시작 시간과 길이를 지정합니다.
- TRAVEL 및 WAIT는 '선점 가능': 이 전환 중에 여러 번 중단될 수 있습니다. 클라이언트는 이동이 '가능한 한 빨리' 이루어지고 '대기'가 남은 시간을 채운다고 가정할 수 있습니다.
(복잡한) 예시:
                               TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
  ||     |       |           |       |           |         |         ||
  ||  T  |   B   |     T     |       |     B     |         |    D    ||
  ||  r  |   r   |     r     |   W   |     r     |    W    |    e    ||
  ||  a  |   e   |     a     |   a   |     e     |    a    |    l    ||
  ||  v  |   a   |     v     |   i   |     a     |    i    |    a    ||
  ||  e  |   k   |     e     |   t   |     k     |    t    |    y    ||
  ||  l  |       |     l     |       |           |         |         ||
  ||     |       |           |       |           |         |         ||
--++-----------------------------------------------------------------++-->
| 필드 | |
|---|---|
| vehicle_ | 
 경로를 수행하는 차량으로, 소스  | 
| vehicle_ | 
 이 경로를 수행하는 차량의 라벨입니다. 지정된 경우  | 
| vehicle_ | 차량이 경로를 시작하는 시간입니다. | 
| vehicle_ | 차량이 경로를 완료한 시간입니다. | 
| visits[] | 경로를 나타내는 순서가 지정된 방문 시퀀스입니다. visits[i] 는 경로의 i번째 방문입니다. 이 필드가 비어 있으면 차량이 사용되지 않는 것으로 간주됩니다. | 
| transitions[] | 경로의 전환 목록(순서 지정)입니다. | 
| has_ | 
 
 트래픽으로 인해 예상 이동 시간  | 
| route_ | 경로의 인코딩된 다중선 표현입니다. 이 필드는  | 
| breaks[] | 이 경로를 운행하는 차량에 예정된 휴식 시간입니다.  | 
| metrics | 이 경로의 기간, 거리, 로드 측정항목입니다.  | 
| route_ | 
 비용 관련 요청 필드별로 나눠진 경로의 비용입니다. 키는 입력 OptimizeToursRequest를 기준으로 한 프로토 경로(예: 'model.shipments.pickups.cost')이고 값은 전체 경로에 걸쳐 집계된 해당 비용 필드에서 생성된 총 비용입니다. 즉, costs["model.shipments.pickups.cost"] 는 경로의 모든 수령 비용의 합계입니다. 모델에 정의된 모든 비용은 여기에 자세히 보고됩니다. 단, 2022년 1월 현재 집계된 방식으로만 보고되는 TransitionAttributes와 관련된 비용은 예외입니다. | 
| route_ | 
 경로의 총 비용입니다. 비용 지도의 모든 비용의 합계입니다. | 
휴식 시간
중단 실행을 나타내는 데이터입니다.
| 필드 | |
|---|---|
| start_ | 광고 시점의 시작 시간입니다. | 
| duration | 휴식 시간입니다. | 
EncodedPolyline
다중선의 인코딩된 표현입니다. 다중선 인코딩에 관한 자세한 내용은 https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding을 참고하세요.
| 필드 | |
|---|---|
| points | 
 다중선의 인코딩된 점을 나타내는 문자열입니다. | 
전환
경로의 두 이벤트 간의 전환입니다. ShipmentRoute의 설명을 참고하세요.
차량에 start_location 또는 end_location가 없으면 해당 이동 측정항목은 0입니다.
| 필드 | |
|---|---|
| travel_ | 이 전환 중의 이동 시간입니다. | 
| travel_ | 
 전환 중에 이동한 거리입니다. | 
| traffic_ | 
 
 | 
| delay_ | 이 전환에 적용된 지연 시간의 합계입니다. 지연이 있는 경우 다음 이벤트 (방문 또는 차량 종료)가 시작되기 정확히  | 
| break_ | 이 전환 중에 발생한 휴식 시간의 합계입니다(휴식 시간이 있는 경우). 각 휴식 시간의 시작 시간 및 길이에 관한 세부정보는  | 
| wait_ | 이 전환 중에 대기한 시간입니다. 대기 시간은 유휴 시간에 해당하며 휴식 시간은 포함되지 않습니다. 또한 이 대기 시간은 연속되지 않은 여러 간격으로 나뉨을 수 있습니다. | 
| total_ | 편의상 제공되는 전환의 총 시간입니다. 다음과 같습니다. 
 | 
| start_ | 이 전환의 시작 시간입니다. | 
| route_ | 전환 중에 따라간 경로의 인코딩된 다중선 표현입니다. 이 필드는  | 
| route_ | 
 출력 전용입니다. Navigation SDK에 전달하여 내비게이션 중에 경로를 재구성하고 경로를 변경하는 경우 경로가 생성될 때의 원래 의도를 준수할 수 있는 불투명 토큰입니다. 이 토큰을 불투명 BLOB로 취급합니다. 서비스가 정확히 동일한 경로를 반환하더라도 값이 변경될 수 있으므로 요청 간에 값을 비교하지 마세요. 이 필드는  | 
| vehicle_ | 
 이 전환 중에 이 차량의  첫 번째 전환 중의 로드는 차량 경로의 시작 로드입니다. 그런 다음 방문이 수령인지 배송인지에 따라 방문  | 
VehicleLoad
지정된 유형에 대해 경로의 특정 지점에서 차량의 실제 부하를 보고합니다 (Transition.vehicle_loads 참고).
| 필드 | |
|---|---|
| amount | 
 지정된 유형의 차량에 가해지는 부하입니다. 부하 단위는 일반적으로 유형으로 표시됩니다.  | 
방문
경로 중에 실행된 방문입니다. 이 방문은 Shipment의 수령 또는 배송에 해당합니다.
| 필드 | |
|---|---|
| shipment_ | 
 소스  | 
| is_ | 
 이 값이 true이면 방문이  | 
| visit_ | 
 
 | 
| start_ | 방문이 시작된 시간입니다. 차량이 방문 위치에 이보다 일찍 도착할 수도 있습니다. 시간이  | 
| load_ | 
 배송 및 방문 요청  | 
| detour | 방문 전에 경로에서 방문한 배송 상품과 시간대에서 발생할 수 있는 대기 시간으로 인한 추가 우회 시간입니다. 방문이 배송인 경우 우회 경로는 해당하는 수령 방문에서 계산되며 다음과 같습니다. 그렇지 않으면 차량   | 
| shipment_ | 
 
 | 
| visit_ | 
 
 | 
ShipmentTypeIncompatibility
shipment_type에 따라 배송 상품 간의 비호환성을 지정합니다. 동일한 경로에 호환되지 않는 배송이 표시되는 방식은 비호환성 모드에 따라 제한됩니다.
| 필드 | |
|---|---|
| types[] | 
 호환되지 않는 유형 목록 나열된 배송 중  | 
| incompatibility_ | 비호환성에 적용된 모드입니다. | 
IncompatibilityMode
동일한 경로에서 호환되지 않는 배송의 표시가 제한되는 방식을 정의하는 모드입니다.
| 열거형 | |
|---|---|
| INCOMPATIBILITY_MODE_UNSPECIFIED | 지정되지 않은 비호환성 모드입니다. 절대로 이 값을 사용하지 마세요. | 
| NOT_PERFORMED_BY_SAME_VEHICLE | 이 모드에서는 유형이 호환되지 않는 두 배송이 동일한 차량을 공유할 수 없습니다. | 
| NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY | 
 
 | 
ShipmentTypeRequirement
shipment_type에 따라 배송 간 요구사항을 지정합니다. 요구사항의 세부정보는 요구사항 모드에 따라 정의됩니다.
| 필드 | |
|---|---|
| required_ | 
 
 | 
| dependent_ | 
 
 참고:  | 
| requirement_ | 요구사항에 적용된 모드입니다. | 
RequirementMode
경로에서 종속 배송의 모양을 정의하는 모드입니다.
| 열거형 | |
|---|---|
| REQUIREMENT_MODE_UNSPECIFIED | 지정되지 않은 요구사항 모드입니다. 절대로 이 값을 사용하지 마세요. | 
| PERFORMED_BY_SAME_VEHICLE | 이 모드에서는 모든 '종속' 배송이 하나 이상의 '필수' 배송과 동일한 차량을 공유해야 합니다. | 
| IN_SAME_VEHICLE_AT_PICKUP_TIME | 
 따라서 '종속' 배송 수령에는 다음 중 하나가 있어야 합니다. 
 | 
| IN_SAME_VEHICLE_AT_DELIVERY_TIME | 이전과 동일하지만 '종속' 배송의 경우 배송 시 차량에 '필수' 배송이 있어야 합니다. | 
SkippedShipment
솔루션에서 실행되지 않은 배송의 세부정보를 지정합니다. 사소한 케이스이거나 건너뛰는 이유를 파악할 수 있는 경우 여기에 이유를 보고합니다.
| 필드 | |
|---|---|
| index | 
 색인은 소스  | 
| label | 
 
 | 
| reasons[] | 배송이 건너뛴 이유를 설명하는 이유 목록입니다.  | 
이유
배송이 건너뛴 이유를 설명할 수 있는 경우 여기에 이유가 표시됩니다. 모든 차량의 이유가 동일하지 않은 경우 reason에는 요소가 2개 이상 있습니다. 건너뛴 배송에는 중복된 이유가 있을 수 없습니다. 즉, example_vehicle_index를 제외한 모든 입력란이 동일한 경우입니다. 예:
reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  example_vehicle_index: 1
  example_exceeded_capacity_type: "Apples"
}
reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  example_vehicle_index: 3
  example_exceeded_capacity_type: "Pears"
}
reasons {
  code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
  example_vehicle_index: 1
}
건너뛴 배송은 일부 차량과 호환되지 않습니다. 차량마다 이유는 다를 수 있지만 하나 이상의 차량의 '사과' 용량이 초과되고 (차량 1 포함), 하나 이상의 차량의 '배' 용량이 초과되고 (차량 3 포함), 하나 이상의 차량의 거리 제한이 초과됩니다 (차량 1 포함).
| 필드 | |
|---|---|
| code | 코드의 주석을 참고하세요. | 
| example_ | 
 이유 코드가  | 
| example_ | 
 배송 차량 비호환성과 관련된 이유인 경우 이 필드에 관련 차량 1대의 색인이 표시됩니다. | 
코드
이유 유형을 식별하는 코드입니다. 여기서 순서는 의미가 없습니다. 특히 두 가지 이유가 모두 적용되는 경우 솔루션에서 어떤 이유가 먼저 표시될지 나타내지 않습니다.
| 열거형 | |
|---|---|
| CODE_UNSPECIFIED | 절대로 사용해서는 안 됩니다. | 
| NO_VEHICLE | 모델에 차량이 없어 모든 배송이 불가능합니다. | 
| DEMAND_EXCEEDS_VEHICLE_CAPACITY | 배송 수요가 일부 용량 유형( example_exceeded_capacity_type포함)의 차량 용량을 초과합니다. | 
| CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT | 이 배송을 실행하는 데 필요한 최소 거리(즉, 차량의  이 계산에는 지오데시시 거리를 사용합니다. | 
| CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT | 이동 시간, 대기 시간, 서비스 시간을 포함하여 이 배송을 실행하는 데 필요한 최소 시간이 차량의  참고: 이동 시간은 최선의 시나리오에서 계산되며, 즉 지리적 거리 x 36m/s (약 130km/시간)로 계산됩니다. | 
| CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT | 위와 동일하지만 최소 이동 시간과 차량의 travel_duration_limit만 비교합니다. | 
| CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS | 차량이 가장 빠른 시작 시간에 시작하는 경우 최선의 시나리오 (시간 계산은 CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT참고)에서도 이 배송을 실행할 수 없습니다. 총 시간이 차량의 최신 종료 시간 이후에 종료되기 때문입니다. | 
| VEHICLE_NOT_ALLOWED | 배송의 allowed_vehicle_indices필드가 비어 있지 않으며 이 차량이 배송에 속하지 않습니다. | 
TimeWindow
시간 범위는 방문 도착 시간, 차량의 시작 시간 및 종료 시간과 같은 이벤트 시간을 제한합니다.
하드 시간 창 경계인 start_time 및 end_time는 이벤트의 가장 빠른 시간과 가장 늦은 시간을 적용합니다(예: start_time <= event_time <=
          end_time). 조정 시간 창 하한값 soft_start_time은 이벤트가 soft_start_time 전에 발생한 시간에 비례하는 비용을 발생시킴으로써 이벤트가 soft_start_time 이후에 발생하도록 하는 선호도를 나타냅니다. 소프트 시간 창 상한 soft_end_time는 이벤트가 soft_end_time 이전에 발생하도록 하는 선호도를 표현하며, soft_end_time 이후 이벤트가 발생한 시간에 비례하여 비용을 발생시킵니다. start_time, end_time, soft_start_time, soft_end_time는 전역 시간 제한 (ShipmentModel.global_start_time 및 ShipmentModel.global_end_time 참고) 내에 있어야 하며 다음을 준수해야 합니다.
  0 <= `start_time` <= `end_time` and
  0 <= `start_time` <= `soft_start_time` and
  0 <= `soft_end_time` <= `end_time`.
| 필드 | |
|---|---|
| start_ | 엄격한 시간 간격의 시작 시간입니다. 지정하지 않으면  | 
| end_ | 엄격한 시간 범위의 종료 시간입니다. 지정하지 않으면  | 
| soft_ | 시간 범위의 조용히 시작 시간입니다. | 
| soft_ | 시간 범위의 조기 종료 시간입니다. | 
| cost_ | 
 이벤트가 soft_start_time 전에 발생하는 경우 모델의 다른 비용에 추가되는 시간당 비용으로 다음과 같이 계산됩니다. 이 비용은 양수여야 하며, 이 필드는 soft_start_time이 설정된 경우에만 설정할 수 있습니다. | 
| cost_ | 
 이벤트가  이 비용은 양수여야 하며  | 
TransitionAttributes
경로에서 두 번 연속 방문 간의 전환 속성을 지정합니다. 동일한 전환에 여러 개의 TransitionAttributes가 적용될 수 있습니다. 이 경우 모든 추가 비용이 합산되고 가장 엄격한 제약 조건 또는 한도가 적용됩니다 (자연스러운 'AND' 시맨틱에 따라).
| 필드 | |
|---|---|
| src_ | 
 이 속성이 적용되는 (src->dst) 전환 집합을 정의하는 태그입니다. 소스 방문 또는 차량 시작이 일치하는 경우는  | 
| excluded_ | 
 
 | 
| dst_ | 
 대상 방문 또는 차량 종료가 일치하는 경우는  | 
| excluded_ | 
 
 | 
| cost | 
 이 전환을 실행하는 데 드는 비용을 지정합니다. 이 값은 모델의 다른 모든 비용과 동일한 단위로 표시되며 음수가 아니어야 합니다. 기존의 다른 모든 비용에 추가로 적용됩니다. | 
| cost_ | 
 이 전환을 실행하는 동안 이동한 거리에 적용되는 킬로미터당 비용을 지정합니다. 차량에 지정된  | 
| distance_ | 이 전환을 실행하는 동안 이동하는 거리에 대한 제한을 지정합니다. 2021년 6월부터는 최대 한도만 지원됩니다. | 
| delay | 이 전환을 실행할 때 발생하는 지연을 지정합니다. 이 지연은 항상 소스 방문을 완료한 후 도착 페이지 방문을 시작하기 전에 발생합니다. | 
URI
Route Optimization API에서 읽고 쓸 수 있는 리소스를 가리키는 범용 리소스 식별자입니다.
| 필드 | |
|---|---|
| uri | 
 리소스의 URI입니다. 리소스가 아직 존재하지 않을 수 있습니다. 리소스의 콘텐츠는 JSON 또는 textproto로 인코딩됩니다. Google Cloud Storage 리소스만 지원됩니다. 리소스가 JSON으로 인코딩된 경우 리소스 이름에  | 
| md5_ | 
 출력 전용입니다. 리소스 콘텐츠의 MD5 해시입니다. 사용자는 해시를 제공할 필요가 없습니다. 서버에서 계산되므로 사용자가 서버에서 반환된 리소스의 콘텐츠가 수정되지 않았는지 확인할 수 있습니다. https://cloud.google.com/storage/docs/data-validation#integrity를 참고하세요. | 
차량
배송 문제의 차량을 모델링합니다. 배송 문제를 해결하면 이 차량의 경로가 start_location에서 시작하여 end_location에서 종료됩니다. 경로는 방문의 시퀀스입니다 (ShipmentRoute 참고).
| 필드 | |
|---|---|
| display_ | 
 차량의 사용자 정의 표시 이름입니다. 최대 63자(영문 기준)까지 사용할 수 있으며 UTF-8 문자를 사용할 수 있습니다. | 
| travel_ | 차량에서 사용할 수 있는 도로와 속도에 영향을 미치는 이동 모드입니다.  | 
| route_ | 지정된 차량의 경로가 계산되는 방식에 영향을 미치는 충족 조건 집합입니다. | 
| start_ | 차량이 배송 상품을 수거하기 전에 출발하는 지리적 위치입니다. 지정하지 않으면 차량이 첫 번째 수령 위치에서 시작합니다. 배송 모델에 기간 및 거리 매트릭스가 있는 경우  | 
| start_ | 차량이 배송 상품을 수거하기 전에 출발하는 지리적 위치를 나타내는 웨이포인트입니다.  | 
| end_ | 차량이 마지막  | 
| end_ | 차량이 마지막  | 
| start_ | 
 차량 경로의 시작 부분에 연결된 태그를 지정합니다. 빈 문자열 또는 중복 문자열은 허용되지 않습니다. | 
| end_ | 
 차량 경로의 끝에 연결된 태그를 지정합니다. 빈 문자열 또는 중복 문자열은 허용되지 않습니다. | 
| start_ | 차량이 출발 위치를 떠날 수 있는 시간입니다. 전 세계 시간 제한 내에 있어야 합니다 ( 동일한 반복 필드에 속하는 시간 창은 서로 중복되지 않아야 합니다. 즉, 시간 창이 다른 시간 창과 겹치거나 인접해서는 안 되며 시간 순으로 정렬되어야 합니다. 
 | 
| end_ | 차량이 도착할 수 있는 시간입니다. 전 세계 시간 제한 내에 있어야 합니다 ( 동일한 반복 필드에 속하는 시간 창은 서로 중복되지 않아야 합니다. 즉, 시간 창이 다른 시간 창과 겹치거나 인접해서는 안 되며 시간 순으로 정렬되어야 합니다. 
 | 
| unloading_ | 차량에 적용된 하역 정책 | 
| load_ | 
 차량의 용량 (예: 중량, 부피, 팔레트 수) 맵의 키는  | 
| cost_ | 
 차량 비용: 모든 비용이 합산되며  차량 경로의 시간당 비용입니다. 이 비용은 경로에 걸린 총 시간에 적용되며 이동 시간, 대기 시간, 방문 시간 등이 포함됩니다.  | 
| cost_ | 
 차량 경로의 이동 시간당 비용입니다. 이 비용은 경로에서 걸린 이동 시간 ( | 
| cost_ | 
 차량 경로의 킬로미터당 비용입니다. 이 비용은  | 
| fixed_ | 
 이 차량이 배송 처리에 사용되는 경우 적용되는 고정 비용입니다. | 
| used_ | 
 이 필드는 경로에 배송 상품이 없는 차량에만 적용됩니다. 이 경우 차량을 중고로 간주해야 하는지 여부를 나타냅니다. 이 값이 true이면 차량이 배송 상품을 배송하지 않더라도 시작 위치에서 종료 위치로 이동하며 시작 위치에서 종료 위치로 이동하는 데 발생하는 시간 및 거리 비용이 고려됩니다. 그렇지 않으면 시작 위치에서 종료 위치로 이동하지 않으며 이 차량에  | 
| route_ | 차량 경로의 총 시간에 적용되는 제한입니다. 주어진  | 
| travel_ | 차량 경로의 이동 시간에 적용되는 제한입니다. 주어진  | 
| route_ | 차량 경로의 총 거리에 적용되는 제한입니다. 주어진  | 
| extra_ | 
 visit_types 문자열에서 기간으로의 매핑을 지정합니다. 기간은 지정된  방문 요청에 유형이 여러 개인 경우 지도에 유형별로 소요 시간이 추가됩니다. | 
| break_ | 이 차량에 적용할 휴식 일정을 설명합니다. 비어 있으면 이 차량에 휴식 시간이 예약되지 않습니다. | 
| label | 
 이 차량의 라벨을 지정합니다. 이 라벨은 응답에서 해당  | 
| ignore | 
 true인 경우  
 
 | 
| travel_ | 
 이 차량의 이동 시간을 늘리거나 줄이는 데 사용할 수 있는 배수를 지정합니다. 예를 들어 이 값을 2.0으로 설정하면 이 차량이 느려지고 이동 시간이 표준 차량의 두 배가 된다는 의미입니다. 이 배수는 방문 시간에 영향을 미치지 않습니다.  경고: 이동 시간은 이 배수가 적용된 후 수치 연산을 실행하기 전에 가장 가까운 초로 반올림되므로 작은 배수를 사용하면 정밀도가 떨어질 수 있습니다. 아래  | 
DurationLimit
차량 경로의 최대 시간을 정의하는 한도입니다. 하드 또는 소프트일 수 있습니다.
최대한 낮은 한도 필드가 정의되면 최대한 낮은 최대 한도 임곗값과 연결된 비용도 함께 정의해야 합니다.
| 필드 | |
|---|---|
| max_ | 최대 길이가 max_duration 이하로 제한되는 하드 제한입니다. | 
| soft_ | 최대 기간 한도를 적용하지 않는 가벼운 한도이지만 위반하면 경로에 비용이 발생합니다. 이 비용은 동일한 단위로 모델에 정의된 다른 비용에 합산됩니다. 정의된 경우  | 
| quadratic_ | 최대 기간 제한을 적용하지 않는 소프트 제한이지만 위반하면 경로에 기간에 비례하는 비용이 발생합니다. 이 비용은 동일한 단위로 모델에 정의된 다른 비용에 합산됩니다. 정의된 경우  
 | 
| cost_ | 
 
 비용은 음수가 아니어야 합니다. | 
| cost_ | 
 
 기간이 기준점 미만인 경우 추가 비용은 0이고, 그렇지 않은 경우 비용은 다음과 같이 기간에 따라 달라집니다. 비용은 음수가 아니어야 합니다. | 
LoadLimit
차량에 적용되는 적재 한도를 정의합니다(예: '이 트럭은 최대 3, 500kg만 운반할 수 있음'). load_limits를 참조하세요.
| 필드 | |
|---|---|
| soft_ | 
 부하의 소프트 한도입니다.  | 
| cost_ | 
 이 차량의 경로에서 로드가  | 
| start_ | 경로 시작 시 차량의 허용되는 적재 간격입니다. | 
| end_ | 경로 끝에 있는 차량의 허용되는 적재 간격입니다. | 
| max_ | 
 허용되는 최대 부하입니다. | 
간격
허용되는 부하량 간격입니다.
| 필드 | |
|---|---|
| min | 
 허용되는 최소 부하입니다. 0 이상이어야 합니다. 둘 다 지정된 경우  | 
| max | 
 허용되는 최대 부하입니다. 0 이상이어야 합니다. 지정하지 않으면 이 메시지에 의해 최대 부하가 제한되지 않습니다. 둘 다 지정된 경우  | 
TravelMode
차량에서 사용할 수 있는 이동 수단입니다.
이는 Google Maps Platform Routes Preferred API 이동 수단의 하위 집합이어야 합니다. https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode를 참고하세요.
| 열거형 | |
|---|---|
| TRAVEL_MODE_UNSPECIFIED | DRIVING과 동일한 지정되지 않은 이동 수단입니다. | 
| DRIVING | 운전 경로에 해당하는 이동 모드 (자동차 등)입니다. | 
| WALKING | 도보 경로에 해당하는 이동 수단입니다. | 
UnloadingPolicy
차량을 하역하는 방법에 관한 정책입니다. 수령과 배송이 모두 있는 배송에만 적용됩니다.
다른 배송은 unloading_policy와 관계없이 경로의 어느 곳에서나 자유롭게 발생할 수 있습니다.
| 열거형 | |
|---|---|
| UNLOADING_POLICY_UNSPECIFIED | 하역 정책이 지정되지 않았습니다. 해당하는 픽업 후에만 배송이 이루어져야 합니다. | 
| LAST_IN_FIRST_OUT | 배송은 수거의 역순으로 진행되어야 합니다. | 
| FIRST_IN_FIRST_OUT | 배송은 수령과 동일한 순서로 이루어져야 함 | 
경유지
웨이포인트를 캡슐화합니다. 웨이포인트는 VisitRequests의 도착 및 출발 위치와 차량의 시작 및 종료 위치를 표시합니다.
| 필드 | |
|---|---|
| side_ | 
 선택사항입니다. 이 경유지의 위치가 차량이 도로의 특정 측면에 정차하는 것을 선호한다는 것을 나타냅니다. 이 값을 설정하면 차량이 도로 중앙에서 위치가 편향된 도로 쪽에 정차할 수 있도록 경로가 위치를 통과합니다. 이 옵션은 '도보' 이동 모드에는 작동하지 않습니다. | 
| 통합 필드 location_type. 위치를 나타내는 다양한 방법location_type은 다음 중 하나여야 합니다. | |
| location | 선택적 방향을 포함하여 지리적 좌표를 사용하여 지정된 지점입니다. | 
| place_ | 
 경로 지점과 연결된 관심 장소 장소 ID입니다. |