قدِّم طلبًا يتضمّن تكاليف الحمولة ليتمكّن المحسِّن من أخذ ملف حمولة المركبات بين الزيارات في الاعتبار. تعتمد التكلفة المتكبّدة على كلّ من
كمية ShipmentRoute.VehicleLoad
التي يتم نقلها والمسافة أو مدة
العملية (باستخدام cost_per_kilometer
أو cost_per_traveled_hour
على التوالي).
مثال على طلب بسيط يتضمّن تكاليف التحميل
في ما يلي مثال جزئي على طلب يتضمّن تكلفة تحميل. في هذا المثال، يمكن للمركبة الواحدة نقل ما لا يزيد عن 1,000 كلغ من إجمالي حمولة weightKg
، ما يؤدي إلى تحميل تكلفة واحدة لكل كيلومتر عندما تتجاوز حمولة weightKg
المنقولة 500
كلغ.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
في ما يلي كيفية احتساب تكلفة الحمولة لهذا المثال:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
إذا كانت المركبة تحمل حمولة weightKg
تبلغ 600 على مسافة 10 كيلومتر، سيكون حساب
الاستهلاك على النحو التالي:
(600 - 500) * 10 * 1 = 1000 cost units
يمكن استخدام تكاليف الحمولة لوضع نماذج لمجموعة متنوعة من المفاهيم، مثل زيادة استهلاك طاقة المركبة عند نقل الأحمال الثقيلة أو اهتراء المركبة الناتج عن تحميل المركبة بشكل مفرط.
مثال آخر على طلب يتضمّن تكاليف تحميل
في ما يلي مثال آخر على تكاليف الحمولة التي تفرض تكلفة لكلّ وقت سفر سواءً كان أعلى من حدّ معيّن أو أقلّ منه:
{ "model": { "vehicles": [{ "loadLimits": { "weightLbs": { "maxLoad": "1000", "costPerTraveledHour": { "loadThreshold": "900", "costPerUnitAboveThreshold": 10, "costPerUnitBelowThreshold": 1 }, }, } }] } }
في ما يلي كيفية احتساب تكلفة الحمولة لهذا المثال:
cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
+ min(carried load, load threshold) * time * cost per unit below threshold
إذا كانت المركبة تحمل حمولة weightLbs
تبلغ 950 لمدة 5 ساعات، سيكون حساب
على النحو التالي:
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
في هذا المثال، تكون قيمة load_threshold
لتكاليف تحميل weightLbs
قريبة
من max_load
. تفرض cost_per_unit_above_threshold
تكلفة عالية لكل
ساعة سفر عندما تسير المركبة بحمولة ثقيلة بشكل خاص،
وتفرض عقوبات على الطرق التي قد تزيد من اهتراء المركبة أو تستهلك وقودًا زائدًا.
تضيف cost_per_unit_below_threshold
تكلفة لكل وحدة وزن يحملها
المركبة حتى الحدّ الأقصى، ما يمثّل زيادة في استهلاك الوقود عندما تحمل
المركبة حمولة أكبر.
الأسئلة الشائعة
في ما يلي بعض الأسئلة الشائعة حول تكاليف التحميل:
السؤال | الإجابة |
---|---|
أين يمكنني تحديد تكاليف التحميل؟ | حدِّد تكاليف التحميل في Vehicle.LoadLimit . |
كيف تتم مطابقة تكاليف الحمولة مع الشحنات؟ | تنطبق تكلفة الحمولة على الشحنات التي يتطابق نوع طلب الحمولة فيها مع نوع الحد الأقصى للحمولة في المركبة، مثل الوزن أو الحجم. أنواع الحمولة هي سلاسل عشوائية، كما هو موضّح في متطلبات الحمولة وحدودها. |
كيف يتم التعبير عن تكاليف الحمولة؟ | يتم التعبير عن تكاليف الحمولة من حيث المسافة أو
المدة للانتقال. استخدِم cost_per_kilometer لتحديد التكاليف
استنادًا إلى المسافة وcost_per_traveled_hour لتحديد التكاليف
استنادًا إلى المدة.
|
متى يتم تطبيق تكاليف التحميل؟ | تتم مقارنة حمولة المركبة بـ load_threshold من تكلفة الحمولة. في حال تحديد cost_per_unit_above_threshold ، تتم
إضافة التكلفة بشكلٍ تناسبي مع حمولة المركبة فوق
load_threshold باستخدام الصيغة
max(0, load - load_threshold) . إذا
تم تحديد cost_per_unit_below_threshold ، تتم إضافة التكلفة
بما يتناسب مع حمولة المركبة أدناه
القيمة load_threshold ، باستخدام الصيغة
min(load, load_threshold) .
|
ما هي القيم التلقائية لمَعلمات تكلفة الحمل؟ | تكون القيم التلقائية لـ load_threshold وcost_per_unit_above_threshold و
cost_per_unit_below_threshold هي صفر.
|
ما هي الوحدات التي يتم التعبير عن تكاليف الحمل بها؟ | يتم التعبير عن تكاليف الحمل بالوحدات غير المحددة بالحجم نفسها المستخدَمة في جميع مَعلمات التكلفة الأخرى، مثل global_duration_cost_per_hour أو
Shipment.penalty_cost .
|
أين يمكنني العثور على تكاليف التحميل في الاستجابة؟ | تظهر تكاليف التحميل المتكبّدة في السمتَين metrics و
route_metrics لرسائل الاستجابة. على سبيل المثال، cost_per_kilometer
التي تمّت
سيظهر لها الرمز model.vehicles.load_limits.cost_per_kilometer .
|
للحصول على شرح مفصّل لتكاليف التحميل، يُرجى الاطّلاع على المستندات المرجعية (REST وgRPC).
مثال: تقديم طلب OptimizeTours
يمكن أيضًا تقديم طلبات OptimizeTours
باستخدام REST أو gRPC.
قبل تقديم طلب، استبدِل المَعلمات التالية بقيم مناسبة لبيئة موقعك الإلكتروني:
- تأكَّد من ضبط بيانات الاعتماد التلقائية للتطبيق على النحو الموضّح في استخدام OAuth.
اضبط PROJECT_NUMBER_OR_ID على رقم مشروع Cloud أو رقم تعريفه.
يُرسِل الأمر التالي طلبًا من النوع
OptimizeTours
إلى واجهة برمجة التطبيقات Route Optimization API ويتلقّى ردًا بشكل متزامن.curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- << EOM { "model": { "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "penaltyCost": 100.0, "loadDemands": { "weightKg": { "amount": 50 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "penaltyCost": 30.0, "loadDemands": { "weightKg": { "amount": 10 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "penaltyCost": 50.0, "loadDemands": { "weightKg": { "amount": 80 } } } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0, "loadLimits": { "weightKg": { "maxLoad": "100", "costPerKilometer": { "loadThreshold": "15", "costPerUnitAboveThreshold": 1 } } } } ] } } EOM
بعد اكتمال الطلب، ستصلك رسالة ردّ.