آموزش نصب ابزار مدیریت اجرای شبیه سازی ها (SEM) برای نرم افزار NS3
در این بخش مراحل آموزش نصب ابزار مدیریت اجرای شبیه سازی ها (SEM) را بر روی نرم افزار NS3 ارائه می کنیم که می تواند در استخراج نتایج پروژه بسیار مفید و کاربردی باشد. در ادامه توضیحاتی از معرفی این ابزار ارائه شده و فیلم آموزشی آن نیز قرار داده شده است.
معرفی SEM
در گذشته شبیه سازی های دسته ای نرم افزار NS2 با استفاده از زبان های اسکریپت نویسی مناسب اجرا می شدند و تحلیل نتایج نیز با زبان های اسکریپت نویسی مانند زبان Perl انجام می شد. اکنون ابزار مدیریت اجرای شبیه سازی (Simulation Execution Manager – SEM) این فرآیند را با روشی پیشرفته تر برای شبیه سازی و تحلیل دسته ای فراهم می کند. ابزار SEM یک کتابخانه پایتون است که برای مدیریت و ساده سازی اجرای چندین شبیه سازی در NS3، مدیریت نتایج و سازماندهی آن ها به روشی مناسب و برای تحلیل های بیشتر از پروژه طراحی شده است. این ابزار به ویژه زمانی مفید است که شما نیاز به اجرای شبیه سازی های گسترده با نرم افزار NS3 دارید، جایی که باید فرآیندها را خودکار کنید، چندین اجرا را مدیریت و خروجی ها را برای پردازش های پی در پی جمع آوری کنید. در این مقاله آموزشی توضیح می دهیم که SEM چیست و چگونه SEM را در لینوکس نصب کنیم.
مروری بر عملکرد Simulation Execution Manager
ابزار SEM با هدف ساده سازی گردش کار برای شبیه سازی های انجام شده در نرم افزار NS3 که یک شبیه ساز شبکه رویداد گسسته محبوب می باشد طراحی شده است. به طور معمول، اجرای شبیه سازی ها در NS3 شامل نوشتن دستی اسکریپت ها، اجرای آنها به صورت جداگانه و تجزیه و تحلیل نتایج است. اما برای شبیه سازی هایی با مقیاس بزرگ یا اجراهای تکراری با پارامترهای مختلف، این فرآیند دستی می تواند بسیار وقت گیر و چالش برانگیز باشد. اما SEM این فرآیند های را خودکار می کند و به کاربران اجازه می دهد با تحلیل ها و خروجی های پروژه خود به سادگی کار کنند.
ویژگی های SEM
- اجرای چندین شبیه سازی: اجرای چندین اسکریپت NS3 به صورت متوالی یا موازی با پارامترها و پیکربندی های مختلف. این ابزار پیچیدگی اجرای دستی اسکریپت ها و مدیریت اجرای دسته ای را آسان تر می کند.
- مدیریت نتایج: پس از اجرا، SEM نتایج هر اجرا را جمع آوری می کند، داده ها را پردازش می کند و آنها را در ساختارهایی مانند دیتافریم پانداس سازماندهی می کند. این کار تحلیل و تجسم نتایج را برای کاربران ساده تر می کند.
- پارامترسازی: کاربران می توانند پارامترهای شبیه سازی را در اجراهای مختلف تغییر دهند و و امکان اجرای آسان جابجایی پارامترها و تحلیل های حساس را فراهم کنند.
- دارای رابط خط فرمان تعاملی
- API پایتون
- بهینه سازی خودکار اجرای موازی شبیه سازی ها
- پشتیبانی از خوشه های DRMAA
- قابلیت استخراج نتایج با فرمت های MATLAB .mat، Numpy .npy و ساختار درختی
- پشتیبانی از ردیابی مبتنی بر Git
- پرش یا صرف نظر از شبیه سازی هایی که قبلاً در پایگاه داده موجود هستند
فلوچارت نحوه عملکرد ابزار SEM
برجسته ترین ویژگی های SEM
- خودکارسازی اجرای شبیه سازی ها:
SEM به شما امکان می دهد کل فرآیند اجرای شبیه سازی ها را خودکار کنید. شما می توانید تعداد اجرای شبیه سازی، پارامترهای مختلف را مشخص کنید و ابزار به طور خودکار این اجراها را بدون دخالت دستی انجام می دهد.
- جمع آوری نتایج:
پس از هر اجرای شبیه سازی، SEM نتایج را جمع آوری می کند که معمولاً در فایل های خروجی ذخیره می شوند، و آنها را در قالبی سازماندهی می کند که پردازش آن ها آسان است، مانند فایل های CSV، JSON یا مستقیماً به ساختارهای داده پایتون مانند لیست ها یا DataFrame ها تبدیل می کند.
- اجرای موازی:
این ابزار از اجرای موازی شبیه سازی ها پشتیبانی می کند و از پردازنده های چند هسته ای برای کاهش زمان کلی اجرا استفاده می کند. این امر به ویژه هنگام اجرای چندین شبیه سازی با تنظیمات مختلف مفید است.
- مدیریت پارامترها:
می توانید محدوده ای از پارامترها را تعریف کنید و به طور سیستماتیک شبیه سازی ها را در سراسر این مجموعه پارامترها اجرا کنید. SEM پیچیدگی اجرای این اسکریپت های پارامتریزه شده و ردیابی تنظیمات مختلف را مدیریت می کند.
- پس پردازش:
پس از تکمیل شبیه سازی ها، SEM مکانیزم هایی برای سازماندهی داده های خروجی فراهم می کند. این امکان ادغام یکپارچه با کتابخانه های پایتون مانند Matplotlib، NumPy و Pandas برای تحلیل و تجسم را فراهم می کند.
- یکپارچه سازی با Binder:
SEM می تواند از طریق Binder با نوت بوک های Jupyter ادغام شود و به کاربران امکان می دهد شبیه سازی ها را مستقیماً از یک رابط مبتنی بر وب بدون نیاز به تنظیمات پیچیده محلی اجرا کنند. این امر به ویژه برای اشتراک گذاری و همکاری در آزمایش های شبیه سازی مفید است.
مزایای استفاده از SEM
- جستجوی پارامتری:
می توانید جستجوی پارامتری را برای تنظیمات شبکه، مانند تغییر توان انتقال، پهنای باند یا چگالی گره در شبیه سازی LoRaWAN انجام دهید. SEM خودکارسازی اجرای شبیه سازی ها در پیکربندی های مختلف و سازماندهی نتایج برای تحلیل را مدیریت می کند.
- شبیه سازی های مونت کارلو:
SEM می تواند به اجرای چندین تکرار از شبیه سازی های تصادفی شبکه کمک کند، مانند شبیه سازی هایی که به فرآیندهای تصادفی (مانند مدل های تحرک تصادفی یا فرآیندهای ورود بسته) وابسته هستند. پس از جمع آوری داده ها از هر اجرا، ابزار تحلیل آماری را ساده می کند.
- تحلیل حساسیت:
با اجرای شبیه سازی ها با پارامترهای کمی متفاوت، SEM می تواند به ارزیابی پایداری پروتکل ها و پیکربندی های شبکه در برابر تغییرات محیطی و عملیاتی کمک کند.
- پردازش دسته ای برای اهداف آموزشی:
SEM می تواند در محیط های دانشگاهی برای کمک به دانشجویان و پژوهشگران در مدیریت و اجرای تعداد زیادی از اجرای شبیه سازی، بدون نیاز به آشنایی عمیق با اسکریپت نویسی و جزئیات اجرای NS3 استفاده شود.
استفاده از SEM
- راه اندازی:
شما با نوشتن اسکریپت های شبیه سازی خود در NS3 شروع می کنید. SEM جایگزینی برای اسکریپت نویسی NS3 نیست، بلکه یک لایه خودکارسازی بر روی آن است.
- اجرا:
با استفاده از کتابخانه پایتون، شما تعداد اجراهایی که می خواهید انجام دهید، اسکریپت هایی که باید استفاده کنید و پارامترهایی که باید تغییر کنند را تعریف می کنید. SEM اجرا ها را مدیریت می کند و پیگیری می کند که کدام اجرا مربوط به کدام مجموعه پارامتر است.
- جمع آوری داده:
SEM خروجی هر اجرا را جمع آوری می کند و آن را به فرمت های کاربرپسند تجمیع می کند و به شما امکان می دهد که به سرعت به مرحله تحلیل و تجسم بروید.
- پس پردازش و تحلیل:
پس از تکمیل شبیه سازی ها و جمع آوری داده ها، می توانید از کتابخانه های پایتون مانند Pandas برای دستکاری داده ها یا Matplotlib برای تجسم نتایج استفاده کنید.
مراحل نصب و راه اندازی SEM
می توانیم به راحتی SEM را با استفاده از pip که یک ابزار مدیریت پکیج در پایتون است، به صورت زیر نصب کنیم:
1 | $ pip3 install --user sem |
این دستور تمام پیش نیاز های مورد نیاز برای اجرای sem را نصب می کند. این بسته sem و پیش نیاز های آن را در مسیر کتابخانه Python سیستم نصب می کند. تصویر زیر پیشرفت مراحل نصب را نشان می دهد.
تصویر زیر نیز نصب موفقیت آمیز را نشان می دهد:
همچنین می توانیم آخرین نسخه توسعه یافته را مستقیماً از آخرین commit در شاخه اصلی مخزن Github نصب کنیم:
1 | pip3 install --user -U https://github.com/signetlabdei/sem/archive/master.zip |
تست SEM
پس از نصب موفقیت آمیز، می توان مراحل موجود در آدرس زیر را برای شروع شبیه سازی و تحلیل دسته ای در NS3 مبتنی بر SEM دنبال کرد.
1 | https://signetlabdei.github.io/sem/getting-started.html#running-simulations |
ما می توانیم کار نصب SEM خود را با چند خط کد پایتون آزمایش کنیم:
1 2 3 4 5 | import sem ns_path = 'ns-3-dev/' script = 'wifi-multi-tos' campaign_dir = 'testResults' campaign = sem.CampaignManager.new(ns_path, script, campaign_dir, overwrite=True, max_parallel_processes=2) |
اگر دستور بالا را اجرا کنیم، شروع به build نرم افزار NS3 می کند (اگر نرم افزار شبیه ساز NS3 به تازگی نصب شده باشد، همه چیز را کامپایل می کند، بنابراین ممکن است زمان زیادی طول بکشد).
1 | Building ns-3: 100%|████████████████████████████| 2/2 [00:00<00:00, 15.16file/s] |
نمایش کمپین:
1 | print(campaign) |
1 2 3 4 5 6 | --- Campaign info --- script: wifi-multi-tos params: {'nWifi': 4.0, 'distance': 1.0, 'simulationTime': '+10s', 'useRts': False, 'mcs': 7.0, 'channelWidth': 20.0, 'useShortGuardInterval': False} HEAD: Runner type: ----------- |
حالا چند پارامتر را تنظیم می کنیم:
1 2 3 4 5 6 7 8 9 10 | param_combination = { 'nWifi': 1, 'distance': 1, 'simulationTime': 10, 'useRts': False, 'mcs': 7, 'channelWidth': 20, 'useShortGuardInterval': False, 'RngRun': 0 } |
و دوباره کمپین را اجرا می کنیم:
1 | retults=campaign.run_simulations([param_combination]) |
ممکن است شبیه سازی را دوباره build و اجرا کند:
1 2 | Building ns-3: 100%|████████████████████████████| 2/2 [00:00<00:00, 14.28file/s] Running simulations: 100%|████████████████| 1/1 [00:00<00:00, 1.41simulation/s] |
نمایش یک نمونه نتیجه از کمپین:
1 2 | example_result = campaign.db.get_complete_results()[0] print(example_result) |
این کار ممکن است نتیجه ای مانند نتیجه زیر را نشان دهد:
1 2 3 4 | {'params': {'nWifi': 1, 'distance': 1, 'simulationTime': 10, 'useRts': False, 'mcs': 7, 'channelWidth': 20, 'useShortGuardInterval': False, 'RngRun': 0}, 'meta': {'id': 'bd00321f-4836-4a07-b658-fe5e3bbbad48', 'elapsed_time': 6.03503942489624, 'exitcode': 0}, 'output': {'stdout': '<strong>Aggregated throughput: 46.9038 Mbit/s</strong>\n', 'stderr': ''}} |
ما ممکن است نمودارهای مختلفی را با استفاده از نتایج ذخیره شده رسم کنیم. ممکن است نحوه تولید نمودارها و انجام تحلیل ردیابی را در مقاله دیگری ببینیم.
خلاصه و نتیجه گیری
SEM مدیریت شبیه سازی های NS3 را با خودکارسازی وظایف تکراری، سازمان دهی نتایج شبیه سازی و ارائه ابزارهایی برای پس پردازش و تجزیه و تحلیل ساده می کند. ادغام آن با نوت بوک های Python و Jupyter آن را بسیار کارآمد و مفید می کند، به ویژه برای کاربرانی که می خواهند به سرعت شبیه سازی های مقیاس بزرگ را انجام دهند و نتایج را به روشی کارآمد و مقیاس پذیر تحلیل کنند. SEM با کاهش سربار مربوط به اجرای شبیه سازی های متعدد NS3 ، به محققان و توسعه دهندگان این امکان را می دهد تا به جای تدارکات اجرای آنها، بر بینش های تولید شده از شبیه سازی هایشان تمرکز کنند.
منبع: projectguideline.com
هیچ نظری ثبت نشده است