الگوریتم بهینه سازی وال ها یا نهنگ WOA
الگوریتم بهینه سازی وال ها یا نهنگ WOA عنوان مطلبی است که در این بخش به آن پرداخته می شود. این الگوریتم توسط سید علی میرجلیلی (Seyedali Mirjalili) در سال ۲۰۱۶ در مقاله The Whale Optimization Algorithm در ژورنال Advances in Engineering Software پایگاه علمی Elsevier ارائه شده است.
مقدمه
الگوریتمهای بهینهسازی فراابتکاری روز به روز در کاربردهای مهندسی محبوبتر میشوند. زیرا اولاً بر روی مفاهیم نسبتاً ساده تکیه دارند و پیادهسازی آنها آسان است. ثانیاً به اطلاعات گرادیان نیاز ندارند. ثالثاً می تواند خطر گیر افتادن د بهینهگی محلی را دور بزنند و در نهایت در طیف گسترده ای از مسائل که رشته های مختلف را پوشش می دهد استفاده میشوند. در ادامه به معرفی نحوه کار کرد الگوریتم بهینه سازی WOA پرداخته می شود. مقاله اصلی این الگوریتم را می توانتید از این لینک (+) دانلود کنید.
الگوریتم بهینه سازی وال ها یا نهنگ ها
یکی از بزرگترین پستانداران دنیا وال یا نهنک است از بین 7 نهنگ دنیا معروف ترین آنها، نهنگ گوژپشت یا نهنگ کوهان دار است. یک وال گوژپشت بالغ تقریباً به اندازه یک اتوبوس مدرسه است. شکار مورد علاقه وال ها، کریل و گروه های ماهی کوچک است. جالب ترین نکته در مورد وال های گوژپشت روش خاص شکار آنها می باشد. این رفتار کاوش گرانه به نام روش تغذیه حباب تور (Bubble-net) شناخته می شود.
وال های گوژپشت ترجیح می دهند تا دسته ای از کریل ها و یا ماهی های کوچک را در نزدیک سطح آب شکار کنند. این نکته مشاهده شده است که این کاوش و شکار، با ایجاد حباب های شاخصی در امتداد یک دایره یا مسیر هایی به انجام می رسد. الگوریتم WOA یکی از الگوریتم های بهینه سازی الهام گرفته شده از طبیعت و مبتنی بر جمعیت است که در زمینه های مختلف می توان از آن استفاده کرد.
پکیج کامل آموزش الگوریتم وال WOA
این محصول یک پکیج کامل برای آموزش و یادگیری و هر آنچه لازم است برای الگوریتم وال یا نهنگ WOA بدانید را در خود دارد. با دانلود این پکیج آموزشی می توانید مسئله خودتان را با این الگوریتم پیاده سازی کنید یا ارائه کلاسی انجام دهید یا به دیگران آموزش دهید.
مراحل الگوریتم
الگوریتم وال WOA در سه مرحله یا سه فاز انجام می شود که بصورت زیر است:
- شکار محاصره ای
- فاز بهره برداری: روش حمله به حباب تور
- مرحله اکتشاف: جستجوی شکار
شکار محاصره ای در الگوریتم وال
وال ها می توانند مکان شکار را شناسایی کرده و آنها را محاصره کنند. از آنجایی که مکان طراحی بهینه در فضای جستجو از راه مقایسه شناخته نمی شود، الگوریتم فرض می کند که بهترین راه حل کاندید حال حاضر، شکار هدف بوده و یا نزدیک به حالت مطلوب است. بعد از اینکه بهترین عامل جستجو شناسایی شد، عوامل دیگر جستجو سعی می کنند تا مکان خود را نسبت به بهترین عامل جستجو، به روزرسانی کنند. این رفتار از طریق روابط (2.1) و (2.2) مقاله بیان شده است:
که در آن t تکرار جاری را نشان می دهد، A و C بردارهای ضرائب ، *X بردار مکان بهترین راه حل بدست آمده در حال حاضر و X بردار مکان است. لازم به ذکر است که در صورت وجود راه حل بهتر، *X در هر تکرار باید بروز شود. بردار A و C به صورت زیر محاسبه می گردد:
که a به صورت خطی از مقدار ۲ تا ۰ و در طی تکرار ها کاهش می یابد (در هر دو فاز اکتشاف و استخراج) و r بردار تصادفی در فاصله ۰ تا ۱ است.
پاورپوینت الگوریتم وال ها یا نهنگ ها WOA
پاورپوینت الگوریتم وال WOA در نرم مایکروسافت پاورپوینت Microsoft Powerpoint طراحی شده و دارای 17 اسلاید است. برای تهیه این پاورپوینت روی لینک زیر کلیک کنید.
فاز بهره برداری در الگوریتم وال – روش حمله به حباب تور
جهت مدلسازی ریاضی رفتار حباب تور وال ها، ۲ روش طراحی شده است:
- مکانیزم محاصرهی انقباضی: این رفتار به از طریق افزایش مقدار a در رابطه (2.3) حاصل می شود. محدوده نوسان 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 با ارضای شرایط خاتمه، پایان می پذیرد.
آموزش الگوریتم وال بهبود یافته LXWOA در متلب
الگوریتم LXWOA یک نسخه بهبود یافته از الگوریتم WOA است و در این آموزش به توضیح الگوریتم وال بهبود یافته LXWOA پرداخته شده است. برای تهیه این آموزش کلیک کنید.
شبه کد الگوریتم وال
در شکل زیر شبه کد مربوط به الگوریتم فوق نشان داده شده است.
فلوچارت الگوریتم وال
کد الگوریتم وال در پایتون Python
این سورس کد به زبان پایتون Python برای الگوریتم وال WOA نوشته شده است. این سورس کد بر اساس 12 توابع تست الگوریتم وال یا نهنگ را اجرا می کند. برای دانلود این سورس کد می توانید بر روی لینک زیر کلیک کنید.
کاربردهای الگوریتم وال
الگوریتم WOA کاربردهای زیادی در حوزه مسائل بهینه سازی پیوسته دارد اما با کمی تغییرات در کدکینگ مسئله می توان این الگوریتم را برای مسائل گسسته نیز استفاده کرد. در ادامه چند نمونه از کاربردهای این الگوریتم را می توانیم مشاهده کنیم.
آموزش شبکه عصبی مصنوعی با الگوریتم WOA
شبکه های عصبی مصنوعی، سیستم های محاسباتی هستند که توسط شبکههای عصبی زیستی الهام گرفته شده اند که مغز حیوانات را تشکیل می دهند. منظور از يادگيری در شبکههای عصبی، تنظيم وزن ها و باياس های شبكه می باشد. بر اين اساس الگوريتم های متفاوتی بيان شده، كه معمول ترين آنها یادگيری هب، دلتا، يادگيری رقابتی و … می باشد.
برای تعیین وزن یال ها و بایاس ها در شبکه های عصبی می توان از الگوریتم های فرا ابتکاری استفاده کرد. از این رو می توان وزن بایاس ها و یال ها شبکه عصبی را با استفاده از الگوریتم وال انجام داد. برای تعیین میزان عملکرد این ترکیب از یک دیتاست استفاده می شود. تا میزان دقت یادگیری در شبکه عصبی را بالا برد.
آموزش شبکه عصبی با الگوریتم وال WOA در متلب
سورس کد آموزش شبکه عصبی با الگوریتم وال WOA در نرم افزار متلب برنامه نویسی شده و برای تعیین مقادیر وزنی یال ها و بایاس ها شبکه عصبی با الگوریتم WOA می باشد. برای تهیه این سورس کد بر روی لینک زیر کلیک کنید.
انتخاب ویژگی با الگوریتم WOA
در مسائلی که دیتاست ها دارای ابعاد بزرگی هستند می توان با استفاده از الگوریتم وال زیر مجموعه ای از دیتاست را انتخاب کرد که دارای بیشترین تاثیر در بخش آموزش هستند. بدین ترتیب که از بین مقادیر فرضاً 0 و 1 که در جواب داریم می توانیم بگوییم اگر عدد مورد نظر از 0.5 بزگتر باشد به عنوان ویژگی انتخاب شود و اگر کوچکتر باشد انتخاب نشود.
مقایسه الگوریتم وال با الگوریتم های دیگر
شاید مهم ترین سوال شما در استفاده از الگوریتم های بهینه سازی و مخصوصاً الگوریتم های فرا ابتکاری یا Metaheuristic، انتخاب یک الگوریتم مناسب برای حل مسئله است. به طور قاطع نمی توان گفت برای حل یک مسئله کدام الگوریتم بهینه سازی یا متاهیورستیک مناسب است و فقط با مقایسه نتایج می توان ادعا کرد کدام الگوریتم روش بهتری را ارائه می کند.
هدف از الگوریتم های بهینه سازی یافتن یک جواب قابل قبول، با توجه به محدودیت و نیاز مسئله است. در تعیین جواب یك مسئله، ممكن است جوابهای مختلفی برای آن وجود داشته باشد. برای مقایسه جواب های یک مسئله و انتخاب جواب بهینه، تابعی به نام تابع هدف یا تابع هزینه که Cost Function نیز نامیده می شود، تعریف میشود. انتخاب این تابع به ماهیت مسئله وابسته است. الگوریتم وال عملکرد قابل قبولی را در مقایسه با برخی الگوریتم های فرا ابتکاری از خود نشان می دهد. در ادامه می توانید این مقایسه را مشاهده کنید.
مقایسه الگوریتم های بهینه سازی در متلب
سورس کد مقایسه الگوریتم های بهینه سازی در متلب برای 12 الگوریتم معروف فرا ابتکاری با 23 تابع تست برنامه نویسی و اجرا شده است. برای تهیه این سورس کد می توانید روی لینک زیر کلیک کنید.
سخن آخر
در این مقاله آموزشی به توضیح و تشریح یک الگوریتم مهم در حوزه الگوریتم های فرا ابتکاری پرداخته شد. الگوریتم وال به دلیل استفاده از مکانیزم های محاصره طعمه و چرخش اطراف طعمه، توانایی خیلی خوبی برای یافتن جواب از فضای جستجوی مسئله را دارد. در سال های اخیر استفاده از این الگوریتم به دلیل انعطاف زیاد، متداول شده و هنوز هم از این الگوریتم در مسائل مختلف بهینه سازی استفاده می شود. امیدواریم مطالب ذکر شده برای شما عزیزان مفید بوده باشد. مشتاقانه منتظر نظرات و پیشنهادات شما عزیزان هستیم. موفق، پیروز و سربلند باشید.
منابع
[1] Mirjalili, S., & Lewis, A. (2016). The Whale Optimization Algorithm. Advances in Engineering Software, 95, 51–67. https://doi.org/10.1016/j.advengsoft.2016.01.008
درباره امین جلیل زاده رزین
پایه گذار و موسس وب سایت آموزشی پی استور، مدرس دانشگاه فنی و حرفه ای، برنامه نویس و تحلیل گر سیستم، پژوهشگر در حوزه الگوریتم های ابتکاری، فرا ابتکاری، یادگیری ماشین، شبکه و پایگاه داده. ایشان در زبان های برنامه نویسی متعدد، نظیر ++C، سی شارپ، PHP ،Java، متلب MATLAB و Python تسلط و سابقه تدریس فعال دارند.
سلام و خسته نباشید. بسیار خوب و عالی توضیح داده شده است. در بستر اینترنت کمتر وب سایتی هست که مطالب و ترجمه مقاله WOA رو به این صورت رایگان در اختیار عموم قرار میدهد. تشکر و قدردانی از نویسنده محترم.
ممنون از شما دوست عزیز
سلام
ممنون بابت توضیحات کامل
خیلی عالی بود ممنون از شما