پیام OptimizeToursRequest ( REST , gRPC ) حاوی تعدادی ویژگی مربوط به هزینه ها است. این پارامترهای هزینه با هم مدل هزینه درخواست را نشان می دهند. مدل هزینه بسیاری از اهداف بهینه سازی سطح بالای درخواست را شامل می شود، مانند:
- اولویتبندی مسیرهای سریعتر
Vehicleبر مسیرهای کوتاهتر یا برعکس - تصمیم گیری در مورد اینکه آیا هزینه تحویل یک
Shipmentبه ارزش تکمیلShipmentاست یا خیر - انجام وانت و تحویل در بازه زمانی زمانی مقرون به صرفه است
نمونه درخواست با هزینه ها را ببینید
{ "model": { "globalStartTime": "2023-01-13T16:00:00-08:00", "globalEndTime": "2023-01-14T16:00:00-08:00", "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 100.0 }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 5.0 }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 50.0 } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0 } ] } }
ویژگی های قیمت تمام شده Vehicle
پیام Vehicle ( REST ، gRPC ) چندین ویژگی هزینه دارد:
-
Vehicle.cost_per_hour: نشان دهنده هزینه کارکرد یک وسیله نقلیه در ساعت شامل زمان حمل و نقل، انتظار، بازدید و استراحت است. -
Vehicle.cost_per_kilometer: هزینه هر کیلومتر طی شده توسط وسیله نقلیه را نشان می دهد. -
Vehicle.cost_per_traveled_hour: نشان دهنده هزینه کارکرد وسیله نقلیه فقط در حین حمل و نقل است، به استثنای زمان انتظار، بازدید و استراحت.
این پارامترهای هزینه به بهینهساز اجازه میدهد تا معاوضههای زمان در مقابل مسافت طی شده را انجام دهد. هزینه های متحمل شده توسط مسیر بهینه شده در پیام پاسخ به عنوان metrics.costs ظاهر می شود:
با افزایش costPerHour ، بهینهساز تلاش میکند مسیرهای سریعتری را پیدا کند که ممکن است کوتاهترین مسیرها نباشند. در این مثال سریعترین مسیر کوتاهترین است، بنابراین تغییرات در پارامترهای هزینه تأثیر کمی دارد.
خواص هزینه Shipment
پیام Shipment ( REST ، gRPC ) همچنین چندین پارامتر هزینه دارد:
-
Shipment.penalty_costهزینه ای را نشان می دهد که با نادیده گرفتن حمل و نقل انجام می شود. تنظیم نکردن پارامترpenalty_costیک محموله، حمل و نقل را اجباری میکند، به این معنی که حمل و نقل تنها در صورتی نادیده گرفته میشود که با توجه به محدودیتهای مشخص شده تکمیل نشود. -
Shipment.VisitRequest.costنشاندهنده هزینه یک تحویل یا تحویل خاص است که عمدتاً برای فعال کردن مبادلات هزینه بین گزینههای تحویل یا تحویل چندگانه برای یک محموله استفاده میشود.
پارامترهای هزینه Shipment از واحدهای بدون بعد مشابه پارامترهای هزینه Vehicle استفاده می کنند. هزینه انجام شده برای تکمیل یک Shipment بیشتر از هزینه جریمه آن است، Shipment در مسیر هیچ یک Vehicle لحاظ نمی شود و در عوض در لیست skipped_shipments در پیام پاسخ ظاهر می شود.
ویژگی های هزینه ShipmentModel
پیام ShipmentModel ( REST ، gRPC ) شامل یک ویژگی هزینه واحد، globalDurationCostPerHour است. این هزینه بر اساس کل زمان مورد نیاز برای تمام وسایل نقلیه برای تکمیل ShipmentRoute خود انجام می شود. افزایش globalDurationCostPerHour تکمیل زودتر همه محموله ها را در اولویت قرار می دهد.
ویژگی های هزینه پاسخ بهینه سازی مسیر
پیام OptimizeToursResponse ( REST ، gRPC ) دارای ویژگی های هزینه ای است که نشان دهنده هزینه های انجام شده در فرآیند تکمیل ShipmentRoute است. ویژگی های metrics.costs و metrics.totalCost تعداد واحدهای هزینه انجام شده در تمام مسیرهای پاسخ را نشان می دهد. هر ورودی routes دارای ویژگیهای routeCosts و routeTotalCosts است که هزینههای آن مسیر خاص را نشان میدهد.
پاسخ به درخواست نمونه را با هزینه ها مشاهده کنید
{ "routes": [ { "vehicleStartTime": "2023-01-14T00:00:00Z", "vehicleEndTime": "2023-01-14T00:28:22Z", "visits": [ { "isPickup": true, "startTime": "2023-01-14T00:00:00Z", "detour": "0s" }, { "shipmentIndex": 2, "isPickup": true, "startTime": "2023-01-14T00:02:30Z", "detour": "150s" }, { "startTime": "2023-01-14T00:08:55Z", "detour": "150s" }, { "shipmentIndex": 2, "startTime": "2023-01-14T00:21:21Z", "detour": "572s" } ], "transitions": [ { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2023-01-14T00:00:00Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2023-01-14T00:02:30Z" }, { "travelDuration": "235s", "travelDistanceMeters": 795, "waitDuration": "0s", "totalDuration": "235s", "startTime": "2023-01-14T00:05:00Z" }, { "travelDuration": "496s", "travelDistanceMeters": 1893, "waitDuration": "0s", "totalDuration": "496s", "startTime": "2023-01-14T00:13:05Z" }, { "travelDuration": "171s", "travelDistanceMeters": 665, "waitDuration": "0s", "totalDuration": "171s", "startTime": "2023-01-14T00:25:31Z" } ], "metrics": { "performedShipmentCount": 2, "travelDuration": "902s", "waitDuration": "0s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "800s", "totalDuration": "1702s", "travelDistanceMeters": 3353 }, "routeCosts": { "model.vehicles.cost_per_kilometer": 33.53, "model.vehicles.cost_per_hour": 18.911111111111111 }, "routeTotalCost": 52.441111111111113 } ], "skippedShipments": [ { "index": 1 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 2, "travelDuration": "902s", "waitDuration": "0s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "800s", "totalDuration": "1702s", "travelDistanceMeters": 3353 }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2023-01-14T00:00:00Z", "latestVehicleEndTime": "2023-01-14T00:28:22Z", "totalCost": 57.441111111111113, "costs": { "model.vehicles.cost_per_kilometer": 33.53, "model.vehicles.cost_per_hour": 18.911111111111111, "model.shipments.penalty_cost": 5 } } }
در پاسخ مثال، معیارهای سطح بالای metrics.costs عبارتند از:
{
"metrics": {
...
"costs": {
"model.vehicles.cost_per_hour": 18.911111111111111,
"model.vehicles.cost_per_kilometer": 33.53,
"model.shipments.penalty_cost": 5
}
}
}
مقدار model.shipments.penalty_cost نشاندهنده هزینههای متحمل شده به دلیل ارسال نادیده گرفته شده است. داراییهای skippedShipments فهرستی از محمولههایی که نادیده گرفته شدهاند را نشان میدهد.
در این مثال، فقط model.shipments[1] در درخواست مثال نادیده گرفته میشود. model.shipments[1] دارای هزینه جریمه 5 واحد است که با کل کلید model.shipments.penalty_cost در پاسخ مثال مطابقت دارد. penaltyCost پایین Vehicle در مقایسه با costPerHour 40.0 و costPerKilometer 10.0، نادیده گرفتن حمل و نقل را مقرون به صرفه تر از تکمیل آن می کند.
موضوع پیشرفته: هزینه ها و محدودیت های نرم
چندین ویژگی پیام OptimizeToursRequest ( REST ، gRPC ) محدودیتهای نرم را نشان میدهند، که محدودیتهایی هستند که در صورت عدم ارضای آنها هزینهای را متحمل میشوند.
برای مثال، محدودیتهای LoadLimit خودرو ( REST ، gRPC ) دارای ویژگیهای softMaxLoad و costPerUnitAboveSoftMax هستند. اینها با هم هزینه ای متناسب با واحدهای باری که softMaxLoad فراتر می روند متحمل می شوند و تنها در صورتی که انجام این کار از نقطه نظر هزینه منطقی باشد، امکان تجاوز از حد مجاز را فراهم می کند.
به طور مشابه، محدودیتهای TimeWindow ( REST ، gRPC ) دارای ویژگیهای soft_start_time و soft_end_time هستند، با cost_per_hour_before_soft_start_time و cost_per_hour_after_soft_end_time متناظر با توجه به اینکه چقدر زود یا دیر رخ میدهد رویداد محدود شده با توجه به TimeWindow رخ میدهد.
مانند تمام پارامترهای مدل هزینه، هزینه های محدودیت نرم در واحدهای بدون بعد مشابه سایر پارامترهای هزینه بیان می شود.
محدودیت های LoadLimit به تفصیل در Load Demands و Limits مطرح می شوند. محدودیتهای TimeWindow به تفصیل در محدودیتهای پنجره زمان تحویل و تحویل پرداخته شده است.