프로덕션 참고사항
편의상 이 가이드에서는 REST 및 JSON을 사용합니다. 하지만 프로덕션 환경에서는 성능 향상을 위해 전반적으로 gRPC 및 클라이언트 라이브러리를 사용하는 것이 좋습니다. 자세한 내용은 Route Optimization API 클라이언트 라이브러리를 참고하세요.
첫 번째 요청하기에서 요청을 보내면 최적화 도구가 OptimizeToursResponse를 반환합니다. 이 응답은 운전자가 따라야 할 경로 계획입니다. 이 가이드에서는 이를 읽는 방법을 보여줍니다.
경로 계획 요약
애견 유치원 시나리오의 경우 최적화 도구는 버니즈 마운틴 도그와 치와와를 밴에 할당하고 저먼 셰퍼드는 건너뜁니다. 운전자의 경로 계획은 다음과 같습니다.
- 어린이집에서 오전 7시 55분에 근무를 시작합니다.
- 오전 8시 20분에 코이트 타워 근처에서 버니즈 마운틴 도그를 데리러 가세요.
- 오전 8시 58분에 South Sunset Playground Park에서 치와와를 데리러 갑니다.
- 오전 9시 24분에 어린이집에 다시 도착하여 오전 9시 30분에 등원 시간이 시작될 때까지 기다립니다.
- 오전 9시 30분에 버니즈 마운틴 도그를 맡깁니다.
- 오전 9시 35분에 치와와를 맡깁니다.
- 오전 9시 40분에 교대 근무를 종료합니다.
경로 계획 비용은 저먼 셰퍼드를 건너뛴 것에 대한 페널티 $100를 포함하여 $147.22입니다.
결과를 확인하려면 응답을 전체 응답 예시와 비교합니다. 이동 시간과 거리는 현재 도로 데이터에 따라 달라지므로 결과가 약간 다를 수 있습니다.
전체 응답 예시
{ "routes": [ { "vehicleStartTime": "2024-02-13T15:55:04Z", "vehicleEndTime": "2024-02-13T17:40:00Z", "visits": [ { "isPickup": true, "startTime": "2024-02-13T16:20:00Z", "detour": "0s", "shipmentLabel": "Bernese mountain dog", "visitType": "PICKUP_SHIPMENT" }, { "shipmentIndex": 1, "isPickup": true, "startTime": "2024-02-13T16:58:12Z", "detour": "2600s", "shipmentLabel": "Chihuahua", "visitType": "PICKUP_SHIPMENT" }, { "startTime": "2024-02-13T17:30:00Z", "detour": "2297s", "shipmentLabel": "Bernese mountain dog", "visitType": "DELIVER_SHIPMENT" }, { "shipmentIndex": 1, "startTime": "2024-02-13T17:35:00Z", "detour": "656s", "shipmentLabel": "Chihuahua", "visitType": "DELIVER_SHIPMENT" } ], "transitions": [ { "travelDuration": "1496s", "travelDistanceMeters": 7082, "waitDuration": "0s", "totalDuration": "1496s", "startTime": "2024-02-13T15:55:04Z" }, { "travelDuration": "1992s", "travelDistanceMeters": 16589, "waitDuration": "0s", "totalDuration": "1992s", "startTime": "2024-02-13T16:25:00Z" }, { "travelDuration": "1252s", "travelDistanceMeters": 7860, "waitDuration": "356s", "totalDuration": "1608s", "startTime": "2024-02-13T17:03:12Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:35:00Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:40:00Z" } ], "metrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "routeCosts": { "model.vehicles.cost_per_hour": 47.22 }, "routeTotalCost": 47.22, "vehicleFullness": { "maxFullness": 0.3497777777777778, "activeSpan": 0.3497777777777778 } } ], "skippedShipments": [ { "index": 2, "label": "German shepherd", "penaltyCost": 100 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2024-02-13T15:55:04Z", "latestVehicleEndTime": "2024-02-13T17:40:00Z", "totalCost": 147.22, "costs": { "model.vehicles.cost_per_hour": 47.22, "model.shipments.penalty_cost": 100 } } }
응답 구조
OptimizeToursResponse에는 두 가지 주요 구성요소가 포함되어 있습니다.
routes: 각 수령 및 배송의 순서와 시간을 포함한 차량의 각 차량에 대한 경로 계획입니다. 밴이 한 대 있으므로 경로 계획이 하나 있습니다.metrics: 총비용, 소요 시간, 거리를 포함한 전체 경로 계획의 요약입니다.
최적화 도구는 저먼 셰퍼드를 건너뛰므로 응답에 skippedShipments도 포함됩니다.
다음 섹션에서는 응답에서 경로 계획 요약의 각 세부정보를 찾을 수 있는 위치를 보여줍니다.
어떤 차량이 어떤 경로를 운행하나요?
최적화 도구는 요청의 vehicles 순서에 해당하는 경로 계획 (routes 배열)을 생성합니다.
vehicleIndex 필드는 0부터 시작하는 위치를 기준으로 각 차량을 식별합니다. 이 예시에서 밴의 위치는 0입니다. vehicleStartTime 및 vehicleEndTime 필드는 운전자에게 교대 근무를 시작하고 종료할 시점을 알려줍니다.
Route Optimization API는 요청의 오프셋과 관계없이 Z 서픽스로 표시된 UTC 타임스탬프를 반환합니다. 샌프란시스코 시간은 8시간을 뺍니다. 다음 코드 샘플과 같이 밴의 교대 근무는 오전 7시 55분부터 오전 9시 40분까지입니다.
{
"routes": [
{
// "vehicleIndex": 0, // Omitted in actual JSON response because it's 0
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
}
]
...
}
승차 및 하차 순서는 어떻게 되나요?
각 경로 내에서 visits 배열에는 할당된 차량의 모든 수령 및 배송이 시간순으로 포함됩니다.
각 방문의 shipmentIndex는 요청에서 배송의 0 기반 위치입니다. 0는 버니즈 마운틴 도그이고 1는 치와와입니다. shipmentLabel 필드에는 각 배송에 설정한 라벨이 표시됩니다.
승차와 하차 (또는 배송)를 구분하려면 visitType 또는 isPickup 필드를 확인하면 됩니다.
visitType: 방문 작업을 명시적으로 정의합니다.- 수령:
visitType="PICKUP_SHIPMENT" - 배송:
visitType="DELIVER_SHIPMENT"
- 수령:
isPickup: 불리언 도우미 필드입니다.- 수령:
isPickup=true - 배송:
isPickup=false(JSON에서 생략됨)
- 수령:
정확한 이벤트 순서와 각 위치의 예상 도착 시간을 확인하려면 visits 배열을 순서대로 읽습니다. 다음 표에서는 shipmentIndex, isPickup 또는 visitType, startTime 필드의 순서와 값을 기반으로 한 경로 계획 작업을 보여줍니다.
| 시퀀스 | shipmentIndex 값 |
isPickup 또는 visitType 값 |
startTime 값 (UTC) |
작업 |
|---|---|---|---|---|
| 첫 방문 | 0 (JSON에서 생략됨) | 참 또는 PICKUP_SHIPMENT |
2024-02-13T16:20:00Z | 오전 8시 20분에 버니즈 마운틴 도그를 데리러 가야 해. |
| 두 번째 방문 | 1 | 참 또는 PICKUP_SHIPMENT |
2024-02-13T16:58:12Z | 오전 8시 58분에 치와와를 데리러 갑니다. |
| 세 번째 방문 | 0 (JSON에서 생략됨) | False (생략됨) 또는 DELIVER_SHIPMENT |
2024-02-13T17:30:00Z | 오전 9시 30분에 버니즈 마운틴 도그를 애견 유치원에 데려다주기 |
| 네 번째 방문 | 1 | False (생략됨) 또는 DELIVER_SHIPMENT |
2024-02-13T17:35:00Z | 오전 9시 35분에 치와와를 애견 유치원에 데려다주세요. |
다음 코드 샘플은 응답에서 이 시퀀스를 제공하는 방법을 보여줍니다.
{
"routes": [
{
"visits": [
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
"isPickup": true,
"startTime": "2024-02-13T16:20:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "PICKUP_SHIPMENT"
},
{
"shipmentIndex": 1,
"isPickup": true,
"startTime": "2024-02-13T16:58:12Z",
"shipmentLabel": "Chihuahua",
"visitType": "PICKUP_SHIPMENT"
},
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:30:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "DELIVER_SHIPMENT"
},
{
"shipmentIndex": 1,
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:35:00Z",
"shipmentLabel": "Chihuahua",
"visitType": "DELIVER_SHIPMENT"
}
]
}
]
}
각 방문에는 visitRequestIndex도 있습니다. 이는 최적화 도구가 배송에 선택한 수령 또는 하차 옵션의 0 기반 위치입니다. 이 시나리오의 각 반려견에는 승차 옵션과 하차 옵션이 하나씩만 있으므로 visitRequestIndex는 항상 0이며 응답에서 생략됩니다.
방문 사이에 어떤 일이 발생하나요?
각 경로 내에서 transitions 배열은 방문 간 이동 세부정보를 나열합니다. visits 및 transitions는 별도의 목록이지만 다음과 같이 시간순으로 인터리브 처리됩니다.
transitions[0](시작부터 첫 방문까지 운전)visits[0](첫 방문)transitions[1](첫 번째 방문에서 두 번째 방문으로 유도)visits[1](두 번째 방문)...visits[N-1](마지막 방문, 여기서 N은 총 방문 횟수)transitions[N](마지막 방문에서 끝까지 이동)
두 배열의 startTime 필드를 확인하여 경로의 타임라인을 확인할 수 있습니다. 전환의 startTime은 운전자가 이동을 시작하는 시점이고 방문의 startTime은 운전자가 승차 또는 하차를 시작하는 시점입니다.
각 전환에는 위치 간 예상 운전 시간과 거리가 표시됩니다.
다음 표에서는 transitions 및 visits 필드를 애견 유치원 시나리오의 시간순 경로 작업에 매핑합니다.
| 시퀀스 | 필드 이름 | startTime 값 (UTC) |
세부정보 | 작업 |
|---|---|---|---|---|
| 첫 번째 전환 | transitions[0] |
2024-02-13T15:55:04Z |
travelDuration: 1496stravelDistanceMeters: 7082 |
버니즈 마운틴 도그를 데리러 가기 위해 어린이집에서 7km를 25분 동안 운전합니다. 교대 근무는 오전 7시 55분에 시작됩니다. |
| 첫 방문 | visits[0] |
2024-02-13T16:20:00Z |
shipmentIndex: 0 (JSON에서 생략됨)isPickup: True |
오전 8시 20분부터 버니즈 마운틴 도그를 데리러 갑니다. 방문 시간은 5분입니다. |
| 두 번째 전환 | transitions[1] |
2024-02-13T16:25:00Z |
travelDuration: 1992stravelDistanceMeters: 16589 |
오전 8시 25분에 코이트 타워에서 치와와를 데리러 가기 위해 17km를 33분 동안 운전합니다. |
| 두 번째 방문 | visits[1] |
2024-02-13T16:58:12Z |
shipmentIndex: 1isPickup: True |
오전 8시 58분에 치와와를 데리러 갑니다. 방문 시간은 5분입니다. |
| 세 번째 전환 | transitions[2] |
2024-02-13T17:03:12Z |
travelDuration: 1252초travelDistanceMeters: 7860waitDuration: 356초 |
오전 9시 3분에 South Sunset Playground에서 어린이집까지 8km를 21분 동안 운전합니다. 오전 9시 24분에 도착하여 하차 시간이 시작될 때까지 6분 동안 기다립니다. |
| 세 번째 방문 | visits[2] |
2024-02-13T17:30:00Z |
shipmentIndex: 0 (JSON에서 생략됨)isPickup: False (JSON에서 생략됨) |
오전 9시 30분부터 반려견 유치원에 버니즈 마운틴 도그를 맡깁니다. 방문 시간은 5분입니다. |
| 네 번째 전환 | transitions[3] |
2024-02-13T17:35:00Z |
travelDuration: 0초travelDistanceMeters: 0 (JSON에서 생략됨) |
운전하지 마세요. 오전 9시 35분에 치와와를 애견 유치원에 맡길 준비가 되었습니다. |
| 네 번째 방문 | visits[3] |
2024-02-13T17:35:00Z |
shipmentIndex: 1isPickup: False (JSON에서 생략됨) |
오전 9시 35분부터 치와와를 애견 유치원에 맡깁니다. 5분 정도 걸립니다. |
| 다섯 번째 전환 | transitions[4] |
2024-02-13T17:40:00Z |
travelDuration: 0초travelDistanceMeters: 0 (JSON에서 생략됨) |
운전하지 마세요. 운전자가 오전 9시 40분에 교대 근무를 종료합니다. |
다음 코드 샘플은 응답이 transitions[0] 및 transitions[1]에 이 시퀀스를 제공하는 방법을 보여줍니다.
{
"routes": [
{
"transitions": [
{
"travelDuration": "1496s",
"travelDistanceMeters": 7082,
"waitDuration": "0s",
"totalDuration": "1496s",
"startTime": "2024-02-13T15:55:04Z"
},
{
"travelDuration": "1992s",
"travelDistanceMeters": 16589,
"waitDuration": "0s",
"totalDuration": "1992s",
"startTime": "2024-02-13T16:25:00Z"
},
...
]
}
]
}
경로 비용은 얼마인가요?
특정 차량의 비용이 필요한지 또는 전체 차량의 총비용이 필요한지에 따라 응답의 여러 필드를 확인할 수 있습니다.
다음 표에는 응답에서 비용 정보를 찾을 수 있는 모든 방법이 나와 있습니다.
| 부모 | 매개변수 | 범위 | 설명 |
|---|---|---|---|
ShipmentRoute |
routeCosts |
경로별 | 해당 경로의 특정 비용 구성요소 (예: 시간당 비용)에 대한 세부정보입니다. |
routeTotalCost |
경로별 | 특정 경로에 대해 계산된 총비용입니다. | |
Metrics |
totalCost |
전체 (모든 경로) | 솔루션에 있는 모든 경로의 집계된 총비용입니다. |
costs |
전체 (모든 경로) | 솔루션의 모든 경로에 대한 집계된 비용 구성요소의 분석입니다. |
routeCosts 및 costs에 지정된 비용은 요청에 지정한 비용 제약조건을 반영합니다. 자세한 내용은 비용 모델 주요 개념 문서를 참조하세요.
이 반려견 유치원 시나리오에서는 건너뛴 배송이 있으므로 경로당 비용과 집계된 총비용이 다릅니다. 경로 비용에는 해당 경로와 관련된 비용 (운전자 임금)만 포함되지만 집계된 총비용에는 건너뛴 배송에 대한 페널티도 포함됩니다. 다음 코드 샘플은 응답에서 이러한 값을 찾을 수 있는 위치를 보여줍니다.
{
"routes": [
{
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
"routeCosts": {
"model.vehicles.cost_per_hour": 47.22
},
"routeTotalCost": 47.22
}
],
"metrics": {
"totalCost": 147.22,
"costs": {
"model.shipments.penalty_cost": 100,
"model.vehicles.cost_per_hour": 47.22
},
...
}
}
경로 계획에 따르면 운전자는 오전 7시 55분부터 오전 9시 40분까지 약 1시간 45분 (6,296초) 동안 밴을 운행합니다. 정의된 시간당 요율이 $27인 경우 경로 비용은 $47.22입니다. 최적화 도구가 저먼 셰퍼드 배송을 건너뛰었으므로 페널티 비용 $100가 추가되어 총 비용은 $147.22가 됩니다.
배송이 건너뛰어진 이유는 무엇인가요?
최적화 도구는 skippedShipments 배열에서 수행하지 않는 배송을 나열합니다. 배송을 건너뛰는 이유는 penaltyCost 설정 여부에 따라 달라집니다.
- 필수 배송 (
penaltyCost없음): 최적화 도구는 수행 비용이 많이 든다는 이유로 이러한 배송을 건너뛰지 않습니다. 예를 들어 기간이 다른 배송과 충돌하여 배송을 경로에 맞출 수 없는 경우에만 배송을 건너뜁니다. - 선택적 배송 (
penaltyCost포함): 최적화 도구는 배송을 수행하는 비용이 페널티보다 큰 경우에도 이를 건너뛸 수 있습니다. 다른 배송보다 일부 배송을 우선시하도록 다양한 페널티 비용을 설정할 수 있습니다.
이 시나리오에서는 저먼 셰퍼드의 픽업 기간이 버니즈 마운틴 도그의 기간과 충돌합니다. 코이트 타워와 랜드 엔드는 25분 떨어져 있으므로 운전기사는 20분 이내에 두 승객을 모두 태울 수 없습니다. 최적화 도구는 이 중 하나를 건너뛰어야 합니다. 저먼 셰퍼드의 페널티 비용이 더 낮기 때문에 (일반 고객의 경우 $1,000인 반면 $100) 최적화 도구는 이를 건너뛰고 $100의 페널티를 발생시킵니다.
다음 코드 샘플은 응답의 skippedShipments 객체를 보여줍니다.
{
...
"skippedShipments": [
{
"index": 2,
"label": "German shepherd",
"penaltyCost": 100
}
],
...
}
응답의 skippedShipments 객체에는 다음 필드가 포함됩니다.
index: 요청에 있는 배송의 0부터 시작하는 색인입니다 (세 번째 배송의 경우 2).label: 요청에 지정한 라벨 ('German shepherd')입니다.penaltyCost: 요청에 지정한 페널티 비용으로, API가 총비용에 추가합니다.
최적화 도구가 배송을 건너뛰지 않도록 하려면 충돌을 일으키는 제약조건을 완화하세요. 예를 들어 저먼 셰퍼드 소유자에게 더 유연한 픽업 시간을 요청한 다음 요청에서 해당 픽업의 timeWindows를 업데이트합니다.
예시의 응답 필드
다음 표에서는 예시 시나리오의 OptimizeToursResponse에 반환된 모든 응답 필드를 설명합니다. 경로 계획을 이해하기 위해 모든 필드를 사용할 필요는 없지만, 이러한 필드를 분석하여 비즈니스 요구사항에 맞게 OptimizeToursRequest를 조정하는 방법을 결정할 수 있습니다. 자세한 내용은 경로 계획 수명 주기를 참고하세요.
상위 요소 또는 텍스트 검색으로 콘텐츠를 필터링할 수 있습니다.
| 부모 | 매개변수 | 숙소 유형 | 설명 |
|---|---|---|---|
OptimizeToursResponse |
routes |
객체 배열 (ShipmentRoute) |
여기에는 각 차량에 대해 계산된 경로 목록이 포함됩니다 (차량당 하나). 이 반려견 유치원 시나리오의 경우 단일 밴의 세부 경로 계획이 포함됩니다. |
metrics |
객체 (Metrics) |
여기에는 모든 경로에서 집계된 솔루션의 전체 측정항목이 포함됩니다. 이 반려견 유치원 시나리오의 경우, 하루 동안의 비용과 운영 기간을 요약한 것입니다. | |
skippedShipments |
객체 배열 (SkippedShipment) |
여기에는 솔루션에서 건너뛴 배송 목록이 포함됩니다. 이 시나리오에서는 세 번째 개 (저먼 셰퍼드)를 건너뜁니다. | |
ShipmentRoute |
vehicleStartTime |
타임스탬프 | 차량이 경로를 시작하는 시간입니다. 이 반려견 유치원 시나리오에서는 운전자가 오전 7시 55분에 밴을 운전하기 시작합니다. |
vehicleEndTime |
타임스탬프 | 차량이 경로를 완료하는 시간입니다. 이 반려견 유치원 시나리오에서는 운전자가 오전 9시 40분에 밴 운전을 마칩니다. | |
visits |
객체 배열 (Visit) |
경로의 수령 및 배송 순서가 지정된 목록입니다. 이 애견 유치원 시나리오에서는 두 마리의 개를 데리러 가고 데려다주는 순서입니다. | |
transitions |
객체 배열 (Transition) |
방문 간의 거리, 이동 시간, 대기 시간의 순서가 지정된 목록입니다. 이 반려견 유치원 시나리오에서는 코이트 타워, 사우스 선셋 놀이터 공원, 유치원 간의 운전 거리와 시간을 자세히 설명합니다. | |
metrics |
객체 (AggregatedMetrics) |
이 단일 경로에 해당하는 측정항목입니다. 이 반려견 유치원 시나리오에서는 이 특정 밴의 통계입니다. 이러한 측정항목은 요청에서 지정한 비용을 기반으로 합니다. 자세한 내용은 비용 모델 주요 개념 문서를 참조하세요. | |
routeCosts |
객체 (지도) | 이 경로의 구체적인 비용 분석입니다. 이 반려견 유치원 시나리오에서는 운전자의 시간당 임금 27달러를 기준으로 계산된 비용이 표시됩니다. | |
routeTotalCost |
숫자 | 이 특정 경로의 총비용입니다. 이 반려견 유치원 시나리오에서 이 밴 경로의 총비용은 47.22입니다. |
|
vehicleFullness |
객체 (VehicleFullness) |
차량이 시간, 거리, 부하와 같은 운영 한계에 얼마나 근접하는지 분석한 결과입니다. 이 반려견 유치원 시나리오에서는 교대근무 시작 시간과 종료 시간만 운전자를 제약하므로 최적화 도구는 vehicleFullness를 실제 경로 기간과 운전자 교대근무에 사용할 수 있는 최대 시간의 비율로 계산합니다. |
|
Visit |
shipmentIndex |
정수 | 원래 요청에서 0부터 시작하는 배송 색인입니다. 이 반려견 유치원 시나리오에서 0은 버니즈 마운틴 도그를, 1은 치와와를 나타냅니다. |
isPickup |
불리언 | 이 방문이 수령인 경우 이 필드는 true입니다. 이 강아지 보육원 시나리오에서는 강아지를 데리러 올 때는 true이고 강아지를 보육원에 맡길 때는 false (또는 누락)입니다. | |
startTime |
타임스탬프 | 방문의 예상 시작 시간입니다. 이 반려견 유치원 시나리오에서는 기사가 문을 두드리는 시점입니다 | |
detour |
기간 | 최적화 도구가 이 특정 배송의 여정에 추가하는 추가 시간입니다. 우회는 실제 경로 계획과 운전자가 완료해야 할 다른 배송이나 작업이 없는 경우의 이상적인 직접 이동 간의 차이입니다. 이 반려견 유치원 시나리오에서 버니즈 마운틴 도그를 데리러 가는 첫 번째 방문은 운전자가 유치원에서 이 픽업 장소로 바로 이동하므로 우회 거리가 0입니다. 치와와를 태우기 위한 우회 시간은 43분입니다. 운전자가 버니즈 마운틴 도그를 먼저 태우고 (태우는 데 5분 소요) 치와와를 태우기 때문입니다. |
|
shipmentLabel |
문자열 | 각 배송 요청의 라벨입니다. 이 애견 유치원 시나리오의 경우 라벨은 '치와와' 또는 '버니즈 마운틴 도그'입니다. | |
visitType |
문자열 (Enum) | 이는 방문 유형을 나타내며, 수령의 경우 PICKUP_SHIPMENT, 배송의 경우 DELIVER_SHIPMENT일 수 있습니다. 이 시나리오에서는 PICKUP_SHIPMENT 또는 DELIVER_SHIPMENT입니다. |
|
Transition |
travelDuration |
기간 | 방문 간 전환 중에 이동하는 데 소요된 시간입니다. 예를 들어 이 반려견 유치원 시나리오에서 운전자는 유치원에서 버니즈 마운틴 도그를 데리러 코이트 타워까지 운전하는 데 약 25분을 소요합니다. |
travelDistanceMeters |
정수 | 이 전환 중에 이동한 거리(미터)입니다. 예를 들어 이 반려견 유치원 시나리오에서 운전자는 유치원에서 코이트 타워까지 7km를 이동하여 버니즈 마운틴 도그를 태웁니다. | |
waitDuration |
기간 | 다음 수령 또는 배송 전에 대기하는 시간입니다. 이 반려견 유치원 시나리오의 경우 세 번째 전환의 지연 시간은 6분 (356초)입니다. 운전자가 반려견 유치원에 도착하는 시간이 반려견을 맡길 수 있는 시간인 오전 9시 30분 이전이기 때문입니다. 다른 전환의 경우 이 값은 0입니다. | |
totalDuration |
기간 | 운전 및 대기를 포함한 전환의 총 지속 시간입니다. 예를 들어 운전자는 첫 번째 전환에 25분 (운전 25분, 대기 0분)을 소요하고, 세 번째 전환에 27분 (운전 21분, 대기 6분)을 소요하여 어린이집으로 돌아갑니다. | |
startTime |
타임스탬프 | 이동이 시작되는 시간입니다. 이전 방문의 완료 시간 (또는 첫 번째 전환의 경우 차량의 시작 시간)과 일치합니다. 애견 유치원 시나리오의 경우 첫 번째 전환은 운전자가 유치원을 떠나는 오전 7시 55분에 시작되고 두 번째 전환은 운전자가 코이트 타워를 떠나는 오전 8시 25분에 시작됩니다. | |
Metrics |
aggregatedRouteMetrics |
객체 (AggregatedMetrics) |
모든 경로의 측정항목 합계입니다. 이 애견 유치원 시나리오에서 이것은 밴 한 대의 총 측정항목입니다 |
usedVehicleCount |
정수 | 솔루션에 사용된 차량 수입니다. 이 반려견 유치원 시나리오에서는 밴을 하나만 사용합니다. | |
earliestVehicleStartTime |
타임스탬프 | 모든 차량 중 가장 이른 시작 시간입니다. 이 반려견 유치원 시나리오에서는 밴의 경로가 오전 7시 55분에 시작됩니다. | |
latestVehicleEndTime |
타임스탬프 | 모든 차량 중 가장 늦은 종료 시간입니다. 이 반려견 유치원 시나리오에서는 밴의 경로가 오전 9시 40분에 종료됩니다. | |
totalCost |
숫자 | 솔루션의 총 비용입니다. 이 반려견 유치원 시나리오의 경우 전체 경로 계획 비용은 하루 147.22입니다 (47.22 운전자 임금 및 100 건너뛴 배송 페널티 포함). |
|
costs |
객체 (지도) | 카테고리별 총비용 분석입니다. 이 반려견 유치원 시나리오에서 최적화 도구는 시간당 비용과 건너뛴 저먼 셰퍼드에 대한 페널티 비용을 기준으로 경로 비용을 계산했습니다. | |
AggregatedMetrics |
performedShipmentCount |
정수 | 성공적으로 라우팅된 배송 수입니다. 이 반려견 유치원 시나리오에서는 운전자가 반려견 두 마리를 운송합니다. |
travelDuration |
기간 | 이동에 소요된 총 시간입니다. 이 반려견 유치원 시나리오에서는 운전자가 79분 동안 이동합니다. | |
waitDuration |
기간 | 대기하는 데 소요된 총 시간입니다. 이 반려견 유치원 시나리오에서는 운전자가 유치원에서 6분 (356초) 동안 공회전하며 하차 시간이 시작되기를 기다립니다. | |
delayDuration |
기간 | 주차를 위해 예약된 시간과 같이 전환 속성을 사용하여 정의하는 추가 시간입니다. 이 반려견 유치원 시나리오에서는 요청에 전환 속성을 정의하지 않았으므로 이 값은 0입니다. | |
breakDuration |
기간 | 휴식에 사용한 총 시간입니다. 이 반려견 유치원 시나리오에서는 휴식 시간이 없습니다. | |
visitDuration |
기간 | 방문 시 서비스를 수행하는 데 소요된 총 시간입니다. 이 반려견 돌봄 시나리오의 경우 20분 (방문당 5분씩 4회 방문)입니다. | |
totalDuration |
기간 | 모든 기간 구성요소의 합계입니다. 이 반려견 유치원 시나리오의 경우 총 시간은 105분 (6, 296초)입니다. | |
travelDistanceMeters |
정수 | 총 이동 거리(미터)입니다. 이 반려견 유치원 시나리오에서 운전자는 총 31.5km를 이동합니다. | |
performedShipmentPenaltyCostSum |
더블 | 수행된 모든 배송의 페널티 비용 합계입니다. 이 시나리오의 경우 운전자가 버니즈 마운틴 도그와 치와와를 태웠기 때문에 (각각 페널티 비용 1000) 2000입니다. |
|
VehicleFullness |
maxFullness |
숫자 | 모든 VehicleFullness 필드에서 가장 높은 사용률입니다. 이 애견 유치원 시나리오의 경우 운전자가 요청에서 5시간으로 정의한 전체 오전 근무 시간 중 105분 동안만 밴을 운행하므로 이 값은 0.35입니다. |
activeSpan |
숫자 | 이는 경로 계획의 운영 시간과 비교한 운전자의 총 교대 근무 시간의 비율입니다. 숫자가 낮을수록 운전자가 영업일에 차량을 운행하는 시간이 적다는 의미입니다. 이 반려견 유치원 시나리오의 경우 운전자가 5시간 교대 근무 중 105분 동안 밴을 운행하므로 이 값은 0.35입니다. | |
SkippedShipment |
index |
정수 | 원래 요청에서 0부터 시작하는 배송 색인입니다. 이 시나리오에서 2는 저먼 셰퍼드를 나타냅니다. |
label |
문자열 | 요청에서 배송에 지정한 라벨입니다. | |
penaltyCost |
숫자 | 최적화 도구가 이 배송을 건너뛸 때 발생하는 페널티 비용입니다. 요청에 지정한 penaltyCost와 일치합니다. |