로드 비용으로 요청을 보내 최적화 도구가 방문 간에 차량이 운반하는 로드를 고려하도록 합니다. 발생한 비용은 전송된 ShipmentRoute.VehicleLoad
의 양과 전환 거리 또는 기간 (각각 cost_per_kilometer
또는 cost_per_traveled_hour
사용)에 따라 달라집니다.
부하 비용이 포함된 최소 요청 예시
다음은 로드 비용이 포함된 요청의 일부 예입니다. 이 예에서 단일 차량은 총 weightKg
로드를 1, 000kg 이하로 운반할 수 있으며, 운반하는 weightKg
로드가 500kg을 초과하면 킬로미터당 비용 단위 1이 발생합니다.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
이 예시의 로드 비용 계산은 다음과 같습니다.
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
따라서 차량이 10km에 걸쳐 600의 weightKg
부하를 운반하는 경우 계산은 다음과 같습니다.
(600 - 500) * 10 * 1 = 1000 cost units
부하 비용은 중량물을 운송할 때 차량 에너지 사용량이 증가하거나 과도한 차량 적재로 인한 차량 마모와 같은 다양한 개념을 모델링하는 데 사용할 수 있습니다.
부하 비용이 포함된 다른 요청 예시
다음은 이동 시간당 비용을 임곗값 위와 아래에 모두 부과하는 로드 비용의 또 다른 예입니다.
{ "model": { "vehicles": [{ "loadLimits": { "weightLbs": { "maxLoad": "1000", "costPerTraveledHour": { "loadThreshold": "900", "costPerUnitAboveThreshold": 10, "costPerUnitBelowThreshold": 1 }, }, } }] } }
이 예시의 로드 비용 계산은 다음과 같습니다.
cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
+ min(carried load, load threshold) * time * cost per unit below threshold
따라서 차량이 5시간 동안 weightLbs
로드 950을 운반하는 경우 계산은 다음과 같습니다.
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
이 예에서 weightLbs
로드 비용의 load_threshold
는 max_load
에 가깝습니다. cost_per_unit_above_threshold
는 차량이 특히 많은 짐을 싣고 이동할 때 이동 시간당 높은 비용을 적용하여 차량의 마모를 증가시키거나 과도한 연료를 소비할 수 있는 경로에 불이익을 줍니다.
cost_per_unit_below_threshold
는 차량에서 운송하는 단위 중량당 비용을 기준점까지 추가하여 차량에서 더 많은 짐을 운송할 때 증가하는 연료 소비량을 나타냅니다.
자주 묻는 질문(FAQ)
다음은 로드 비용에 관해 자주 묻는 질문입니다.
질문 | 답변 |
---|---|
로드 비용은 어디에서 지정하나요? | Vehicle.LoadLimit 에서 로드 비용을 지정합니다. |
로드 비용은 어떻게 배송과 일치하나요? | 적재 비용은 적재 수요 유형이 중량 또는 부피와 같은 차량의 적재 한도 유형과 일치하는 배송에 적용됩니다. 로드 유형은 로드 수요 및 제한에 설명된 대로 임의의 문자열입니다. |
부하 비용은 어떻게 표시되나요? | 부하 비용은 전환 거리 또는 시간으로 표현됩니다. cost_per_kilometer 를 사용하여 거리 측면에서 비용을 지정하고 cost_per_traveled_hour 를 사용하여 기간 측면에서 비용을 지정합니다.
|
로드 비용은 언제 적용되나요? | 차량 부하가 부하 비용의 load_threshold 와 비교됩니다. cost_per_unit_above_threshold 가 지정되면 max(0, load - load_threshold) 수식을 사용하여 load_threshold 이상의 차량 부하에 비례하여 비용이 추가됩니다. cost_per_unit_below_threshold 가 지정되면 min(load, load_threshold) 수식을 사용하여 load_threshold 아래 차량의 짐에 비례하여 비용이 추가됩니다.
|
부하 비용 매개변수의 기본값은 무엇인가요? | load_threshold , cost_per_unit_above_threshold , cost_per_unit_below_threshold 는 기본적으로 모두 0입니다.
|
부하 비용은 어떤 단위로 표시되나요? | 부하 비용은 global_duration_cost_per_hour 또는 Shipment.penalty_cost 와 같은 다른 모든 비용 매개변수와 동일한 무차원 단위로 표현됩니다.
|
응답에서 로드 비용은 어디에서 찾을 수 있나요? | 발생한 로드 비용은 응답 메시지의 metrics 및 route_metrics 속성에 표시됩니다. 예를 들어 발생한 cost_per_kilometer 는 model.vehicles.load_limits.cost_per_kilometer 로 표시됩니다.
|
로드 비용에 관한 자세한 설명은 참조 문서(REST, gRPC)를 참고하세요.
예: OptimizeTours
요청
OptimizeTours
요청은 REST 또는 gRPC를 사용하여 실행할 수도 있습니다.
요청하기 전에 다음 매개변수를 환경에 적합한 값으로 바꿉니다.
- OAuth 사용에 설명된 대로 애플리케이션 기본 사용자 인증 정보가 구성되어 있는지 확인합니다.
PROJECT_NUMBER_OR_ID를 Cloud 프로젝트 번호 또는 ID로 설정합니다.
다음 명령어는 Route Optimization API에
OptimizeTours
요청을 전송하고 응답을 동기식으로 수신합니다.curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- << EOM { "model": { "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "penaltyCost": 100.0, "loadDemands": { "weightKg": { "amount": 50 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "penaltyCost": 30.0, "loadDemands": { "weightKg": { "amount": 10 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "penaltyCost": 50.0, "loadDemands": { "weightKg": { "amount": 80 } } } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0, "loadLimits": { "weightKg": { "maxLoad": "100", "costPerKilometer": { "loadThreshold": "15", "costPerUnitAboveThreshold": 1 } } } } ] } } EOM
요청이 완료되면 응답 메시지가 전송됩니다.