آموزش کدنویسی الگوریتم کرم شب‌ تاب

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

الگو‌های فرا ابتکاری نسبتا زیادی در برنامه نویسی نویسی متلب وجود دارند که هر کدام نیز تاحدودی با یکدیگر متفاوت هستند و در این مقاله تصمیم داریم تا به بررسی و البته آموزش الگوریتم کرم شب‌تاب  و نیز آموزش کدنویسی الگوریتم کرم شب تاب بپردازیم. این الگوریتم که نام انگلیسی آن Firelfy Algorithm است به اختصار FA نامیده می‌شود. این نوع از الگوریتم در سال ۲۰۰۷ و توسط فردی به نام Xin-She ارایه شده است. البته دلیل نام‌گذاری این نوع از الگوریتم به کرم شب‌تاب نیز در واقع به‌همان موضوع و روشی باز می‌گردد که کرم‌های شب‌تاب از طریق فرآیند نوری با یکدیگر ارتباط برقرار می‌کنند. برنامه نویسان باید توجه داشته باشند که این نوع از الگوریتم یکی از نمونه‌های هوش ازدحامی یا همان Swarm Intelligence است. هوش ازدحامی نیز به‌شرایطی اطلاق می‌شود که در آن اعضای ضعیف و کم هوش سیستم با یکدیگر همکاری و یا شاید رقابت می‌کنند و ماحصل آن نیز قدرت بالایی از هوشمندی است که دستیابی به آن از طریق هیچ یک از این اعضا قابل انجام نیست.

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

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

گفتنی است که هوش توده‌ای یا هوش ازدحامی (Swarm Intelligence) در زمانی که در اجتماعات طبیعی به‌روز پیدا می‌کند، نتیجه عمل‌هایی از جانب افراد توده است که آن نیز بر اساس اطلاعات محلی انجام می‌شود. در نگاه کلی یک هوش توده‌ای به‌سمت اهداف پیچیده‌تر و در سطح توده می‌رود. همان‌طور که در فوق نیز گفته شد، مجموعه‌ای از مورچه‌ها، زنبور و پرنگدان همگی می‌توانند به‌عنوان یک توده باشند.

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

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

فرآیند به‌روز رسانی لوسی‌فرین:

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

ilk8d3

اگر بخواهیم نگاه دقیق‌تری به فرمول فوق داشته باشیم، متوجه خواهیم شد که در آن مقدار (jx(t))، (l(t-1)) و (l(t)) به‌ترتیب مقدار جدید لوسی‌فرین هستند. در این روش مقدار قبلی لوسی‌فرین و برازندگی مکان کرم i در تکرار t از الگوریتم مذکور بوده و p و  yاعداد ثابتی برای مدل کردن افت تدریجی و تاثیر برازندگی بر لوسی‌فرین هستند.

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

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