- JSON 표현
- 배송
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- VisitRequest
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- LatLng
- 경유지
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 위치
- TimeWindow
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 차량
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- TravelMode
- UnloadingPolicy
- LoadLimit
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 간격
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- DurationLimit
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- DistanceLimit
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- BreakRule
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- BreakRequest
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- FrequencyConstraint
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- DurationDistanceMatrix
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 행
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- TransitionAttributes
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- ShipmentTypeIncompatibility
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- IncompatibilityMode
- ShipmentTypeRequirement
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- RequirementMode
- PrecedenceRule
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
배송 모델에는 여러 차량으로 진행해야 하는 배송 세트가 포함되며, 다음 항목의 합계인 전체 비용을 최소화합니다.
- 차량 라우팅 비용 (총 시간당 비용, 이동 시간당 비용, 모든 차량에 대한 고정 비용의 합계)입니다.
- 불이익을 받을 수 있습니다.
- 전 세계 배송 기간의 비용
JSON 표현 |
---|
{ "shipments": [ { object ( |
필드 | |
---|---|
shipments[] |
모델에서 수행해야 하는 배송 세트입니다. |
vehicles[] |
방문을 수행하는 데 사용할 수 있는 이동 수단 모음입니다. |
globalStartTime |
모델의 전역 시작 및 종료 시간: 이 범위를 벗어나는 시간은 유효한 것으로 간주될 수 없습니다. 모델의 기간은 1년 미만이어야 합니다. 즉,
RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
globalEndTime |
설정하지 않으면 1971년 1월 1일 00:00:00 UTC (초: 31536000, nanos: 0)가 기본값으로 사용됩니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
globalDurationCostPerHour |
'전역 기간' 전체 계획에서 가장 이른 시작 시간과 모든 차량의 가장 늦은 유효 종료 시간 간의 차이입니다. 예를 들어 사용자는 이 수량에 시간당 비용을 할당하여 가장 빠른 작업 완료를 위해 최적화할 수 있습니다. 이 비용은 |
durationDistanceMatrices[] |
모델에 사용되는 기간 및 거리 행렬을 지정합니다. 이 필드가 비어 있으면 사용 예:
|
durationDistanceMatrixSrcTags[] |
시간 및 거리 행렬의 소스를 정의하는 태그 태그는 |
durationDistanceMatrixDstTags[] |
소요 시간 및 거리 행렬의 목적지를 정의하는 태그 태그는 |
transitionAttributes[] |
모델에 추가된 전환 속성 |
shipmentTypeIncompatibilities[] |
호환되지 않는 shipment_types의 집합입니다 ( |
shipmentTypeRequirements[] |
|
precedenceRules[] |
모델에서 시행해야 하는 우선순위 규칙의 집합입니다. |
maxActiveVehicles |
최대 활성 차량 수를 제한합니다. 경로에서 하나 이상의 배송이 수행되면 차량이 활성 상태입니다. 이는 운전자가 차량보다 적고 차량 그룹이 이기종인 경우 경로 수를 제한하는 데 사용할 수 있습니다. 그러면 최적화에서 사용할 최적의 차량 하위 집합을 선택합니다. 반드시 양수여야 합니다. |
배송
단일 상품의 배송(픽업에서 배송 중 하나까지)입니다. 배송이 이행된 것으로 간주되려면 고유 차량이 수령 위치 중 한 곳을 방문하여 여유 용량을 줄인 다음, 나중에 배송 위치 중 한 곳을 방문해야 합니다(따라서 여유 용량도 적절하게 다시 늘려야 함).
JSON 표현 |
---|
{ "displayName": string, "pickups": [ { object ( |
필드 | |
---|---|
displayName |
사용자가 정의한 배송 상품의 표시 이름입니다. 최대 63자(영문 기준)까지 허용되며 UTF-8 문자를 사용할 수 있습니다. |
pickups[] |
배송과 관련된 수령 옵션 집합입니다. 지정하지 않으면 차량이 배송에 해당하는 위치만 방문하면 됩니다. |
deliveries[] |
배송과 관련된 배송 대안 모음입니다. 지정하지 않으면 차량이 승차 위치에 해당하는 위치만 방문하면 됩니다. |
loadDemands |
적재 요건 (예: 중량, 부피, 팰릿 개수 등) 맵의 키는 해당 로드의 유형을 설명하는 식별자여야 하며 단위도 포함하는 것이 이상적입니다. 예: 'weight_kg', 'volume_gallons', 'pallet_count' 등입니다. 지정된 키가 맵에 표시되지 않으면 해당 로드는 null로 간주됩니다.
|
allowedVehicleIndices[] |
이 배송을 수행할 수 있는 차량 집합입니다. 비어 있으면 모든 차량이 작업을 수행할 수 있습니다. 차량은 |
costsPerVehicle[] |
각 차량에서 배송할 때 발생하는 비용을 지정합니다. 지정할 경우 다음 중 하나를 포함해야 합니다.
이 비용은 |
costsPerVehicleIndices[] |
|
pickupToDeliveryAbsoluteDetourLimit |
승차에서 배송까지의 최단 경로와 비교하여 최대 절대 우회 시간을 지정합니다. 지정할 경우 음수가 아니어야 하며 배송에 최소한 수령과 배달이 포함되어야 합니다. 예를 들어 선택한 대체 옵션에서 선택한 대체 배송 서비스로 바로 이동하는 데 걸리는 최단 시간을 t로 설정합니다. 그런 다음
동일한 배송에 상대 및 절대 한도가 모두 지정된 경우, 가능한 각 수령/배송 쌍에 더 엄격한 한도가 적용됩니다. 2017/10부터 우회 시간은 차량과 무관한 경우에만 지원됩니다. 소수점 아래가 최대 9자리까지이고 ' |
pickupToDeliveryTimeLimit |
상품 수령 시작부터 배송 시작까지의 최대 기간을 지정합니다. 지정할 경우 음수가 아니어야 하며 배송에 최소한 수령과 배달이 포함되어야 합니다. 이는 수령 및 배달에 선택된 대체 옵션이나 차량 속도에 따라 달라지지 않습니다. 이는 최대 우회 제약 조건과 함께 지정할 수 있으며 솔루션은 두 사양을 모두 준수합니다. 소수점 아래가 최대 9자리까지이고 ' |
shipmentType |
'type'을 지정하는 비어 있지 않은 문자열입니다. 이 배송에 적용됩니다. 이 기능은 단일 방문에 지정된 |
label |
이 배송의 라벨을 지정합니다. 이 라벨은 상응하는 |
ignore |
true인 경우 배송을 건너뛰고 배송을 무시하면 모델에
|
penaltyCost |
배송이 완료되지 않으면 이 페널티가 경로의 전체 비용에 추가됩니다. 수령 및 배송 대안 중 하나를 방문하면 배송이 완료된 것으로 간주됩니다. 비용은 모델의 다른 모든 비용 관련 필드에 사용된 것과 동일한 단위로 표시할 수 있으며 양수여야 합니다. 중요: 이 페널티가 지정되지 않으면 무한한 것으로 간주됩니다. 즉, 배송이 완료되어야 합니다. |
pickupToDeliveryRelativeDetourLimit |
승차에서 배송까지의 최단 경로와 비교하여 최대 상대 우회 시간을 지정합니다. 지정할 경우 음수가 아니어야 하며 배송에 최소한 수령과 배달이 포함되어야 합니다. 예를 들어 선택한 대체 옵션에서 선택한 대체 배송 서비스로 바로 이동하는 데 걸리는 최단 시간을 t로 설정합니다. 그런 다음
동일한 배송에 상대 및 절대 한도가 모두 지정된 경우, 가능한 각 수령/배송 쌍에 더 엄격한 한도가 적용됩니다. 2017/10부터 우회 시간은 차량과 무관한 경우에만 지원됩니다. |
VisitRequest
차량으로 수행할 수 있는 방문 요청입니다. 지리적 위치 (또는 아래 2개, 아래 참조), 개점 및 폐점 시간은 시간대로 표시되며 서비스 기간 (차량이 승차 또는 하차할 때 차량이 도착한 후 차량이 보낸 시간)이 포함됩니다.
JSON 표현 |
---|
{ "arrivalLocation": { object ( |
필드 | |
---|---|
arrivalLocation |
이 |
arrivalWaypoint |
이 |
departureLocation |
이 |
departureWaypoint |
이 |
tags[] |
방문 요청에 첨부된 태그를 지정합니다. 비어 있거나 중복된 문자열은 허용되지 않습니다. |
timeWindows[] |
방문 시 도착 시간을 제한하는 기간입니다. 차량이 도착 시간 범위를 벗어나 출발할 수도 있습니다. 즉, 도착 시간과 소요 시간이 시간 범위 내에 있지 않아도 됩니다. 차량이
기간은 서로 분리되어야 합니다. 즉, 기간은 다른 기간과 겹치거나 인접해서는 안 되며 오름차순이어야 합니다.
|
duration |
방문 시간입니다. 즉, 도착과 출발 사이에 차량이 소비한 시간입니다 (가능한 대기 시간에 추가될 수 있음, 소수점 아래가 최대 9자리까지이고 ' |
cost |
차량 경로에서 이 방문 요청을 처리하는 데 드는 비용입니다. 이 방법은 배송의 대체 수령 또는 배송마다 다른 비용을 지불하는 데 사용할 수 있습니다. 이 비용은 |
loadDemands |
이 방문 요청의 로드 수요입니다. 이는 전체
|
visitTypes[] |
방문 유형을 지정합니다. 이는 차량이 이 방문을 완료하는 데 필요한 추가 시간을 할당하는 데 사용될 수 있습니다 ( 유형은 한 번만 표시될 수 있습니다. |
label |
이 |
LatLng
위도/경도 쌍을 나타내는 객체로 위도(도)와 경도(도)를 나타내는 double의 쌍으로 표현됩니다. 달리 명시되지 않는 한 이 객체는 WGS84 표준을 준수해야 합니다. 값은 정규화된 범위 내에 있어야 합니다.
JSON 표현 |
---|
{ "latitude": number, "longitude": number } |
필드 | |
---|---|
latitude |
위도입니다. 범위는 [-90.0, +90.0]입니다. |
longitude |
경도입니다. 범위는 [-180.0, +180.0]입니다. |
경유지
경유지를 캡슐화합니다. 경유지는 VisitRequests의 도착 및 출발 위치와 차량의 시작 및 끝 위치를 표시합니다.
JSON 표현 |
---|
{ "sideOfRoad": boolean, // Union field |
필드 | |
---|---|
sideOfRoad |
선택사항입니다. 이 경유지의 위치는 차량이 도로의 특정 쪽에 정차하기를 원한다는 것을 나타냅니다. 이 값을 설정하면 경로가 해당 위치를 통과하여 차량이 위치가 도로의 중심에서 편중된 도로 쪽에 정차할 수 있습니다. 'WALKING'에서는 이 옵션이 작동하지 않습니다. 이동 수단입니다. |
통합 필드 location_type . 위치를 나타내는 다양한 방법 location_type 은 다음 중 하나여야 합니다. |
|
location |
선택사항인 방위를 포함하여 지리 좌표를 사용하여 지정된 지점입니다. |
placeId |
경유지와 연결된 관심 장소 장소 ID입니다. |
위치
위치 (지리적 지점 및 선택적 제목)를 캡슐화합니다.
JSON 표현 |
---|
{
"latLng": {
object ( |
필드 | |
---|---|
latLng |
경유지의 지리 좌표입니다. |
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` <= `softStartTime` <= `endTime` and
0 <= `startTime` <= `softEndTime` <= `endTime`.
JSON 표현 |
---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
필드 | |
---|---|
startTime |
하드 타임 윈도우 시작 시간입니다. 지정하지 않으면 RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
endTime |
하드 타임 기간 종료 시간입니다. 지정하지 않으면 RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
softStartTime |
기간의 소프트 시작 시간입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
softEndTime |
기간의 소프트 종료 시간입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
costPerHourBeforeSoftStartTime |
이벤트가 softStartTime 전에 발생하는 경우 모델의 다른 비용에 추가되는 시간당 비용으로, 다음과 같이 계산됩니다.
이 비용은 양수여야 하며, 필드는 softStartTime이 설정된 경우에만 설정할 수 있습니다. |
costPerHourAfterSoftEndTime |
이벤트가
이 비용은 양수여야 하며, |
차량
배송 문제에서 차량을 모델링합니다. 배송 문제를 해결하면 차량의 경로가 startLocation
부터 endLocation
까지 생성됩니다. 경로는 일련의 방문입니다 (ShipmentRoute
참고).
JSON 표현 |
---|
{ "displayName": string, "travelMode": enum ( |
필드 | |
---|---|
displayName |
차량의 사용자 정의 표시 이름입니다. 최대 63자(영문 기준)까지 허용되며 UTF-8 문자를 사용할 수 있습니다. |
travelMode |
차량에서 사용할 수 있는 도로와 속도에 영향을 미치는 이동 수단입니다. |
startLocation |
배송 상품을 수령하기 전에 차량이 출발하는 지리적 위치입니다. 지정하지 않으면 차량이 첫 번째 승차에서 시작합니다. 배송 모델에 소요 시간 및 거리 행렬이 있으면 |
startWaypoint |
배송 상품을 수령하기 전에 차량이 출발하는 지리적 위치를 나타내는 경유지입니다. |
endLocation |
차량이 마지막 |
endWaypoint |
차량이 마지막 |
startTags[] |
차량 경로의 시작 부분에 첨부된 태그를 지정합니다. 비어 있거나 중복된 문자열은 허용되지 않습니다. |
endTags[] |
차량 경로의 끝에 연결된 태그를 지정합니다. 비어 있거나 중복된 문자열은 허용되지 않습니다. |
startTimeWindows[] |
차량이 출발 위치를 떠날 수 있는 기간입니다. 글로벌 시간 제한 내에 있어야 합니다 ( 동일한 반복 필드에 속하는 기간은 분리되어야 합니다. 즉, 기간이 다른 기간과 겹치거나 인접할 수 없으며 시간 순서여야 합니다.
|
endTimeWindows[] |
차량이 종료 위치에 도착할 수 있는 기간입니다. 글로벌 시간 제한 내에 있어야 합니다 ( 동일한 반복 필드에 속하는 기간은 분리되어야 합니다. 즉, 기간이 다른 기간과 겹치거나 인접할 수 없으며 시간 순서여야 합니다.
|
unloadingPolicy |
차량에 적용되는 언로드 정책입니다. |
loadLimits |
차량의 용량 (예: 중량, 부피, 팰릿 수) 맵의 키는
|
costPerHour |
차량 비용: 모든 비용은 합산되며 차량 경로의 시간당 비용입니다. 이 비용은 경로에서 소요된 총 시간에 적용되며 이동 시간, 대기 시간, 방문 시간이 포함됩니다. |
costPerTraveledHour |
차량 경로의 이동 시간당 비용입니다. 이 비용은 특정 노선에서 이용하는 이동 시간 (예: |
costPerKilometer |
차량 경로의 킬로미터당 비용입니다. 이 비용은 |
fixedCost |
이 차량을 배송 처리에 사용하는 경우 고정 비용이 적용됩니다. |
usedIfRouteIsEmpty |
이 필드는 경로에 배송이 없는 차량에만 적용됩니다. 이 경우 차량을 중고품으로 간주해야 하는지 여부를 나타냅니다. true인 경우 배송을 제공하지 않더라도 차량이 출발 지점에서 도착 위치로 이동하며 출발 시점부터 소요 시간 및 거리 비용이 발생합니다. --> 최종 이동이 고려됩니다 그렇지 않으면 출발 지점에서 도착 위치까지 이동하지 않으며 이 차량에 예정된 |
routeDurationLimit |
차량 경로의 총 시간에 적용되는 제한입니다. 지정된 |
travelDurationLimit |
차량 경로의 이동 시간에 적용되는 한도입니다. 지정된 |
routeDistanceLimit |
차량 경로의 총 거리에 적용됩니다. 지정된 |
extraVisitDurationForVisitType |
visitTypes 문자열에서 기간까지의 매핑을 지정합니다. 기간은 지정된 방문 요청에 여러 유형이 있는 경우 지도의 각 유형에 시간이 추가됩니다.
|
breakRule |
이 차량에 적용될 광고 시간 일정을 설명합니다. 비어 있으면 차량에 휴식이 예약되지 않습니다. |
label |
차량의 라벨을 지정합니다. 이 라벨은 응답에서 상응하는 |
ignore |
true인 경우
|
travelDurationMultiple |
차량의 이동 시간을 늘리거나 줄이는 데 사용할 수 있는 곱셈 계수를 지정합니다. 예를 들어 이 값을 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 |
운전경로에 해당하는 이동수단 (car, ...)입니다. |
WALKING |
도보 경로에 해당하는 이동 모드입니다. |
UnloadingPolicy
차량 하차 방법에 대한 정책입니다. 수령과 배달이 모두 가능한 배송에만 적용됩니다.
기타 배송은 unloadingPolicy
에 관계없이 경로상의 어느 곳에서나 자유롭게 배송됩니다.
열거형 | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
로드 취소 정책이 지정되지 않았습니다. 배송은 해당 픽업 후에 이루어져야 합니다. |
LAST_IN_FIRST_OUT |
수령 순서와 반대로 배송해야 합니다. |
FIRST_IN_FIRST_OUT |
배송은 수령과 동일한 순서로 이루어져야 합니다. |
LoadLimit
차량에 적용되는 부하 제한을 정의합니다. 예: "이 트럭은 최대 3,500kg까지만 운반할 수 있습니다." loadLimits
를 참조하세요.
JSON 표현 |
---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
필드 | |
---|---|
softMaxLoad |
소프트 부하 한도입니다. |
costPerUnitAboveSoftMax |
이 차량의 경로를 따라 짐이 |
startLoadInterval |
경로 시작 지점에서 차량에 허용되는 적재 간격입니다. |
endLoadInterval |
경로 끝 지점에서 차량에 허용되는 적재 간격입니다. |
maxLoad |
허용되는 최대 부하 양입니다. |
간격
허용되는 로드량의 간격입니다.
JSON 표현 |
---|
{ "min": string, "max": string } |
필드 | |
---|---|
min |
|
max |
허용되는 최대 부하입니다. 0 이상이어야 합니다. 지정하지 않으면 최대 로드에 이 메시지가 제한되지 않습니다. 둘 다 지정된 경우 |
DurationLimit
차량 경로의 최대 시간을 정의하는 한도입니다. 단단하거나 부드러울 수 있습니다.
소프트 한도 필드가 정의되면 소프트 맥스 임곗값과 관련 비용을 모두 함께 정의해야 합니다.
JSON 표현 |
---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
필드 | |
---|---|
maxDuration |
기간을 maxDuration으로 제한하는 엄격한 제한입니다. 소수점 아래가 최대 9자리까지이고 ' |
softMaxDuration |
최대 기간 제한을 시행하지 않는 소프트 한도로, 이를 위반할 경우 경로에 비용이 발생합니다. 이 비용은 모델에서 동일한 단위로 정의된 다른 비용에 추가됩니다. 정의된 경우 소수점 아래가 최대 9자리까지이고 ' |
quadraticSoftMaxDuration |
최대 기간 제한을 시행하지 않는 소프트 한도로, 이를 위반할 경우 경로에 2차 비용이 발생합니다. 이 비용은 모델에서 동일한 단위로 정의된 다른 비용에 추가됩니다. 정의된 경우
소수점 아래가 최대 9자리까지이고 ' |
costPerHourAfterSoftMax |
비용은 음수가 아니어야 합니다. |
costPerSquareHourAfterQuadraticSoftMax |
기간이 임곗값 미만이면 추가 비용은 0이고, 그렇지 않은 경우에는 다음과 같이 기간에 따라 비용이 달라집니다.
비용은 음수가 아니어야 합니다. |
DistanceLimit
이동할 수 있는 최대 거리를 정의하는 제한입니다. 단단하거나 부드러울 수 있습니다.
유연한 한도가 정의된 경우 softMaxMeters
와 costPerKilometerAboveSoftMax
가 모두 정의되어야 하며 음수가 아니어야 합니다.
JSON 표현 |
---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number } |
필드 | |
---|---|
maxMeters |
거리를 maxMeters 이하로 제한하는 엄격한 제한입니다. 한도는 음수가 아니어야 합니다. |
softMaxMeters |
최대 거리 제한을 시행하지 않지만 위반 시 동일한 단위로 모델에서 정의된 다른 비용에 합산되는 비용이 소프트 한도로 발생합니다. 정의된 경우 softMaxMeters는 maxMeters보다 작아야 하며 음수가 아니어야 합니다. |
costPerKilometerAboveSoftMax |
거리가 한도(
비용은 음수가 아니어야 합니다. |
BreakRule
차량의 휴식 시간 (예: 점심시간)을 생성하는 규칙입니다. 휴식 시간은 차량이 현재 위치에서 유휴 상태로 유지되어 방문할 수 없는 연속 기간입니다. 중단이 발생할 수 있습니다.
- 두 방문 사이의 이동 시간 (방문 직전 또는 방문 직후의 시간이 포함되지만 방문 도중의 시간은 포함되지 않음)의 경우 각 방문 사이의 운송 시간을 연장합니다.
- 또는 차량 시동 전 (중단 중간에 차량 시동을 걸 수 없음) 시동을 거는 경우 차량 시동 시간에 영향을 주지 않습니다.
- 또는 차량이 종료된 후 (차량 종료 시간과 함께)
JSON 표현 |
---|
{ "breakRequests": [ { object ( |
필드 | |
---|---|
breakRequests[] |
광고 시점 시퀀스 |
frequencyConstraints[] |
여러 |
BreakRequest
각 차량에 적용되는 중단 순서 (예: 번호 및 순서)는 미리 알고 있어야 합니다. 반복되는 BreakRequest
는 발생해야 하는 순서대로 해당 시퀀스를 정의합니다. 기간 (earliestStartTime
/ latestStartTime
)은 중복될 수 있지만 주문과 호환되어야 합니다 (선택됨).
JSON 표현 |
---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
필드 | |
---|---|
earliestStartTime |
필수 항목입니다. 광고 시점 시작 부분의 하한값 (포함)입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
latestStartTime |
필수 항목입니다. 광고 시점 시작 부분의 상한값 (포함)입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
minDuration |
필수 항목입니다. 최소 광고 시간. 양수여야 합니다. 소수점 아래가 최대 9자리까지이고 ' |
FrequencyConstraint
'12시간마다 최소 1시간의 휴식 시간이 있어야 합니다'와 같이 최소 광고 시점 빈도를 적용하여 위에 지정된 광고 시점의 빈도와 시간을 추가로 제한할 수 있습니다. '12시간의 슬라이딩 시간 기간 내에 최소 1시간의 휴식 시간이 하나 이상 있어야 합니다'라고 해석할 수 있다고 가정하면 이 예는 다음 FrequencyConstraint
로 변환됩니다.
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { 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
JSON 표현 |
---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
필드 | |
---|---|
minBreakDuration |
필수 항목입니다. 이 제약조건의 최소 중단 지속 시간입니다. 음수가 아닙니다. 소수점 아래가 최대 9자리까지이고 ' |
maxInterBreakDuration |
필수 항목입니다. 경로에서 최소한 소수점 아래가 최대 9자리까지이고 ' |
DurationDistanceMatrix
방문 및 차량 출발 위치부터 차량 도착 위치까지 소요 시간 및 거리 행렬을 지정합니다.
JSON 표현 |
---|
{
"rows": [
{
object ( |
필드 | |
---|---|
rows[] |
소요 시간 및 거리 행렬의 행을 지정합니다. 요소가 |
vehicleStartTag |
이 소요 시간 및 거리 행렬이 적용되는 차량을 정의하는 태그입니다. 비어 있으면 모든 차량에 적용되며 단일 매트릭스만 있을 수 있습니다. 각 차량 시작은 정확히 하나의 행렬과 일치해야 합니다. 즉, 모든 행렬의 |
행
소요 시간 및 거리 행렬의 행을 지정합니다.
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 ( |
필드 | |
---|---|
srcTag |
이러한 속성이 적용되는 (src->dst) 전환 집합을 정의하는 태그입니다. 소스 방문 또는 차량 시작은 |
excludedSrcTag |
|
dstTag |
도착지 방문 또는 차량 끝은 |
excludedDstTag |
|
cost |
이 전환을 수행하기 위한 비용을 지정합니다. 이 비용은 모델의 다른 모든 비용과 같은 단위이며 음수가 아니어야 합니다. 이 서비스는 다른 모든 기존 비용 위에 적용됩니다. |
costPerKilometer |
이 전환 중에 이동한 거리에 적용되는 킬로미터당 비용을 지정합니다. 차량에 지정된 |
distanceLimit |
이 전환을 수행하는 동안 이동된 거리에 대한 제한을 지정합니다. 2021년 6월 현재 소프트 한도만 지원됩니다. |
delay |
이 전환을 수행할 때 발생하는 지연을 지정합니다. 이러한 지연은 항상 소스 방문을 마친 후 및 도착 페이지 방문을 시작하기 전에 발생합니다. 소수점 아래가 최대 9자리까지이고 ' |
ShipmentTypeIncompatibility
shipmentType에 따라 배송 간의 비호환성을 지정합니다. 동일한 경로에서 호환되지 않는 배송이 표시되는 것은 비호환성 모드로 인해 제한됩니다.
JSON 표현 |
---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
필드 | |
---|---|
types[] |
호환되지 않는 유형 목록입니다. 나열된 배송 중 |
incompatibilityMode |
비호환성에 적용된 모드입니다. |
IncompatibilityMode
동일한 경로에서 호환되지 않는 배송의 모양이 제한되는 방식을 정의하는 모드
열거형 | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
지정되지 않은 비호환성 모드입니다. 절대로 이 값을 사용하지 마세요. |
NOT_PERFORMED_BY_SAME_VEHICLE |
이 모드에서는 호환되지 않는 유형의 배송 두 개가 동일한 차량을 공유할 수 없습니다. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
|
ShipmentTypeRequirement
shipmentType을 기준으로 배송 간의 요구사항을 지정합니다. 요구사항의 세부사항은 요구사항 모드로 정의됩니다.
JSON 표현 |
---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
필드 | |
---|---|
requiredShipmentTypeAlternatives[] |
|
dependentShipmentTypes[] |
참고: |
requirementMode |
요구사항에 적용되는 모드입니다. |
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 } |
필드 | |
---|---|
firstIsDelivery |
'첫 번째' 이벤트입니다. |
secondIsDelivery |
'두 번째' 이벤트입니다. |
offsetDuration |
'first' 사이의 오프셋 'second'는 이벤트를 처리합니다. 음수일 수 있습니다. 소수점 아래가 최대 9자리까지이고 ' |
firstIndex |
'first'의 배송 색인 이벤트를 처리합니다. 이 필드를 지정해야 합니다. |
secondIndex |
'second'의 배송 색인 이벤트를 처리합니다. 이 필드를 지정해야 합니다. |