- JSON 표현
- Shipment
- VisitRequest
- LatLng
- Waypoint
- 위치
- TimeWindow
- 차량
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- 간격
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- 행
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
배송 모델에는 차량 세트로 실행해야 하는 배송 세트가 포함되며, 전체 비용은 다음의 합계입니다.
- 차량 경로 설정 비용 (총 시간당 비용, 이동 시간당 비용, 모든 차량의 고정 비용의 합계)
- 미실행 배송 페널티
- 전 세계 배송 기간의 비용
JSON 표현 |
---|
{ "shipments": [ { object ( |
필드 | |
---|---|
shipments[] |
모델에서 실행해야 하는 배송 세트입니다. |
vehicles[] |
방문을 수행하는 데 사용할 수 있는 차량 세트입니다. |
global |
모델의 전 세계 시작 및 종료 시간: 이 범위를 벗어나는 시간은 유효하지 않은 것으로 간주됩니다. 모델의 기간은 1년 미만이어야 합니다. 즉,
RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
global |
설정하지 않으면 1971년 1월 1일 00:00:00 UTC (즉, 초: 31536000, 나노: 0)가 기본값으로 사용됩니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
global |
전체 계획의 '전체 기간'은 모든 차량의 가장 빠른 유효 시작 시간과 가장 늦은 유효 종료 시간의 차이입니다. 예를 들어 사용자는 해당 수량에 시간당 비용을 할당하여 최대한 빨리 작업을 완료하도록 최적화할 수 있습니다. 이 비용은 |
duration |
모델에 사용되는 시간 및 거리 행렬을 지정합니다. 이 필드가 비어 있으면 사용 예시:
|
duration |
시간 및 거리 행렬의 소스를 정의하는 태그입니다. 태그는 |
duration |
시간 및 거리 행렬의 대상을 정의하는 태그입니다. 태그는 |
transition |
모델에 전환 속성이 추가되었습니다. |
shipment |
호환되지 않는 shipment_types의 집합입니다 ( |
shipment |
|
precedence |
모델에서 시행해야 하는 우선순위 규칙 집합입니다. |
max |
활성 차량의 최대 수를 제한합니다. 경로에서 배송을 한 번 이상 실행하는 경우 차량이 활성 상태입니다. 운전자 수가 차량 수보다 적고 차량 구성이 이질적인 경우 경로 수를 제한하는 데 사용할 수 있습니다. 그러면 최적화 기능이 사용할 최적의 차량 하위 집합을 선택합니다. 엄격히 양수여야 합니다. |
배송
픽업에서 배송까지 단일 상품의 배송입니다. 배송이 완료된 것으로 간주되려면 고유한 차량이 하나의 수령 위치를 방문한 후 (따라서 예비 용량을 줄임) 나중에 하나의 배송 위치를 방문해야 합니다 (따라서 예비 용량을 다시 늘림).
JSON 표현 |
---|
{ "displayName": string, "pickups": [ { object ( |
필드 | |
---|---|
display |
사용자 정의 배송물 표시 이름입니다. 최대 63자(영문 기준)까지 사용할 수 있으며 UTF-8 문자를 사용할 수 있습니다. |
pickups[] |
배송과 연결된 픽업 대안 집합입니다. 지정하지 않으면 차량은 배송에 해당하는 위치만 방문하면 됩니다. |
deliveries[] |
배송과 연결된 대체 배송 옵션 세트입니다. 지정하지 않으면 차량이 픽업에 해당하는 위치만 방문하면 됩니다. |
load |
배송의 적재 요구사항 (예: 중량, 부피, 팔레트 수 등) 맵의 키는 해당 부하의 유형을 설명하는 식별자여야 하며, 단위도 포함하는 것이 좋습니다. 예를 들어 'weight_kg', 'volume_gallons', 'pallet_count' 등이 있습니다. 지정된 키가 맵에 표시되지 않으면 해당 로드가 null로 간주됩니다. |
allowed |
이 배송을 실행할 수 있는 차량 세트입니다. 비어 있으면 모든 차량에서 실행할 수 있습니다. 차량은 |
costs |
이 배송 상품이 각 차량으로 배송될 때 발생하는 비용을 지정합니다. 지정된 경우 다음 중 하나를 포함해야 합니다.
이 비용은 |
costs |
|
pickup |
수령부터 배송까지의 최단 경로에 비해 허용되는 최대 절대 우회 시간을 지정합니다. 지정된 경우 0보다 크거나 같아야 하며 배송에 픽업 및 배송이 하나 이상 포함되어야 합니다. 예를 들어 t는 선택한 수령 대안에서 선택한 배송 대안으로 바로 이동하는 데 걸리는 가장 짧은 시간입니다. 그런 다음
동일한 배송에 상대 한도와 절대 한도가 모두 지정된 경우 가능한 각 수령/배송 쌍에 더 제한적인 한도가 사용됩니다. 2017년 10월부터 우회 경로는 이동 시간이 차량에 종속되지 않는 경우에만 지원됩니다. 소수점 아래가 최대 9자리까지이고 ' |
pickup |
배송의 픽업 시작부터 배송 시작까지의 최대 기간을 지정합니다. 지정된 경우 0보다 크거나 같아야 하며 배송에 픽업 및 배송이 하나 이상 포함되어야 합니다. 이는 수령 및 배송에 선택된 대안이나 차량 속도에 따라 달라지지 않습니다. 최대 우회 제약 조건과 함께 지정할 수 있습니다. 솔루션은 두 사양을 모두 준수합니다. 소수점 아래가 최대 9자리까지이고 ' |
shipment |
이 배송의 '유형'을 지정하는 비어 있지 않은 문자열입니다. 이 기능은 단일 방문에 지정된 |
label |
이 배송의 라벨을 지정합니다. 이 라벨은 상응하는 |
ignore |
true인 경우 이 배송을 건너뛰지만 배송을 무시하면 모델에
|
penalty |
배송이 완료되지 않으면 이 패널티가 경로의 전체 비용에 추가됩니다. 수령 및 배송 대안 중 하나가 방문되면 배송이 완료된 것으로 간주됩니다. 비용은 모델의 다른 모든 비용 관련 필드에 사용되는 것과 동일한 단위로 표현할 수 있으며 양수여야 합니다. 중요: 이 패널티가 지정되지 않으면 무한으로 간주되며, 즉 배송이 완료되어야 합니다. |
pickup |
수령에서 배송까지의 최단 경로와 비교한 최대 상대 우회 시간을 지정합니다. 지정된 경우 0보다 크거나 같아야 하며 배송에 픽업 및 배송이 하나 이상 포함되어야 합니다. 예를 들어 t는 선택한 수령 대안에서 선택한 배송 대안으로 바로 이동하는 데 걸리는 가장 짧은 시간입니다. 그런 다음
동일한 배송에 상대 한도와 절대 한도가 모두 지정된 경우 가능한 각 수령/배송 쌍에 더 제한적인 한도가 사용됩니다. 2017년 10월부터 우회 경로는 이동 시간이 차량에 종속되지 않는 경우에만 지원됩니다. |
VisitRequest
차량으로 수행할 수 있는 방문 요청: 지리적 위치 (2개, 아래 참고), 시간대별로 표시되는 영업시간 및 서비스 기간 (차량이 도착하여 상품을 수령하거나 배송하는 데 소요되는 시간)이 있습니다.
JSON 표현 |
---|
{ "arrivalLocation": { object ( |
필드 | |
---|---|
arrival |
이 |
arrival |
이 |
departure |
이 |
departure |
이 |
tags[] |
방문 요청에 연결된 태그를 지정합니다. 빈 문자열 또는 중복 문자열은 허용되지 않습니다. |
time |
방문 도착 시간을 제한하는 시간 범위입니다. 차량이 도착 시간 범위 외부에서 출발할 수 있습니다. 즉, 도착 시간 + 소요 시간이 시간 범위 내에 있지 않아도 됩니다. 이로 인해 차량이
시간 간격은 서로 중복되지 않아야 합니다. 즉, 시간 간격이 다른 시간 간격과 겹치거나 인접해서는 안 되며, 시간 간격은 오름차순으로 정렬되어야 합니다.
|
duration |
방문 시간, 즉 차량이 도착과 출발 사이에 보낸 시간입니다 (가능한 대기 시간에 추가됨, 소수점 아래가 최대 9자리까지이고 ' |
cost |
차량 경로에서 이 방문 요청을 처리하는 데 드는 비용입니다. 이를 통해 배송의 대체 수령 또는 배송마다 다른 비용을 지불할 수 있습니다. 이 비용은 |
load |
이 방문 요청의 수요를 로드합니다. 이는 전체 |
visit |
방문 유형을 지정합니다. 차량이 방문을 완료하는 데 필요한 추가 시간을 할당하는 데 사용할 수 있습니다 ( 유형은 한 번만 표시될 수 있습니다. |
label |
이 |
LatLng
위도/경도 쌍을 나타내는 객체로 위도와 경도를 나타내는 복식 쌍으로 표현됩니다. 달리 명시되지 않는 한 이 객체는 WGS84 표준을 준수해야 합니다. 값은 정규화된 범위 내에 있어야 합니다.
JSON 표현 |
---|
{ "latitude": number, "longitude": number } |
필드 | |
---|---|
latitude |
위도입니다. 범위는 [-90.0, +90.0]입니다. |
longitude |
경도입니다. 범위는 [-180.0, +180.0]입니다. |
경유지
웨이포인트를 캡슐화합니다. 웨이포인트는 VisitRequests의 도착 및 출발 위치와 차량의 시작 및 종료 위치를 표시합니다.
JSON 표현 |
---|
{ "sideOfRoad": boolean, // Union field |
필드 | |
---|---|
side |
선택사항입니다. 이 경유지의 위치가 차량이 도로의 특정 측면에 정차하는 것을 선호한다는 것을 나타냅니다. 이 값을 설정하면 차량이 도로 중앙에서 위치가 편향된 도로 쪽에 정차할 수 있도록 경로가 위치를 통과합니다. 이 옵션은 '도보' 이동 모드에는 작동하지 않습니다. |
통합 필드 location_type . 위치를 나타내는 다양한 방법 location_type 은 다음 중 하나여야 합니다. |
|
location |
선택적 방향을 포함하여 지리적 좌표를 사용하여 지정된 지점입니다. |
place |
경로 지점과 연결된 관심 장소 장소 ID입니다. |
위치
위치 (지리적 지점 및 선택사항인 방향)를 캡슐화합니다.
JSON 표현 |
---|
{
"latLng": {
object ( |
필드 | |
---|---|
lat |
웨이포인트의 지리적 좌표입니다. |
heading |
트래픽 흐름 방향과 연결된 나침반 방향입니다. 이 값은 승하차에 사용할 도로의 측면을 지정하는 데 사용됩니다. 방향 값은 0~360이며, 여기서 0은 북쪽 방향을, 90은 동쪽 방향을 지정합니다. |
TimeWindow
시간 범위는 방문 도착 시간, 차량의 시작 시간 및 종료 시간과 같은 이벤트 시간을 제한합니다.
하드 시간 창 경계인 startTime
및 endTime
는 이벤트의 가장 빠른 시간과 가장 늦은 시간을 적용합니다(예: startTime <= event_time <=
endTime
). 조정 시간 창 하한값 softStartTime
은 이벤트가 softStartTime 전에 발생한 시간에 비례하는 비용을 발생시킴으로써 이벤트가 softStartTime
이후에 발생하도록 하는 선호도를 나타냅니다. 소프트 시간 창 상한 softEndTime
는 이벤트가 softEndTime
이전에 발생하도록 하는 선호도를 표현하며, softEndTime
이후 이벤트가 발생한 시간에 비례하여 비용을 발생시킵니다. startTime
, endTime
, softStartTime
, softEndTime
는 전역 시간 제한 (ShipmentModel.global_start_time
및 ShipmentModel.global_end_time
참고) 내에 있어야 하며 다음을 준수해야 합니다.
0 <= `startTime` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `softEndTime` <= `endTime`.
JSON 표현 |
---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
필드 | |
---|---|
start |
엄격한 시간 간격의 시작 시간입니다. 지정하지 않으면 RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
end |
엄격한 시간 범위의 종료 시간입니다. 지정하지 않으면 RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
soft |
시간 범위의 조용히 시작 시간입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
soft |
시간 범위의 조기 종료 시간입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
cost |
이벤트가 softStartTime 전에 발생하는 경우 모델의 다른 비용에 추가되는 시간당 비용으로 다음과 같이 계산됩니다.
이 비용은 양수여야 하며, 이 필드는 softStartTime가 설정된 경우에만 설정할 수 있습니다. |
cost |
이벤트가
이 비용은 양수여야 하며 |
차량
배송 문제의 차량을 모델링합니다. 배송 문제를 해결하면 이 차량의 경로가 startLocation
에서 시작하여 endLocation
에서 종료됩니다. 경로는 방문의 시퀀스입니다 (ShipmentRoute
참고).
JSON 표현 |
---|
{ "displayName": string, "travelMode": enum ( |
필드 | |
---|---|
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 |
visitTypes 문자열에서 기간으로의 매핑을 지정합니다. 기간은 지정된 방문 요청에 유형이 여러 개인 경우 지도에 유형별로 소요 시간이 추가됩니다. |
break |
이 차량에 적용할 휴식 일정을 설명합니다. 비어 있으면 이 차량에 휴식 시간이 예약되지 않습니다. |
label |
이 차량의 라벨을 지정합니다. 이 라벨은 응답에서 해당 |
ignore |
true인 경우
|
travel |
이 차량의 이동 시간을 늘리거나 줄이는 데 사용할 수 있는 배수를 지정합니다. 예를 들어 이 값을 2.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 |
도보 경로에 해당하는 이동 수단입니다. |
RouteModifiers
차량 경로를 계산할 때 충족해야 하는 선택적 조건 집합을 캡슐화합니다. 이는 Google Maps Platform Routes Preferred API의 RouteModifiers
와 유사합니다. https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers를 참고하세요.
JSON 표현 |
---|
{ "avoidTolls": boolean, "avoidHighways": boolean, "avoidFerries": boolean, "avoidIndoor": boolean } |
필드 | |
---|---|
avoid |
합당한 경우 유료 도로를 피할지 지정합니다. 유료 도로가 포함되지 않은 경로가 우선 적용됩니다. 모터가 달린 이동 수단에만 적용됩니다. |
avoid |
합리적인 경우 고속도로를 피할지 지정합니다. 고속도로가 포함되지 않은 경로가 우선됩니다. 모터가 달린 이동 수단에만 적용됩니다. |
avoid |
합당한 경우 페리를 피할지 여부를 지정합니다. 페리 이동이 포함되지 않은 경로가 우선적으로 표시됩니다. 모터가 달린 이동 수단에만 적용됩니다. |
avoid |
선택사항입니다. 합당한 경우 실내에서의 탐색을 피할지 지정합니다. 실내 탐색이 포함되지 않은 경로가 우선 적용됩니다. |
UnloadingPolicy
차량을 하역하는 방법에 관한 정책입니다. 수령과 배송이 모두 있는 배송에만 적용됩니다.
다른 배송은 unloadingPolicy
와 관계없이 경로의 어느 곳에서나 자유롭게 발생할 수 있습니다.
열거형 | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
하역 정책이 지정되지 않았습니다. 해당하는 픽업 후에만 배송이 이루어져야 합니다. |
LAST_IN_FIRST_OUT |
배송은 수거의 역순으로 진행되어야 합니다. |
FIRST_IN_FIRST_OUT |
배송은 수령과 동일한 순서로 이루어져야 함 |
LoadLimit
차량에 적용되는 적재 한도를 정의합니다(예: '이 트럭은 최대 3, 500kg만 운반할 수 있음'). loadLimits
를 참조하세요.
JSON 표현 |
---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
필드 | |
---|---|
soft |
부하의 소프트 한도입니다. |
cost |
이 차량의 경로에서 로드가 |
start |
경로 시작 시 차량의 허용되는 적재 간격입니다. |
end |
경로 끝에 있는 차량의 허용되는 적재 간격입니다. |
max |
허용되는 최대 부하입니다. |
간격
허용되는 부하량 간격입니다.
JSON 표현 |
---|
{ "min": string, "max": string } |
필드 | |
---|---|
min |
허용되는 최소 부하입니다. 0 이상이어야 합니다. 둘 다 지정된 경우 |
max |
허용되는 최대 부하입니다. 0 이상이어야 합니다. 지정하지 않으면 이 메시지에 의해 최대 부하가 제한되지 않습니다. 둘 다 지정된 경우 |
DurationLimit
차량 경로의 최대 시간을 정의하는 한도입니다. 하드 또는 소프트일 수 있습니다.
최대한 낮은 한도 필드가 정의되면 최대한 낮은 최대 한도 임곗값과 연결된 비용도 함께 정의해야 합니다.
JSON 표현 |
---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
필드 | |
---|---|
max |
최대 기간을 maxDuration으로 제한하는 하드 제한입니다. 소수점 아래가 최대 9자리까지이고 ' |
soft |
최대 기간 한도를 적용하지 않는 가벼운 한도이지만 위반하면 경로에 비용이 발생합니다. 이 비용은 동일한 단위로 모델에 정의된 다른 비용에 합산됩니다. 정의된 경우 소수점 아래가 최대 9자리까지이고 ' |
quadratic |
최대 기간 제한을 적용하지 않는 소프트 제한이지만 위반하면 경로에 기간에 비례하는 비용이 발생합니다. 이 비용은 동일한 단위로 모델에 정의된 다른 비용에 합산됩니다. 정의된 경우
소수점 아래가 최대 9자리까지이고 ' |
cost |
비용은 음수가 아니어야 합니다. |
cost |
기간이 기준점 미만인 경우 추가 비용은 0이고, 그렇지 않은 경우 비용은 다음과 같이 기간에 따라 달라집니다.
비용은 음수가 아니어야 합니다. |
DistanceLimit
이동할 수 있는 최대 거리를 정의하는 제한입니다. 하드 또는 소프트일 수 있습니다.
조정 가능 한도가 정의된 경우 softMaxMeters
및 costPerKilometerAboveSoftMax
가 모두 정의되어야 하며 음수가 아니어야 합니다.
JSON 표현 |
---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
필드 | |
---|---|
max |
거리를 최대 maxMeters로 제한하는 하드 제한입니다. 한도는 음수가 아니어야 합니다. |
soft |
최대 거리 제한을 적용하지 않는 소프트 제한이지만 위반하면 모델에 정의된 다른 비용에 동일한 단위로 더해지는 비용이 발생합니다. 정의된 경우 softMaxMeters는 maxMeters보다 작고 음수가 아니어야 합니다. |
cost |
발생한 킬로미터당 비용으로, 최대
|
cost |
거리가
비용은 음수가 아니어야 합니다. |
BreakRule
차량의 휴식 시간을 생성하는 규칙 (예: 점심 시간) 휴식 시간은 차량이 현재 위치에서 유휴 상태로 유지되고 방문을 수행할 수 없는 연속된 시간입니다. 다음과 같은 경우 중단이 발생할 수 있습니다.
- 두 방문 간의 이동 중에 (방문 직전 또는 직후의 시간이 포함되며 방문 중에는 포함되지 않음) 방문 간의 해당 이동 시간을 연장합니다.
- 또는 차량 시동 전 (휴식 중에는 차량이 시동되지 않을 수 있음)에 전송됩니다. 이 경우 차량 시동 시간에 영향을 미치지 않습니다.
- 또는 차량 종료 후 (차량 종료 시간 포함)
JSON 표현 |
---|
{ "breakRequests": [ { object ( |
필드 | |
---|---|
break |
시퀀스 휴식 시간 |
frequency |
여러 개의 |
BreakRequest
각 차량에 적용되는 휴식 시간의 순서 (즉, 수 및 순서)를 사전에 알고 있어야 합니다. 반복되는 BreakRequest
는 시퀀스를 발생해야 하는 순서대로 정의합니다. 시간 범위 (earliestStartTime
/ latestStartTime
)가 겹칠 수 있지만 순서와 호환되어야 합니다 (확인됨).
JSON 표현 |
---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
필드 | |
---|---|
earliest |
필수 항목입니다. 휴식 시간 시작의 하한 (양 끝값 포함)입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
latest |
필수 항목입니다. 휴식 시간 시작의 상한 (양 끝값 포함)입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
min |
필수 항목입니다. 시점의 최소 길이입니다. 양수여야 합니다. 소수점 아래가 최대 9자리까지이고 ' |
FrequencyConstraint
'12시간마다 1시간 이상의 휴식이 있어야 함'과 같은 최소 휴식 빈도를 적용하여 위에 지정된 휴식의 빈도와 기간을 추가로 제한할 수 있습니다. 이를 '12시간의 슬라이딩 시간 윈도우 내에 1시간 이상의 휴식 시간이 한 번 이상 있어야 함'으로 해석할 수 있다고 가정하면 이 예시는 다음 FrequencyConstraint
로 변환됩니다.
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { 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
JSON 표현 |
---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
필드 | |
---|---|
min |
필수 항목입니다. 이 제약 조건의 최소 시점 길이입니다. 0보다 크거나 같은 값입니다. 소수점 아래가 최대 9자리까지이고 ' |
max |
필수 항목입니다. 경로에서 소수점 아래가 최대 9자리까지이고 ' |
DurationDistanceMatrix
방문 및 차량 시작 위치에서 방문 및 차량 종료 위치까지의 시간 및 거리 행렬을 지정합니다.
JSON 표현 |
---|
{
"rows": [
{
object ( |
필드 | |
---|---|
rows[] |
기간 및 거리 행렬의 행을 지정합니다. |
vehicle |
이 시간 및 거리 매트릭스가 적용되는 차량을 정의하는 태그입니다. 비어 있으면 모든 차량에 적용되며 매트릭스는 하나만 있을 수 있습니다. 각 차량 시작은 정확히 하나의 행렬과 일치해야 합니다. 즉, 모든 행렬은 |
행
시간 및 거리 행렬의 행을 지정합니다.
JSON 표현 |
---|
{ "durations": [ string ], "meters": [ number ] } |
필드 | |
---|---|
durations[] |
지정된 행의 기간 값입니다. 소수점 아래가 최대 9자리까지이고 ' |
meters[] |
지정된 행의 거리 값입니다. 모델에서 거리를 참조하는 비용이나 제약 조건이 없는 경우 비워 둘 수 있습니다. 그렇지 않으면 |
TransitionAttributes
경로에서 두 번 연속 방문 간의 전환 속성을 지정합니다. 동일한 전환에 여러 개의 TransitionAttributes
가 적용될 수 있습니다. 이 경우 모든 추가 비용이 합산되고 가장 엄격한 제약 조건 또는 한도가 적용됩니다 (자연스러운 'AND' 시맨틱에 따라).
JSON 표현 |
---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
필드 | |
---|---|
src |
이 속성이 적용되는 (src->dst) 전환 집합을 정의하는 태그입니다. 소스 방문 또는 차량 시작이 일치하는 경우는 |
excluded |
|
dst |
대상 방문 또는 차량 종료가 일치하는 경우는 |
excluded |
|
cost |
이 전환을 실행하는 데 드는 비용을 지정합니다. 이 값은 모델의 다른 모든 비용과 동일한 단위로 표시되며 음수가 아니어야 합니다. 기존의 다른 모든 비용에 추가로 적용됩니다. |
cost |
이 전환을 실행하는 동안 이동한 거리에 적용되는 킬로미터당 비용을 지정합니다. 차량에 지정된 |
distance |
이 전환을 실행하는 동안 이동하는 거리에 대한 제한을 지정합니다. 2021년 6월부터는 최대 한도만 지원됩니다. |
delay |
이 전환을 실행할 때 발생하는 지연을 지정합니다. 이 지연은 항상 소스 방문을 완료한 후 도착 페이지 방문을 시작하기 전에 발생합니다. 소수점 아래가 최대 9자리까지이고 ' |
ShipmentTypeIncompatibility
shipmentType에 따라 배송 상품 간의 비호환성을 지정합니다. 동일한 경로에 호환되지 않는 배송이 표시되는 방식은 비호환성 모드에 따라 제한됩니다.
JSON 표현 |
---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
필드 | |
---|---|
types[] |
호환되지 않는 유형 목록 나열된 배송 중 |
incompatibility |
비호환성에 적용된 모드입니다. |
IncompatibilityMode
동일한 경로에서 호환되지 않는 배송의 표시가 제한되는 방식을 정의하는 모드입니다.
열거형 | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
지정되지 않은 비호환성 모드입니다. 절대로 이 값을 사용하지 마세요. |
NOT_PERFORMED_BY_SAME_VEHICLE |
이 모드에서는 유형이 호환되지 않는 두 배송이 동일한 차량을 공유할 수 없습니다. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
|
ShipmentTypeRequirement
shipmentType에 따라 배송 간 요구사항을 지정합니다. 요구사항의 세부정보는 요구사항 모드에 따라 정의됩니다.
JSON 표현 |
---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
필드 | |
---|---|
required |
|
dependent |
참고: |
requirement |
요구사항에 적용된 모드입니다. |
RequirementMode
경로에서 종속 배송의 모양을 정의하는 모드입니다.
열거형 | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
지정되지 않은 요구사항 모드입니다. 절대로 이 값을 사용하지 마세요. |
PERFORMED_BY_SAME_VEHICLE |
이 모드에서는 모든 '종속' 배송이 하나 이상의 '필수' 배송과 동일한 차량을 공유해야 합니다. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
따라서 '종속' 배송 수령에는 다음 중 하나가 있어야 합니다.
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
이전과 동일하지만 '종속' 배송의 경우 배송 시 차량에 '필수' 배송이 있어야 합니다. |
PrecedenceRule
두 이벤트 간의 우선순위 규칙 (각 이벤트는 배송 상품의 수령 또는 배송입니다). '첫 번째' 이벤트가 시작된 후 offsetDuration
이상이 지나야 '두 번째' 이벤트가 시작될 수 있습니다.
여러 우선순위가 동일한(또는 관련된) 이벤트를 참조할 수 있습니다(예: 'A 배송 후 B 수령' 및 'B 수령 후 C 수령'
또한 우선순위는 두 배송이 모두 실행되는 경우에만 적용되며 그렇지 않은 경우에는 무시됩니다.
JSON 표현 |
---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
필드 | |
---|---|
first |
'첫 번째' 이벤트가 전송인지 여부를 나타냅니다. |
second |
'두 번째' 이벤트가 전송인지 여부를 나타냅니다. |
offset |
'첫 번째' 이벤트와 '두 번째' 이벤트 간의 오프셋입니다. 음수일 수 있습니다. 소수점 아래가 최대 9자리까지이고 ' |
first |
'첫 번째' 이벤트의 배송 색인입니다. 이 필드는 지정해야 합니다. |
second |
'두 번째' 이벤트의 배송 색인입니다. 이 필드는 지정해야 합니다. |