색인
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 이후 경과된 초입니다.
- 초는 [0, 253402300799](즉, [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00])에 있어야 합니다.
- nanos는 설정 해제하거나 0으로 설정해야 합니다.
google.protobuf.Duration
- 초는 [0, 253402300799](즉, [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00])에 있어야 합니다.
- 나노 값을 설정하지 않거나 0으로 설정해야 합니다.
google.type.LatLng
- latitude는 [-90.0, 90.0] 범위여야 합니다.
- 경도는 [-180.0, 180.0]이어야 합니다.
- 위도와 경도 중 적어도 하나는 0이 아니어야 합니다.
BatchOptimizeTours |
---|
하나 이상의 이 메서드는 장기 실행 작업 (LRO)입니다. 최적화를 위한 입력 ( 사용자는 LRO의 LRO의
|
OptimizeTours |
---|
목표는
|
AggregatedMetrics
ShipmentRoute
(전체 Transition
또는 Visit
(모든 ShipmentRoute
에 대한 응답) 요소에 대한 OptimizeToursResponse
에 대한 응답)의 집계된 측정항목
필드 | |
---|---|
performed_shipment_count |
수행된 배송 수입니다. 수령 및 배달 쌍은 한 번만 계산됩니다. |
travel_duration |
경로 또는 솔루션의 총 이동 시간 |
wait_duration |
경로 또는 솔루션의 총 대기 시간입니다. |
delay_duration |
경로 또는 솔루션의 총 지연 시간입니다. |
break_duration |
경로 또는 솔루션의 총 중단 시간입니다. |
visit_duration |
경로 또는 솔루션의 총 방문 시간입니다. |
total_duration |
총 시간은 위의 모든 시간의 합과 같아야 합니다. 경로의 경우 다음 항목에도 해당합니다.
|
travel_distance_meters |
경로 또는 솔루션의 총 이동 거리입니다. |
max_loads |
이 경로(해결 방법)의 각 수량에 대해 전체 경로(해결 방법)에서 달성된 최대 부하로, 모든 |
BatchOptimizeToursMetadata
이 유형에는 필드가 없습니다.
BatchOptimizeToursRequest
호출의 작업 메타데이터입니다.
BatchOptimizeToursRequest
비동기 작업으로 둘러보기 일괄 최적화 요청입니다. 각 입력 파일에는 하나의 OptimizeToursRequest
가 포함되어야 하고 각 출력 파일에는 하나의 OptimizeToursResponse
가 포함됩니다. 요청에는 파일을 읽고 쓰고 파싱하기 위한 정보가 포함됩니다. 모든 입력 및 출력 파일은 동일한 프로젝트에 있어야 합니다.
필드 | |
---|---|
parent |
필수 항목입니다. 전화를 걸 프로젝트와 위치를 타겟팅합니다. 형식: * 위치를 지정하지 않으면 지역이 자동으로 선택됩니다. |
model_configs[] |
필수 항목입니다. 파일 경로, 데이터 형식과 같은 각 구매 모델의 입력/출력 정보 |
AsyncModelConfig
하나의 최적화 모델을 비동기식으로 해결하기 위한 정보
필드 | |
---|---|
display_name |
선택사항입니다. 사용자가 정의한 모델 이름으로, 사용자가 모델을 추적하기 위한 별칭으로 사용할 수 있습니다. |
input_config |
필수 항목입니다. 입력 모델에 관한 정보입니다. |
output_config |
필수 항목입니다. 원하는 출력 위치 정보입니다. |
BatchOptimizeToursResponse
이 유형에는 필드가 없습니다.
BatchOptimizeToursRequest
에 관한 응답입니다. 이는 작업이 완료된 후 장기 실행 작업에서 반환됩니다.
BreakRule
차량의 휴식 시간 (예: 점심시간)을 생성하는 규칙입니다. 휴식은 차량이 현재 위치에서 유휴 상태로 유지되어 방문할 수 없는 연속된 기간입니다. 중단이 발생할 수 있습니다.
- 두 방문 간의 이동 중에(방문 직전 또는 직후의 시간이 포함되며 방문 중에는 포함되지 않음) 방문 간의 해당 이동 시간을 연장합니다.
- 또는 차량 시동 전 (중단 중간에 차량 시동을 걸 수 없음) 시동을 거는 경우 차량 시동 시간에 영향을 주지 않습니다.
- 또는 차량이 종료된 후 (차량 종료 시간과 함께)
필드 | |
---|---|
break_requests[] |
광고 시점 시퀀스 |
frequency_constraints[] |
여러 |
BreakRequest
각 차량에 적용되는 중단 순서 (예: 번호 및 순서)는 미리 알고 있어야 합니다. 반복되는 BreakRequest
는 발생해야 하는 순서대로 해당 시퀀스를 정의합니다. 기간 (earliest_start_time
/ latest_start_time
)은 중복될 수 있지만 주문과 호환되어야 합니다 (선택됨).
필드 | |
---|---|
earliest_start_time |
필수 항목입니다. 광고 시점 시작 부분의 하한값 (포함)입니다. |
latest_start_time |
필수 항목입니다. 광고 시점 시작 부분의 상한값 (포함)입니다. |
min_duration |
필수 항목입니다. 최소 광고 시간. 양수여야 합니다. |
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
는 실제로 비연속 중단에 적용될 수 있습니다. 예를 들어 다음 일정은 '1h 매 12h'를 따릅니다. 예:
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_break_duration |
필수 항목입니다. 이 제약조건의 최소 중단 지속 시간입니다. 음수가 아닙니다. |
max_inter_break_duration |
필수 항목입니다. 경로에서 최소한 |
DataFormat
입력 및 출력 파일의 데이터 형식
열거형 | |
---|---|
DATA_FORMAT_UNSPECIFIED |
값이 잘못되었습니다. 형식이 'UNSPECIFIED'여서는 안 됩니다. |
JSON |
JavaScript 객체 표기법 |
PROTO_TEXT |
프로토콜 버퍼 텍스트 형식 https://protobuf.dev/reference/protobuf/textformat-spec/ 참고 |
DistanceLimit
이동할 수 있는 최대 거리를 정의하는 제한입니다. 하드 또는 소프트일 수 있습니다.
유연한 한도가 정의된 경우 soft_max_meters
와 cost_per_kilometer_above_soft_max
가 모두 정의되어야 하며 음수가 아니어야 합니다.
필드 | |
---|---|
max_meters |
거리를 최대 max_meters로 제한하는 하드 제한입니다. 한도는 음수가 아니어야 합니다. |
soft_max_meters |
최대 거리 제한을 적용하지 않는 소프트 제한이지만 위반하면 모델에 정의된 다른 비용에 동일한 단위로 더해지는 비용이 발생합니다. 정의된 경우 soft_max_meters는 max_meters보다 작아야 하며 음수가 아니어야 합니다. |
cost_per_kilometer_below_soft_max |
발생한 킬로미터당 비용이 수식에 따라 최대
|
cost_per_kilometer_above_soft_max |
거리가 한도(
비용은 음수가 아니어야 합니다. |
GcsDestination
출력 파일이 기록되는 Google Cloud Storage 위치입니다.
필드 | |
---|---|
uri |
필수 항목입니다. Google Cloud Storage URI |
GcsSource
입력 파일을 읽을 Google Cloud Storage 위치입니다.
필드 | |
---|---|
uri |
필수 항목입니다. |
InjectedSolutionConstraint
제한해야 하는 방문과 제한해야 하는 방식에 대한 정보를 포함하여 요청에 삽입된 솔루션입니다.
필드 | |
---|---|
routes[] |
삽입할 솔루션의 경로입니다. 일부 경로는 원래 솔루션에서 생략될 수 있습니다. 경로 및 건너뛴 배송은 |
skipped_shipments[] |
주입할 용액 배송을 건너뛰었습니다. 일부는 원래 솔루션에서 생략될 수 있습니다. |
constraint_relaxations[] |
0개 이상의 차량 그룹에 대해 제약 조건을 완화할 시기와 정도를 지정합니다. 이 필드가 비어 있으면 비어 있지 않은 모든 차량 경로가 완전히 제약됩니다. |
ConstraintRelaxation
차량 그룹의 경우 방문에 대한 제약 조건을 완화할 기준점과 완화 수준을 지정합니다. skipped_shipment
필드에 표시된 배송은 건너뛸 수 있습니다. 즉, 실행할 수 없습니다.
필드 | |
---|---|
relaxations[] |
|
vehicle_indices[] |
방문 제약조건
|
휴식
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
만 설정된 relaxations
및 threshold_time
만 설정된 relaxations
)를 추가합니다. 방문이 여러 relaxations
의 조건을 충족하면 가장 완화된 수준이 적용됩니다. 그 결과, 차량 시작부터 경로 방문까지 차량이 도착할 때까지 완화 수준은 더 완화됩니다. 즉, 경로가 진행됨에 따라 완화 수준은 감소하지 않습니다.
relaxations
의 임곗값 조건을 충족하지 않는 경로 방문의 시점과 순서는 완전히 제약되며 이러한 시퀀스에 방문을 삽입할 수 없습니다. 또한 차량 시작 또는 종료가 완화 조건을 충족하지 않는 경우 차량이 비어 있지 않는 한 시간이 고정됩니다.
필드 | |
---|---|
level |
|
threshold_time |
완화 |
threshold_visit_count |
완화
|
수준
방문에 적용되는 다양한 제약조건 완화 수준 및 기준점 조건을 충족할 때 따르는 완화 수준을 표현합니다.
아래 열거는 완화 정도가 증가하는 순으로 나열되어 있습니다.
열거형 | |
---|---|
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_format |
필수 항목입니다. 입력 데이터 형식입니다. |
통합 필드 source . 필수 항목입니다. source 은 다음 중 하나여야 합니다. |
|
gcs_source |
Google Cloud Storage 위치입니다. 단일 객체 (파일)여야 합니다. |
위치
위치(지리적 지점 및 선택사항인 방향)를 캡슐화합니다.
필드 | |
---|---|
lat_lng |
웨이포인트의 지리적 좌표입니다. |
heading |
교통 흐름의 방향과 연관된 나침반 방위입니다. 이 값은 승하차에 사용할 도로의 측면을 지정하는 데 사용됩니다. 방향 값은 0~360이며, 여기서 0은 북쪽 방향을, 90은 동쪽 방향을 지정합니다. |
OptimizeToursRequest
해결할 배송 모델과 최적화 매개변수를 정의하는 투어 최적화 문제 해결사에게 요청하는 요청입니다.
필드 | |
---|---|
parent |
필수 항목입니다. 전화를 걸 대상 프로젝트 또는 위치입니다. 형식: * 위치를 지정하지 않으면 지역이 자동으로 선택됩니다. |
timeout |
이 제한 시간이 설정되어 있으면 제한 시간이 경과하거나 동기식 요청에 대한 서버 기한에 도달하기 전(둘 중 더 빠른 시간)에 도달할 때까지 서버에서 응답을 반환합니다. 비동기식 요청의 경우 제한 시간이 초과되기 전에 서버가 솔루션을 생성합니다 (가능한 경우). |
model |
해결해야 할 배송 모델입니다. |
solving_mode |
기본적으로 해결 모드는 |
search_mode |
요청을 해결하는 데 사용되는 검색 모드입니다. |
injected_first_solution_routes[] |
최적화 알고리즘이 이전 솔루션과 유사한 첫 번째 솔루션을 찾도록 안내합니다. 첫 번째 솔루션이 빌드될 때 모델이 제한됩니다. 첫 번째 솔루션에서는 특정 경로에서 이뤄지지 않은 모든 배송을 암시적으로 건너뛰지만, 후속 솔루션에서는 배송을 진행할 수 있습니다. 솔루션은 다음과 같은 몇 가지 기본 유효성 가정을 충족해야 합니다.
삽입된 솔루션을 실행할 수 없는 경우 유효성 검사 오류가 반드시 반환되지는 않으며 대신 실행 불가능을 나타내는 오류가 반환될 수 있습니다. |
injected_solution_constraint |
이전 솔루션과 유사한 최종 솔루션을 찾기 위해 최적화 알고리즘을 제한합니다. 예를 들어, 이미 완료되었거나 완료될 예정이지만 수정해서는 안 되는 경로의 일부를 고정하는 데 사용할 수 있습니다. 삽입된 솔루션을 실행할 수 없는 경우 유효성 검사 오류가 반드시 반환되지는 않으며 대신 실행 불가능을 나타내는 오류가 반환될 수 있습니다. |
refresh_details_routes[] |
비어 있지 않은 경우 기본 방문 순서 또는 이동 시간을 수정하지 않고 지정된 경로가 새로고침되며 다른 세부정보만 업데이트됩니다. 이 방법으로는 모델이 해결되지 않습니다. 2020년 11월 현재, 비어 있지 않은 경로의 다중선만 채우며 전달된 경로의 이 필드는
|
interpret_injected_solutions_using_labels |
true인 경우:
이러한 해석은 true인 경우 다음 카테고리의 라벨은 해당 카테고리에서 최대 한 번 표시되어야 합니다.
삽입된 솔루션의 주입된 솔루션에서 경로 방문 또는 전체 경로를 제거하면 암시적 제약 조건에 영향을 미쳐 솔루션 변경, 검증 오류 또는 실행 불가로 이어질 수 있습니다. 참고: 호출자는 각 |
consider_road_traffic |
|
populate_polylines |
true이면 응답 |
populate_transition_polylines |
true인 경우 응답 |
allow_large_deadline_despite_interruption_risk |
이 속성이 설정된 경우 요청의 기한 (https://grpc.io/blog/deadlines 참고)은 최대 60분까지 가능합니다. 그렇지 않으면 최대 기한은 30분입니다. 오래 지속되는 요청은 중단 위험이 훨씬 큽니다 (그러나 작음). |
use_geodesic_distances |
true인 경우 이동 거리는 Google 지도 거리 대신 최단 거리 거리를 사용하여 계산되고, 이동 시간은 |
label |
이 요청을 식별하는 데 사용할 수 있는 라벨로, |
geodesic_meters_per_second |
|
max_validation_errors |
반환되는 유효성 검사 오류의 개수를 자릅니다. 이러한 오류는 일반적으로 Solve_mode=VALIDATE_ONLY가 아닌 한, BadRequest 오류 세부정보 (https://cloud.google.com/apis/design/errors#error_details)로 INVALID_ARGUMENT 오류 페이로드에 첨부됩니다. 단, Solve_mode=VALIDATE_ONLY: |
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_label |
요청에 라벨이 지정된 경우 |
skipped_shipments[] |
건너뛴 모든 배송의 목록입니다. |
validation_errors[] |
독립적으로 감지할 수 있는 모든 유효성 검사 오류의 목록입니다. '여러 오류'를 확인하세요. |
metrics |
이 솔루션의 지속 시간, 거리, 사용량 측정항목입니다. |
측정항목
모든 경로에서 집계된 전체 측정항목입니다.
필드 | |
---|---|
aggregated_route_metrics |
경로별로 집계됩니다. 각 측정항목은 동일한 이름의 모든 |
skipped_mandatory_shipment_count |
건너뛴 필수 배송 수입니다. |
used_vehicle_count |
사용된 차량 수입니다. 참고: 차량 경로가 비어 있고 |
earliest_vehicle_start_time |
중고차의 가장 빠른 시작 시간으로, 모든 중고차 |
latest_vehicle_end_time |
중고차의 가장 늦은 종료 시간으로, 전체 중고차에 대한 |
costs |
솔루션 비용으로, 비용 관련 요청 필드별로 분류됩니다. 키는 입력OptimizeToursRequest를 기준으로 한 proto 경로입니다. 예: 'model.shipments.pickups.cost'이고 값은 해당 비용 필드에서 생성되어 전체 솔루션에 대해 집계된 총 비용입니다. 즉, Cost["model.shipments.pickups.cost"]는 솔루션에 대한 모든 수령 비용의 합계입니다. 모델에 정의된 모든 비용은 여기에서 자세히 보고됩니다. 단, 2022년 1월 기준으로 집계 방식으로만 보고되는 TransitionAttributes 관련 비용은 예외입니다. |
total_cost |
솔루션의 총비용입니다. 비용 맵의 모든 값의 합계입니다. |
OptimizeToursValidationError
OptimizeToursRequest
을 검증할 때 발생한 오류 또는 경고를 설명합니다.
필드 | |
---|---|
code |
유효성 검사 오류는 항상 존재하는 쌍 ( 아래의 기타 필드에서는 오류에 관한 자세한 정보를 제공합니다. 여러 오류: 오류가 여러 개인 경우 유효성 검사 프로세스에서 몇 가지 오류를 출력하려고 시도합니다. 컴파일러와 마찬가지로 이는 불완전한 프로세스입니다. '치명적인' 유효성 검사 오류는 전체 유효성 검사 프로세스를 중단한다는 의미입니다. 특히 안정성: REFERENCE: 모든 (코드, 이름) 쌍의 목록입니다.
|
display_name |
오류 표시 이름입니다. |
fields[] |
오류 컨텍스트에는 0, 1 (대부분의 경우) 또는 그 이상의 필드가 포함될 수 있습니다. 예를 들어 차량 4번과 배송 2번의 첫 번째 수령을 참조하는 방법은 다음과 같습니다.
그러나 특정 오류 코드에서 |
error_message |
사람이 읽을 수 있는 오류를 설명하는 문자열입니다. 안정성: 안정적이지 않음. 주어진 |
offending_values |
필드의 값을 포함할 수 있습니다. 항상 사용 가능한 것은 아닙니다. 이 방법에 의존해서는 안 되며 수동 모델 디버깅에만 사용해야 합니다. |
FieldReference
유효성 검사 오류의 컨텍스트를 지정합니다. FieldReference
는 항상 이 파일의 지정된 필드를 참조하며 동일한 계층 구조를 따릅니다. 예를 들어 다음을 사용하여 차량 5의 start_time_windows
요소 2를 지정할 수 있습니다.
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
그러나 메시지가 복잡해지지 않도록 OptimizeToursRequest
또는 ShipmentModel
와 같은 최상위 항목은 생략합니다.
필드 | |
---|---|
name |
필드 이름입니다. 예: 'vehicles'. |
sub_field |
필요한 경우 재귀적으로 중첩된 하위 필드입니다. |
통합 필드
|
|
index |
반복되는 경우 필드의 색인입니다. |
key |
필드가 맵인 경우 키입니다. |
OutputConfig
[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] 결과의 대상을 지정합니다.
필드 | |
---|---|
data_format |
필수 항목입니다. 출력 데이터 형식입니다. |
통합 필드 destination . 필수 항목입니다. destination 은 다음 중 하나여야 합니다. |
|
gcs_destination |
출력을 쓸 Google Cloud Storage 위치입니다. |
RouteModifiers
차량 경로를 계산할 때 충족할 선택적 조건 집합을 캡슐화합니다. Google Maps Platform Routes Preferred API의 RouteModifiers
과 유사합니다. 참조: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers
필드 | |
---|---|
avoid_tolls |
합당한 경우 유료 도로를 피할지 지정합니다. 유료 도로가 포함되지 않은 경로가 우선 적용됩니다. 전동 이동 모드에만 적용됩니다. |
avoid_highways |
합당한 경우 고속도로를 제외할지 여부를 지정합니다. 고속도로를 포함하지 않는 경로가 우선 지정됩니다. 모터가 달린 이동 수단에만 적용됩니다. |
avoid_ferries |
합당한 경우 페리를 제외할지 지정합니다. 페리 이동이 포함되지 않은 경로가 우선됩니다. 모터가 달린 이동 수단에만 적용됩니다. |
avoid_indoor |
선택사항입니다. 합당한 경우 실내 탐색을 하지 않을지 지정합니다. 실내 탐색이 포함되지 않은 경로가 우선 적용됩니다. |
배송
단일 상품의 배송(픽업에서 배송 중 하나까지)입니다. 배송이 이행된 것으로 간주되려면 고유 차량이 수령 위치 중 한 곳을 방문하여 여유 용량을 줄인 다음, 나중에 배송 위치 중 한 곳을 방문해야 합니다(따라서 여유 용량도 적절하게 다시 늘려야 함).
필드 | |
---|---|
display_name |
사용자가 정의한 배송 상품의 표시 이름입니다. 최대 63자(영문 기준)까지 사용할 수 있으며 UTF-8 문자를 사용할 수 있습니다. |
pickups[] |
배송과 관련된 수령 옵션 집합입니다. 지정하지 않으면 차량이 배송에 해당하는 위치만 방문하면 됩니다. |
deliveries[] |
배송과 관련된 배송 대안 모음입니다. 지정하지 않으면 차량이 승차 위치에 해당하는 위치만 방문하면 됩니다. |
load_demands |
적재 요건 (예: 중량, 부피, 팰릿 개수 등) 맵의 키는 해당 로드의 유형을 설명하는 식별자여야 하며 단위도 포함하는 것이 이상적입니다. 예: 'weight_kg', 'volume_gallons', 'pallet_count' 등입니다. 지정된 키가 맵에 표시되지 않으면 해당 로드는 null로 간주됩니다. |
allowed_vehicle_indices[] |
이 배송을 수행할 수 있는 운송 수단의 집합입니다. 비어 있으면 모든 차량이 작업을 수행할 수 있습니다. 차량은 |
costs_per_vehicle[] |
각 차량에서 상품을 배송할 때 발생하는 비용을 지정합니다. 지정할 경우 다음 중 하나를 포함해야 합니다.
이 비용은 |
costs_per_vehicle_indices[] |
|
pickup_to_delivery_absolute_detour_limit |
승차에서 배송까지의 최단 경로와 비교하여 최대 절대 우회 시간을 지정합니다. 지정된 경우 음수가 아니어야 하며 배송에 최소한 수령과 배달이 포함되어야 합니다. 예를 들어 선택한 대체 옵션에서 선택한 대체 배송 서비스로 바로 이동하는 데 걸리는 최단 시간을 t로 설정합니다. 그런 다음
동일한 배송에 상대 및 절대 한도가 모두 지정된 경우, 가능한 각 수령/배송 쌍에 더 엄격한 한도가 적용됩니다. 2017/10부터 우회 시간은 차량과 무관한 경우에만 지원됩니다. |
pickup_to_delivery_time_limit |
상품 수령 시작부터 배송 시작까지의 최대 기간을 지정합니다. 지정된 경우 음수가 아니어야 하며 배송에 최소한 수령과 배달이 포함되어야 합니다. 이는 수령 및 배달에 선택된 대체 옵션이나 차량 속도에 따라 달라지지 않습니다. 이는 최대 우회 제약 조건과 함께 지정할 수 있으며 솔루션은 두 사양을 모두 준수합니다. |
shipment_type |
'type'을 지정하는 비어 있지 않은 문자열입니다. 이 배송에 적용됩니다. 이 기능은 단일 방문에 지정된 |
label |
이 배송의 라벨을 지정합니다. 이 라벨은 상응하는 |
ignore |
true인 경우 이 배송을 건너뛰지만 배송을 무시하면 모델에
|
penalty_cost |
배송이 완료되지 않으면 이 페널티가 경로의 전체 비용에 추가됩니다. 수령 및 배송 대안 중 하나를 방문하면 배송이 완료된 것으로 간주됩니다. 비용은 모델의 다른 모든 비용 관련 필드에 사용된 것과 동일한 단위로 표시할 수 있으며 양수여야 합니다. 중요: 이 패널티가 지정되지 않으면 무한으로 간주되므로 배송이 완료되어야 합니다. |
pickup_to_delivery_relative_detour_limit |
수령부터 배송까지의 최단 경로에 비해 최대 상대 우회 시간을 지정합니다. 지정된 경우 음수가 아니어야 하며 배송에 최소한 수령과 배달이 포함되어야 합니다. 예를 들어 t는 선택한 수령 대안에서 선택한 배송 대안으로 바로 이동하는 데 걸리는 가장 짧은 시간입니다. 그런 다음
동일한 배송에 상대 및 절대 한도가 모두 지정된 경우, 가능한 각 수령/배송 쌍에 더 엄격한 한도가 적용됩니다. 2017년 10월부터 우회 경로는 이동 시간이 차량에 종속되지 않는 경우에만 지원됩니다. |
로드
방문 시 사전 정의된 금액이 픽업인 경우 차량 로드에 추가되고 배달인 경우 차감될 수 있습니다. 이 메시지는 이러한 금액을 정의합니다. load_demands
를 참조하세요.
필드 | |
---|---|
amount |
해당 방문을 수행하는 차량의 적재량은 달라집니다. 이는 정수이므로 정밀도가 손실되지 않도록 적절한 단위를 선택하는 것이 좋습니다. 0 이상이어야 합니다. |
VisitRequest
차량으로 수행할 수 있는 방문 요청: 지리적 위치(2개, 아래 참고), 시간대별로 표시되는 영업시간 및 서비스 기간(차량이 도착하여 상품을 수령하거나 배송하는 데 소요되는 시간)이 있습니다.
필드 | |
---|---|
arrival_location |
이 |
arrival_waypoint |
이 |
departure_location |
이 |
departure_waypoint |
이 |
tags[] |
방문 요청에 첨부된 태그를 지정합니다. 비어 있거나 중복된 문자열은 허용되지 않습니다. |
time_windows[] |
방문 도착 시간을 제한하는 시간 범위입니다. 차량이 도착 시간 범위 외부에서 출발할 수 있습니다. 즉, 도착 시간 + 소요 시간이 시간 범위 내에 있지 않아도 됩니다. 차량이
기간은 서로 분리되어야 합니다. 즉, 기간은 다른 기간과 겹치거나 인접해서는 안 되며 오름차순이어야 합니다.
|
duration |
방문 시간, 즉 차량이 도착과 출발 사이에 보낸 시간입니다(가능한 대기 시간에 추가됨, |
cost |
차량 경로에서 이 방문 요청을 처리하는 데 드는 비용입니다. 이를 통해 배송의 대체 수령 또는 배송마다 다른 비용을 지불할 수 있습니다. 이 비용은 |
load_demands |
이 방문 요청의 로드 수요입니다. 이는 전체 |
visit_types[] |
방문 유형을 지정합니다. 차량이 이 방문을 완료하는 데 필요한 추가 시간을 할당하는 데 사용할 수 있습니다( 유형은 한 번만 표시될 수 있습니다. |
label |
이 |
ShipmentModel
배송 모델에는 차량 한 번에 수행해야 하는 배송 세트가 포함되며, 다음 항목의 합계인 전체 비용을 최소화합니다.
- 차량 라우팅 비용 (총 시간당 비용, 이동 시간당 비용, 모든 차량에 대한 고정 비용의 합계)입니다.
- 불이익을 받을 수 있습니다.
- 전 세계 배송 기간의 비용
필드 | |
---|---|
shipments[] |
모델에서 수행해야 하는 배송 세트입니다. |
vehicles[] |
방문을 수행하는 데 사용할 수 있는 이동 수단 모음입니다. |
global_start_time |
모델의 전 세계 시작 및 종료 시간: 이 범위를 벗어나는 시간은 유효하지 않습니다. 모델의 기간은 1년 미만이어야 합니다. 즉,
|
global_end_time |
설정하지 않으면 1971년 1월 1일 00:00:00 UTC (초: 31536000, nanos: 0)가 기본값으로 사용됩니다. |
global_duration_cost_per_hour |
'전역 기간' 전체 계획에서 가장 이른 시작 시간과 모든 차량의 가장 늦은 유효 종료 시간 간의 차이입니다. 예를 들어 사용자는 해당 수량에 시간당 비용을 할당하여 최대한 빨리 작업을 완료하도록 최적화할 수 있습니다. 이 비용은 |
duration_distance_matrices[] |
모델에 사용되는 기간 및 거리 행렬을 지정합니다. 이 필드가 비어 있으면 사용 예:
|
duration_distance_matrix_src_tags[] |
시간 및 거리 행렬의 소스를 정의하는 태그 태그는 |
duration_distance_matrix_dst_tags[] |
소요 시간 및 거리 행렬의 목적지를 정의하는 태그 태그는 |
transition_attributes[] |
모델에 추가된 전환 속성 |
shipment_type_incompatibilities[] |
호환되지 않는 shipment_types 집합( |
shipment_type_requirements[] |
|
precedence_rules[] |
모델에서 시행해야 하는 우선순위 규칙의 집합입니다. |
max_active_vehicles |
최대 활성 차량 수를 제한합니다. 경로에서 하나 이상의 배송이 수행되면 차량이 활성 상태입니다. 이는 운전자가 차량보다 적고 차량 그룹이 이기종인 경우 경로 수를 제한하는 데 사용할 수 있습니다. 그러면 최적화 기능이 사용할 최적의 차량 하위 집합을 선택합니다. 엄격히 양수여야 합니다. |
DurationDistanceMatrix
방문 및 차량 출발 위치에서 방문 및 차량 종료 위치까지의 소요 시간 및 거리 매트릭스를 지정합니다.
필드 | |
---|---|
rows[] |
소요 시간 및 거리 행렬의 행을 지정합니다. 요소가 |
vehicle_start_tag |
이 시간 및 거리 행렬이 적용되는 차량을 정의하는 태그입니다. 비어 있으면 모든 차량에 적용되며 단일 매트릭스만 있을 수 있습니다. 각 차량 시작은 정확히 하나의 행렬과 일치해야 합니다. 즉, 모든 행렬의 |
행
소요 시간 및 거리 행렬의 행을 지정합니다.
필드 | |
---|---|
durations[] |
지정된 행의 기간 값입니다. 요소가 |
meters[] |
지정된 행의 거리 값입니다. 모델의 거리를 참조하는 비용이나 제약 조건이 없는 경우 비워 둘 수 있습니다. 그렇지 않으면 요소가 |
PrecedenceRule
두 이벤트 (각 이벤트가 배송의 수령 또는 배송) 사이의 우선순위 규칙: '두 번째' 이벤트는 '첫 번째' 이후에 offset_duration
이상 시작해야 합니다. 시작됩니다
여러 우선순위는 동일한(또는 관련된) 이벤트를 나타낼 수 있습니다(예: 'B 수령이 A 배송 후 발생' 및 'C 수령이 B 수령 후 발생'
또한 우선 순위는 두 배송이 모두 이루어질 때만 적용되며 그 외의 경우에는 무시됩니다.
필드 | |
---|---|
first_is_delivery |
'첫 번째' 이벤트입니다. |
second_is_delivery |
'두 번째' 이벤트입니다. |
offset_duration |
'first' 사이의 오프셋 'second'는 이벤트를 처리합니다. 음수일 수 있습니다. |
first_index |
'first'의 배송 색인 이벤트를 처리합니다. 이 필드는 지정해야 합니다. |
second_index |
'두 번째' 이벤트의 배송 색인입니다. 이 필드를 지정해야 합니다. |
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를 배치하는 방법은 다음과 같습니다.
- 겹치지 않습니다.
- 지연은 고유하며 다음 방문 (또는 차량 종료) 직전에 연속된 시간이어야 합니다. 따라서 지연 기간을 알고 있으면 시작 시간과 종료 시간을 알 수 있습니다.
- 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_index |
경로를 수행하는 차량으로, 소스 |
vehicle_label |
이 경로를 이용하는 차량의 라벨로, 지정된 경우 |
vehicle_start_time |
차량이 경로를 시작하는 시간입니다. |
vehicle_end_time |
차량이 경로를 완료하는 시간입니다. |
visits[] |
경로를 나타내는 방문 순서입니다. visit[i] 은 경로의 i번째 방문입니다. 이 필드가 비어 있으면 차량이 사용되지 않는 것으로 간주됩니다. |
transitions[] |
경로의 순서가 지정된 전환 목록입니다. |
has_traffic_infeasibilities |
교통정보로 인해 예상 이동 시간( |
route_polyline |
경로의 인코딩된 폴리라인 표현입니다. 이 필드는 |
breaks[] |
이 경로를 이용하는 차량의 휴식 시간이 예정되어 있습니다. |
metrics |
이 경로의 소요 시간, 거리, 부하 측정항목입니다. |
route_costs |
경로의 비용으로, 비용 관련 요청 필드별로 분류됩니다. 키는 입력 OptimizeToursRequest를 기준으로 한 프로토 경로(예: 'model.shipments.pickups.cost')이고 값은 전체 경로에 대해 집계된 해당 비용 필드에서 생성된 총 비용입니다. 즉, costs["model.shipments.pickups.cost"]는 경로의 모든 수령 비용의 합계입니다. 모델에 정의된 모든 비용은 여기에서 자세히 보고됩니다. 단, 2022년 1월 기준으로 집계 방식으로만 보고되는 TransitionAttributes 관련 비용은 예외입니다. |
route_total_cost |
경로의 총비용입니다. 비용 지도의 모든 비용의 합계입니다. |
휴식 시간
광고 시점 실행을 나타내는 데이터입니다.
필드 | |
---|---|
start_time |
휴식 시작 시간입니다. |
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_duration |
전환 기간의 이동 시간입니다. |
travel_distance_meters |
전환 중 이동한 거리입니다. |
traffic_info_unavailable |
|
delay_duration |
이 전환에 적용된 지연 시간의 합계입니다. 지연 시간이 있는 경우 다음 이벤트 (방문 또는 차량 종료) 정확히 |
break_duration |
이 전환 중에 발생한 중단 시간의 합계입니다(있는 경우). 각 광고 시점의 시작 시간 및 시간에 관한 세부정보는 |
wait_duration |
이 전환 중에 대기한 시간입니다. 대기 시간은 유휴 시간에 해당하며 휴식 시간은 포함되지 않습니다. 또한 이 대기 시간은 인접하지 않은 여러 간격으로 분할될 수 있습니다. |
total_duration |
편의상 제공되는 총 전환 기간입니다. 다음과 같습니다.
|
start_time |
전환의 시작 시간입니다. |
route_polyline |
전환 중에 이어지는 경로의 인코딩된 폴리라인 표현입니다. 이 필드는 |
vehicle_loads |
전환 과정에서 이 차량의 첫 번째 전환 중의 로드는 차량 경로의 시작 로드입니다. 그런 다음 방문이 수령인지 배송인지에 따라 방문 |
VehicleLoad
지정된 유형에 관해 경로상의 특정 지점에서 차량의 실제 부하를 보고합니다 (Transition.vehicle_loads
참고).
필드 | |
---|---|
amount |
특정 유형의 차량에 짐의 양입니다. 일반적으로 로드 단위는 유형으로 표시됩니다. |
방문
경로 중에 이루어지는 방문입니다. 이 방문은 Shipment
의 수령 또는 배송에 해당합니다.
필드 | |
---|---|
shipment_index |
소스 |
is_pickup |
true인 경우 방문은 |
visit_request_index |
|
start_time |
방문이 시작된 시간입니다. 차량이 이보다 일찍 방문 위치에 도착할 수 있습니다. 시간은 |
load_demands |
배송 및 방문 요청의 합계( |
detour |
방문 전 경로에 있는 배송 화물과 특정 기간으로 인한 대기 시간으로 인해 추가 우회 시간이 발생합니다. 방문이 배송인 경우 우회 경로는 해당하는 수령 방문에서 계산되며 다음과 같습니다.
그 외의 경우에는 차량
|
shipment_label |
|
visit_label |
|
ShipmentTypeIncompatibility
shipment_type에 따라 배송 상품 간의 비호환성을 지정합니다. 동일한 경로에서 호환되지 않는 배송이 표시되는 것은 비호환성 모드로 인해 제한됩니다.
필드 | |
---|---|
types[] |
호환되지 않는 유형 목록 나열된 배송 중 |
incompatibility_mode |
비호환성에 적용된 모드입니다. |
IncompatibilityMode
동일한 경로에서 호환되지 않는 배송의 모양이 제한되는 방식을 정의하는 모드
열거형 | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
지정되지 않은 비호환성 모드입니다. 절대로 이 값을 사용하지 마세요. |
NOT_PERFORMED_BY_SAME_VEHICLE |
이 모드에서는 호환되지 않는 유형의 배송 두 개가 동일한 차량을 공유할 수 없습니다. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
|
ShipmentTypeRequirement
shipment_type에 따라 배송 간의 요구사항을 지정합니다. 요구사항의 세부사항은 요구사항 모드로 정의됩니다.
필드 | |
---|---|
required_shipment_type_alternatives[] |
|
dependent_shipment_types[] |
참고: |
requirement_mode |
요구사항에 적용되는 모드입니다. |
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대 이상의 '사과'입니다. 용량 초과 (차량 1 포함), 차량 1대 이상의 '배' 초과 (차량 3 포함)되어 1대 이상의 차량 (차량 1 포함)의 거리 제한이 초과될 수 있습니다.
필드 | |
---|---|
code |
코드의 주석을 참고하세요. |
example_exceeded_capacity_type |
이유 코드가 |
example_vehicle_index |
배송 차량 비호환성과 관련된 이유인 경우 이 필드에 관련 차량 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_time |
엄격한 시간 간격의 시작 시간입니다. 지정하지 않으면 |
end_time |
하드 타임 기간 종료 시간입니다. 지정하지 않으면 |
soft_start_time |
기간의 소프트 시작 시간입니다. |
soft_end_time |
기간의 소프트 종료 시간입니다. |
cost_per_hour_before_soft_start_time |
이벤트가 soft_start_time 전에 발생하는 경우 모델의 다른 비용에 추가되는 시간당 비용으로, 다음과 같이 계산됩니다.
이 비용은 양수여야 하며, 필드는 soft_start_time이 설정된 경우에만 설정할 수 있습니다. |
cost_per_hour_after_soft_end_time |
이벤트가
이 비용은 양수여야 하며, |
TransitionAttributes
경로에서 연속하는 두 방문 간의 전환 속성을 지정합니다. 동일한 전환에 여러 TransitionAttributes
가 적용될 수 있습니다. 이 경우 모든 추가 비용이 합산되고 가장 엄격한 제약 조건 또는 한도가 적용됩니다 (자연스러운 'AND' 시맨틱스를 따름).
필드 | |
---|---|
src_tag |
이러한 속성이 적용되는 (src->dst) 전환 집합을 정의하는 태그입니다. 소스 방문 또는 차량 시작은 |
excluded_src_tag |
|
dst_tag |
도착지 방문 또는 차량 끝은 |
excluded_dst_tag |
|
cost |
이 전환을 수행하기 위한 비용을 지정합니다. 이 비용은 모델의 다른 모든 비용과 같은 단위이며 음수가 아니어야 합니다. 이 서비스는 다른 모든 기존 비용 위에 적용됩니다. |
cost_per_kilometer |
이 전환 중에 이동한 거리에 적용되는 킬로미터당 비용을 지정합니다. 차량에 지정된 |
distance_limit |
이 전환을 수행하는 동안 이동된 거리에 대한 제한을 지정합니다. 2021년 6월부터는 최대 한도만 지원됩니다. |
delay |
이 전환을 실행할 때 발생하는 지연을 지정합니다. 이러한 지연은 항상 소스 방문을 마친 후 및 도착 페이지 방문을 시작하기 전에 발생합니다. |
차량
배송 문제에서 차량을 모델링합니다. 배송 문제를 해결하면 이 차량의 경로가 start_location
에서 시작하여 end_location
에서 종료됩니다. 경로는 일련의 방문입니다 (ShipmentRoute
참고).
필드 | |
---|---|
display_name |
차량의 사용자 정의 표시 이름입니다. 최대 63자(영문 기준)까지 허용되며 UTF-8 문자를 사용할 수 있습니다. |
travel_mode |
차량에서 사용할 수 있는 도로와 속도에 영향을 미치는 이동 모드입니다. |
route_modifiers |
지정된 차량의 경로가 계산되는 방식에 영향을 미치는 충족 조건 집합입니다. |
start_location |
배송 상품을 수령하기 전에 차량이 출발하는 지리적 위치입니다. 지정하지 않으면 차량이 첫 번째 승차에서 시작합니다. 배송 모델에 소요 시간 및 거리 행렬이 있으면 |
start_waypoint |
배송 상품을 수령하기 전에 차량이 출발하는 지리적 위치를 나타내는 경유지입니다. |
end_location |
차량이 마지막 |
end_waypoint |
차량이 마지막 |
start_tags[] |
차량 경로의 시작 부분에 첨부된 태그를 지정합니다. 비어 있거나 중복된 문자열은 허용되지 않습니다. |
end_tags[] |
차량 경로의 끝에 연결된 태그를 지정합니다. 비어 있거나 중복된 문자열은 허용되지 않습니다. |
start_time_windows[] |
차량이 출발 위치를 떠날 수 있는 기간입니다. 글로벌 시간 제한 내에 있어야 합니다 ( 동일한 반복 필드에 속하는 기간은 분리되어야 합니다. 즉, 기간이 다른 기간과 겹치거나 인접할 수 없으며 시간 순서여야 합니다.
|
end_time_windows[] |
차량이 도착할 수 있는 시간입니다. 글로벌 시간 제한 내에 있어야 합니다 ( 동일한 반복 필드에 속하는 기간은 분리되어야 합니다. 즉, 기간이 다른 기간과 겹치거나 인접할 수 없으며 시간 순서여야 합니다.
|
unloading_policy |
차량에 적용되는 언로드 정책입니다. |
load_limits |
차량의 용량 (예: 중량, 부피, 팰릿 수) 맵의 키는 |
cost_per_hour |
차량 비용: 모든 비용은 합산되며 차량 경로의 시간당 비용입니다. 이 비용은 경로에 걸린 총 시간에 적용되며 이동 시간, 대기 시간, 방문 시간 등이 포함됩니다. |
cost_per_traveled_hour |
차량 경로의 이동 시간당 비용입니다. 이 비용은 특정 노선에서 이용하는 이동 시간 (예: |
cost_per_kilometer |
차량 경로의 킬로미터당 비용입니다. 이 비용은 |
fixed_cost |
이 차량을 배송 처리에 사용하는 경우 고정 비용이 적용됩니다. |
used_if_route_is_empty |
이 필드는 경로에 배송이 없는 차량에만 적용됩니다. 이 경우 차량을 중고품으로 간주해야 하는지 여부를 나타냅니다. true인 경우 배송을 제공하지 않더라도 차량이 출발 지점에서 도착 위치로 이동하며 출발 시점부터 소요 시간 및 거리 비용이 발생합니다. --> 최종 이동이 고려됩니다 그렇지 않으면 출발 지점에서 도착 위치까지 이동하지 않으며 이 차량에 예정된 |
route_duration_limit |
차량 경로의 총 시간에 적용되는 제한입니다. 주어진 |
travel_duration_limit |
차량 경로의 이동 시간에 적용되는 한도입니다. 주어진 |
route_distance_limit |
차량 경로의 총 거리에 적용됩니다. 주어진 |
extra_visit_duration_for_visit_type |
visit_types 문자열에서 기간으로의 매핑을 지정합니다. 기간은 지정된 방문 요청에 여러 유형이 있는 경우 지도의 각 유형에 시간이 추가됩니다. |
break_rule |
이 차량에 적용할 휴식 일정을 설명합니다. 비어 있으면 차량에 휴식이 예약되지 않습니다. |
label |
이 차량의 라벨을 지정합니다. 이 라벨은 응답에서 상응하는 |
ignore |
true인 경우
|
travel_duration_multiple |
차량의 이동 시간을 늘리거나 줄이는 데 사용할 수 있는 곱셈 계수를 지정합니다. 예를 들어 이 값을 2.0으로 설정하면 이 차량이 느려지고 이동 시간이 표준 차량의 두 배가 된다는 의미입니다. 이 배율은 방문 시간에 영향을 주지 않습니다. 경고: 이동 시간은 이 배수가 적용된 후 가장 가까운 초 단위로 반올림됩니다. 따라서 수치 연산을 실행하기 전에 배수가 작을 경우 정밀도가 떨어질 수 있습니다. 아래의 |
DurationLimit
차량 경로의 최대 시간을 정의하는 한도입니다. 단단하거나 부드러울 수 있습니다.
소프트 한도 필드가 정의되면 소프트 맥스 임곗값과 관련 비용을 모두 함께 정의해야 합니다.
필드 | |
---|---|
max_duration |
기간을 max_duration으로 제한하는 엄격한 제한입니다. |
soft_max_duration |
최대 기간 제한을 시행하지 않는 소프트 한도로, 이를 위반할 경우 경로에 비용이 발생합니다. 이 비용은 동일한 단위로 모델에 정의된 다른 비용에 합산됩니다. 정의된 경우 |
quadratic_soft_max_duration |
최대 기간 제한을 시행하지 않는 소프트 한도로, 이를 위반할 경우 경로에 2차 비용이 발생합니다. 이 비용은 모델에서 동일한 단위로 정의된 다른 비용에 추가됩니다. 정의된 경우
|
cost_per_hour_after_soft_max |
비용은 음수가 아니어야 합니다. |
cost_per_square_hour_after_quadratic_soft_max |
기간이 임곗값 미만이면 추가 비용은 0이고, 그렇지 않은 경우에는 다음과 같이 기간에 따라 비용이 달라집니다.
비용은 음수가 아니어야 합니다. |
LoadLimit
차량에 적용되는 부하 제한을 정의합니다. 예: "이 트럭은 최대 3,500kg까지만 운반할 수 있습니다." load_limits
를 참조하세요.
필드 | |
---|---|
soft_max_load |
소프트 부하 한도입니다. |
cost_per_unit_above_soft_max |
이 차량의 경로를 따라 짐이 |
start_load_interval |
경로 시작 지점에서 차량에 허용되는 적재 간격입니다. |
end_load_interval |
경로 끝 지점에서 차량에 허용되는 적재 간격입니다. |
max_load |
허용되는 최대 부하 양입니다. |
간격
허용되는 부하량 간격입니다.
필드 | |
---|---|
min |
|
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 |
운전경로에 해당하는 이동수단 (car, ...)입니다. |
WALKING |
도보 경로에 해당하는 이동 모드입니다. |
UnloadingPolicy
차량을 하역하는 방법에 관한 정책입니다. 수령과 배달이 모두 가능한 배송에만 적용됩니다.
기타 배송은 unloading_policy
에 관계없이 경로상의 어느 곳에서나 자유롭게 배송됩니다.
열거형 | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
로드 취소 정책이 지정되지 않았습니다. 배송은 해당 픽업 후에 이루어져야 합니다. |
LAST_IN_FIRST_OUT |
수령 순서와 반대로 배송해야 합니다. |
FIRST_IN_FIRST_OUT |
배송은 수령과 동일한 순서로 이루어져야 합니다. |
경유지
경유지를 캡슐화합니다. 웨이포인트는 VisitRequests의 도착 및 출발 위치와 차량의 시작 및 종료 위치를 표시합니다.
필드 | |
---|---|
side_of_road |
선택사항입니다. 이 경유지의 위치가 차량이 도로의 특정 측면에 정차하는 것을 선호한다는 것을 나타냅니다. 이 값을 설정하면 경로가 해당 위치를 통과하여 차량이 위치가 도로의 중심에서 편중된 도로 쪽에 정차할 수 있습니다. 'WALKING'에서는 이 옵션이 작동하지 않습니다. 이동 수단입니다. |
통합 필드 location_type . 위치를 나타내는 다양한 방법 location_type 은 다음 중 하나여야 합니다. |
|
location |
선택사항인 방위를 포함하여 지리 좌표를 사용하여 지정된 지점입니다. |
place_id |
경유지와 연결된 관심 장소 장소 ID입니다. |