برنامه نویسی

مسیریابی ترافیک هوایی با ممگراف

بر کسی پوشیده نیست که کنترل ترافیک هوایی (ATC) یکی از پر استرس ترین مشاغل در جهان است. کنترل کننده ها باید سریع، هوشیار و مهارت های تصمیم گیری خوبی داشته باشند. هنگام نظارت بر پروازها موارد زیادی مانند جلوگیری از برخورد و طوفان باید در نظر گرفته شود. گاهی اوقات خلبانان نیاز به فرود اضطراری دارند. پروازها با تاخیر یا لغو می شوند. بسیاری از چیزها ممکن است اشتباه پیش برود و نگه داشتن همه آنها کار دشواری است که به تیم های متخصص نیاز دارد. حتی اگر هوانوردی در طول دو قرن اخیر پیشرفت زیادی داشته است، هنوز هم در بسیاری از زمینه‌ها جا برای پیشرفت وجود دارد. در اینجا ما به نحوه کمک به محاسبه و تجسم برخی از وظایف متداول ATC خواهیم پرداخت.

هواپیماها و نمودارها

هنگام سفر از یک فرودگاه به فرودگاه دیگر، هواپیماها از مکان های خاصی برای حرکت در آسمان استفاده می کنند. به این مکان ها نقاط بین راه گفته می شود و با مختصات آنها تعریف می شوند. هواپیماهای مدرن با استفاده از سیستم های ناوبری رادیویی مانند GPS یا VOR، این نقاط بین راه را ردیابی می کنند. هر دو فرودگاه و ایستگاه‌های بین راهی، مانند بسیاری از عناصر هوانوردی دیگر، دارای نام‌های رمز منحصربه‌فرد ایکائو هستند و به همین دلیل می‌توان آنها را با گره‌های یک نمودار نشان داد. اگر با نمودارها و مفاهیم گراف آشنایی ندارید، می توانید در اینجا بیشتر در مورد آنها بیاموزید. به طور خلاصه، نمودارها ساختارهایی هستند که از گره هایی ساخته می شوند که نهادها و روابطی را نشان می دهند که نشان دهنده ارتباطات بین آنها هستند. با در نظر گرفتن این موضوع، بدیهی است که فرودگاه ها و ایستگاه های بین راه می توانند گره های مختلفی باشند و راه های هوایی بین آنها می تواند روابط باشد. اختصارات استاندارد فرودگاه ها و ایستگاه های بین راه به ترتیب ARP و WPT هستند و در مثال های زیر از آنها برای تعریف انواع گره های خود استفاده خواهیم کرد.

مسیریابی ترافیک هوایی با ممگراف

چرا آزمایشگاه ممگراف؟

پاسخ ساده است: یک نقشه یکپارچه از جهان دارد! هنگامی که گره هایی که دارای ویژگی هایی به نام “lat” و “lng” هستند در پایگاه داده بارگذاری می شوند، به موقعیت های واقعی خود در نقشه همانطور که ظاهر می شود پین می شوند. این به ما دید واضحی از مشکل می دهد، زیرا می توانیم گره ها را به عنوان نقاط ثابت روی زمین به جای اشیاء انتزاعی متحرک ببینیم. بیایید آن را امتحان کنیم!

می توانید Memgraph Lab را در صفحه دانلود ما بیابید و با دنبال کردن این راهنما شروع کنید.
پس از آماده شدن، به تب Query رفته و موارد زیر را اجرا می کنیم:

CREATE (n:ARP { id: "EGLL", lat:51.477501, lng:-0.461389});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون که یک گره فرودگاه ایجاد کرده‌ایم، می‌توانیم شکل آن را روی نقشه ببینیم:

MATCH (n:ARP) RETURN n;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نقشه ما ایجاد می شود و یک گره ARP با شناسه “EGLL” را نشان می دهد که فرودگاه هیترو لندن است.

1680115174 460 مسیریابی ترافیک هوایی با ممگراف

1680115174 898 مسیریابی ترافیک هوایی با ممگراف

در حال بارگیری داده ها

ما به بیش از یک گره نیاز داریم تا نحوه عملکرد یک سفر با هواپیما را نشان دهیم. به جای اجرای صدها بار یک پرس و جو، می توانیم مجموعه ای از نودها و روابط از پیش ساخته شده را به پایگاه داده خود وارد کنیم. من فایل‌های CSV ایجاد کرده‌ام که حاوی اطلاعاتی درباره فرودگاه‌های خاص، ایستگاه‌های بین راه و روابط بین آنهاست.

با استفاده از این آموزش می توانیم فایل های بالا را بارگذاری کنیم و پایگاه داده گراف خود را ایجاد کنیم. همانطور که قبلا ذکر شد، فرودگاه ها گره هایی با برچسب ARP و ایستگاه های بین راه گره هایی با برچسب WPT هستند. رابطه بین دو نقطه راه راه هوایی نامیده می شود و به این صورت برچسب گذاری می شود. رابطه بین یک فرودگاه و یک ایستگاه بین راه شامل رویه های مسیر خاصی به نام SID و STAR است، بنابراین نوع رابطه SID/STAR است. روابط همچنین فاصله بین دو نقطه ناوبری را نشان می دهد. فاصله با مایل دریایی اندازه گیری می شود، زیرا این واحد اندازه گیری مطلوب در هوانوردی است. اگر داده ها به درستی وارد شده اند، اجرای پرس و جو زیر باید نتیجه مشابهی را ایجاد کند.

MATCH (n)-[r]-(m) RETURN n,r,m;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

1680115175 927 مسیریابی ترافیک هوایی با ممگراف

در این مورد، گره های نارنجی فرودگاه ها (ARP) و گره های بنفش نقاط بین راهی (WPT) هستند.

1680115176 594 مسیریابی ترافیک هوایی با ممگراف

1680115176 420 مسیریابی ترافیک هوایی با ممگراف

سفر سریعتر

فرض کنید باید از لندن به پاریس سفر کنیم. به طور خاص، از فرودگاه هیترو لندن تا فرودگاه شارل دوگل در پاریس. نموداری که قبلا بارگذاری کرده‌ایم برای این مثال طراحی شده است، زیرا هیچ نقطه ناوبری خارج از جهت مسیریابی عمومی وجود ندارد، زیرا خلبانان و کنترل‌کنندگان ترافیک هوایی می‌دانند که هواپیما در کدام جهت باید فرودگاه را ترک کند. این به ما یک شبکه محدود اما همچنان پیچیده از نقاط ناوبری (همانطور که در پاراگراف قبل دیده شد) می دهد که قرار است هواپیما را به مقصد برساند. به طور معمول، یک خلبان مجبور نیست تمام ایستگاه های بین مسیر را دنبال کند و می تواند هواپیما را هر طور که می خواهد تا پیدا کردن ایستگاه بعدی پرواز کند، اما دنبال کردن آنها تشویق می شود، زیرا در دراز مدت بسیار ایمن تر است. ما می خواهیم سفر را تا حد امکان کوتاه کنیم تا زمان و سوخت را تلف نکنیم. ما می توانیم کوتاه ترین مسیر بین هیترو و شارل دوگل را با استفاده از پرس و جو زیر پیدا کنیم:

MATCH p = (:ARP { id: "EGLL"})-[* wShortest (e, n | e.dist_nm)]-(:ARP { id: "CDG"})
RETURN p;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

1680115176 828 مسیریابی ترافیک هوایی با ممگراف

ما اطلاعات بیشتری در مورد سفر می خواهیم. خلبان برای انجام سریع ترین سفر ایمن باید از کدام نقاط بین راهی پیروی کند؟

MATCH p = (:ARP { id: "EGLL"})-[* wShortest (e, n | e.dist_nm)]-(:ARP{id:"CDG"})
UNWIND (nodes(p)) AS rows
RETURN rows.id;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر روی Data کلیک کنیم، نتیجه را خواهیم دید. اکنون فهرستی از 17 گره (2 فرودگاه و 15 ایستگاه بین راه) داریم.

1680115177 979 مسیریابی ترافیک هوایی با ممگراف

برای اینکه بفهمیم کل سفر چقدر طول می کشد، فقط باید تغییرات جزئی ایجاد کنیم:

MATCH p = (:ARP { id: "EGLL"})-[* wShortest (e, n | e.dist_nm) total_dist]-(:ARP{id:"CDG"})
RETURN total_dist;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه کل مسافت بر حسب مایل دریایی است.

1680115177 629 مسیریابی ترافیک هوایی با ممگراف

فرود اضطراری

یک خلبان می تواند تصمیم بگیرد که در صورت بروز شرایطی که به آن نیاز دارد، فرود اضطراری انجام دهد. در حالی که انواع مختلفی از فرود اضطراری وجود دارد، ما فقط فرود احتیاطی را در اینجا نشان خواهیم داد زیرا سایر انواع فرود شامل فرود در فرودگاه نمی شود. فرود احتیاطی می تواند ناشی از کمبود سوخت، آب و هوای بد یا نقص جزئی باشد و در این مواقع، هدف خروج از مسیر برنامه ریزی شده و یافتن نزدیکترین فرودگاه موجود است.

فرض کنید هواپیما به تازگی از ایستگاه بین المللی BELDI عبور کرده است و باید یک فرود احتیاطی انجام دهد. از این نقطه، ما باید کوتاه ترین مسیر را برای رسیدن به یک فرودگاه در دسترس پیدا کنیم. پرس و جوی مورد نیاز ما مشابه مورد قبلی است، با این تفاوت که این بار به دنبال فرودگاه مقصد خاصی نیستیم.

MATCH p = (:WPT { id: "BELDI"})-[* wShortest (e, n | e.dist_nm) total_dist]-(:ARP)
RETURN p;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه یک نمودار با نقطه بین BELDI در وسط و مسیرهایی است که از آن به فرودگاه های مختلف منشعب می شوند.

1680115177 186 مسیریابی ترافیک هوایی با ممگراف

در حالی که این یک دید کلی از تمام فرودهای احتمالی که می توانیم انجام دهیم به ما می دهد، ما باید مسیر نزدیکترین فرودگاه را پیدا کنیم. ما می توانیم این کار را با اضافه کردن یک محدودیت به پرس و جو قبلی خود انجام دهیم:

MATCH p = (:WPT { id: "BELDI"})-[* wShortest (e, n | e.dist_nm) total_dist]-(:ARP)
RETURN p, total_dist
ORDER BY total_dist ASC LIMIT 1;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما به سرعت نزدیکترین فرودگاه موجود را پیدا کردیم و فرود اضطراری با موفقیت انجام شد.

1680115178 51 مسیریابی ترافیک هوایی با ممگراف

1680115178 740 مسیریابی ترافیک هوایی با ممگراف

در برخی موارد شدید، فرودگاه های نظامی ممکن است هرگونه فرود اضطراری را رد کنند، بنابراین هواپیما باید به دنبال فرودگاه هایی باشد که برای عموم باز هستند. ما می توانیم پرس و جو قبلی را با این محدودیت تغییر دهیم:

MATCH p = (:WPT { id: "BELDI"})-[* wShortest (e, n | e.dist_nm) total_dist]-(:ARP {use: "Open to the Public"})
RETURN p, total_dist
ORDER BY total_dist ASC LIMIT 1;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون ما یک سفر کمی طولانی تر داریم.

1680115178 48 مسیریابی ترافیک هوایی با ممگراف

1680115178 97 مسیریابی ترافیک هوایی با ممگراف

یک بار دیگر، اگر می‌خواهیم فهرستی از نقاط راه داشته باشیم، می‌توانیم پرس و جو قبلی را تغییر داده و زیر Data را بررسی کنیم:

MATCH p =(:WPT { id: "BELDI"})-[* wShortest (e, n | e.dist_nm) total_dist]-(:ARP {use: "Open to the Public"})
RETURN nodes(p)
ORDER BY total_dist ASC LIMIT 1;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

1680115179 43 مسیریابی ترافیک هوایی با ممگراف

طوفان گریز

اگرچه بیشتر هواپیماهای مدرن برای مقاومت در برابر شرایط طوفانی طراحی شده اند، اما بهتر است از برخی آب و هوای دشوار اجتناب شود. در طول پرواز، خلبانان می توانند از ATC درخواست به روز رسانی آب و هوا کنند یا می توانند طوفان های آینده را از طریق فناوری رادار آب و هوا دریافت کنند. در بیشتر موارد، می توان از یک منطقه خطرناک بدون دور شدن بیش از حد از مسیر تعیین شده فرار کرد، اما گاهی اوقات لازم است که منطقه به طور کامل دور شود. در آن صورت، یک خلبان ممکن است از ATC بخواهد که از مسیر منحرف شود. به جای اینکه کنترلرها مجبور شوند مسیر دیگری را بررسی کنند، می توانیم به آزمایشگاه ممگراف اجازه دهیم این کار را برای ما انجام دهد.

اگر خلبان هنگام پرواز بر فراز ایستگاه بین راهی TOMMO، اطلاعاتی از ATC دریافت کند که طوفان های خطرناک در نزدیکی ایستگاه های بین راهی ACORN، BEXIL و TMA18 قرار دارند، چه؟ او باید از این مکان ها اجتناب کند و در عین حال سفر را تا حد امکان کوتاه می کند. بیایید ویژگی آب و هوای این ایستگاه های بین راه را تغییر دهیم.

MATCH (n:WPT { id: "ACORN"})
SET n.weather = "dangerous”
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای دو نقطه دیگر نیز همین کار را انجام می دهیم. اکنون باید کوئری کوتاهترین مسیر را دوباره اجرا کنیم، اما این بار باید a را اضافه کنیم فیلتر لامبدا فقط مسیرهایی را بدون آب و هوای خطرناک در نظر بگیرید.

MATCH p = (:WPT { id: "TOMMO"})-[* wShortest (e, n | e.dist_nm) total_dist(e, n | n.weather="normal")]-(:ARP {id: "CDG"})
RETURN p, total_dist;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما مسیر جدیدی را که خلبان باید طی کند پیدا کرده ایم.

1680115179 951 مسیریابی ترافیک هوایی با ممگراف

1680115179 60 مسیریابی ترافیک هوایی با ممگراف

تجسم با ویرایشگر سبک

با استفاده از اسکریپت سبک، می‌توانیم تصاویر نمودارهای خود را سفارشی کنیم و داده‌ها را در نگاه اول قابل درک‌تر کنیم. هنگامی که روی ویرایشگر سبک کلیک می کنیم، متوجه می شویم که قبلاً چند سبک اعمال شده است:

1680115179 515 مسیریابی ترافیک هوایی با ممگراف

چگونه می توانیم از Style Editor برای روشن کردن نمودار خود به شیوه ای هوشمندانه استفاده کنیم؟ بیایید به مثال قبلی خود در مورد طوفان نگاه کنیم. ما می‌توانیم تمام ایستگاه‌های بین راه را با آب و هوای خطرناک قرمز رنگ کنیم و آنها را بزرگ کنیم تا احتیاط کنیم.

@NodeStyle Equals(Property(node, "weather"), "dangerous") {
    color: red
    color-hover: Darker(red)
    size: 30
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از کلیک بر روی Apply، نمودار ما باید به شکل زیر باشد:

1680115179 241 مسیریابی ترافیک هوایی با ممگراف

در مورد لبه ها چطور؟ ما می‌توانیم تمام لبه‌هایی که از روش‌های SID و STAR استفاده می‌کنند را به رنگ نارنجی رنگ کنیم تا برجسته‌تر شوند.

@EdgeStyle Equals(Type(edge), "SID/STAR") {
    color: orange
    width: 200
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

1680115180 533 مسیریابی ترافیک هوایی با ممگراف

اگر بخواهیم ببینیم کدام راه های هوایی طولانی تر از 50 مایل دریایی است چه؟ بیایید آنها را سرخابی رنگ کنیم.

@EdgeStyle And(Equals(Type(edge),"AIRWAY"),Greater(Property(edge,"dist_nm"),50)) {
    color: magenta
    width: 200
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

1680115180 550 مسیریابی ترافیک هوایی با ممگراف

امکانات بی پایان هستند. می‌توانید هر چقدر که دوست دارید با ویرایشگر سبک بازی کنید و نمودار خود را منحصربه‌فرد جلوه دهید.

نتیجه

چیزهای زیادی وجود دارد که می توان در هوانوردی مانند هر صنعت مدرن دیگری بهینه سازی کرد. یک شبکه بزرگ از نقاط ناوبری یک ساختار گراف کلاسیک است و به همین دلیل از استفاده از پایگاه داده گراف سود زیادی می برد. ما برخی از عملکردهای اساسی Memgraph Lab را بررسی کرده‌ایم تا نشان دهیم چگونه می‌توان از ویژگی‌های آن برای دستکاری داده‌ها با تأکید بر سرعت، نمایش بصری و سهولت درک استفاده کرد. اگر احساس خلاقیت می‌کنید، می‌توانید سناریوهای پرواز خود را بیاورید و آنها را امتحان کنید. آسمان حد است!

اطلاعات بیشتر در مورد الگوریتم های گراف و پایگاه های داده گراف را در memgraph.com بخوانید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا