الگوریتم زنبور عسل

الهام گرفتن از طبیعت یکی از مهمترین راهکارها برای حل مسایل در بهینه سازی و طراحی هوش مصنوعی می باشد .

یکی از مهمترین الگوریتم های تکاملی ، الگوریتم زنبور عسل است .

زنبورهای عسل روش جالبی برای جستجو و یافتن غذا در گستره وسیع دارند .

در ابتدا زنبورهای عسل برای جستجوی غذا بصورت تصادفی و محلی به جستجو می پردازند .

زنبور ها در هنگام جستجوی غذا معمولا به سه دسته تقسیم می شوند ؛ زنبورهای کارگر ، زنبورهای تماشاگر و زنبورهای دیده بان( پیشاهنگ ) .

جستجوی غذا در ابتدا توسط زنبورهای دیده بان (scout bee ) با جستجو در مناطقی که امید بیشتری برای یافتن غذا دارد آغاز می گردد .

پس از جستجو و دیدن تمامی منطقی که امیدی برای یافتن غذا در آنها وجود دارد ، زنبور دیده بان بر بالای منطقه ای که امید بیشتری برای

یافتن غذا در آن می رود ، به رقصیدن مشغول می شود.

این رقص اطلاعات مناسبی در خصوص منطقه یافت شده به دیگر زنبورها می دهد .

این روش باعث می شود دیگر زنبورها ( onlooker bee , employed bee ) وارد محل یافت شده شوند و بهره برداری کنند .

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

در تصویر بالا ، نحوه عملکرد زنبورها در جستجوی غذا نمایش داده شده است .

نحوه عملکرد الگوریتم

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

بهره برداری کند .

بخش کوچکی از کلونی ، که زنبورهای پیشاهنگ ( scout bee ) نام دارند به صورت مداوم به جستجوی محل های جدید برای بهرده برداری می پردازند .

این دسته از زنبورها به صورت تصادفی به جستجوی مناطق با سودآوری بالا ( بازدهی خوب ) می پردازند .

پس از بازگشت زنبورهای پیشاهنگ ، آنها در منطقی از کندو که پیست رقص نامیده می شود می روند و مشغول رقصیدن می شوند .

از طریق این نوع رقصیدن ، زنبورهای پیشاهنگ ، مکان کشف خود را به اطلاع زنبورهای تماشاگر (onlooker bee ) بیکار می رساند .

پس از اتمام رقصیدن به منطقه ای که منبع غذایی مناسب کشف کرده بودند بازمیگردند .

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

زنبورهای کارگر ( employed bee )به بهره برداری از منبع غذایی کشف شده می پردازند .

با استفاده از این روش ، کلونی زنبور عسل به بهترین روش منابع غذایی خوب و مناسب و با بازدهی بالا را انتخاب کرده و از آنها بهره برداری می کند .

کاربردها

الگوریتم زنبور عسل در بسیاری از مسائل کاربردی استفاده می گردد . در ریاضیات ، اقتصاد ، علوم مهندسی ، فیزیک ، هوافضا ، کیهان شناسی و..

یکی از مهمترین کاربردهای این الگوریتم ها در علوم کامپیوتر و همچنین در مسائل بهینه سازی می باشد .

استفاده مهم دیگر این الگوریتم در طراحی هوش مصنوعی و سیستم های هوشمند است .

همچنین ترکیب این الگوریتم با سایر الگوریتم های هوش مصنوعی از جمله الگوریتم ژنتیک ، شبکه عصبی ، منطق فازی ، الگویتم مورچگان و ..

می تواند هوش مصنوعی قوی تری ایجاد نماید .

سیستم های کنترل ، دسته بندی اطلاعات ، بهینه سازی تجهیزات مکانیکی و رباتیک نیز از دیگر موارد استفاده از این الگوریتم می باشد .

نمونه برنامه

نمونه کد پایتون با استفاده از الگوریتم زنبور عسل در انتهای این مقاله بارگزاری می شود .

"""
To find the minimum  of sphere function on interval (-10 to 10) with
۲ dimensions in domain using default parameters:
"""

from beecolpy import abc

def sphere(x):
	total = 0
	for i in range(len(x)):
		total += x[i]**2
	return total
	
abc_obj = abc(sphere, [(-10,10), (-10,10)]) #Load data
abc_obj.fit() #Execute the algorithm

#If you want to get the obtained solution after execute the fit() method:
solution = abc_obj.get_solution()

#If you want to get the number of iterations executed, number of times that
#scout event occur and number of times that NaN protection actuated:
iterations = abc_obj.get_status()[0]
scout = abc_obj.get_status()[1]
nan_events = abc_obj.get_status()[2]

#If you want to get a list with position of all points (food sources) used in each iteration:
food_sources = abc_obj.get_agents()

توسعه آینده

در حال حاضر مدل های مختلفی از الگوریتم های زنبور عسل طراحی و توسعه یافته است .

الگوریتم های qABC ، BABC ، GABC ، CABC ، MABC ، DFnABC از جمله این الگوریتم ها هستند .

خصوصا الگوریتم DFnABC از عملکرد و قابلیت اجرایی بسیار مناسبی برخوردار است که در مقاله جدا به این الگوریتم پرداخته ایم .

چالش ها

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

و عصبی می باشد .

جمع بندی

با توجه به مسائل مطرح شده ، الگوریتم کلونی رنبور عسل می تواند کاربردهای وسیعی در حوزه ی بهینه سازی ، یافتن کوتاهترین مسیر ، جستجو

و ردیابی ، توسعه هوش مصنوعی ، بالا بردن دقت و حساسیت سیستم ها ، ساده سازی سیستم های پیچیده و … داشته باشد .