الگوریتم بهینه سازی وال ها یا نهنگ WOA عنوان مطلبی است که در این بخش به آن پرداخته میشود. این الگوریتم توسط سید علی میرجلیلی (Seyedali Mirjalili) در سال ۲۰۱۶ در مقاله The Whale Optimization Algorithm در ژورنال Advances in Engineering Software پایگاه علمی Elsevier ارائه شده است.
مقدمه
الگوریتمهای بهینهسازی فراابتکاری روز به روز در کاربردهای مهندسی محبوبتر میشوند. زیرا اولاً بر روی مفاهیم نسبتاً ساده تکیه دارند و پیادهسازی آنها آسان است. ثانیاً به اطلاعات گرادیان نیاز ندارند. ثالثاً میتواند خطر گیر افتادن در بهینهگی محلی را دور بزنند و در نهایت در طیف گستردهای از مسائل که رشتههای مختلف را پوشش میدهد استفاده میشوند. در ادامه به معرفی نحوه کار کرد الگوریتم بهینه سازی WOA پرداخته میشود. مقاله اصلی این الگوریتم را میتوانید از این لینک (+) دانلود کنید.
الگوریتم بهینه سازی وال ها یا نهنگ ها
یکی از بزرگترین پستانداران دنیا وال یا نهنگ است از بین ۷ نهنگ دنیا معروفترین آنها، نهنگ گوژپشت یا نهنگ کوهان دار است. یک وال گوژپشت بالغ تقریباً به اندازه یک اتوبوس مدرسه است. شکار مورد علاقه والها، کریل و گروههای ماهی کوچک است. جالبترین نکته در مورد والهای گوژپشت روش خاص شکار آنها میباشد. این رفتار کاوش گرانه به نام روش تغذیه حباب تور (Bubble-net) شناخته میشود.
والهای گوژپشت ترجیح میدهند تا دستهای از کریلها و یا ماهیهای کوچک را در نزدیک سطح آب شکار کنند. این نکته مشاهده شده است که این کاوش و شکار، با ایجاد حبابهای شاخصی در امتداد یک دایره یا مسیرهایی به انجام میرسد. الگوریتم WOA یکی از الگوریتم های بهینه سازی الهام گرفته شده از طبیعت و مبتنی بر جمعیت است که در زمینههای مختلف میتوان از آن استفاده کرد.
مراحل الگوریتم
الگوریتم وال WOA در سه مرحله یا سه فاز انجام میشود که بصورت زیر است:
- شکار محاصرهای
- فاز بهره برداری: روش حمله به حباب تور
- مرحله اکتشاف: جستجوی شکار
شکار محاصرهای در الگوریتم وال
والها میتوانند مکان شکار را شناسایی کرده و آنها را محاصره کنند. از آنجایی که مکان طراحی بهینه در فضای جستجو از راه مقایسه شناخته نمیشود، الگوریتم فرض میکند که بهترین راه حل کاندید حال حاضر، شکار هدف بوده و یا نزدیک به حالت مطلوب است. بعد از اینکه بهترین عامل جستجو شناسایی شد، عوامل دیگر جستجو سعی میکنند تا مکان خود را نسبت به بهترین عامل جستجو، به روزرسانی کنند. این رفتار از طریق روابط (۲.۱) و (۲.۲) مقاله بیان شده است:
که در آن t تکرار جاری را نشان میدهد، A و C بردارهای ضرائب ، *X بردار مکان بهترین راه حل بدست آمده در حال حاضر و X بردار مکان است. لازم به ذکر است که در صورت وجود راه حل بهتر، *X در هر تکرار باید بروز شود. بردار A و C به صورت زیر محاسبه میگردد:
که a به صورت خطی از مقدار ۲ تا ۰ و در طی تکرارها کاهش مییابد (در هر دو فاز اکتشاف و استخراج) و r بردار تصادفی در فاصله ۰ تا ۱ است.
فاز بهره برداری در الگوریتم وال – روش حمله به حباب تور
جهت مدلسازی ریاضی رفتار حباب تور والها، ۲ روش طراحی شده است:
- مکانیزم محاصرهی انقباضی: این رفتار به از طریق افزایش مقدار a در رابطه (۲.۳) حاصل میشود. محدوده نوسان A بوسیله a کاهش مییابد. به عبارت دیگر، A مقداری تصادفی در فاصله a تا a- است و a در طی تکرارها، از مقدار ۲ تا ۰ کاهش مییابد. با انتخاب مقادیر تصادفی A در فاصلهی ۱ تا ۱-، میتوان مکان جدید عامل جستجو را در هر کجای بین مکان اصلی عامل و مکان بهترین عامل کنونی، تعریف کرد.
- مکان در حال بروزرسانی مارپیچی: این روش در ابتدا فاصله بین وال قرار گرفته در مختصات *X و Y طعمه موجود در *X و *Y را محاسبه میکند. معادلهای مارپیچی بین موقعیت نهنگ و طعمه ایجاد میشود تا حرکت حلزونی شکل نهنگ گوژپشت را تقلید کند:
که در این رابطه ‘D به فاصله ۱ امین نهنگ تا طعمه اشاره دارد (بهترین راه حل بدست آمده تا اینجا)، b ثابتی برای تعریف شکل مارپیچ لگاریتمی است و اعددی تصادفی بین ۱ تا ۱- میباشد. لازم به ذکر است که نهنگ گوژپشت، حول طعمه در امتداد یک دایرهی انقباضی و همزمان در مسیر مارپیچی شکلی به شنا در میآید. جهت مدلسازی این رفتار همزمان، فرض شده است که نهنگ با احتمال ۵۰ درصد از بین مکانیزم محاصرهی انقباضی و یا مدل مارپیچی یکی را انتخاب میکند تا موقعیت نهنگها در طول بهینه سازی به روزرسانی شود. مدل ریاضی بدین صورت است:
که در آن P عددی تصادفی بین ۰ تا ۱ است. علاوه بر روش حباب تور، نهنگهای گوژپشت به صورت تصادفی به دنبال طعمه میگردند. مدل ریاضی جستجو بدین صورت است.
مرحله اکتشاف در الگوریتم وال – جستجوی شکار
روشی مشابه بر مبنای واریاسیون بردار A را میتوان جهت جستجوی شکار (اکتشاف) به کار گرفت. در حقیقت، نهنگهای گوژپشت، بر طبق مکان یکدیگر، به صورت تصادفی به جستجو میپردازند. بنابراین، بردار A را با مقادیر تصادفی بزرگتر از او یا کمتر از ۱- به کار گرفته شده تا عامل جستجو را مجبور به دور شدن از نهنگ مرجع کند. بر خلاف فاز استخراج، جهت بروزرسانی موقعیت عامل جستجو در فاز اکتشاف به جای استفاده از دادههای بهترین عامل جستجو، از انتخاب تصادفی عامل بهره برده شده است. این مکانیزم به همراه ۱<A بر اکتشاف تاکید دارند و به الگوریتم WOA اجازه میدهند تا جستجویی سراسری را به انجام رساند. مدل ریاضی به صورت زیر است:
در این معادله، Xrand بردار موقعیت تصادفی انتخاب شده (نهنگ تصادفی) از جمعیت جاری است. الگوریتم WOA با مجموعهای از راه حلهای تصادفی شروع به کار میکند. در هر تکرار، عوامل جستجو موقعیت خود را با توجه به عامل جستجویی که تصادفی انتخاب شده و با بهترین راه حل بدست آمدهی جاری، به روزرسانی میکنند. پارامتر a جهت فراهم آوردن اکتشاف و استخراج، به ترتیب از مقدار ۲ تا ۰ کاهش مییابد.
یک عامل جستجوی تصادفی در حالت |A|>1 انتخاب میشود، این در حالی است که بهترین راه حل زمانی انتخاب میشود که جهت بروزرسانی موقعیت عوامل جستجو، |A|<1 باشد. بسته به مقدار p، الگوریتم WOA این قابلیت را دارد تا بین حرکت دایروی و یا مارپیچی یکی را انتخاب کند. در نهایت، الگوریتم WOA با ارضای شرایط خاتمه، پایان میپذیرد.
شبه کد الگوریتم وال
در شکل زیر شبه کد مربوط به الگوریتم فوق نشان داده شده است.
فلوچارت الگوریتم وال
کاربردهای الگوریتم وال
الگوریتم WOA کاربردهای زیادی در حوزه مسائل بهینه سازی پیوسته دارد اما با کمی تغییرات در کدکینگ مسئله میتوان این الگوریتم را برای مسائل گسسته نیز استفاده کرد. در ادامه چند نمونه از کاربردهای این الگوریتم را میتوانیم مشاهده کنیم.
🎯 ۱. بهینهسازی مسائل مهندسی
- طراحی سازهها و بهینهسازی وزن یا استحکام
- بهینهسازی پارامترهای سیستمهای کنترل (مانند PID)
- بهینهسازی مکانیزمها در رباتیک
💻 ۲. علوم کامپیوتر و هوش مصنوعی
- آموزش شبکههای عصبی مصنوعی (ANN): تنظیم وزنها برای دقت بالاتر
- ویژگییابی (Feature Selection): انتخاب بهترین ویژگیها در دادهها برای افزایش دقت مدلهای یادگیری ماشین
- طبقهبندی (Classification): بهینهسازی پارامترهای الگوریتمهای طبقهبندی مانند SVM
- خوشهبندی (Clustering): بهبود کیفیت خوشهبندی دادهها مانند K-Means
🔌 ۳. سیستمهای قدرت و انرژی
- بهینهسازی بهرهوری سیستمهای تولید انرژی
- جایابی بهینه منابع تولید پراکنده در شبکههای توزیع برق
- برنامهریزی تولید نیروگاهها با کمترین هزینه و آلایندگی
🧪 ۴. بهینهسازی توابع ریاضی پیچیده
- حل توابع معیار و بنچمارکها برای ارزیابی کارایی الگوریتمها
- مقایسه عملکرد الگوریتم WOA با دیگر الگوریتمها مانند PSO، GA و ACO
🧬 ۵. کاربرد در بیوانفورماتیک
- مدلسازی پروتئینها و ساختارهای زیستی
- بهینهسازی شبکههای ژنتیکی یا مسیرهای متابولیکی
📊 ۶. کاربرد در دادهکاوی و کلانداده
- کشف الگوهای پنهان در دادهها
- بهینهسازی مدلهای پیشبینی در کلاندادهها
- فیلترینگ و انتخاب ویژگی در دادههای حجیم
💰 ۷. امور مالی و اقتصادی
- بهینهسازی سبد سرمایهگذاری
- پیشبینی قیمت سهام با پارامترهای بهینه
- مدلسازی ریسک و بازده
آموزش شبکه عصبی مصنوعی با الگوریتم WOA
شبکههای عصبی مصنوعی، سیستمهای محاسباتی هستند که توسط شبکههای عصبی زیستی الهام گرفته شدهاند که مغز حیوانات را تشکیل میدهند. منظور از یادگیری در شبکههای عصبی، تنظیم وزنها و بایاسهای شبکه میباشد. بر این اساس الگوریتمهای متفاوتی بیان شده، که معمولترین آنها یادگیری هب، دلتا، یادگیری رقابتی و … میباشد.
برای تعیین وزن یالها و بایاسها در شبکههای عصبی میتوان از الگوریتمهای فرا ابتکاری استفاده کرد. از این رو میتوان وزن بایاسها و یالها شبکه عصبی را با استفاده از الگوریتم وال انجام داد. برای تعیین میزان عملکرد این ترکیب از یک دیتاست استفاده میشود تا میزان دقت یادگیری در شبکه عصبی را بالا برد.
انتخاب ویژگی با الگوریتم WOA
در مسائلی که دیتاستها دارای ابعاد بزرگی هستند میتوان با استفاده از الگوریتم وال زیر مجموعهای از دیتاست را انتخاب کرد که دارای بیشترین تاثیر در بخش آموزش هستند. بدین ترتیب که از بین مقادیر فرضاً ۰ و ۱ که در جواب داریم میتوانیم بگوییم اگر عدد مورد نظر از ۰.۵ بزرگتر باشد به عنوان ویژگی انتخاب شود و اگر کوچکتر باشد انتخاب نشود.
مقایسه الگوریتم وال با الگوریتمهای دیگر
شاید مهمترین سوال شما در استفاده از الگوریتمهای بهینه سازی و مخصوصاً الگوریتم های فرا ابتکاری یا Metaheuristic، انتخاب یک الگوریتم مناسب برای حل مسئله است. به طور قاطع نمیتوان گفت برای حل یک مسئله کدام الگوریتم بهینه سازی یا متاهیورستیک مناسب است و فقط با مقایسه نتایج میتوان ادعا کرد کدام الگوریتم روش بهتری را ارائه میکند.
هدف از الگوریتم های بهینه سازی یافتن یک جواب قابل قبول، با توجه به محدودیت و نیاز مسئله است. در تعیین جواب یک مسئله، ممکن است جوابهای مختلفی برای آن وجود داشته باشد. برای مقایسه جوابهای یک مسئله و انتخاب جواب بهینه، تابعی به نام تابع هدف یا تابع هزینه که Cost Function نیز نامیده میشود، تعریف میشود. انتخاب این تابع به ماهیت مسئله وابسته است. الگوریتم وال عملکرد قابل قبولی را در مقایسه با برخی الگوریتمهای فرا ابتکاری از خود نشان میدهد. در ادامه میتوانید این مقایسه را مشاهده کنید.
سخن آخر
در این مقاله آموزشی به توضیح و تشریح یک الگوریتم مهم در حوزه الگوریتم های فرا ابتکاری پرداخته شد. الگوریتم وال به دلیل استفاده از مکانیزمهای محاصره طعمه و چرخش اطراف طعمه، توانایی خیلی خوبی برای یافتن جواب از فضای جستجوی مسئله را دارد. در سالهای اخیر استفاده از این الگوریتم به دلیل انعطاف زیاد، متداول شده و هنوز هم از این الگوریتم در مسائل مختلف بهینه سازی استفاده میشود. امیدواریم مطالب ذکر شده برای شما عزیزان مفید بوده باشد. مشتاقانه منتظر نظرات و پیشنهادات شما عزیزان هستیم. موفق، پیروز و سربلند باشید.