پیام 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
هزینه ای را نشان می دهد که با نادیده گرفتن حمل و نقل انجام می شود. -
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
به تفصیل در محدودیتهای پنجره زمان تحویل و تحویل پرداخته شده است.