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