الگوریتم NSGA-II یکی از معروف‌ترین الگوریتم‌های بهینه‌سازی چندهدفه است که در زمینه بهینه‌سازی مسائل مختلف استفاده می‌شود. هدف اصلی این الگوریتم، پیدا کردن یک مجموعه از بهترین راه‌حل‌ها (که به آن مجموعه پارتو بهینه گفته می‌شود) است که همزمان بیش از یک هدف بهینه‌سازی را برآورده کنند. این الگوریتم معمولاً در مسائل پیچیده‌ای که نیاز به در نظر گرفتن چندین هدف مختلف دارند، به کار می‌رود.

Multi-objective optimization process based on NSGA-II algorithm. | Download  Scientific Diagram

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

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

این الگوریتم در بسیاری از مسائل عملی به کار می‌رود. یکی از کاربردهای مهم آن که نویسنده به آن اشاره کرده است، استفاده از NSGA-II برای تنظیم بهینه‌سازی کنترل‌کننده‌های PID با استفاده از الگوریتم‌های بهینه‌سازی تکاملی است. این کاربرد به طور خاص در کنترل سیستم‌ها و بهبود عملکرد آنها بسیار مفید است.

در نسخه‌ی به‌روزرسانی شده (ژانویه ۲۰۰۹)، نویسنده اعلام کرده است که به دلیل کمبود زمان، نمی‌تواند درخواست‌های کاربران برای اضافه کردن محدودیت‌ها به این برنامه را پشتیبانی کند. بنابراین، این برنامه تحت مجوز GPLv3 منتشر شده است، که به این معناست که هر فردی می‌تواند این کد را تغییر داده و طبق نیاز خود استفاده کند، اما توصیه می‌شود که این تغییرات به جامعه بازگردانده شوند.

در جولای ۲۰۰۹، به دلیل تغییرات سیاست‌های شرکت MathWorks در رابطه با مجوزها، این کد تحت مجوز BSD مجدداً منتشر شد. با این تغییر، کد برای استفاده عمومی و تجاری آزادتر و قابل دسترس‌تر شد.

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

توضیحات بیشتر:

الگوریتم NSGA-II از روش‌های انتخاب، کراس‌اور و جهش برای ایجاد نسل‌های جدید استفاده می‌کند تا مجموعه‌ای از راه‌حل‌های بهینه به دست آید که هیچکدام از آنها نسبت به دیگری برتری نداشته باشند (یعنی هیچکدام از آنها در هیچکدام از اهداف بهتر از دیگری نیستند). این الگوریتم به دلیل کارایی بالا در حل مسائل پیچیده بهینه‌سازی که دارای اهداف متعدد و گاهی متناقض هستند، بسیار پرکاربرد است. از این رو، NSGA-II در بسیاری از حوزه‌ها مانند مهندسی، مدیریت منابع و حتی علم داده کاربرد دارد.

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

دسته بندی: برچسب ها: