يعرض هذا الدليل الاستخدامات المحتملة لسمات الانتقال. ستتعرّف على كيفية وضع نماذج لسيناريوهات واقعية من خلال مثالَين: دمج وقت ركن المركبة في المسارات المحسّنة، والتأكّد من أنّ كل مسار ينتهي بزيارة إلى موقع جغرافي معيّن.
قبل البدء
يمكنك استخدام سمات الانتقال لإضافة تكاليف وحالات تأخير خاصة بالنموذج إلى عمليات انتقال معيّنة في المسارات المحسّنة. تُضاف هذه التكاليف والتأخيرات إلى مُدد الانتقال والتكاليف المحسوبة من بيانات الخريطة استنادًا إلى مَعلمات المركبة المستخدَمة.
الانتقال هو جزء من المسار يربط بين موقع جغرافي وآخر.
يشير الموقع الجغرافي إلى أي من النقاط التالية في مسار المركبة:
- نقطة بداية المسار
- محطة يتم فيها استلام الطلب أو توصيله
- نقطة نهاية المسار
يمكنك تحديد جميع سمات الانتقال للنموذج من خلال إضافتها إلى القائمة
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
على علامة غير مستخدَمة في أي مكان في النموذج. سيؤدي ذلك إلى مطابقة جميع المواقع الجغرافية التي لا تحتوي على هذه العلامة، ولكن بما أنّك اخترت عن قصد علامة لا يستخدمها أي موقع جغرافي، ستتطابق سمات الانتقال هذه مع جميع المواقع الجغرافية.