كيفية إنشاء نموذج نقل متعدد الوكلاء

مرحبا يا هابر!

تخيل أن لدينا مهمة لبناء طريق جديد. يمكنك بناء طريق سريع مع مسارين في كل اتجاه ، ولكن ماذا لو لم يكن ذلك كافيًا؟ أو ، على العكس من ذلك ، اتضح أن قطاعًا واحدًا سيكون كافيًا ، ولكن لتنفيذ المشروع كان من الضروري شراء العديد من قطع الأراضي؟ في كلتا الحالتين ، سيكون القرار غير فعال. لتقليل هذه المخاطر ، يلجأ مخططو النقل إلى نمذجة الكمبيوتر للحصول على المساعدة. هذه المقالة هي خلاصة موجزة في عالم النمذجة متعددة العوامل.



باستخدام النموذج ، وهو نسخة من نظام النقل الحقيقي ، يمكنك تقدير الإنتاجية اللازمة في كل جزء من الطريق المسقط ، أو تجربة خيارات تتبع مختلفة ، أو ، على سبيل المثال ، تقدير فترة الاسترداد للمشروع إذا كان الأمر يتعلق بطريق رسوم في إطار شراكة بين القطاعين العام والخاص. ولكن يمكن حل المهام المهمة الأخرى: كيفية تنظيم طرق النقل العام المثلى وحساب الإيرادات المحتملة للمشغلين ، وكيفية تقييم وجود نقص في أماكن وقوف السيارات في منطقة معينة ، والعديد من المجالات الأخرى.

ما هو أكثر إثارة للاهتمام هو أنه يمكن لأي شخص بناء نموذج مماثل في عصر البرمجيات الحرة!

واحدة من أكثر أدوات النمذجة متعددة العوامل شيوعًا هي المصدر المفتوح.MATSim (محاكاة النقل متعدد العوامل) .

يحاكي MATSim سلوك وكلاء الأفراد. الوكيل هو تمثيل كمبيوتر للفرد في العالم الحقيقي. كل وكيل من هذا النوع لديه خطة يومية يقوم على أساسها بالانتقال من نشاط إلى آخر (على سبيل المثال ، المنزل - العمل - المنزل ، المنزل - المعهد - المنزل - المنزل ، المنزل - المتجر - العمل 1 - العمل 2 - المنزل ، وما إلى ذلك) ، لإنشاء وبالتالي الطلب على البنية التحتية للطرق. التمثيل التخطيطي للخطة اليومية يبدو كالتالي:

صورة

من أجل وضع خطط واقعية للوكلاء تعكس السلوك الحقيقي للأشخاص خلال النهار ، يتم أخذ إجمالي عدد العملاء المقيمين ، وإعادة توطينهم ، وأماكن العمل ، والدراسة ، وموقع المحلات التجارية ، ومراكز التسوق ، ومحطات القطارات وأماكن النشاط الأخرى في الاعتبار. للتحقق من الطلب ، يتم أيضًا معايرة النموذج استنادًا إلى المسوحات الميدانية: التعرف على وحساب تدفقات كاميرات المراقبة والطائرات بدون طيار باستخدام شبكة عصبية أو ، على سبيل المثال ، القياسات اليدوية للكثافة على الطرق.

صورة

أثناء المحاكاة ، يتم توزيع الوكلاء عبر الشبكة ، لتقليد السلوك الواقعي للأشخاص: تنفيذ خطتهم ، تحتل السيارات مكانًا على الطريق وأماكن وقوف السيارات ، يأخذ مستخدمو النقل العام أماكن في الحافلة ، ويتفاعلون أيضًا مع بعضهم البعض ، وإذا اختار العديد من الوكلاء طريقًا واحدًا في كل مرة ، يتم إنشاء الاختناقات المرورية والازدحام. كل شيء مثل العالم الحقيقي!

بعد اكتمال المحاكاة ، يتم إجراء تقييم للوفاء بالخطط اليومية للوكلاء ، تسمى التسجيل. يحصل الوكيل على وحدات منفعة في عملية النشاط ويفقدها أثناء الحركة. وبناءً على ذلك ، يفقد الوكلاء الذين يتم القبض عليهم في ازدحام مروري وحدات فائدة أكثر من الوكلاء الذين يتحركون على طول الطرق المجانية.

بعد كل تكرار ، يقوم بعض الوكلاء بإعادة بناء خطتهم على أساس معلومات حول حمولة شبكة الطرق بطريقة تحسن أدائهم: يمكن للوكلاء تغيير وقت المغادرة أو تغيير وضع النقل أو تغيير المسار. يلتزم العملاء الباقون بخططهم السابقة ، والتي يتم تخزينها في ذاكرة البرنامج.

من الناحية المثالية ، بعد المحاكاة ، يجب تحقيق توازن ناش - أي ، الحالة التي لا يمكن فيها لأي وكيل تحسين وضعه دون تدهور وضع العوامل الأخرى. عادة هذا هو الوضع الذي يتطور بمرور الوقت على طرق المدينة ، بالنظر إلى إعادة التفكير اليومي في تجربة اليوم السابق من قبل سكانها. لهذا ، يتم تنفيذ 200 تكرار على الأقل في إطار سيناريو واحد. تبدو دورة عمل MATSim بأكملها كالتالي:

صورة

من النظرية إلى الممارسة!


لتشغيل السيناريو الأول ، نحتاج إلى Intellij IDEA (أو Eclipse) مع Java 1.8 على متن الطائرة.
نفتح IDE ، ونستنسخ مستودع MATSim من github والسيناريو الأول لدينا جاهز للتشغيل! بسيط جدا. لكن دعنا نرى أولاً ملفات الإدخال التي نستخدمها. للحصول على أبسط محاكاة ، هناك ثلاثة منها: الشبكة ، الخطط ، التكوين.

شبكة الاتصال


ملف الشبكة هو الشبكة التي يتحرك عليها الوكلاء. يتكون من العقد والعقد / الروابط. يحتوي كل رابط على سمات مختلفة: النوع وطول المقطع وعرض النطاق الترددي والسرعة القصوى وعدد الممرات وحركة المرور أحادية الاتجاه ووسائل النقل المسموح بها وما إلى ذلك.

صورة

إنشاء شبكة مدينة يدويًا أمر صعب وغير عملي وغير فعال. على سبيل المثال ، تتكون شبكة سانت بطرسبرغ لدينا من 26 ألف عقد و 46 ألف رابط. ولكن هناك أخبار جيدة. يمكن تحويل الشبكة من OpenStreetMap ثم تحريرها باستخدام JOSM ، وهو أيضًا مفتوح المصدر.

الخطط


ملف الخطط هو تمثيل منظم للخطط اليومية للوكلاء. في السيناريو الأولي ، لدينا 100 وكيل يغادرون بالسيارة (mode = "car") في الصباح (end_time = ”05:59") من المنزل (type = "h"، link = "1") للعمل (type = "W" ، link = "20") ، وبعد ذلك يعودون إلى منازلهم بعد مرور بعض الوقت (dur = "02:30").



التكوين


أخيرًا ، في ملف التكوين ، يتم تعيين جميع الإعدادات الضرورية لتشغيل البرنامج النصي. يتكون MATSim من وحدات يمكنك تخصيصها أو إضافتها أو إزالتها حسب الحاجة.
العديد من الإعدادات في ملف التكوين بديهية ، ولكن يمكنك أيضًا النظر دائمًا في ما يسمى. كتاب MATSim . الآن سننظر في وحدتين فقط.
يتم تعيين معلمات التسجيل في وحدة planCalcScore: على سبيل المثال ، يتلقى الوكيل عقوبة 18 وحدة على الوصول المتأخر. فائدة لكل ساعة (على التوالي ، التأخير لمدة 10 دقائق يعادل فقدان 3 وحدات فائدة) ؛ يؤدي أداء بعض الأنشطة (على سبيل المثال ، الأداء) إلى جلب 6 وحدات مساعدة في الساعة ، وتكاليف قيادة السيارة هي نفس 6 وحدات فائدة في الساعة. للبحث عن معلمات تسجيل واقعية ، غالبًا ما يتم استخدام استطلاعات الرأي لتحليل "التكلفة الوقت. "

في وحدة الإستراتيجية ، يتم تكوين معلمات إعادة التخطيط ، على سبيل المثال ، ما هي النسبة المئوية للوكلاء (ModuleProbability) التي ستجرب المسار الجديد (ReRoute) أثناء التكرار التالي.



وبالتالي ، فإن الهدف من المحاكاة هو مساعدة الوكيل على الانتقال من النقطة A إلى النقطة B بأقل تكلفة.

تشغيل البرنامج النصي


الوقت لفتح RunMatsim runner وتشغيل أول برنامج نصي!

ستكون نتائج المحاكاة في مجلد الإخراج في جذر المشروع. الملفات الرئيسية للتصور هي الشبكة والأحداث. يحتوي ملف الأحداث على معلومات في الثانية حول جميع إجراءات كل وكيل ، وبالتالي ، بناءً على هذا الملف ، يمكنك استعادة الصورة الكاملة لحركة جميع الوكلاء. يمكنك تصور النتائج باستخدام Via .
للحصول على نتائج أكثر تمثيلاً ، سأزيد عدد الوكلاء إلى 500. هذه هي الطريقة التي يبدو بها توزيع 500 وكيل بعد التكرار الأول ...



في بداية التكرار ، قام العملاء بحساب أقصر طريقة باستخدام Dijkstraونتيجة لذلك تجاوزت كثافة حركة المرور في قسم واحد من الشبكة إنتاجها ، وتم تشكيل ازدحام. ولكن ماذا لو أعطيتهم الفرصة لتجربة طرق مختلفة؟



بعد 200 تكرار (~ 5 دقائق) ، تم إعادة توزيع الوكلاء عبر الشبكة ، ولا يتجاوز مستوى تحميل الارتباط الآن 0.5 ، وانخفض متوسط ​​وقت السفر لجميع الوكلاء بنسبة 14٪ (5 دقائق). مرحبا ، لقد تغلبنا على الفلين!

أوه ، لو كانت بهذه البساطة! في الواقع ، أنظمة النقل أكثر تعقيدًا. في المقالات التالية سأخبرك كيف شاركت في تطوير نماذج سان بطرسبرج ومدن أخرى وكيف حللنا مشاكل عملية في حالات حقيقية. Scientia potentia est!



نشرها أندريه كولوماتسكي ، محلل النقل في OTSLab.

All Articles