يوضّح هذا المثال كيفية استخدام مَعلمات التكلفة للحصول على مسار منخفض التكلفة.
للحصول على نظرة عامة شاملة على المفاهيم، يُرجى الاطّلاع على مستند المفهوم الأساسي لنموذج التكلفة.
مثال على الطلب
يوضّح المثال التالي سيناريو يجب فيه لمركبة واحدة تسليم ثلاث شحنات. تترتب على المركبة تكاليف مرتبطة بالوقت والمسافة، ولكل شحنة 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.