الهدف الرئيسي من Route Optimization API هو العثور على المسارات ذات التكلفة الأقل. وبالتالي، فإنّ نموذج التكلفة هو المحرّك الرئيسي لتحسين المسارات.
نموذج التكلفة هو مجموعة من السمات التي تحدّد التكاليف العامة وتكاليف المركبات والشحنات.
تتيح خصائص نموذج التكلفة أنواع أهداف التحسين التالية:
- تحديد المركبات والمسارات بكفاءة
- أوقات استلام وتسليم فعّالة من حيث التكلفة
- تحديد أولويات الشحنات المهمة
البنية
كما هو موضّح في المخطّط البياني، يتم تنظيم سمات نموذج التكلفة على النحو التالي:
- يحتوي
Shipmentعلى السمةpenaltyCost. - يحتوي
Vehicleعلى السمات التالية:
لا يسلّط هذا المستند الضوء إلا على مَعلمات نموذج التكلفة الأساسية. يمكنك الاطّلاع على المستندات المرجعية للحصول على المجموعة الكاملة من مَعلمات التكلفة.
قائمة التحقّق من الأساسيات
توضّح قائمة التحقّق التالية المعلومات الأساسية التي تمنع الأخطاء المحتملة المتعلّقة بالتكلفة. يمكن أن تساعدك هذه القائمة في التحقّق من صحة طلبك وتحديد المشاكل في الردّ وحلّها.
الخصائص
يسرد الجدول التالي سمات نموذج التكلفة ويصفها.
| أحد الوالدين | اسم السمة | نوع مكان الإقامة | التكلفة لكل | وصف الموقع |
|---|---|---|---|---|
Shipment |
penaltyCost |
الرقم | تم تخطّي الشحنة | التكلفة التي يتم تكبّدها من خلال تخطّي الشحنة تتخطّى واجهة برمجة التطبيقات عملية شحن عندما تتجاوز تكلفة إكمالها تكلفة الغرامة.
|
Vehicle |
fixedCost |
الرقم | الشحن | التكلفة الثابتة التي يتم تطبيقها في حال استخدام هذه المركبة لتسليم شحنة |
costPerHour |
الرقم | ساعة | تكلفة تشغيل مركبة في الساعة، بما في ذلك أوقات النقل والانتظار والزيارة والاستراحة. مع زيادة هذه التكلفة، يحاول المحسِّن العثور على مسارات أسرع قد لا تكون الأقصر. يمكن أن تكون هذه السمة تكلفة مستقلة فعالة لكل مركبة بسبب بساطتها واكتمالها. |
|
costPerKilometer |
الرقم | كيلومتر | التكلفة لكل كيلومتر تقطعه المركبة، ويمكن أن تمثّل تكاليف الوقود أو تكاليف صيانة المركبة المستهلكة | |
costPerTraveledHour |
الرقم | ساعة | تكلفة تشغيل مركبة في الساعة أثناء النقل فقط، باستثناء أوقات الانتظار والزيارة والاستراحة يمنح هذا الخيار الأولوية لمسارات السفر الأسرع على حساب المسارات الأقصر. |
أمثلة
يتناول هذا القسم ثلاثة أنواع من الأمثلة:
- عيّنات تعليمات برمجية توضّح بنية سمات نموذج التكلفة
- مثال على سيناريو يوضّح إحدى طرق استخدام سمات نموذج التكلفة لتحقيق هدف تجاري.
- مثال على طلب يتضمّن القيم المحدّدة في سيناريو المثال
عيّنات تعليمات برمجية
تعرض عينة التعليمات البرمجية التالية بنية سمات نموذج التكلفة في Shipment:
{ "model": { "shipments": [ ... { "penaltyCost": PENALTY_COST } ], "vehicles": [ ... ] } }
تعرض عينة التعليمات البرمجية التالية بنية سمات نموذج التكلفة في Vehicle:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "fixedCost": FIXED_COST, "costPerKilometer": KILOMETER_COST, "costPerHour": HOUR_COST, "costPerTraveledHour": TRAVELED_HOUR_COST } ] } }
مثال على السيناريو
يصف هذا القسم سيناريو لديك فيه نشاط تجاري لرعاية الكلاب. أنت تعمل على تحسين مسار الشاحنة التي تستخدمها لاصطحاب الكلاب من منازلهم. في هذا السيناريو، تريد أن يأخذ المحسِّن في الاعتبار التكاليف المتعلّقة باصطحاب الكلاب وعمليات المركبات عند تقديم مسار.
في هذا المثال، تمثّل وحدة التكلفة الواحدة دولارًا أمريكيًا واحدًا. هذا يعني أنّ قيم سمات نموذج التكلفة في طلبك هي كالتالي:
| الموقع | القيمة | السيناريو |
|---|---|---|
penaltyCost |
10 | تمثّل الغرامة التي تفرضها على عملائك في حال عدم استلام كلابهم في اليوم المحدّد. في حال عدم اصطحاب الكلب في اليوم المحدّد، يحصل العميل على خصم بقيمة 40 دولار أمريكي من إجمالي تكلفة الخدمة. |
fixedCost |
30 | تمثّل التكلفة اليومية لدفعات قرض مركبتك، وهي 30 دولار أمريكي في اليوم. |
costPerKilometer |
0.08 | يمثّل هذا المقياس كمية البنزين التي تستهلكها مركبتك لكل كيلومتر. تحتاج مركبتك إلى 0.04 غالون لكل كيلومتر للتحرّك، وتبلغ تكلفة الغالون في منطقتك دولارَين. |
costPerHour |
27 | يمثّل هذا الحقل المبلغ الذي تدفعه للسائق مقابل قيادة مركبتك. تدفع للسائق 27 دولارًا في الساعة. |
costPerTraveledHour |
2.5 | يمثّل المبلغ الذي عليك دفعه مقابل تشغيل مكيّف الهواء في المركبة لكل ساعة من أجل الكلاب أثناء السير على الطريق. عندما تكون المركبة متوقفة، يمكن للسائق فتح الأبواب الخلفية وإيقاف مكيّف الهواء. |
استنادًا إلى مَعلمات التكلفة، يمكن أن يُجري المحسِّن مفاضلات غير واضحة للمستخدم، ولكن يمكن العثور عليها من خلال التحسين.
يوضّح المخطّط البياني التالي مثالاً يمكن فيه للمحسِّن اختيار مسار أطول ولكن أسرع من خلال الخط الأخضر المتقطّع لتجنّب حركة المرور الكثيفة على الخط الأحمر المنقّط.

في هذا السيناريو، يكون رصيد تكلفة المسارَين على النحو التالي:
يتميّز الخط الأخضر المتقطّع بانخفاض
costPerHourوcostPerTraveledHourلأنّه مسار سريع يتجنّب حركة المرور، ما يجعله أكثر فعالية من حيث التكلفة حتى عندما تكون قيمةcostPerKilometerمرتفعة.يتميز الخط الأحمر المتقطع بانخفاض
costPerKilometerلأنه مسار مباشر، ولكنcostPerHourوcostPerTraveledHourمرتفعان للغاية بسبب أوقات الانتظار في حركة المرور، مما يجعله المسار الأكثر تكلفة.
بالإضافة إلى توفير مسارات فعّالة من حيث التكلفة، يوفّر المحسِّن أيضًا مجموع التكاليف الإجمالية لمسارات التسليم في سمات الاستجابة.
مثال على الطلب
يوضّح المثال التالي بنية طلب optimizeTours أساسي يتضمّن القيم المحدّدة في السيناريو النموذجي:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] "penaltyCost": 40 } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "fixedCost": 30, "costPerKilometer": 0.08, "costPerHour": 27, "costPerTraveledHour": 2.5 } ] } }
خصائص الردّ
تحتوي الرسالة OptimizeToursResponse على سمات التكلفة
التي تصف التكاليف التي يتم تكبّدها في عملية إكمال المسار:
-
metrics.costs: إجمالي التكلفة في جميع المسارات مقسَّمة حسب حقول الطلبات ذات الصلة بالتكلفة. metrics.totalCost: إجمالي التكلفة لجميع المسارات مجتمعة