یکی از الگوریتمهای فرا ابتکاری شناخته شده در زمینه بهینهسازی الگوریتم کرم شبتاب (Firefly algorithm) میباشد. در این نوشته با کلیات این الگوریتم و مراحل آن آشنا خواهیم گشت. همچنین نحوه استفاده از کتابخانه PyFFA برای حل مسائل بهینهسازی با یک مثال کوچک توضیح داده خواهد شد.
بسم الله الرحمن الرحیم؛
الگوریتم کرم شب تاب یکی از الگوریتم های بهینه سازی فرا ابتکاری می باشد که دارای کاربرد گسترده در حل مسائل مهندسی، اقتصاد و … است. پایه و اساس این الگوریتم رفتار کرم های شب تاب در ساطع کردن نور از خود می باشد. اکثر کرمهای شبتاب قادر هستند با ایجاد روشنایی اقدام به جذب شریک برای جفتگیری، هشدار به کرمهای شبتاب دیگر و به دام انداختن حشرات کوچکتر برای شکار نمایند. میزان شدت نور قابل دریافت برای کرمهای شبتاب دیگر، بستگی به فاصله با منبع، شدت نور منبع و قدرت جذب نور دارد لذا کرمهای شبتاب بطور کلی تا فاصله محدودی قابل رؤیت میباشند. در مجموع میتوان این خصوصیات کرم شبتاب را در سه بند خلاصه کرد:
۱. تمام کرمهای شبتاب دو جنسی هستند. بعبارتی هر کرم شبتاب قابلیت جذب تمام کرمهای شبتاب دیگر را دارد.
۲. جذابیت هر کرم شبتاب برای کرم شبتاب دیگر رابطه مستقیم با روشنایی و رابطه عکس با فاصله دارد. این بدین معنی است که کرم شبتابی که جذابیت کمتری دارد به سمت کرم شبتاب جذابتر حرکت خواهد کرد. اگر حول یک کرم شبتاب، کرم شبتابی با جذابیت بیشتر حاضر نباشد، کرم شبتاب به طور تصادفی حرکت خواهد نمود.
۳. روشنایی یا شدتنور کرمهای شبتاب بر اساس تابع هدفی که در حال بهینهسازی میباشد، انتخاب میگردد.
با توجه به این سه قاعده، مراحل الگوریتم بهینهسازی کرم شبتاب میتواند بصورت شبهکد زیر خلاصه گردد:
دو مسأله پر اهمیت در الگوریتم بهینهسازی کرم شبتاب تغییرات شدت نور و فرمولاسیون جذابیت میباشد. برای سادگی، جذابیت با تابع هدف متناظر گردیدهاست. در مورد جزئیات کامل در مورد نحوه محاسبه جذابیت، تأثیر فاصله و انتقال کرمهای شبتاب مراجع [۱-۳] دارای اطلاعات درخور توجهی هستند. برای مثال می توانیم جذابیت کرم شب تاب را بصورت تابعی از فاصله به شکل زیر فرموله کرده و همچنین برای انتقال کرمهای شبتاب از رابطهی بعد استفاده کنیم.
البته لازم به ذکر است کتابخانه PyFFA که توسط تیم فنی پروژلکام طراحی شده است، شما را قادر می سازد تا در کمترین زمان مسائل بهینه سازی خود را با الگوریتم کرم شب تاب حل نمایید. این کتابخانه از آدرس زیر قابل دریافت می باشد:
دریافت کتابخانه بهینه سازی به روش کرم شب تاب PyFFA
برنامه نمونه زیر نحوه حل یک مسئله بهینه سازی ساده را با استفاده از کتابخانه PyFFA نشان می دهد:
همانطور که مشاهده می گردد شی myFFA که از نوع کلاس PyFFA از ماژولی با همین نام ساخته شده است. این شی حل کننده ما می باشد. پارامترهای مورد نیاز برای ایجاد این شی به ترتیب تعداد کرمهای شب تاب، تعداد تکرار الگوریتم، ضریب گاما و ضریب آلفا (که در فرمولاسیون معرفی گردید)، تابع تولید کننده کرم شب تاب بطور تصادفی در فضای مسئله و تابع هدف مسئله بهینه سازی میباشند. تابع solve از کلاس PyFFA عملیات بهینه سازی را شروع می نماید. مقدار بهترین تابع هدف در هر تکرار و نمودار همگرایی در انتهای اجرای الگوریتم خروجی این تابع میباشد. در کد بالا قبل از تعریف شی myFFA دو تابع f و s به ترتیب بعنوان تابع هدف و تابع تولید موقعیت اولیه برای کرمهای شب تاب تعریف گردیده اند. تابع هدف همانگونه که مشهود است به شکل مجموع توان دوم سینوس هر یک از درایه های بردار پاسخ (یا همان موقعیت) می باشد.
لازم به ذکر است تابع فاصله در پیاده سازی انجام شده در کلاس PyFFA به شکل لوگاریتم (نرم اقلیدسی بعلاوه یک) تعریف شده است. همچنین رابطه شدت نور کرم های شب تاب و تابع هدف با توجه به اینکه کلاس برای مینیمم سازی طراحی شده است به شکل معکوس یک بعلاوه تابع هدف تعریف گردیده است. این نحوه تعریف تاثیر زیادی در انتخاب پارامترهای الگوریتم دارد لذا باید به آنها دقت گردد و درصورتی که مناسب با مسئله ای که قرار است برای حل آن استفاده گردد، نباشد بصورت ابتکاری تغییر داده شود. مراجع معرفی شده توضیحات خوبی در این مورد دارند.
[۱] Yang, Xin-She. “Firefly algorithms for multimodal optimization.” Stochastic algorithms: foundations and applications. Springer Berlin Heidelberg, 2009. 169-178.
[۲] Hassanzadeh, Tahereh, Karim Faez, and Golnaz Seyfi. “A speech recognition system based on structure equivalent fuzzy neural network trained by firefly algorithm.” Biomedical Engineering (ICoBE), 2012 International Conference on. IEEE, 2012.
[۳] Kumar, Shakti, Parvinder Kaur, and Amarpartap Singh. “Fuzzy model identification: A firefly optimization approach.” International Journal of Computer Applications ۵۸٫۶ (۲۰۱۲).