الگوریتم زنبور عسل
الهام گرفتن از طبیعت یکی از مهمترین راهکارها برای حل مسایل در بهینه سازی و طراحی هوش مصنوعی می باشد .
یکی از مهمترین الگوریتم های تکاملی ، الگوریتم زنبور عسل است .
زنبورهای عسل روش جالبی برای جستجو و یافتن غذا در گستره وسیع دارند .
در ابتدا زنبورهای عسل برای جستجوی غذا بصورت تصادفی و محلی به جستجو می پردازند .
زنبور ها در هنگام جستجوی غذا معمولا به سه دسته تقسیم می شوند ؛ زنبورهای کارگر ، زنبورهای تماشاگر و زنبورهای دیده بان( پیشاهنگ ) .
جستجوی غذا در ابتدا توسط زنبورهای دیده بان (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 از عملکرد و قابلیت اجرایی بسیار مناسبی برخوردار است که در مقاله جدا به این الگوریتم پرداخته ایم .
چالش ها
چالش ها و مسائل پیش روی توسعه این الگوریتم شامل اجرایی سازی ، توسعه و ترکیب با الگوریتم های دیگر هوش مصنوعی از جمله منطق فازی
و عصبی می باشد .
جمع بندی
با توجه به مسائل مطرح شده ، الگوریتم کلونی رنبور عسل می تواند کاربردهای وسیعی در حوزه ی بهینه سازی ، یافتن کوتاهترین مسیر ، جستجو
و ردیابی ، توسعه هوش مصنوعی ، بالا بردن دقت و حساسیت سیستم ها ، ساده سازی سیستم های پیچیده و … داشته باشد .
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگو شرکت کنید؟نظری بدهید!