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

استراتژی جستجوی غذای زنبور عسل در طبیعت

یک کلنی از زنبورهای عسل می‌توانند در طول فواصل بلند (بیش از ۱۴ کیلومتر) و در جهات مختلف به‌طور هم‌زمان به برداشت شهد یا گرده از منابع غذایی متعدد پراکنده شوند. بخش کوچکی از این کلنی به‌طور مداوم محیط زیست را برای پیدا کردن تکه‌های گل جدید جستجو می‌کنند. این زنبورهای دیده‌بان به‌طور تصادفی در منطقه اطراف کندو حرکت می‌کنند و به ارزیابی سودآوری (عملکرد خالص انرژی) منابع غذایی وارد شده می‌پردازند. وقتی آن‌ها به کندو باز می‌گردنند، دیده‌بان‌ها مواد غذایی برداشت شده را ذخیره می‌کنند. آن دسته از زنبورهایی که منبع غذایی بسیار سود آوری پیدا کردند به یک منطقه در کندو به نام «پیست رقص» رفته و آیینی به نام «رقص حرکتی» را اجرا می‌کنند. در حین این رقص زنبوردیده بان در مورد محلی که کشف کرده با تماشچیان بیکارصحبت می‌کند که به بهره‌برداری از گل‌ها بپیوندند. از آنجا که طول رقص متناسب با امتیاز دیده‌بان از منبع غذایی است، کاوشگرهای بیشتری برای برداشت تکه‌های گل با بهترین امتیاز استخدام می‌شوند. بعد از رقص دیده‌بان برای جمع‌آوری بیشتر غذا به محلی که کشف کرده‌است می‌رود. تا زمانی که این محل‌ها سودآور تلقی شوند، موقع برگشت این منابع غذایی غنی توسط دیده‌بان‌ها تبلیغ می‌شوند. کاوشگرهای استخدام شده نیز ممکن است این رقص را انجام دهند، تا میزان استخدام برای پیدا کردن گل‌های پر ارزش افزایش یابد. با تشکر از فرایند اتوکاتالیزوری این کلنی زنبور عسل قادر است سریع تمرکز را به جستجو برای گل‌های سودآور تغییر دهد.

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

الگوریتم زنبور عسل تقلید استراتژی جستجوی غذای زنبورعسل به دنبال بهترین راه حل برای مشکل بهینه‌سازی است. هر راه حل کاندید، به عنوان یک منبع غذایی (گل) است و جمعیت (کلنی)n عوامل (زنبور) برای جستجوی فضای راه حل استفاده می‌شود. هر بار زنبور عسل مصنوعی به دیدار گل می‌رود (به یک راه حل رسیده)، سود آن را ارزیابی می‌کند (سازگاری).
الگوریتم زنبور عسل شامل روش اولیه نصب یک چرخه جستجوی اصلی که برای تعداد داده شده T بار تکرار می‌شود یا تا زمانی که یک راه حل سازگار و قابل قبول پیدا شود. هر چرخه جستجو متشکل از پنج روش:استخدام، جستجوی محلی، کوچک شدن محله، متروکه شدن محل و جستجوی کلی است.
شبه کد استاندارد الگوریتم زنبور عسل
 1 for i=1,…,ns
 i scout[i]=Initialise_scout()
 ii flower_patch[i]=Initialise_flower_patch(scout[i])
 2 do until stopping_condition=TRUE
 i Recruitment()
 ii for i =1,…,nb
 1 flower_patch[i]=Local_search(flower_patch[i])
 2 flower_patch[i]=Site_abandonment(flower_patch[i])
 3 flower_patch[i]=Neighbourhood_shrinking(flower_patch[i])
 iii for i = nb,…,ns
 1 flower_patch[i]=Global_search(flower_patch[i])}
در روال اولیه نصب تعداد ns زنبورهای عسل دیده‌بان به‌طور تصادفی در فضای جستجو قرار می‌گیرند و سازگاری محلی که در آن قرار دارند را ارزیابی می‌کنند. برای هر راه حل، یک محله (به نام راه گل) مشخص شده‌است. در روش استخدام، دیده‌بان‌هایی که به تعداد nb<=ns راه حل‌های سازگارمراجعه کرده‌اند (بهترین محل‌ها) «رقص حرکتی» را انجام می‌دهند. آن است که، کاوشگرهایی استخدام می‌کنند تا به جستجوی محلات دور از محلات راه حل‌های امیدوارکننده بپردازند. دیده‌بان‌های واقع در بهترین محلات ne<=nb راه حل (محل‌های برگزیده شده) هر کدام nre کاوشگر استخدام می‌کنند، در حالی که nb-ne دیده‌بان باقی‌مانده هر کدام nrb<=nre کاوشگر استخدام می‌کنند. به این ترتیب، تعداد کاوشگرهای استخدام شده به سوددهی منبع غذایی ربط دارد. در روش جستجوی محلی، کاوشگرهای استخدام شده به‌طور تصادفی در تکه‌های گل پراکنده شده و راه حل‌های مراجعه شده توسط دیده‌بان‌ها را در میان می‌گذارند (بهره‌برداری محلی). اگر یکی از کاوشگرها راه حل سازگارتری نسبت به راه حل ارائه شده توسط دیده‌بان ارائه دهد، کاوشگر دیده‌بان می‌شود. اگر کاوشگر دیگری راه حل سازگارتری ارائه ندهد، اندازه تکه گل کوچک می‌شود (روش کوچک شدن محله). معمولاً، تکه‌های گل در ابتدا یک محل بزرگ تعریف شده و اندازه آن‌ها به تدریج توسط روش کوچک شدن محله کوچک می‌شود. در نتیجه، حوزه اکتشاف محلی به تدریج روی محلهٔ بلافاصله نزدیک به بهترین محل سازگار متمرکز می‌شود. اگر هیچ بهبودی در سازگاری تکه گل برای یک تعداد چرخه جستجوی از پیش تعیین شده ثبت نشود، ماکزیمم سازگاری محلی یافت شده فرض می‌شود، این محل متروکه می‌ماند (متروکه شدن محل) و یک دیده‌بان جدید به‌طور تصادفی حاصل می‌شود. مانند گروه‌های زنبور عسل بیولوژیکی، تعداد کمی از دیده‌بان‌ها به جستجوی فضای راه حل برای یافتن مناطق جدیدی با سازگاری بالا ادامه می‌دهند (جستجوی کلی). روش جستجوی کلی تعداد ns-nb گل‌های آخر با راه حل‌های به وجود آمده تصادفی دوباره مقدار دهی می‌کند. در پایان یک چرخه جستجو، جمعیت دیده‌بان‌ها دوباره برابر ns می‌شود:تعداد nr دیده‌بان تشکیل شده در روش جستجوی محلی (که برخی از آن‌ها ممکن است توسط روش متروکه شدن محل دوباره مقدار دهی شوند) وns-nb دیده‌بان تشکیل شده در روش جستجوی کلی. سایز کل گروه زنبور عسل مصنوعی برابر است با:n=ne*nre+(nb-ne)*nrb+ns(کاوشگران محل‌های گلچین شده+کاوشگران بهترین محل‌های باقی‌مانده+دیده‌بان‌ها) زنبور عسل