يعرض هذا الدليل الاستخدامات المحتمَلة لسمات الانتقال. سيعلّمك هذا القسم كيفية وضع نماذج للسيناريوهات الواقعية استنادًا إلى مثالَين: دمج وقت ركن السيارة في المسارات المحسّنة والتأكّد من أنّ كل مسار ينتهي بزيارة إلى موقع جغرافي محدّد.
قبل البدء
يمكنك استخدام سمات النقل لإضافة التكاليف والتأخيرات الخاصة بالنموذج إلى عمليات النقل معيّنة في المسارات المحسّنة. تتم إضافة هذه التكاليف والتأخيرات إلى جانب مدد النقل و التكاليف التي يتم احتسابها من بيانات الخريطة استنادًا إلى مَعلمات المركبة المستخدَمة.
الانتقال هو جزء من المسار يربط موقعًا جغرافيًا بموقع جغرافي التالي.
يشير الموقع الجغرافي إلى أيٍّ من النقاط التالية في مسار المركبة:
- نقطة بداية المسار
- محطة يتم فيها استلام الطلبات أو تسليمها
- نقطة نهاية المسار
يمكنك تحديد جميع سمات الانتقال للنموذج من خلال إضافتها إلى القائمة
ShipmentModel.transition_attributes
.
يحدّد كل عنصر في القائمة مجموعة واحدة من سمات الانتقال، ويتم مطابقتها مع عمليات النقل في المسارات باستخدام العلامات في الموقع الجغرافي لنقطة البدء
ونقطة نهاية عملية النقل. لمزيد من المعلومات عن سمات الانتقال، اطّلِع على
المستندات المرجعية الخاصة بملف TransitionAttributes
.
إنشاء نماذج لسيناريوهات واقعية
يعرض هذا القسم مثالَين صغيرَين لكيفية تنفيذ قيود النشاط التجاري الحالية باستخدام سمات الانتقال.
حجز وقت لركن السيارة
في هذا السيناريو، على السائق ركن المركبة قبل أن يتمكّن من الانتقال إلى الموقع "أ". الموقع "ب" قريب، ويمكن للسائق استخدام مكان وقوف السيارات نفسه في كلتا الزيارتَين. إذا ذهب السائق إلى "ب" مباشرةً بعد "أ"، سيوفّر الوقت لأنّه لن يحتاج إلى مغادرة موقف السيارات وإعادة ركن السيارة. في واجهة برمجة التطبيقات Route Optimization API، يمكنك استخدام سمات الانتقال لإضافة وقت إضافي إلى ركن المركبة فقط عندما ينتقل السائق من مكان ركن إلى آخر.
عند وضع نموذج لوقت وقوف السيارات بشكل منفصل عن مدّة الزيارة، يمكنك إنشاء مسارات تتطلّب وقتًا أقل عند تجميع الزيارات التي تستخدم موقف السيارات نفسه. وبذلك، تجعل النموذج أكثر دقة، وتجعل المحسِّن أيضًا يفضّل المسارات التي يتم فيها تجميع الاطّلاعات.
اتّبِع الخطوات التالية لإجراء ذلك في طلب Route Optimization API:
استخدِم
VisitRequest.duration
فقط خلال الوقت اللازم لإجراء الزيارة. على سبيل المثال، لتسليم الصندوق والحصول على توقيع من العميل.لكلّ مكان محدّد للوقوف مستخدَم في النموذج، استخدِم علامة جديدة لم يتم استخدامها لأيّ شيء آخر في النموذج، على سبيل المثال
PARKING_123
.أضِف هذه العلامة إلى ما يلي:
VisitRequest.tags
في جميع طلبات الزيارة التي تستخدم مكان وقوف السيارات هذا.Vehicle.start_tags
إذا كانت المركبة تبدأ مسارها من مكان وقوف السيارات هذا.Vehicle.end_tags
إذا كانت المركبة تبدأ مسارها وتنتهيه في موقف السيارات هذا.
لكل علامة مواقف سيارات جديدة، أضِف إدخالًا إلى ملف تعريف
ShipmentModel.transition_attributes
يضيف تأخيرًا للوقوف عند القدوم من موقف سيارات مختلف من خلال تنفيذ ما يلي:اضبط
TransitionAttributes.excluded_src_tag
وTransitionAttributes.dst_tag
علىPARKING_123
.اضبط
TransitionAttributes.delay
على الوقت اللازم لإيقاف المركبة.
على سبيل المثال، عندما تكون علامة الموقع هي
PARKING_123
وتستغرق ركن المركبة 150 ثانية، يمكنك إضافة القيمة التالية إلىShipmentModel.transition_attributes
:{ "excluded_src_tag": "PARKING_123", "dst_tag": "PARKING_123", "delay": "150s" }
التنظيف الإجباري في نهاية المسار
في هذا السيناريو، يجب تنظيف المركبة في نهاية المسار، مع مراعاة القيود الإضافية التالية:
- ويتم التنظيف في منشأة تنظيف متخصصة قبل العودة إلى مستودع المركبات. يستخدم المسار المحسَّن أفضل مرفق تنظيف استنادًا إلى موقعه الجغرافي ومواقع عمليات الاستلام والتسليم التي يجريها المركبة.
- بعد التنظيف، يجب ألا تُجري المركبة أي عمليات استلام أو تسليم إضافية.
- يُحتسَب وقت القيادة إلى هناك وتنظيف المركبة ضمن ساعات العمل للسائق، ويجب أن يكون ضمن الحد الأقصى لمدة المسار.
يمكنك وضع نموذج لهذا الشرط من خلال السماح فقط بالمسارات الفارغة أو التي كانت زيارتها الأخيرة إلى منشأة تنظيف. في Route Optimization API، يمكنك إجراء ذلك من خلال حظر الانتقالات إلى نقطة الطريق النهائية للمسار من أي موقع إلّا من مرفق التنظيف أو من نقطة بداية المسار:
- اختَر علامتَين جديدتَين لم يتم استخدامهما في أيّ مكان في النموذج، على سبيل المثال
CLEANED
وROUTE_END
. يُستخدَم الخيار الأول للمواقع الجغرافية التي تكون فيها المركبة نظيفة أو تصبح نظيفة، ويُستخدَم الخيار الثاني لنهاية المسار. - لكل مركبة، أضِف شحنة جديدة للتسليم فقط تمثّل الزيارة
إلى منشأة تنظيف باستخدام السمات التالية:
- يجب تمثيل كل موقع جغرافي لمنشأة التنظيف كطلب تسليم زيارة لهذه الشحنة.
- أضِف
CLEANED
إلىVisitRequest.tags
في كل طلب زيارة لشحنة مرافق التنظيف. ويشير ذلك إلى أنّه تم تنظيف المركبة التي تغادر هذا الموقع الجغرافي. يجب ألا تستخدم طلبات الزيارة الأخرى في النموذج هذه العلامة لكي يتم اعتبار المركبة "غير نظيفة" عند مغادرتها. - اسمح لأداة التحسين بتخطّي عملية الشحن هذه عندما تكون المركبة
غير مستخدَمة من خلال ضبط قيمة
penalty_cost
على رقم صغير.
لكل مركبة، أضِف
CLEANED
إلىVehicle.start_tags
. يُستخدَم هذا الإجراء لوضع علامة على المركبة بأنّها نظيفة قبل تنفيذ أي عمليات استلام أو تسليم، على افتراض أنّه تم تنظيفها في نهاية يوم العمل السابق، والسماح لها بالانتقال من نقطة التوقف في بداية الرحلة مباشرةً إلى نقطة التوقف في نهايتها. حتى إذا لم تحدث هذه المسارات عمليًا، فإنّ السماح بهذا السيناريو يساعد أداة التحسين في البحث عن المسارات المحسّنة بكفاءة أكبر.لكل مركبة، أضِف
ROUTE_END
إلىVehicle.end_tags
.أضِف إدخالًا جديدًا إلى
ShipmentModel.transition_attributes
يحظر وصول المركبات إلى نقطة نهاية مسار المركبة عندما تكون غير نظيفة، مع السمات التالية:اضبط
TransitionAttributes.excluded_src_tag
علىCLEANED
.اضبط
TransitionAttributes.dst_tag
علىROUTE_END
.اضبط
TransitionAttributes.delay
على قيمة كبيرة. عند جعل وقت التأخير أطول من الحد الأقصى لطول المسار، فإنّك تمنع المحسِّن بشكل فعّال من استخدام هذا التحول في أحد المسارات.
على سبيل المثال، عندما يكون المقياس الزمني للنموذج يوم عمل واحد، يمكنك استخدام تأخير لمدة 24 ساعة (86400 ثانية) لحظر الانتقال إلى نهاية المسار من أي مكان باستثناء مرفق التنظيف و بداية المسار:
{ "excluded_src_tag": "CLEANED", "dst_tag": "ROUTE_END", "delay": "86400s" }
كيفية الاختيار بين التأخيرات والتكاليف
يعتمد الاختيار بين التأخيرات والتكاليف على طبيعة
منطق العمل والقيود المطبَّقة. إنّ ضبط
TransitionAttributes.delay
هو الخيار الأفضل لتنفيذ قيود صارمة أو للتعبير عن مفاضلة من حيث
الوقت المستغرَق.
TransitionAttributes.cost
يناسب بشكل أفضل عند تنفيذ الإعدادات المفضّلة غير الحاسمة أو المفاضلات التي يتم التعبير عنها على أنّها
تكلفة إضافية. يمكنك الجمع بين التأخيرات والتكاليف بشكل عشوائي عندما يتعلق الأمر بالوقت
المستغرَق والتكلفة.
يستخدم مثال تنظيف المركبات تأخيرًا طويلاً جدًا، لأنّ تنظيف المركبة في نهاية المسار هو شرط صارم، ويمنع التأخير الطويل أداة تحسين الأداء من تجاهل الشرط. إذا حدّدت تكلفة فقط، يمكن أن يختار المحسّن تخطّي عملية التنظيف، إذا عثر على طريقة لتعويض التكلفة في مكان آخر، على سبيل المثال من خلال تسليم المزيد من الشحنات في الوقت "المُنقَد" من خلال عدم تنظيف المركبة.
يستخدم مثال الركن تأخيرًا قصيرًا يتوافق مع الوقت الإضافي المطلوب لركن المركبة. يمكنك أيضًا استخدام التكاليف مع التأخيرات، إذا توقف السائق في موقف سيارات مدفوع.
كيفية إضافة سمة انتقال تتطابق مع جميع طلبات الزيارة
تستخدِم الأمثلة أعلاه سمات انتقال تتطابق مع المواقع الجغرافية التي تحتوي على علامة معيّنة، أو المواقع الجغرافية التي لا تحتوي على العلامة. ولكن ماذا لو كنت بحاجة إلى إضافة سمات انتقال تنطبق على جميع الانتقالات؟
لا يمكنك حذف العلامات فقط، لأنّ كل
TransitionAttributes
رسالة يجب أن تحتوي على إحدى علامتَي
TransitionAttributes.src_tag
و
TransitionAttributes.excluded_src_tag
وإحدى علامتَي
TransitionAttributes.dst_tag
و
TransitionAttributes.excluded_dst_tag
.
ومع ذلك، يمكنك مطابقة جميع العلامات من خلال ضبط
TransitionAttributes.excluded_src_tag
أو
TransitionAttributes.excluded_dst_tag
على علامة لم يتم استخدامها في أي مكان في النموذج. سيؤدي ذلك إلى مطابقة كل المواقع الجغرافية
التي لا تحتوي على هذه العلامة، ولكن بما أنّك اخترت عمدًا علامة لا يستخدمها
أي موقع جغرافي، ستتطابق سمات الانتقال هذه مع كل المواقع الجغرافية.