درخواستی با هزینههای بار ارسال کنید تا بهینهساز، باری را که وسایل نقلیه شما بین بازدیدها حمل میکنند، در نظر بگیرد. هزینه متحمل شده به میزان ShipmentRoute.VehicleLoad حمل شده و مسافت یا مدت زمان انتقال (به ترتیب با استفاده از cost_per_kilometer یا cost_per_traveled_hour ) بستگی دارد.
یک درخواست نمونه حداقلی با هزینههای بار
در اینجا یک مثال جزئی از درخواست با هزینه بار آورده شده است. در این مثال، یک وسیله نقلیه نمیتواند بیش از ۱۰۰۰ کیلوگرم بار weightKg را حمل کند، که وقتی بار weightKg حمل شده از ۵۰۰ کیلوگرم بیشتر شود، ۱ واحد هزینه در هر کیلومتر متحمل میشود.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
محاسبه هزینه بار برای این مثال به شرح زیر است:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
بنابراین اگر وسیله نقلیه بار weightKg 600 را در طول 10 کیلومتر حمل کند، محاسبه به صورت زیر خواهد بود:
(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
بنابراین اگر وسیله نقلیه باری به weightLbs ۹۵۰ پوند را به مدت ۵ ساعت حمل کند، محاسبه به صورت زیر خواهد بود:
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
در این مثال، تابع load_threshold برای هزینه بار weightLbs نزدیک به max_load است. تابع cost_per_unit_above_threshold وقتی وسیله نقلیه با بار بسیار سنگین حرکت میکند، هزینه بالایی را به ازای هر ساعت پیمایش اعمال میکند و مسیرهایی را که ممکن است باعث افزایش سایش وسیله نقلیه یا مصرف سوخت اضافی شوند، جریمه میکند. تابع cost_per_unit_below_threshold هزینهای را به ازای هر واحد وزنی که وسیله نقلیه تا آستانه حمل میکند، اضافه میکند که نشان دهنده افزایش مصرف سوخت با افزایش بار وسیله نقلیه است.
سوالات متداول
در اینجا به برخی از سوالات متداول در مورد هزینه های حمل بار اشاره می کنیم:
| سوال | پاسخ |
|---|---|
| هزینه بار را کجا مشخص کنم؟ | هزینههای بار را در Vehicle.LoadLimit مشخص کنید. |
| هزینههای بار چگونه با محمولهها مطابقت داده میشوند؟ | هزینه بار برای محمولههایی اعمال میشود که نوع تقاضای بار آنها با نوع محدودیت بار برای وسیله نقلیه، مانند وزن یا حجم، مطابقت دارد. انواع بار، رشتههای دلخواهی هستند، همانطور که در تقاضاها و محدودیتهای بار توضیح داده شده است. |
| هزینههای بار چگونه بیان میشوند؟ | هزینههای بار بر حسب مسافت یا مدت زمان انتقال بیان میشوند. برای مشخص کردن هزینهها بر حسب مسافت cost_per_kilometer و برای مشخص کردن هزینهها بر حسب مدت زمان cost_per_traveled_hour استفاده کنید. |
| هزینههای بار چه زمانی اعمال میشوند؟ | بار وسیله نقلیه با load_threshold ) هزینه بار مقایسه میشود. اگر هزینه به ازای هر واحد بالاتر از آستانه بار ( cost_per_unit_above_threshold ) مشخص شده باشد، هزینه متناسب با بار وسیله نقلیه بالاتر از load_threshold (load_threshold) با استفاده از فرمول max(0, load - load_threshold) اضافه میشود. اگر هزینه به ازای هر واحد پایینتر از آستانه بار ( cost_per_unit_below_threshold ) مشخص شده باشد، هزینه متناسب با بار وسیله نقلیه پایینتر از load_threshold ) با استفاده از فرمول min(load, load_threshold) اضافه میشود. |
| مقادیر پیشفرض برای پارامترهای هزینه بار چیست؟ | load_threshold ، cost_per_unit_above_threshold و cost_per_unit_below_threshold به طور پیشفرض صفر هستند. |
| هزینههای بار با چه واحدهایی بیان میشوند؟ | هزینههای بار مانند سایر پارامترهای هزینه، مانند 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 روی شماره یا شناسه پروژه ابری خود تنظیم کنید.
دستور زیر یک درخواست
OptimizeToursرا به Route Optimization API ارسال میکند و به صورت همزمان پاسخی دریافت میکند.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
پس از تکمیل درخواست، یک پیام پاسخ دریافت خواهید کرد.