색인
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
(메시지)OptimizeToursRequest
(메시지)OptimizeToursRequest.SearchMode
(열거형)OptimizeToursRequest.SolvingMode
(열거형)OptimizeToursResponse
(메시지)OptimizeToursResponse.Metrics
(메시지)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
(메시지)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 |
---|
목표는 비용이
|
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은 동쪽 방향을 지정합니다. |
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_ |
솔루션의 총 비용입니다. 비용 맵의 모든 값의 합계입니다. |
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 |
이 전환을 실행할 때 발생하는 지연을 지정합니다. 이 지연은 항상 소스 방문을 완료한 후 도착 페이지 방문을 시작하기 전에 발생합니다. |
차량
배송 문제의 차량을 모델링합니다. 배송 문제를 해결하면 이 차량의 경로가 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입니다. |