اذهب إلى المحتوى

السؤال

نشر

السلام عليكم والرحمة,

 

ماذا لو استخدمت في الطائرات لعمل Tracking نقطة البدية والوجهة والبوابة الانطلاق منها وعدد الركاب؟

وكيف بالنسبة للربط UI/UXو API و Tracking Dashboard.

وهل لديكم خدمة المساعدة ولو بمقابل مادي في عمل Show Case فقط أحتاج متابعة ف implementation بحيث يتلائم مع المطارات الكبيرة

وشكرا جزيلا

Recommended Posts

  • 0
نشر

تم توضيح الأمر من قبل بخصوص جزئية التعلم المُعزز لكن كإعادة للإفادة، جوهر الفكرة واحد من حيث مباديء التعلم المعزز، وهي:

  • لدينا عامل أو Agent يتخذ قرارات متتابعة.
  • وبيئة تصف قيود الطيران والمطارات.
  • الهدف هو تعظيم مكافأة مرتبطة بسلامة الرحلة، الدقة الزمنية، الكلفة التشغيلية، ورضا الركاب.

بالتالي نحتاج إلى معلومات عن:

  •  نقطة البداية
  • الوجهة 
  • بوابة الإقلاع 
  • عدد الركاب 

ويجب إعادة تعريف الـ State وتضمين كل ما يحتاجه العامل لإتخاذ قرار الخطوة التالية، وليكن التالي:

  • الموقع المكاني ويشمل (خط العرض، خط الطول، الارتفاع) أو خلية مجردة على شبكة 3-D داخل ممرات جوية.
  • الاتّجاه Heading والسرعة True Airspeed
  • مطار الإقلاع، بوابة الإقلاع، مدرج الإقلاع.
  • مطار الوجهة، بوابة الوجهة، المدرج المطلوب.
  • عدد الركاب أو الحمولة (قد يؤثر في الوقود/الأداء).
  • حالة الوقود المتبقّي.
  • ظروف الطقس أو كثافة الحركة الجوية في القطاع الحالي.
  • Slot Time أو هامش التأخير المسموح.

ولتجنُب انفجار حجم الحالات أوما يعرف بـ State-Space Explosion لا بد من إسقاط بعض التفصيلات غير  الجوهرية أو استعمال تمثيل متصل مع شبكات عصبية كـ Deep Q-Network وActor-Critic بدلاً من جدول Q-Table.

وفي الـ Action Space سيتضمن:

  • تغيير الارتفاع صعود أو هبوط بدرجات معينة.
  • تعديل السرعة.
  • الانعطاف بزاوية محددة، أقصد الإتجاه.
  • اختيار مسار Taxiing على أرض المطار من المدرج إلى البوابة أو العكس.
  • طلب تأخير الإقلاع أو تغيير بوابة الالتحام Gate Swap.

- بالنسبة لـ Reward Function لا بد من صياغة مكافأة تُحقق التوازن بين عوامل عدة:

  • الوصول في الموعد المحدد.
  • تقليل استهلاك الوقود وانبعاثات CO₂.
  • تفادي مناطق ازدحام أو أحوال جوية خطرة.
  • عدم التسبب في تعارض مع طائرات أخرى.
  • الحفاظ على راحة الركاب من خلال معدل صعود وهبوط آمن كالتالي:
    • عقوبة كبيرة عند الاقتراب لمسافة أقل من الحد الأدنى أو عند تأخير كبير.
    • عقوبة للحالات غير الصالحة كنفاد الوقود، تجاوز حدود المجال الجوي، إلخ...

- ولإختيار خوارزمية التعلم المناسبة فالطيران نظام مستمر واسع الأبعاد، لذا Q-table لا يكفي.

الحل الأنسب Deep Reinforcement Learning مع شبكات عصبية، DQN للأفعال المحدودة، أو PPO و SAC للأفعال المتصلة.

وفي حالة تعدُد الطائرات فسيتم الأمر من خلال Multi-Agent RL مع مشاركة جزئية للمعلومات أو Centralised Training – Decentralised Execution.

- أما منصة المحاكاة المناسبة يتوفر التالي:

  • BlueSky محاكي مفتوح لمسارات جوية 4-D ويُستخدم كثيراً في أبحاث التوجيه.
  •  X-Plane / MS Flight Simulator مع وصلات SDK للتحكم.
  •  Microsoft Project AirSim المخصص للطائرات بدون طيار والقابل للتعديل.
  •  Open Skies أو  Eurocontrol BADA models لبيانات الأداء.

وتستطيعي الحصول على بيانات جداول الرحلات الحقيقية من خلال OAG و OpenFlights، وتاريخ أحوال الطقس من https://www.ncei.noaa.gov والازدحام الجوي من https://opensky-network.org .

بحيث تُغلفين المحاكي في كلاس gym.Env ليُطبق step()‎, reset()‎, render()‎.

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

بتاريخ 10 دقائق مضت قال فاطمة الهاشمية:

وكيف بالنسبة للربط UI/UXو API و Tracking Dashboard.

هل ستقومين بدراسة تقنيات خاصة بالواجهة الأمامية والخلفية مثل لغة جافاسكريبت والتقنيات الخاصة مثل Next.js؟ الأفضل تعلم ذلك.

لكن لو تريدين التنفيذ عن طريق بايثون، فلديكِ إطار Django أو Flask والأخير أسهل لإنشاء الـ API والواجهة الأمامية من خلال القوالب، ولتبسيط الأمر لن نستخدم قواعد بيانات، ولا بروكر رسائل، ولا WebSocket، فقط مجرد استعلام GET كل ثانية يفي بالغرض للعرض الحي، ولا حاجة لـ Gymnasium أو مكتبات معقدة نسبيًا للتبسيط المطلق.

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

فالطريقة السابقة هي الأبسط.
 

  • 0
نشر

طالما POC سنتجاهل الكثير من الأمور، الأسهل الإعتماد على المكتبات التالية من خلال بايثون فقط.

  • streamlit
  • pandas
  • fastapi
  • uvicorn
  • asyncio

ومن خلال ما سبق ستتمكني من تخزين البيانات في DataFrame بالذاكرة أو إلى ملف CSV لو أردتي، وإظهار إحصاء يومي بسيط عن طريق streamlit بالإضافة إلى قيمة حيّة مُحدثة كل ثانية.

استخدمي fastapi كـ API وwebsocket  ومولد بيانات بكتابة دالة  تُنشئ قيماً عشوائية أو شبه عشوائية كل ثانية تمثّل خط الطول، خط العرض، الارتفاع، السرعة، عدد الركاب وخلافه.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...