(۲-۲۵)
همانطور که دیده می شود COA الگوریتمی است که تابع سود را بیشینه می کند. برای استفاده ازCOA در حل مسایل کمینهسازی کافی است یک علامت منفی در تابع هزینه ضرب کنیم. برای شروع الگوریتم بهینه سازی یک ماتریس habitat در ابعاد تولید می شود. سپس برای هر کدام از این habitatها، تعدادی تصادفی تخم تخصیص مییابد. در طبیعت هر فاخته بین ۵ تا ۲۰ تخم می گذارد. این اعداد به عنوان حد بالا و پایین تخصیص تخم به هر فاخته در تکرارهای مختلف استفاده می شود. دیگر عادت هر فاخته حقیقی این است که آن ها در یک دامنه مشخص ([۸۹]ELR) تخم های خود را میگذارند.
(۲-۲۶)
پارامتر آلفا متغیری است که حداکثر مقدار ELR را با آن تنظیم میکنیم. چنانچه پرندگان میزبانی در شعاع ELR هر فاخته وجود داشته باشند؛ فاخته به صورت تصادفی تخمهایی را در لانه آنها قرار می گذارد.
شکل ۲-۱۰- تخمگذاری فاخته در شعاع تخمگذاری (ELR) [44].
وقتی تخمگذاری تمام فاختهها انجام شد؛ برخی از تخمها که شباهت کمتری به تخمهای پرنده میزبان دارند؛ شناسایی شده و از لانه بیرون انداخته میشوند. بنابراین بعد از هر تخمگذاری p% از تمام تخمها (معمولاً ۱۰% که مقدار تابع سود آنها کمتر است) نابود میشوند. بقیه جوجهها در لانههای میزبان تغذیه شده و رشد می کنند. پس از تشکیل گروه های فاخته در مناطق مختلف زیست کلی (فضای جستجوی مساله)، گروه دارای بهترین موقعیت به عنوان نقطه هدف سایر فاختهها جهت مهاجرت انتخاب می شود. وقتی فاختههای بالغ در اقصی نقاط محیط زیست زندگی می کنند؛ تشخیص اینکه هر فاخته به کدام گروه تعلق دارد کار سختی است. برای حل این مشکل، گروهبندی فاختهها با روش کلاسبندی K-means انجام می شود (مقدار k بین ۳ تا ۵ معمولاً کفایت می کند). بعد از اینکه گروه های فاخته تشکیل شدند؛ سود میانگین گروه محاسبه می شود تا میزان بهینه بودن نسبی محل زیست آن گروه به دست آید. سپس گروهی که دارای بیشترین مقدار متوسط سود (بهینگی) است؛ به عنوان گروه هدف انتخاب شده و گروه های دیگر به سمت آن مهاجرت می کنند. هنگام مهاجرت به سمت نقطه هدف، فاختهها تمام مسیر را به سمت محل هدف طی نمیکنند. آنها فقط قسمتی از مسیر را طی کرده و در آن مسیر هم مقدار انحرافی دارند. عملگر مهاجرت در الگوریتم فاخته به صورت زیر مدل می شود:
(۲-۲۷)
F پارامتری است که باعث انحراف از مسیر اصلی می شود.
هر فاخته فقط λ% از کل مسیر را به سمت هدف ایدهآل فعلی طی می کند و یک انحراف φ رادیان نیز دارد. این دو پارامتر به فاختهها کمک می کند تا محیط بیشتری را جستجو کنند. λ عددی تصادفی بین ۰ و ۱ است و φ عددی است که بین ۶ π/ و ۶ π/- قرار دارد.
شکل ۲-۱۱- مهاجرت فاخته ها به سمت نقطه هدف [۵۶].
وقتی تمام فاخته ها به سمت نقطه هدف مهاجرت کردند و نقاط سکونت جدید هر کدام مشخص شد، هر فاخته صاحب تعدادی تخم می شود. با توجه به تعداد تخم هر فاخته یک ELR برای آن مشخص می شود و سپس تخمگذاری شروع میگردد. در طبیعت به دلیل محدودیت های غذایی، شکار شدن توسط شکارچیان و نیز عدم امکان پیدا کردن لانههای مناسب برای تخمها، همواره تعادلی بین جمعیت پرندگان در طبیعت وجود دارد. با توجه به این واقعیت، عددی مثل Nmax حداکثر تعداد فاخته هایی را که میتوانند در یک محیط زندگی کنند کنترل و محدود می کند. شبه کد الگوریتم به صورت زیر قابل بیان است.
- مکانهای سکونت فعلی فاختهها را به صورت تصادفی مشخص میگردد.
- تعدادی تخم به هر فاصله اختصاص مییابد.
- شعاع تخم گذاری فاخته تعیین شده و فاختهها در لانه میزبانانی که در شعاع تخمگذاری آنها قرار دارند، تخم گذاری می کنند.
- تخمهایی که توسط پرنده میزبان شناسایی میشوند از بین میرود و تخم فاختههایی که شناسایی نشدند پرورش مییابد.
- محل رشد فاخته های جدید ارزیابی میگردد.
- حداکثر تعداد فاختههایی که در هر مکان امکان زندگی دارند مشخص شده و آنهایی که در مکان های نامناسب هستند، از بین برده میشوند.
- فاخته ها با بهره گرفتن از روش K-means خوشه بندی و بهترین گروه فاخته را به عنوان مکان سکونت هدف مشخص می شود.
- جمعیت جدید فاخته ها به سمت مکان هدف حرکت می کنند.
- اگر شرط پایان برقرار گردید توقف و در غیر این صورت الگوریتم به گام ۲ میرود.
شکل ۲-۱۲، روندنمای الگوریتم را نشان میدهد.
شکل۲-۱۲- روندنمای الگوریتم بهینهسازی فاخته[۴۴].
کاربردها[۴۶-۴۵]:
برخی کاربردهای الگوریتم فاخته در مهندسی به شرح زیر است:
مسائل بهینه سازی پیوسته و گسسته
مسائل طراحی چیدمان - تعیین ظرفیت نیروگاههای بادی
مسائل زمانبندی و توالی عملیات
طراحی شبکه های هوشمند