- JSON 표현
- Shipment
- VisitRequest
- LatLng
- 경유지
- 위치
- TimeWindow
- 차량
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- Interval
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- 행
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
배송 모델에는 차량 세트로 실행해야 하는 배송 세트가 포함되며, 전체 비용은 다음의 합계입니다.
- 차량 경로 설정 비용 (총 시간당 비용, 이동 시간당 비용, 모든 차량의 고정 비용의 합계)
- 미실행 배송 페널티
- 전 세계 배송 기간의 비용
JSON 표현 |
---|
{ "shipments": [ { object ( |
필드 | |
---|---|
shipments[] |
모델에서 실행해야 하는 배송 세트입니다. |
vehicles[] |
방문을 수행하는 데 사용할 수 있는 차량 세트입니다. |
global |
모델의 전 세계 시작 및 종료 시간: 이 범위를 벗어나는 시간은 유효하지 않은 것으로 간주됩니다. 모델의 기간은 1년 미만이어야 합니다. 즉,
생성된 출력은 항상 Z-정규화되고 소수점 이하 자릿수가 0, 3, 6 또는 9인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 |
global |
설정하지 않으면 1971년 1월 1일 00:00:00 UTC (즉, 초: 31536000, 나노: 0)가 기본값으로 사용됩니다. 생성된 출력은 항상 Z-정규화되고 소수점 이하 자릿수가 0, 3, 6 또는 9인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 |
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입니다. 장소 ID를 사용하여 VisitRequest의 도착 또는 출발 위치를 지정할 때는 장소로 이동할 때의 LatLng 위치를 결정할 만큼 구체적인 장소 ID를 사용하세요. 예를 들어 건물을 나타내는 장소 ID는 적합하지만 도로를 나타내는 장소 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 |
엄격한 시간 간격의 시작 시간입니다. 지정하지 않으면 생성된 출력은 항상 Z-정규화되고 소수점 이하 자릿수가 0, 3, 6 또는 9인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 |
end |
엄격한 시간 범위의 종료 시간입니다. 지정하지 않으면 생성된 출력은 항상 Z-정규화되고 소수점 이하 자릿수가 0, 3, 6 또는 9인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 |
soft |
시간 범위의 조용히 시작 시간입니다. 생성된 출력은 항상 Z-정규화되고 소수점 이하 자릿수가 0, 3, 6 또는 9인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 |
soft |
시간 범위의 조기 종료 시간입니다. 생성된 출력은 항상 Z-정규화되고 소수점 이하 자릿수가 0, 3, 6 또는 9인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 |
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 API 이동 수단의 하위 집합이어야 합니다. https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode를 참고하세요.
참고: WALKING
경로는 베타 버전이며 명확한 인도나 보행자 전용 도로가 누락될 수 있습니다. 앱에 표시하는 모든 도보 경로에 대해 사용자에게 이 경고를 표시해야 합니다.
열거형 | |
---|---|
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 |
필수입니다. 휴식 시간 시작의 하한 (양 끝값 포함)입니다. 생성된 출력은 항상 Z-정규화되고 소수점 이하 자릿수가 0, 3, 6 또는 9인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 |
latest |
필수입니다. 휴식 시간 시작의 상한 (양 끝값 포함)입니다. 생성된 출력은 항상 Z-정규화되고 소수점 이하 자릿수가 0, 3, 6 또는 9인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 |
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
이상이 지나야 '두 번째' 이벤트가 시작될 수 있습니다.
여러 우선순위가 동일한(또는 관련된) 이벤트를 참조할 수 있습니다(예: 'B 수령이 A 배송 후에 발생' 및 'C 수령이 B 수령 후에 발생'
또한 우선순위는 두 배송이 모두 실행되는 경우에만 적용되며 그렇지 않은 경우에는 무시됩니다.
JSON 표현 |
---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
필드 | |
---|---|
first |
'첫 번째' 이벤트가 전송인지 여부를 나타냅니다. |
second |
'두 번째' 이벤트가 전송인지 여부를 나타냅니다. |
offset |
'첫 번째' 이벤트와 '두 번째' 이벤트 간의 오프셋입니다. 음수일 수 있습니다. 소수점 아래가 최대 9자리까지이고 ' |
first |
'첫 번째' 이벤트의 배송 색인입니다. 이 필드는 지정해야 합니다. |
second |
'두 번째' 이벤트의 배송 색인입니다. 이 필드는 지정해야 합니다. |