توانایی حل مسائل بسیار پیچیدهتر از قابلیت های دیگر آن میباشد. به طور عمده این روشها، تصادفی بوده و از طبیعت الهام گرفته شدهاند. مطالعات نشان داده است الگوریتمهای مبتنی بر رفتار گروهی موجودات زنده در مقایسه با دیگر روشهای بهینه سازی بر روی برخی از مسائل کارایی بهتری دارند به همین دلیل گرایش زیادی برای استفاده از این الگوریتمها وجود دارد. به هر حال، علی رغم وجود کارایی خوب، این روشها هنوز از مشکلات و معایبی رنج می برند که باعث کاهش کارایی آنها در برخی مسائل می شود. همگرایی زودرس، سکون و سرعت همگرایی پایین برخی از مشکلات اصلی این الگوریتم ها است.
فرایند طراحی و پیادهسازی الگوریتمهای فرا ابتکاری دارای سه مرحلهی متوالی است که هر کدام از آنها دارای گامهای مختلفی هستند[۴۰]. در هر گام فعالیتهایی باید انجام شود تا آن گام کامل شود. مرحلهی یک آمادهسازی است که در آن باید شناخت دقیقی از مسألهای که میخواهیم حل کنیم بهدست آوریم و اهداف طراحی الگوریتم فرا ابتکاری برای آن باید با توجه به روشهای حل موجود برای این مسأله، به طور واضح و شفاف مشخص شود. مرحلهی بعدی، ساخت نام دارد. مهمترین اهداف این مرحله انتخاب استراتژی حل، تعریف معیارهای اندازه گیری عملکرد و طراحی الگوریتم برای استراتژی حل انتخابی میباشد. آخرین مرحله پیادهسازی است که در آن تنظیم پارامترها، تحلیل عملکرد و در نهایت تدوین و تهیه گزارش نتایج باید انجام شود.
معیارهای مختلفی برای طبقهبندی این الگوریتمها استفاده می شود که در ادامه چند نمونه ذکر می شود:
-
- مبتنی بر یک جواب و مبتنی بر جمعیت : الگوریتمهای مبتنی بر یک جواب در حین فرایند جستجو یک جواب را تغییر میدهند، در حالی که در الگوریتمهای مبتنی بر جمعیت در حین جستجو، یک جمعیت از جوابها در نظر گرفته میشوند. از الگوریتمهای متداول فراابتکاری مبتنی بر جمعیت میتوان الگوریتمهای تکاملی (الگوریتم ژنتیک، برنامهریزی ژنتیک، …)، بهینهسازی کلونی مورچگان،کلونی زنبورها، روش بهینهسازی ازدحام ذرات و الگوریتم رقابت استعماری و از الگوریتمهای متداول فراابتکاری مبتنی بر یک جواب میتوان الگوریتم جستجوی ممنوعه و الگوریتم تبرید شبیهسازی شده را نام برد.
-
- الهام گرفته شده از طبیعت و بدون الهام از طبیعت: بسیاری از الگوریتمهای فراابتکاری از طبیعت الهام گرفته شدهاند. مانند الگوریتم خفاش یا کلونی مورچه ها، در این میان برخی از الگوریتمهای فراابتکاری نیز از طبیعت الهام گرفته نشدهاند.
-
- با حافظه و بدون حافظه: برخی از الگوریتمهای فراابتکاری فاقد حافظه میباشند به این معنا که این نوع الگوریتمها از اطلاعات به دست آمده در حین جستجو استفاده نمی کنند (به طور مثال تبرید شبیهسازی شده). این در حالی است که در برخی از الگوریتمهای فرا ابتکاری نظیر جستجوی ممنوعه از حافظه استفاده میکنند. این حافظه اطلاعات بدست آمده در حین جستجو را در خود ذخیره میکند.
-
- قطعی و احتمالی: یک الگوریتم فرا ابتکاری قطعی نظیر جستجوی ممنوعه، مسآله را با بهره گرفتن از تصمیمات قطعی حل میکند. اما در الگوریتمهای فرا ابتکاری احتمالی نظیر تبرید شبیه سازی شده، یک سری قوانین احتمالی در حین جستجو مورد استفاده قرار میگیرد.
الگوریتمهای فراابتکاری در حل بسیاری از مسائل بهینهسازی در حوزههای مختلف کاربرد دارند. در ادامه به طور اجمالی چند نمونه از این الگوریتمها به اختصار معرفی میگردد. پس از آن به تفصیل الگوریتــم خفاش که یک الگوریتم فراابتکاری میباشد و همچنین اساس کار این رساله بر آن بنا گردیده است، مورد بررسی قرار خواهد گرفت.
۳-۳-۱- بهینه سازی تودهی ذرات
بهینه سازی تودهی ذرات به وسیله کندی و ابرهارت ارائه شده است [۴۱] . این روش ، از رفتارهای هوشمند پرندگان در یافتن غذا الگو برداری شده است . مانند الگوریتمهای هوش جمعی دیگر، PSO از مجموعه ای از جوابهای ممکن استفاده می کند و تا زمانی که از روی این جوابها یک جواب بهینه به دست آید یا معیار خاتمه برآورده شود ، الگوریتم ادامه مییابد. در این الگوریتم هر جواب ممکن به وسیله یک ذره نشان داده می شود و یک تودهی ذرات، مجموعه ای از ذرات میباشد . مسئولیت تکامل توده به یک ناحیهی بهینه بر عهده تساوی سرعت میباشد. این تساوی دربرگیرندهی سه مؤلفه میباشد : مؤلفهی ضریب سرعت ، مؤلفهی فردی ((pi و مؤلفهی اجتماعی (Pg). کل روش را میتوان به صورت یک الگوریتم رفتاری توزیع شده در نظر گرفت که یک جستجوی چند بعدی را انجام میدهد.
در شبیه سازی، رفتار هر ذره به وسیله بهترین ذرهی محلی یا بهترین ذرهی سراسری تحت تأثیر قرار میگیرد. یک ویژگی جالب در PSO این است که به ذرات اجازه داده می شود تا از تجربه قبلی خود استفاده کنند . این الگوریتم به طور موفق بر روی بازهی وسیعی از کاربردها اعمال شده است .
ابتدا ، تمامی ذرات به طور تصادفی در فضای جستجو مقدار دهی اولیه میشوند . همچنین موقعیتهای اولیه pi هر ذره نیز مقدار دهی اولیه میشوند. سپس بهترین ذرهی موجود در توده شناسایی شده و به جواب pg انتساب داده می شود. پس از آن، تودهی ذرات تا زمانی که معیار خاتمه به دست آید، در فضای جستجو پرواز می کند. پرواز، شامل اعمال کردن تساوی سرعت بر روی هر ذره است که سبب می شود موقعیت و برازندگی هر ذره تغییر کند. برازندگی به دست آمده توسط هر ذره با برازندگی به دست آمده از طریق بهترین موقعیت قبلی آن یعنی موقعیت pi مقایسه می شود. اگر موقعیت جدید دارای برازندگی بهتری نسبت به برازندگی بهترین موقعیت قبلی باشد، در این صورت موقعیت جدید جایگزین pi خواهد شد. همچنین، اگر بهترین موقعیت جدید ذرات دارای برازندگی بهتری نسبت به برازندگی بهترین موقعیت توده یعنی موقعیت pg باشد، در این صورت بهترین موقعیت جدید جایگزین pg خواهد شد. الگوریتم PSO دارای ساختار سادهای است و تعداد معدودی پارامتر در آن وجود دارد. الگوریتم حاصل برای محاسبهی موقیت بعدی ذره به صورت زیر بیان می شود :
vt+1= v t+ ۱ ۱(pi - xi)+ ۲۲ (p g- xi) (3-2)
xt+1= x t+ vt+1
که در آن ثابت های ۲و۱، توازن بین تأثیر یافتههای اشخاص یا دانش فردی (۱) و یافتههای کل گروه (یا دانش جمعی۲) (که هر دو در آغاز پیدایش این الگوریتم مقدار ۲ میگرفتند) و ۲ و۱ اعداد تصادفی با توزیع یکنواخت و دارای کران بالای max ، پارامترهای الگوریتم میباشند. توجه نمائید که پرانتزها باعث شتاب ذرات به طرف بهترین یافته های قبلی در فضا می گردند. برای یک فضای n – بعدی، سرعت ذرات در هر بعد محاسبه و سپس در یک بردار نهایی برای به روز کردن وضعیت ذره قرار میگیرند. این تکنیک برای تعدادی از کاربردها و مسائل پایهای مورد استفاده قرار گرفت که در اجرا بسیار جالب عمل میکردند. در واقع، این روشها از تحریک پدیده های طبیعی و گروه بندی های اجتماعی برای بهینه سازی توابع مختلط که کاربرد وسیعی در صنعت دارند، الهام گرفته شده اند .
۳-۳-۲- الگوریتم جفت گیری زنبور عسل
جفتگیری زنبورهای عسل بهعنوان یک روش عمومی برپایه رفتار حشرات جهت بهینهسازی مورد استفاده قرار میگیرد؛ که در واقع از فرایند جفتگیری زنبورهای واقعی الهام گرفته است. یک کندو، دارای یک ملکه، صدها زنبور نر و حدود دهها هزار زنبور کارگر میباشد. نقش اصلی ملکه تولید مثل و تخمگذاری میباشد. زنبورهای نر به عنوان پدر کندو ایفای نقش مینمایند. زنبـورهای کارگر وظیفه بچهداری و در برخی موارد تخمگذاری را بر عهده دارند. تخمهای بارور به تولید ملکه و زنبورهای کارگر منجر می شود و در مقابل تخمهای نابارور، زنبورهای نر را تولید می کند.
زمان جفتگیری ملکه با سرعت مشخصی از کندو خارج می شود؛ زنبورهای نر ملکه را تعقیب می کنند و آنهایی که به ملکه میرسند موفق به جفتگیری با ملکه میشوند، ولی بعد از عمل جفتگیری میمیرند. ملکه تا زمانی که حجم محفظه اسپرم گنجایش داشته باشد به پرواز ادامه میدهد؛ همین که حجم آن به اندازه مورد نظر رسید، در صورتیکه انرژی پرواز داشته باشد، به کنـدو بازمیگردد. احتمال توانـایی جفتگیری هر زنبـور نر با فرمول زیر شبیهسازی میگردد:
(۳-۳)
، عبارت است از احتمال اضافه شدن اسپرم زنبور نرِ به حجم محفظهی اسپرم ملکه و یا احتمال یک جفتگیری موفق میباشد. قدر مطلق اختلاف بین تابع هدف زنبور نر و تابع هدف ملکه میباشد. سرعت ملکه در لحظه میباشد. این بدان معنا است که در ابتدای پرواز، که سرعت ملکه جهت جفتگیری زیاد است و چنانچه تابع برازش زنبور نر نیز مناسب باشد، به طوریکه به مقدار تابع برازش ملکه نزدیک گردد آنگاه احتمال جفتگیری مناسب زیاد است. به تدریج، سرعت و انرژی ملکه کاهش مییابد. این موضوع با فرمول زیر نشان داده می شود:
(۳-۴)
مراحل اجرای این الگوریتم در زیر آورده شده است:
در شروع پرواز، ملکه، که همان جواب برتر میباشد، زنبورهای نر را به طور تصادفی جهت تولید بچههای جدید، انتخاب مینماید.
بچه زنبورهای جدید با جابجایی ژنهای نر با ژنهای ملکه ایجاد میشوند.
از زنبورهای کارگر جهت ارتقاء نسل استفاده میگردد.
تابع برازش زنبور کارگر با توجه به میزان پیشرفت در نسل زنبورها مرتب میگردد.
بچه زنبورهای برتر در حین انجام این فرایند در صورت برتری نسبت به ملکه، جایگزین آن میشوند[۴۲].
۳-۳-۳- الگوریتم مورچگان
یک آزمایش بیولوژیکی معروف به نام آزمایش پل دوگانه منبع مؤثری برای طرح اولین الگوریتم ACO بود. آزمایش پل دو طرفه برای بررسی تأثیر ردپای فرومون و رفتار حاصله مورچهها طراحی شده بود. در این آزمایش، یک پل دوطرفه با دو شاخه دارای طولهای متفاوت لانه این مورچهها را به یک منبع غذایی متصل می کرد (شکل ۳-۴). شاخه بلند این پل دو برابر شاخه کوتاهتر آن بود. در حین اجرای این آزمایش چنین کشف شد که بعد از چند دقیقه تقریباً اکثر مورچه ها از شاخه کوتاهتر پل استفاده می کنند. شرح و توضیح این رفتار به این واقعیت مربوط می شود، که مورچهها فرومون را در طول مسیرشان به جای می گذارند. احتمالاً مورچههایی که به طور تصادفی واتفاقی شاخه کوتاهتر پل را انتخاب می کنند، زودتر به منبع غذایی میرسند. وقتی که آنها به لانه برمیگردند، اثر فرومون بر روی شاخه کوتاهتر را بو می کنند. بنابراین، عبور از این شاخه را ترجیح می دهند. فرومون بر روی شاخه کوتاهتر، سریعتر از شاخه درازتر جمع و انباشته می شود و بنابراین، بعد از مدت زمان کمی غلظت و تراکم فرومون بر روی شاخه کوتاهتر بیشتر شده و تقریباً اکثر مورچهها شاخه کوتاهتر را انتخاب می کنند. . به این ترتیب، با گذشت زمان میزان ماده شیمیایی در مسیر درست بیشتر و در مسیر نامناسب به کلی از بین میرود و تعداد مورچههایی که جذب مسیر مستقیم میشوند، افزایش مییابد و جستجو در سایر مسیرها متوقف میگردد.
شکل ۳-۴ آزمایش پل دوگانه
دوریگو و همکارانش تحت تأثیر این آزمایش ACO را ارائه دادند. در سالهای اخیر، این الگوریتم برای مسائل کاربردی مختلف و برای انواع مسائل مربوط به بهینه سازی ترکیبی مثل بهینه سازی چند منظوره و دینامیک، استفاده شده است. در ادامه مراحل این الگوریتم به صورت مختصر آورده شده است.
ابتدا جمعیت اولیه به صورت تصادفی تولید میگردد، همچنین مقدار اولیه فرومون تعیین می شود. سپس سازگاری کلیه مورچهها بر پایه تابع هدف ارزیابی شده و با ارزیابی تک به تک مورچهها، فرومون به مسیر خاص شامل این مورچهها اضافه میگردد. بعد از آن مورچهها با توجه به سطح فرومون توزیع میگردند. در نهایت این فرایند تا دستیابی به حداکثر مورچهها یا عدم بهبود جواب ادامه مییابد. شایان ذکر است که در هر تکرار بهترین مسیر در حافظه ذخیره میگردد و بهترین آن، جواب نهایی مسأله خواهد شد[۴۳]،[۴۴].
۳-۳-۴- الگوریتم الگوی جستجوی ممنوع
ارائه این الگوریتــم به صورت امروزی در سال ۱۹۸۶ توســــط گلاور[۴۷] انجام گرفت؛ که به لحاظ انعطافپذیری با دیگر تکنیکهای موجود می تواند رقابت نماید. در این روش جهت حل مسأله به صورت هوشمند، نیازمند به حافظه قابل انعطاف و جستجوی واکنشی (آگاهانه) است. همچنین، امکان پیادهســازی در فضای حل به صورت کم هزینه و مؤثر را فراهم می کند. بهینههای محلی با توجه به جمعآوری اطلاعات انتخاب میگردند. شایان ذکر است الگوریتم الگوی جستجوی ممنوع، با طرحهای بدون حافظهای که به طور عمده به عملیات نیمه تصادفی تکیه دارند و به نوعی نمونه برداری انجام می دهند؛ متفاوت است. مثالهایی از روشهای بدون حافظه، روشهای معروف الگوریتم ژنتیک و روش آبکاری فولاد هستند که به نوعی از علوم فیزیک و زیست شناسی منشأ گرفتهاند.
در واقع ایده اصلی، از آنجا نشأت میگیرد که انتخاب یک جواب بد، ممکن است منجر به جوابی بهتر از یک انتخاب تصادفی خوب گردد. در سیستمی که از حافظه استفاده می کند یک انتخاب بد ممکن است راهنمای مفیدتری برای چگونگی تغییر جواب به صورت مفید باشد. برای جلوگیری از قرارگرفتن در جوابهای بهینه محلی و پیدا کردن جواب بهینه سراسری، در این روش حرکت در فضای جواب فقط به پاسخهای بهتـر محـدود نمی شود، بلکـه در بین همسایگیهای بهدست آمده، بهترین جواب از نظر حداقل کردن تابع هدف انتخاب می شود. سپس این جواب که در بین همسایگیهای نقطه شروع شرایط بهتری نسبت به سایر جوابها دارد، بهعنوان نقطهی شروع برای مرحله بعدی در نظر گرفته می شود و این عملیات مجدداً تکرار می شود. به این نکته باید توجه کرد که ممکن است نقطهی انتخابی از نقطهی شروع در هر مرحله بهتر نباشد. علاوه بر این، جهت جلوگیری از جوابهای تکراری و قرار نگرفتن الگوریتم در یک حلقهی بسته، حرکت انتخابی در لیست حرکتهای ممنوع قرار میگیرد. این فرایند، به یک جواب بهینه نسبی منتهی میگردد. همچنین، بایستی توجه داشت بهمنظور اینکه الگوریتم در یک نقطهی بهینه نسبی متوقف نگردد، هر حرکت ممنوع بعد از چند مرحله تکرار دوباره مجاز میگردد یا اینکه با در نظر گرفتن ماهیت مسأله، فضای جستجو تغییر داده می شود. با تکرار این دو فرایند در نهایت الگوریتم به جواب بهینه مطلق، همگرا میگردد [۴۵].
۳-۳-۵- الگوریتم آبکاری فولاد
در سال ۱۹۸۳ کریک پاتریک[۴۸] با شبیهسازی بین حداقل نمودن تابع هدف یک مسأله و سرد کردن جسم تا زمان رسیدن آن به حالت انرژی پایه، الگوریتم شبیهسازی سرد شدن را به وجود آورد.
واژهی آنیلینگ به معنای گرم کردن جسم میباشد ولی در اصطلاح یک فرایند فیزیکی برای بالا بردن دمای جسم تا رسیدن به نقطهی ذوب میباشد و سپس به تدریج سرد کردن تا انرژی جسم به حداقل برسد. سیمولیتد نیز در لغت به معنی شبیهسازی کردن و در اصطلاح بازسازی رفتار یک فرایند با توجه به یک سری فرضیات با اطلاعات معلوم یا فرضی است.
در ابتدا یک نقطهی دلخواه از فضای جستجو به طور تصادفی انتخاب و تابع هدف در آن محاسبه می شود. لازم به ذکر است که جواب اولیـه جزء پارامتـرهای مهم این الگوریتـم میباشد که نقش بهسزایی را ایفا مینماید و بسته به نوع مسأله تغیر می کند. همچنین، مکانیزم ایجاد همسایگی، پارامتر مهمی میباشد که در رسیدن به جواب بهینه بسیار مؤثر خواهد بود. بعد از انتخاب این دو پارامتر، به سیستم یک دمای اولیه، متناظر با انرژی جنبشی نسبت داده می شود. انتخاب مقدار دمای اولیه دلخواه است اما بسته به اینکه تابع در نقطهی شروع چه رفتاری دارد انتخاب میگردد؛ مثلاً اگر تابع دارای تغییرات کمی است دمای کمتر انتخاب میگردد تا قابلیت تحرک کمتر باشد و اگر تابع دارای تغییرات زیاد (شیب تند) باشد دمای بیشتری در نظر گرفته می شود تا امکان حرکت و خارج شدن از مینیممهای محلی بیشتر شود. سپس یک نقطه از فضای اطراف بهعنوان گزینه برای قدم بعدی انتخاب میگردد. این نحوه انتخاب بستگی به مسأله دارد. برای حرکت به سمت نقطهی جدید اینگونه تصمیم گیری خواهد شد، اگر جواب بهتر شد حرکت ادامه یابد و اگر نه با احتمال به سمت نقطهی جدید برود. احتمال با توجه به دمای سیستم و تغییر در اندازه تابع هدف و اختلاف بین نقطهی مبدأ و مقصد انتخاب می شود. برای احتمال ذکر شده، اغلب از دو تابع مختلف استفاده میگردد، این توابع عبارتند از:
الف) تابع متروپلیس[۴۹]
(۳-۵)
ب) تابع بولتزمن[۵۰]