색인
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.Objective(메시지)ShipmentModel.Objective.Type(열거형)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.LoadLimit.LoadCost(메시지)Vehicle.TravelMode(열거형)Vehicle.UnloadingPolicy(열거형)VehicleFullness(메시지)Waypoint(메시지)
RouteOptimization
차량 이동 경로를 최적화하는 서비스입니다.
특정 유형의 필드의 유효성:
google.protobuf.Timestamp- 시간은 1970-01-01T00:00:00+00:00 이후의 초 단위인 Unix 시간입니다.
- 초는 [0, 253402300799], 즉 [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]에 있어야 합니다.
- 나노는 설정되지 않거나 0으로 설정되어야 합니다.
google.protobuf.Duration- 초는 [0, 253402300799], 즉 [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]에 있어야 합니다.
- 나노는 설정되지 않거나 0으로 설정되어야 합니다.
google.type.LatLng- 위도는 [-90.0, 90.0] 범위에 있어야 합니다.
- 경도는 [-180.0, 180.0] 범위에 있어야 합니다.
- 위도와 경도 중 하나 이상이 0이 아니어야 합니다.
| BatchOptimizeTours |
|---|
|
하나 이상의 이 메서드는 장기 실행 작업 (LRO)입니다. 최적화 입력 ( 사용자는 LRO LRO의
|
| OptimizeTours |
|---|
|
목표는 비용에
|
| OptimizeToursLongRunning |
|---|
|
이는 큰 시간 제한 값으로 최적화하도록 설계된 반환된 실험 단계: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request를 참고하세요.
|
| OptimizeToursUri |
|---|
|
이는 제한 시간 값이 크고 입력/출력 크기가 큰 최적화를 위해 설계된 클라이언트가 Google Cloud Storage에 저장된 이 방법은 몇 분 이상 걸리고 입력/출력 크기가 8MB보다 큰 최적화에 반환된 실험 단계: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request를 참고하세요.
|
AggregatedMetrics
ShipmentRoute (resp. 모든 Transition 및/또는 Visit (resp. 모든 ShipmentRoute) 요소에 대한 OptimizeToursResponse)의 집계된 측정항목
| 필드 | |
|---|---|
performed_shipment_count |
실행된 배송 수입니다. 픽업 및 배송 쌍은 한 번만 집계됩니다. |
travel_duration |
경로 또는 솔루션의 총 이동 시간입니다. |
wait_duration |
경로 또는 솔루션의 총 대기 시간입니다. |
delay_duration |
경로 또는 솔루션의 총 지연 시간입니다. |
break_duration |
경로 또는 솔루션의 총 휴식 시간입니다. |
visit_duration |
경로 또는 솔루션의 총 방문 시간입니다. |
total_duration |
총 지속 시간은 위의 모든 지속 시간의 합과 같아야 합니다. 경로의 경우 다음에도 해당합니다. |
travel_distance_meters |
경로 또는 솔루션의 총 이동 거리입니다. |
max_loads |
전체 경로 (또는 솔루션)에서 달성된 최대 부하입니다. 이 경로 (또는 솔루션)의 각 수량에 대해 모든 |
performed_mandatory_shipment_count |
실행된 필수 배송 수입니다. 실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
performed_shipment_penalty_cost_sum |
실행된 배송의 실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
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은 연속되지 않은 휴식에 적용될 수 있습니다. 예를 들어 다음 일정은 '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_break_duration |
필수 항목입니다. 이 제약 조건의 최소 휴식 시간입니다. 음수가 아님 |
max_inter_break_duration |
필수 항목입니다. |
DataFormat
입력 및 출력 파일의 데이터 형식입니다.
| 열거형 | |
|---|---|
DATA_FORMAT_UNSPECIFIED |
값이 잘못되었습니다. 형식은 UNSPECIFIED가 아니어야 합니다. |
JSON |
JavaScript Object Notation입니다. |
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만 설정하고 다른 하나는 threshold_time만 설정합니다. 방문이 여러 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은 동쪽 등을 나타냅니다. |
OptimizeToursLongRunningMetadata
이 유형에는 필드가 없습니다.
OptimizeToursLongRunning 호출의 작업 메타데이터입니다.
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인 경우 다음 카테고리의 라벨이 카테고리에 최대 한 번 표시되어야 합니다.
삽입된 솔루션의 삽입된 솔루션에서 경로 방문 또는 전체 경로를 삭제하면 암시된 제약 조건에 영향을 미쳐 솔루션 변경, 유효성 검사 오류 또는 불가능성이 발생할 수 있습니다. 참고: 호출자는 각 |
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 |
반환된 유효성 검사 오류 수를 자릅니다. 이러한 오류는 일반적으로 solving_mode=VALIDATE_ONLY가 아닌 경우 BadRequest 오류 세부정보 (https://cloud.google.com/apis/design/errors#error_details)로 INVALID_ARGUMENT 오류 페이로드에 연결됩니다. |
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 |
중요: 불가능한 모든 배송이 여기에 반환되는 것은 아니며, 전처리 중에 불가능한 것으로 감지된 배송만 반환됩니다. |
TRANSFORM_AND_RETURN_REQUEST |
이 모드는 실험 단계: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request를 참고하세요. |
OptimizeToursResponse
투어 최적화 문제를 해결한 후의 응답으로, 각 차량이 따르는 경로, 건너뛴 배송, 솔루션의 전체 비용이 포함됩니다.
| 필드 | |
|---|---|
routes[] |
각 차량에 대해 계산된 경로입니다. i번째 경로는 모델의 i번째 차량에 해당합니다. |
request_label |
요청에 라벨이 지정된 경우 |
skipped_shipments[] |
건너뛴 모든 배송 목록입니다. |
validation_errors[] |
Google에서 독립적으로 감지할 수 있는 모든 검사 오류의 목록입니다. |
processed_request |
경우에 따라 문제를 해결하기 전에 수신 요청을 수정합니다(예: 비용 추가). solving_mode == TRANSFORM_AND_RETURN_REQUEST인 경우 수정된 요청이 여기에 반환됩니다. 실험 단계: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request를 참고하세요. |
metrics |
이 솔루션의 기간, 거리, 사용량 측정항목입니다. |
측정항목
전체 측정항목으로, 모든 경로에서 집계됩니다.
| 필드 | |
|---|---|
aggregated_route_metrics |
경로를 통해 집계됩니다. 각 측정항목은 이름이 동일한 모든 |
skipped_mandatory_shipment_count |
건너뛴 필수 배송 수입니다. |
used_vehicle_count |
사용된 차량 수입니다. 참고: 차량 경로가 비어 있고 |
earliest_vehicle_start_time |
사용된 차량의 가장 빠른 시작 시간으로, 모든 사용된 차량의 최소값인 |
latest_vehicle_end_time |
사용된 차량의 최신 종료 시간으로, 모든 사용된 차량의 |
costs |
비용 관련 요청 필드별로 분류된 솔루션 비용입니다. 키는 입력 OptimizeToursRequest를 기준으로 하는 프로토 경로입니다(예: 'model.shipments.pickups.cost'). 값은 전체 솔루션에서 집계된 해당 비용 필드로 생성된 총비용입니다. 즉, costs["model.shipments.pickups.cost"] 는 솔루션 전반의 모든 수령 비용의 합계입니다. 모델에 정의된 모든 비용은 여기에 자세히 보고됩니다. 단, 2022년 1월부터 집계된 방식으로만 보고되는 TransitionAttributes와 관련된 비용은 예외입니다. |
total_cost |
솔루션의 총비용입니다. 비용 맵에 있는 모든 값의 합계입니다. |
OptimizeToursUriMetadata
이 유형에는 필드가 없습니다.
OptimizeToursUri 호출의 작업 메타데이터입니다.
OptimizeToursUriRequest
OptimizeToursUri 메서드에서 사용하는 요청입니다.
| 필드 | |
|---|---|
parent |
필수 항목입니다. 전화를 걸 프로젝트 또는 위치를 타겟팅합니다. 형식:
위치를 지정하지 않으면 리전이 자동으로 선택됩니다. |
input |
필수 항목입니다. |
output |
필수 항목입니다. |
OptimizeToursUriResponse
OptimizeToursUri 메서드에서 반환된 응답입니다.
| 필드 | |
|---|---|
output |
선택사항입니다. JSON 또는 textproto로 인코딩된 리소스의 |
OptimizeToursValidationError
OptimizeToursRequest를 검증할 때 발생한 오류 또는 경고를 설명합니다.
| 필드 | |
|---|---|
code |
유효성 검사 오류는 항상 존재하는 ( 이 섹션 다음에 나오는 필드에는 오류에 관한 자세한 컨텍스트가 제공됩니다. 여러 오류: 오류가 여러 개 있는 경우 검증 프로세스에서 여러 오류를 출력하려고 합니다. 컴파일러와 마찬가지로 완벽한 프로세스는 아닙니다. 일부 검증 오류는 '심각'하여 전체 검증 프로세스를 중지합니다. 안정성: |
display_name |
오류 표시 이름입니다. |
fields[] |
오류 컨텍스트에는 0개, 1개 (대부분의 경우) 또는 그 이상의 필드가 포함될 수 있습니다. 예를 들어 차량 4번과 배송 2번의 첫 번째 수령을 다음과 같이 참조할 수 있습니다. 하지만 특정 오류 코드의 경우 |
error_message |
사람이 읽을 수 있는 오류를 설명하는 문자열입니다. 안정성: 불안정함: 특정 |
offending_values |
필드의 값을 포함할 수 있습니다. 이 기능은 항상 제공되는 것은 아닙니다. 이 API를 사용해서는 안 되며 수동 모델 디버깅에만 사용해야 합니다. |
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 |
이 배송의 '유형'을 지정하는 비어 있지 않은 문자열입니다. 이 기능은 단일 방문에 지정된 |
label |
이 배송의 라벨을 지정합니다. 이 라벨은 해당 |
ignore |
true인 경우 이 배송을 건너뛰지만 모델에
|
penalty_cost |
배송이 완료되지 않으면 이 페널티가 경로의 전체 비용에 추가됩니다. 수령 및 배송 대안 중 하나를 방문하면 배송이 완료된 것으로 간주됩니다. 비용은 모델의 다른 모든 비용 관련 필드에 사용되는 동일한 단위로 표현될 수 있으며 양수여야 합니다. 중요: 이 페널티가 지정되지 않으면 무한대로 간주됩니다. 즉, 배송이 완료되어야 합니다. |
pickup_to_delivery_relative_detour_limit |
픽업 위치에서 배송 위치까지의 최단 경로와 비교한 최대 상대 우회 시간을 지정합니다. 지정된 경우 음수가 아니어야 하며 배송에는 수령과 배송이 하나 이상 포함되어야 합니다. 예를 들어 t를 선택한 수령 대체 옵션에서 선택한 배송 대체 옵션으로 직접 이동하는 데 걸리는 가장 짧은 시간이라고 가정해 보겠습니다. 그런 다음 동일한 배송에 상대적 한도와 절대적 한도가 모두 지정된 경우 가능한 각 수령/배송 쌍에 더 제한적인 한도가 사용됩니다. 2017년 10월 현재 우회는 이동 시간이 차량에 따라 달라지지 않는 경우에만 지원됩니다. |
로드
방문을 수행할 때 픽업인 경우 미리 정의된 금액이 차량 적재량에 추가되고 배송인 경우 미리 정의된 금액이 차량 적재량에서 차감될 수 있습니다. 이 메시지는 이러한 금액을 정의합니다. load_demands를 참조하세요.
| 필드 | |
|---|---|
amount |
해당 방문을 수행하는 차량의 부하가 달라집니다. 정수이므로 사용자는 정밀도 손실을 방지하기 위해 적절한 단위를 선택하는 것이 좋습니다. 0 이상이어야 합니다. |
VisitRequest
차량으로 이동할 수 있는 방문 요청입니다. 지리적 위치 (또는 아래 참조)가 1~2개 있고, 시간대로 표시되는 영업시간과 서비스 기간 (상품을 픽업하거나 배송하기 위해 도착한 후 차량이 소요한 시간)이 있습니다.
| 필드 | |
|---|---|
arrival_location |
이 |
arrival_waypoint |
이 |
departure_location |
이 |
departure_waypoint |
이 |
tags[] |
방문 요청에 연결된 태그를 지정합니다. 빈 문자열 또는 중복 문자열은 허용되지 않습니다. |
time_windows[] |
방문 도착 시간을 제한하는 시간대입니다. 차량이 도착 시간대 외에 출발할 수 있습니다. 즉, 도착 시간 + 기간이 시간대 내에 있을 필요는 없습니다. 차량이
시간 범위는 서로 겹치거나 인접해서는 안 되며 오름차순이어야 합니다.
|
duration |
방문 시간, 즉 차량이 도착과 출발 사이에 소비한 시간입니다 (가능한 대기 시간에 추가됨, |
cost |
차량 경로에서 이 방문 요청을 처리하는 데 드는 비용입니다. 이를 사용하면 배송의 대체 수령 또는 배송마다 다른 비용을 지불할 수 있습니다. 이 비용은 |
load_demands |
이 방문 요청의 로드 수요입니다. 이는 전체 |
visit_types[] |
방문 유형을 지정합니다. 이는 차량이 이 방문을 완료하는 데 필요한 추가 시간을 할당하는 데 사용될 수 있습니다 ( 유형은 한 번만 표시될 수 있습니다. |
label |
이 |
avoid_u_turns |
이 위치의 운전 경로에서 U턴을 피해야 하는지 여부를 지정합니다. U턴 방지는 최선을 다해 수행되며 완전한 방지는 보장되지 않습니다. 실험용 기능이며 동작이 변경될 수 있습니다. 실험 단계: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request를 참고하세요. |
ShipmentModel
배송 모델에는 차량 집합으로 수행해야 하는 배송 집합이 포함되며, 다음의 합계인 전체 비용을 최소화합니다.
- 차량 경로 지정 비용 (총 시간당 비용, 이동 시간당 비용, 모든 차량의 고정 비용의 합계)
- 이행되지 않은 배송 페널티
- 전체 배송 기간의 비용
| 필드 | |
|---|---|
shipments[] |
모델에서 실행해야 하는 배송 세트입니다. |
vehicles[] |
방문에 사용할 수 있는 차량 집합입니다. |
objectives[] |
이 모델의 목표 집합으로, 비용으로 변환됩니다. 비어 있지 않은 경우 입력 모델은 비용이 없어야 합니다. 수정된 요청을 가져오려면 실험 단계: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request를 참고하세요. |
global_start_time |
모델의 전역 시작 및 종료 시간: 이 범위를 벗어나는 시간은 유효한 것으로 간주할 수 없습니다. 모델의 기간은 1년 미만이어야 합니다. 즉,
|
global_end_time |
설정하지 않으면 1971년 1월 1일 00:00:00 UTC (즉, 초: 31536000, 나노: 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_type 세트입니다 ( |
shipment_type_requirements[] |
|
precedence_rules[] |
모델에서 시행해야 하는 우선순위 규칙 집합입니다. 중요: 우선순위 규칙을 사용하면 최적화할 수 있는 문제의 크기가 제한됩니다. 배송이 많이 포함된 우선순위 규칙을 사용하는 요청은 거부될 수 있습니다. |
max_active_vehicles |
활성 차량의 최대 수를 제한합니다. 차량이 하나 이상의 배송을 수행하는 경우 차량은 활성 상태입니다. 차량보다 운전자가 적고 차량의 차량이 이질적인 경우 경로 수를 제한하는 데 사용할 수 있습니다. 그러면 최적화에서 사용할 최적의 차량 하위 집합을 선택합니다. 엄격하게 양수여야 합니다. |
DurationDistanceMatrix
방문 및 차량 시작 위치에서 방문 및 차량 종료 위치까지의 기간 및 거리 매트릭스를 지정합니다.
| 필드 | |
|---|---|
rows[] |
기간 및 거리 행렬의 행을 지정합니다. |
vehicle_start_tag |
이 기간 및 거리 매트릭스가 적용되는 차량을 정의하는 태그입니다. 비어 있으면 모든 차량에 적용되며 매트릭스는 하나만 있을 수 있습니다. 각 차량 시작은 정확히 하나의 매트릭스와 일치해야 합니다. 즉, 모든 행렬은 서로 다른 |
행
시간 및 거리 매트릭스의 행을 지정합니다.
| 필드 | |
|---|---|
durations[] |
특정 행의 기간 값입니다. |
meters[] |
특정 행의 거리 값입니다. 비용이나 제약 조건이 모델의 거리를 참조하지 않는 경우 비워 둘 수 있습니다. 그렇지 않으면 |
목표
목표는 비용 모델을 완전히 대체하므로 기존 비용과 호환되지 않습니다. 각 목표는 차량, 배송 또는 전환 속성 등 사전 정의된 여러 비용에 매핑됩니다.
실험 단계: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request를 참고하세요.
| 필드 | |
|---|---|
type |
목표의 유형입니다. |
weight |
이 목표가 다른 목표에 비해 얼마나 중요해야 하는지입니다. 음수가 아닌 모든 숫자일 수 있으며 가중치의 합이 1일 필요는 없습니다. 가중치는 기본적으로 1.0입니다. |
유형
비용 집합에 매핑될 목표 유형입니다.
| 열거형 | |
|---|---|
DEFAULT |
합리적인 솔루션을 보장하기 위해 기본 비용 집합이 사용됩니다. 참고: 이 목표는 단독으로 사용할 수 있지만, 아직 없는 경우 항상 가중치 1.0으로 사용자가 지정한 목표에 기준선으로 추가됩니다. |
MIN_DISTANCE |
'MIN' 목표 총 이동 거리를 최소화합니다. |
MIN_WORKING_TIME |
모든 차량에서 합산된 총 작업 시간을 최소화합니다. |
MIN_TRAVEL_TIME |
위와 동일하지만 이동 시간에만 초점을 맞춥니다. |
MIN_NUM_VEHICLES |
사용되는 차량 수를 최소화합니다. |
PrecedenceRule
두 이벤트 (각 이벤트는 배송 상품의 수령 또는 배송) 간의 우선순위 규칙: '두 번째' 이벤트는 '첫 번째' 이벤트가 시작된 후 최소 offset_duration가 지나야 시작할 수 있습니다.
여러 선행이 동일한 (또는 관련) 이벤트를 참조할 수 있습니다.예를 들면 다음과 같습니다. 'B 수령은 A 배송 후에 이루어짐', 'C 수령은 B 수령 후에 이루어짐'
또한 우선순위는 두 배송이 모두 실행된 경우에만 적용되며, 그렇지 않은 경우에는 무시됩니다.
| 필드 | |
|---|---|
first_is_delivery |
'첫 번째' 이벤트가 배송인지 여부를 나타냅니다. |
second_is_delivery |
'두 번째' 이벤트가 배송인지 여부를 나타냅니다. |
offset_duration |
'첫 번째' 이벤트와 '두 번째' 이벤트 간의 오프셋입니다. 음수일 수 있습니다. |
first_index |
'첫 번째' 이벤트의 배송 색인입니다. 이 필드를 지정해야 합니다. |
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
마지막으로 전환 중에 이동, 중단, 지연, 대기를 정렬하는 방법은 다음과 같습니다.
- 겹치지 않습니다.
- DELAY는 고유하며 다음 방문 (또는 차량 종료) 바로 전의 연속된 기간이어야 합니다. 따라서 시작 시간과 종료 시간을 알기 위해서는 지연 기간을 알면 됩니다.
- 휴식 시간은 연속적이고 겹치지 않는 기간입니다. 대답은 각 광고 시점의 시작 시간과 지속 시간을 지정합니다.
- 이 전환 중에 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[] |
경로를 나타내는 방문의 순서가 지정된 시퀀스입니다. visits[i] 는 경로의 i번째 방문입니다. 이 필드가 비어 있으면 차량이 사용되지 않은 것으로 간주됩니다. |
transitions[] |
경로의 전환 순서가 지정된 목록입니다. |
has_traffic_infeasibilities |
트래픽으로 인해 이동 시간 추정치가 |
route_polyline |
경로의 인코딩된 다중선 표현입니다. 이 필드는 |
breaks[] |
이 경로를 수행하는 차량에 예정된 휴식 시간입니다. |
metrics |
이 경로의 시간, 거리, 부하 측정항목입니다. |
vehicle_fullness |
상한이 적용된 측정항목이 각 차량 한도에 얼마나 근접한지 계산하는 실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
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 |
전환 중에 따른 경로의 인코딩된 다중선 표현입니다. 이 필드는 |
route_token |
출력 전용입니다. 탐색 중에 경로를 재구성하고 경로가 생성될 때 원래 의도를 존중하기 위해 Navigation SDK에 전달할 수 있는 불투명 토큰입니다. 경로가 변경되는 경우에도 원래 의도를 존중합니다. 이 토큰을 불투명 BLOB으로 처리합니다. 서비스에서 정확히 동일한 경로를 반환하더라도 값이 변경될 수 있으므로 요청 간에 값을 비교하지 마세요. 이 필드는 |
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 |
|
injected_solution_location_token |
방문 위치에 관한 정보를 나타내는 불투명 토큰입니다. 이 필드는 이 방문에 대해 실험 단계: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request를 참고하세요. |
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[] |
배송이 건너뛴 이유를 설명하는 이유 목록입니다. 위의 |
penalty_cost |
이는 건너뛴 배송의 심각도를 더 쉽게 확인할 수 있도록 여기에 포함된 실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
estimated_incompatible_vehicle_ratio |
아래 이유 중 하나로 인해 이 배송을 수행할 수 없는 차량의 예상 비율입니다. 참고: 이유에 차량이 포함된 경우에만 입력됩니다. 실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
이유
배송이 건너뛴 이유를 설명할 수 있는 경우 이유가 여기에 표시됩니다. 모든 차량의 이유가 동일하지 않으면 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_vehicle_indices[] |
식별된 여러 차량의 목록을 제공한다는 점을 제외하고 실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
example_exceeded_capacity_type |
이유 코드가 |
example_vehicle_index |
이유가 배송-차량 비호환성과 관련된 경우 이 필드에는 관련 차량의 색인이 제공됩니다. |
코드
이유 유형을 식별하는 코드입니다. 여기서 순서는 의미가 없습니다. 특히 두 가지 이유가 모두 적용되는 경우 솔루션에서 어떤 이유가 다른 이유보다 먼저 표시되는지 나타내지 않습니다.
| 열거형 | |
|---|---|
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 필드가 비어 있지 않으며 이 차량이 해당 배송에 속하지 않습니다. |
VEHICLE_IGNORED |
차량의 실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
SHIPMENT_IGNORED |
배송의 실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT |
실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED |
실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
ZERO_PENALTY_COST |
배송에 페널티 비용이 없습니다. 이는 고급 모델링 선택사항으로 유용할 수 있지만, 사후에 배송이 건너뛴 이유를 설명할 수도 있습니다. 실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
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 |
이 전환을 실행할 때 발생하는 지연 시간을 지정합니다. 이 지연은 항상 소스 방문이 완료된 후이자 대상 방문이 시작되기 전에 발생합니다. |
URI
Route Optimization API에서 읽고 쓸 수 있는 리소스를 가리키는 범용 리소스 식별자입니다.
| 필드 | |
|---|---|
uri |
리소스의 URI입니다. 리소스가 아직 존재하지 않을 수 있습니다. 리소스의 콘텐츠는 JSON 또는 textproto로 인코딩됩니다. Google Cloud Storage 리소스만 지원됩니다. 리소스가 JSON으로 인코딩된 경우 리소스 이름에 |
차량
배송 문제의 차량을 모델링합니다. 배송 문제를 해결하면 이 차량에 대해 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 |
허용되는 최대 부하량입니다. |
cost_per_kilometer |
이 차량으로 1km당 1단위의 하중을 이동하는 데 드는 비용입니다. 이는 연료 소비의 프록시로 사용할 수 있습니다. 하중이 무게 (뉴턴)인 경우 하중*킬로미터는 에너지의 차원을 갖습니다. 실험 단계: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request를 참고하세요. |
cost_per_traveled_hour |
이 차량이 1시간 동안 단위 하중으로 이동하는 비용입니다. 실험 단계: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request를 참고하세요. |
간격
허용되는 로드 금액의 간격입니다.
| 필드 | |
|---|---|
min |
허용되는 최소 부하입니다. 0 이상이어야 합니다. 두 값이 모두 지정된 경우 |
max |
허용 가능한 최대 부하입니다. 0 이상이어야 합니다. 지정하지 않으면 이 메시지에 의해 최대 부하가 제한되지 않습니다. 두 값이 모두 지정된 경우 |
LoadCost
Transition 중에 한 단위의 부하를 이동하는 데 드는 비용입니다. 특정 부하의 비용은 다음 두 부분의 합계입니다.
- min(load,
load_threshold) *cost_per_unit_below_threshold - max(0, load -
load_threshold) *cost_per_unit_above_threshold
이 비용을 통해 솔루션은 높은 수요를 먼저 제공하거나 높은 수요를 마지막에 선택하는 것을 선호합니다. 예를 들어 차량에
load_limit {
key: "weight"
value {
cost_per_kilometer {
load_threshold: 15
cost_per_unit_below_threshold: 2.0
cost_per_unit_above_threshold: 10.0
}
}
}
경로는 시작,픽업,픽업,배송,배송,종료이며 전환은 다음과 같습니다.
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
이 LoadCost에 의해 발생한 비용은 (cost_below * load_below * kilometers + cost_above * load_above * kms)입니다.
- 전환 0: 0.0
- 전환 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- 트랜지션 2: 2.0 * 15 * 1.0 + 10.0 * (20 - 15) * 1.0 = 80.0
- 전환 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- 전환 4: 0.0
따라서 경로의 LoadCost은 120.0입니다.
하지만 경로가 시작, 수령, 배송, 수령, 배송, 종료이고 전환이 있는 경우:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
이 LoadCost에서 발생한 비용은 다음과 같습니다.
- 전환 0: 0.0
- 전환 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transition 2: 0.0
- 전환 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- 전환 4: 0.0
여기서 경로의 LoadCost은 40.0입니다.
LoadCost로 인해 과부하 전환이 있는 솔루션의 비용이 더 많이 듭니다.
실험 단계: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request를 참고하세요.
| 필드 | |
|---|---|
load_threshold |
부하 단위 이동 비용이 cost_per_unit_below_threshold에서 cost_per_unit_above_threshold로 변경되는 부하량입니다. 0 이상이어야 합니다. |
cost_per_unit_below_threshold |
0과 임계값 사이의 각 단위에 대한 부하 단위 이동 비용입니다. 유한한 값이어야 하며 0 이상이어야 합니다. |
cost_per_unit_above_threshold |
기준점을 초과하는 각 단위의 부하를 이동하는 비용입니다. 특별한 경우 임계값이 0이면 단위당 고정 비용입니다. 유한한 값이어야 하며 0 이상이어야 합니다. |
TravelMode
차량에서 사용할 수 있는 이동 수단입니다.
이는 Google Maps Platform Routes API 이동 모드의 하위 집합이어야 합니다(https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode 참고).
참고: WALKING 경로는 베타 버전이며 명확한 인도나 보행자 전용 도로가 누락될 수 있습니다. 앱에 표시되는 모든 도보 경로에 대해 사용자에게 이 경고를 표시해야 합니다.
| 열거형 | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
지정되지 않은 이동 모드입니다(DRIVING과 동일). |
DRIVING |
운전 경로에 해당하는 이동 모드 (자동차 등)입니다. |
WALKING |
도보 경로에 해당하는 이동 모드입니다. |
UnloadingPolicy
차량을 하역하는 방법에 관한 정책입니다. 수령과 배송이 모두 있는 배송에만 적용됩니다.
다른 배송은 unloading_policy와 관계없이 경로의 어느 곳에서나 발생할 수 있습니다.
| 열거형 | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
지정되지 않은 하차 정책입니다. 배송은 해당 수령 후에만 이루어져야 합니다. |
LAST_IN_FIRST_OUT |
배송은 수거의 역순으로 이루어져야 합니다. |
FIRST_IN_FIRST_OUT |
배송은 수거와 동일한 순서로 이루어져야 합니다. |
VehicleFullness
VehicleFullness는 차량의 탑승률을 계산하는 측정항목입니다. 각 VehicleFullness 필드는 0~1이며, 상한이 설정된 측정항목 필드(예: AggregatedMetrics.travel_distance_meters)와 관련 차량 한도(예: Vehicle.route_distance_limit) 간의 비율로 계산됩니다(있는 경우). 그렇지 않으면 fullness_ratio가 설정되지 않은 상태로 유지됩니다. 한도가 0이면 필드가 1로 설정됩니다. 참고: 경로에 트래픽 비실현 가능성이 있는 경우 일부 원시 충만도 비율이 1.0을 초과할 수 있습니다(예: 차량이 거리 제한을 초과할 수 있음). 이 경우 fullness 값은 1.0으로 제한됩니다.
| 필드 | |
|---|---|
max_fullness |
이 메시지의 다른 모든 필드의 최댓값입니다. |
distance |
|
travel_duration |
[AggregatedMetrics.travel_duration_seconds][] 와 |
active_duration |
[AggregatedMetrics.total_duration_seconds][] 와 |
max_load |
모든 유형의 [AggregatedMetrics.max_load][] 와 각 |
active_span |
특정 차량의 비율 (vehicle_end_time - vehicle_start_time) / (latest_vehicle_end_time - earliest_vehicle_start_time)입니다. 분모가 없으면 ( |
경유지
경유지를 캡슐화합니다. 경유지는 VisitRequest의 도착 및 출발 위치와 차량의 시작 및 종료 위치를 표시합니다.
| 필드 | |
|---|---|
side_of_road |
선택사항입니다. 이 경유지의 위치가 차량이 도로의 특정 측면에 정차하도록 선호하는 것을 나타냅니다. 이 값을 설정하면 차량이 도로 중앙에서 위치 쪽으로 치우친 도로변에 정차할 수 있도록 경로가 위치를 통과합니다. '도보' 이동 모드에는 이 옵션을 사용할 수 없습니다. |
vehicle_stopover |
경유지가 차량이 정차하여 승차 또는 하차할 수 있는 곳임을 나타냅니다. 이 옵션은 'DRIVING' 이동 모드에서만 작동하며 'location_type'이 'location'인 경우에만 작동합니다. 실험적: 이 필드의 동작 또는 존재는 향후 변경될 수 있습니다. |
통합 필드 location_type. 위치를 나타내는 다양한 방법 location_type은 다음 중 하나여야 합니다. |
|
location |
선택적 방향을 포함한 지리 좌표를 사용하여 지정된 지점입니다. |
place_id |
경유지와 연결된 관심 장소 ID입니다. 장소 ID를 사용하여 VisitRequest의 도착 또는 출발 위치를 지정할 때는 해당 장소로의 탐색을 위한 LatLng 위치를 결정할 수 있을 만큼 구체적인 장소 ID를 사용하세요. 예를 들어 건물을 나타내는 장소 ID는 적합하지만 도로를 나타내는 장소 ID는 권장되지 않습니다. |