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