يوضّح هذا المثال كيفية استخدام مَعلمات التكلفة للحصول على مسار منخفض التكلفة.
للحصول على نظرة عامة شاملة على المفاهيم، يُرجى الاطّلاع على مستند المفهوم الأساسي لنموذج التكلفة.
مثال على الطلب
يوضّح المثال التالي سيناريو يجب فيه لمركبة واحدة تسليم
ثلاث شحنات. تتضمّن المركبة تكاليف مرتبطة بالوقت والمسافة، ويتضمّن كل شحن penaltyCost يتم تكبّده في حال تخطّي الشحن.
يحتوي نموذج الطلب هذا على المَعلمات التالية ذات الصلة بالتكلفة:
-
shipments[0]معpenaltyCostبقيمة 100.0 shipments[1]بتقييمpenaltyCostمن 5.0.-
shipments[2]معpenaltyCostبقيمة 50.0 -
vehicles[0]معcostPerHourبقيمة 40.0 وcostPerKilometerبقيمة 10.0
الاطّلاع على مثال على طلب يتضمّن التكاليف
{ "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 } ] } }
مثال على إجابة
يُظهر الردّ أنّ المحسِّن ينشئ مسارًا ينفّذ اثنتَين من
الشحنات الثلاث. يتم تخطّي الشحنة الثالثة لأنّ قيمة penaltyCost لها
أقل من تكاليف المركبة المحسوبة لعملية الاستلام والتسليم.
الاطّلاع على ردّ على طلب المثال مع التكاليف
{ "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 } } }
تعرض الحقول التالية كيفية احتساب التكاليف في الردّ:
routeCostsيحلّل التكاليف التشغيلية لمسار معيّن، وهي في هذه الحالة:model.vehicles.cost_per_kilometer: 33.53.model.vehicles.cost_per_hour: 18.91.
- إنّ
routeTotalCost(52.44) هو مجموع التكاليف المدرَجة فيrouteCosts. - في المستوى الأعلى من الاستجابة، يلخّص العنصر
costsكل التكاليف التي تم تكبّدها في الحلّ. ويشمل ذلك تكاليف التشغيل من جميع مسارات المركبات بالإضافة إلى أي غرامات، مثلmodel.shipments.penalty_cost(5.0) للشحنة التي تم تخطّيها. - يمثّل الرقم الأخير
totalCost(57.44) الإجمالي الكلي للحلّ، وهو مجموعrouteTotalCostمن جميع المركبات وجميع تكاليف الغرامات. في هذه الحالة، تكون النتيجة 52.44 + 5.0.