الگوریتم تکاملی اتفاقی است.
گونههای مختلف الگوریتم‌های تکاملی همگی از طرح کلی که ارائه شد، پیروی می‌کنند و فقط در جزئیات فنی متفاوت هستند.
3-2-2-علت استفاده از الگوریتم‌های تکاملی
الگوریتمهای تکاملی در مقایسه با سایر الگوریتمهای بهینه‌سازی برتری‌هایی دارند که موجب شده است به‌طور گسترده مورداستفاده قرار بگیرند. به‌عنوان‌مثال، این الگوریتمها، نیاز به معرفی کامل مسأله ندارند و تنها با داشتن اطلاعات چندی در مورد تعریف مسأله میتوانند کار کنند. همچنین محدودیتی در مورد تابع شایستگی ندارند و لزومی ندارد که این تابع مثلاً مشتق‌پذیر باشد.
علاوه بر این موارد، چون الگوریتمهای تکاملی دارای جمعیتی از موجودات هستند و روی بخشهای مختلفی از جمعیت به‌طور موازی کار میکنند، احتمال کمتری برای قرار گرفتن در بهینههای محلی دارند. این قابلیت الگوریتمهای تکاملی اجازه میدهد که کار بهینه‌سازی را به‌طور موازی روی چندین بخش جمعیت انجام داد. به‌عنوان نتیجه این ویژگی گفته میشود که الگوریتمهای تکاملی روی جمعیتها خوب عمل می‌کنند. این‌گونه جمعیتها دارای تعداد زیادی بهینههای محلی هستند. الگوریتمهای تکاملی در این بهینههای محلی گیر نمیکنند و معمولاً میتوانند درنهایت به بهینه‌ترین جواب برسند.
3-2-3- انواع الگوریتم‌های تکاملی
الگوریتم‌های تکاملی زیرمجموعه‌ای از محاسبات تکاملی است و در شاخه هوش مصنوعی قرار می‌گیرد. الگوریتم‌های تکاملی شامل الگوریتم هایی جهت جستجو است که در آن‌ها عمل جستجو از چندین نقطه در فضای جواب میباشد. مسائل مهندسی و بهینه‌سازی ای وجود دارند که راه‌حلهای عادی و متعارف برای آن‌ها چاره‌ساز نیستند؛ زیرا که یا تحلیلی برای آن‌ها وجود ندارد (حل تحلیلی بسیار مشکلی دارند) و یا پیچیدگی، متغیرها و پارامترهای بسیار مسأله، انبوه از راه‌حل‌ها و نه لزوماً جواب مسأله را پیش روی مهندس میگذارد که امکان محک و ارزیابی تمام راه‌حل‌ها به دلیل تعداد بسیار زیاد وجود ندارد. الگوریتم‌های تکامل‌پذیر روش‌هایی بر مبنای جستجوی تصادفی‌اند که از مدل‌سازی تکامل بیولوژیکی طبیعی الگوبرداری شده‌اند. آن‌ها بر روی پاسخ‌های ممکنی کار می‌کنند که از ویژگی برتری برخوردار و نیز بقای نسل بیشتری دارند، لذا تخمین نزدیک‌تری از پاسخ بهینه به دست می‌دهند.
در هر نسل دسته جدیدی از تخمین‌ها بر مبنای انتخاب اعضای با میزان برازندگی (شایستگی) بیشتر تولیدشده و آن‌ها مشابه آنچه در طبیعت رخ می‌دهد باهم تلفیق می‌شوند. این روند نتیجتاً تکامل افرادی را شامل می‌شود که نسبت به والدینشان در محیط سازگارترند، دقیقاً مشابه آنچه در مطابقت با طبیعت است. الگوریتم‌های تکامل‌پذیر بر روی جمعیت‌هایی از افراد به‌جای یک تک پاسخ کار می‌کنند، ازاین‌رو جستجو به‌صورت موازی می‌تواند صورت گیرد.
چنین الگوریتم تکاملیِ تک جامعه‌ای به‌اندازه کافی قوی است و در گستره وسیعی از مسائل کارآمد می‌باشد. بااین‌حال با ایجاد چندین زیر جامعه نتایج بهتری به دست خواهد آمد. هر زیر جامعه بر روی چندین نسل جدا از هم (نظیر الگوریتم تکاملی تک جامعه‌ای) شکل می‌گیرد و پیش از آن هیچ عضوی بین زیر جامعه‌ها جابجا نخواهد شد. الگوریتم تکاملی چند جامعه‌ای تحول گونه‌ها را نسبت به الگوریتم تکاملی تک جامعه‌ای با روشی مشابه‌تر به طبیعت مدل‌سازی می‌نماید. الگوریتم‌های تکاملی به‌طور اساسی با دیگر روش‌های بهینه‌سازی و جستجوی مرسوم قدیمی تفاوت دارند. برخی از این تفاوت‌ها عبارت‌اند از:
الگوریتم‌های تکامل‌پذیر تنها یک تک نقطه را جستجو نمی‌کنند بلکه جمعیتی از نقاط را به‌صورت موازی بررسی می‌نمایند،
الگوریتم‌های تکامل‌پذیر نیاز به اطلاعاتی ضمنی و دیگر دانش‌های مکمل ندارند؛ تنها تابع هدف و شایستگی مربوطه در جهت‌های جستجو تأثیرگذارند،
الگوریتم‌های تکامل‌پذیر از قوانین در حال تغییر احتمالی بهره می‌برند و نه موارد مشخص و معین،
استفاده از الگوریتم‌های تکامل‌پذیر به‌طورکلی خیلی سرراست است، زیرا هیچ‌گونه محدودیت‌هایی برای تعریف تابع هدف وجود ندارد.
الگوریتم‌های تکامل‌پذیر تعداد زیادی از پاسخ‌های قابل‌قبول را به دست می‌دهند و انتخاب پایانی بر عهده کاربر است. لذا در مواردی که مسأله موردنظر شامل یک پاسخ مفرد نیست، مثلاً خانواده‌ای از پاسخ‌های بهینه-پَرِتو، مشابه آنچه در بهینه‌سازی چندهدفه و مسائل زمان‌بندی وجود دارد، الگوریتم‌های تکاملی برای شناسایی این پاسخ‌های چندگانه به‌طور همزمان ذاتاً کارآمدند.
الگوریتم‌های تکاملی عبارت‌اند از:
الگوریتم ژنتیک
الگوریتم کلونی زنبور عسل
روش بهینه‌سازی گروه مورچه‌ها
استراتژی تکامل
الگوریتم رقابت استعماری
3-3- الگوریتم رقابت استعماری