انواع الگوریتمهای ژنتیکی
الگوریتمهای ژنتیک دارای انواع مختلفی میباشند که هر یک در مورد محدوده خاصی از مسائل ساده و دشوار مثل مسائل مهندسی، فناوری اطلاعات، پزشکی، تجارت و غیره دارای کاربرد میباشند. در این بخش درباره انواع مختلف این الگوریتمها صحبت خواهد شد :
- الگوریتمهای ژنتیک ترتیبی
این الگوریتمها بر روی جمعیتی از رشتهها و یا به طور کلی بر روی ساختارهای دلخواهی از راهحلهای آزمایشی عمل می کنند. در این الگوریتم از هر رشته تحت عنوان یک فرد یاد می شود و هر فرد دارای یک یا چند کروموزوم و یک مقدار شایستگی است. معمولاً هر فرد تنها از یک کروموزوم تشکیل می شود که این کروموزوم شامل مجموعه ای از پارامترها تحت عنوان ژن میباشد.
- الگوریتمهای ژنتیک موازی[۱]
با توجه به اینکه الگوریتم ژنتیک ترتیبی دارای نقایصی از قبیل غیر بهینه بودن، زمانبر بودن و اندازه جمعیت بسیار زیاد میباشد، الگوریتمهای موازی جهت برطرف نمودن نقایص با کارایی و بهرهوری بالاتر به وجود آمدهاند، که یک مدل خاص و نیز ابزاری برای پیادهسازی الگوریتمهای ژنتیکی است. این نوع الگوریتم ژنتیک منجر به همگرایی زودرس نمی شود و این خصوصیت مثبت این الگوریتم است.
- الگوریتمهای ژنتیک هیبرید
بر خلاف سایر روشهای بهینهسازی الگوریتم ژنتیک این نوع الگوریتم همگرایی را تضمین می کند، البته هیچ تضمینی وجود ندارد که الگوریتم به راهحل بهینه همگرا شده باشد و ممکن است الگوریتم به نقاط بهینه محلی متوقف شده باشد.
- الگوریتمهای ژنتیک خودسازمان[۲]
نوعی از الگوریتمهای ژنتیک با پارامترهای انطباقی میباشند. به این معنی که پارامترهای الگوریتم نظیر اندازه جمعیت، احتمال تلفیق یا احتمال جهش در حین اجرای الگوریتم تغییر می کنند. این تغییر به این صورت است که اگر پس از گذشت زمان معینی هیچ بهبودی در جمعیت حاصل نشود احتمال وقوع جهش
افزایش مییابد و بر عکس در صورتی که جمعیت نرخ بهبود مناسبی داشته باشد احتمال وقوع جهش کاهش پیدا می کند.
- الگوریتمهای ژنتیک خودسازمان یکپارچهشده[۳]
عملگرهای ژنتیکی در این نوع از الگریتمها میتوانند یگانه، دوگانه یا چندگانه باشند. مشکل اصلی یافتن مقدار بهینه نسبت به استفاده از این عملگرها در حین اجرای الگریتم میباشد.
- الگوریتم ژنتیک آشفته
هدف از توسعه الگوریتمهای ژنتیک آشفته ایجاد تابع شایستگی به صورت جمع چندین زیر تابع مستقل میباشد. هر یک از زیر تابعها بر روی چند مکان هندسی تعریف شده اند که این مکانها سطح فریب را در فریبندهترین زیر تابع تخمین میزند.
- الگوریتمهای ژنتیکی زایشی[۴]
این الگوریتمها فرزندان جدید را با توجه به جمعیت حاضر و با بهره گرفتن از عملگرهای ژنتیک تولید می کند و به این ترتیب جمعیت جدید ایجادشده جایگزین جمعیت فعلی می شود. معمولاً در عملیات جایگزینی مربوط به روش زایشی در هر تکرار کل جمعیت حاضر با جمعیت جدید جایگزین میگردد.
- الگوریتمهای ژنتیک حالت دائمی[۵]
در این روش عموماً در هر گام زمانی، فقط یک عضو جدید به جمعیت جدید اضافه می شود. استراتژی جایگزینی تعیین می کند که کدام یک از اعضای جمعیت باید با عضو جدید جایگزین گردد (کیا، ۱۳۹۱).
۲-۲-۴-۲- مزایای الگوریتمهای ژنتیک
-
- با متغیرهای پیوسته و هم گسسته می تواند عمل بهینهسازی را انجام دهد.
- نیازی به محاسبه مشتق توابع ندارد.
- به طور همزمان می تواند تمامی ناحیه وسیع تابع هزینه را جستجو کند.
- قابل اجرا از طریق کامپیوترهای موازی است.
- توابع هزینهای که بسیار پیچیده باشند نیز از این طریق قابل بهینهسازی میباشند و الگوریتم در اکسترمم محلی به دام نمیافتد.
- قادر است تا متغیرها را کدبندی نموده و بهینهسازی را با متغیرهای کدبندی شده انجام دهد، کدبندی سرعت همگرایی الگوریتم را افزایش میدهد.
- این الگوریتم توانایی کار کردن با داده های عددی تولید شده و داده های تجربی را علاوه بر توابع تحلیلی دارد.
- فرایند ارائه شده توسط الگوریتمهای ژنتیک برروی فضایی از مجموعه نمایندگان با همان فضای کروموزومها اعمال میگردند بر روی خود فضای راهحلها.
- الگوریتمهای ژنتیکی از قوانین انتقالی احتمالی به جای قوانین انتقالی قطعی استفاده می کند.
- تنها ملاک ارزیابی و سنجش میزان شایستگی هر راهحل توسط الگوریتمهای ژنتیک، مقدار تابع شایستگی آن در فضای کروموزوها میباشد و نه معیارهای مورد نظر در سطح فضای راهحلها.
- برای حل برخی از مسائل رده NP-hard نیز استفاده می شود.
- این الگوریتم بیشتر در مسائل بهینهسازی و امثالهم به کار میرود.
- قادر به بهینهسازی مسائل با تعداد متغیرهای زیاد میباشد.
- قادر است تا جواب بهینه را به طور همزمان به دست آورد نه فقط یک جواب.
- این الگوریتمها بر روی مجموعه ای از راهحلها اعمال میشوند و نه بر روی یک راهحل خاص.
۲-۲-۴-۳- محدودیتهای الگوریتم ژنتیک
یک مشکل چگونگی نوشتن عملگر Fitness است که منجر به بهترین راهحل برای مسئله شود. اگر این کارکرد برازش به خوبی و قوی انتخاب نشوند ممکن است باعث شود که راهحلی برای مسئله پیدا نکنیم یا مسئلهای دیگر را به اشتباه حل کنیم. به علاوه برای انتخاب مناسب برای Fitness، پارامترهای دیگری مثل اندازه جمعیت، نرخ جهش و ترکیب و قدرت و نوع انتخاب هم باید مورد توجه قرار گیرند.
مشکل دیگر، که آن را نارس مینامیم، این است که اگر یک ژنوم که فاصلهاش با سایر ژنومهای نسلش زیاد باشد و خیلی زود دیده شود ممکن است محدودیت ایجاد کند و راه را به سوی جواب بهینه محلی سوق دهد. این اتفاق معمولاً در جمعیتهای کم اتفاق میافتد، روشهای Rank، Scaling، Tournament selection بر این مشکل غلبه می کنند.
۲-۲-۴-۴- استراتژی های برخورد با محدودیتهای الگوریتم ژنتیک
بحث دیگری که در اجرای الگوریتم ژنتیک وجود دارد چگونگی برخورد با محدودیتهای مسئله میباشد، زیرا عملگرهای ژنتیک مورد استفاده در الگوریتم ژنتیک باعث تولید کروموزومهای غیر موجه می شود. در ادامه به چند تکنیک معمول جهت مواجهه با محدودیتها اشاره می شود:
استراتژی اصلاح عملگرهای ژنتیک
یک روش برای جلوگیری از تولید کروموزوم غیر موجه این است که عملگر ژنتیکی طوری تعریف گردد که پس از عمل بر روی کروموزوم تولید شده نیز موجه باشد. در این حالت یک سری مشکلات وجود دارد. مثلا پیدا کردن عملگری که دارای شرط فوق باشد بسیار دشوار بوده و از مسئله ای به مسئله دیگر متفاوت میباشد.
استراتژی ردی
در این روش پس از تولید هر کروموزوم آن را از نظر موجه بودن تست کرده و در صورت غیر موجه بودن حذف میگردد. این روش بسیار ساده و کارا میباشد.
استراتژی اصلاحی
در این روش به جای اینکه کروموزوم غیر موجه حذف گردد تبدیل به یک کروموزوم موجه می شود. این روش نیز مانند روش اول به مسئله وابسته بوده و یافتن فرایند اصلاح گاهی بسیار پیچیده میباشد.
استراتژی جریمهای
در این روش بر خلاف سه روش قبل که از ورود جوابهای غیر موجه جلوگیری میکردند، جواب غیر موجه با احتمال کم امکان حضور مییابند. سه روش فوق دارای این عیب بودند که به هیچ نقطهای بیرون از فضای موجه توجه نمیکردند، اما در بعضی مسائل بهینهسازی، جوابهای غیرموجه درصد زیادی از جمعیت را اشغال می کنند. در چنین شرایطی اگر جستجو فقط در ناحیه موجه انجام گیرد شاید یافتن جواب موجه خیلی وقتگیر و مشکل باشد.
استراتژی جریمهای از متداولترین تکنیکهای مورد استفاده برای سر و کار داشتن با جوابهای غیر موجه میباشد که در آن ابتدا محدودیتهای مسئله در نظر گرفته نمیشوند، پس برای هر تخلف از محدودیتها یک جریمه اختصاص داده می شود که این جریمه در تابع هدف قرار میگیرد.
مسئله اصلی چگونگی انتخاب یک مقدار مناسب برای مقدار جریمه میباشد تا در حل مسائل به ما کمک نماید. نکتهای که در روش جریمه وجود دارد این است که یک جواب غیرموجه به سادگی حذف نمی شود، زیرا ممکن است در ژنهای آن اطلاعات مفیدی وجود داشته باشد که با اندکی تغییر به جواب بهینه تبدیل شوند.
۲-۲-۴-۵- بهبود الگوریتم ژنتیک
برای بهبود الگوریتم ژنتیک میتوانیم تغییرات زیر را اعمال کنیم:
- استفاده از بهینهگر محلی
- تغییر پارامترهایی از قبیل تغییر جمعیت اولیه، نرخ جهش و کسر ادغام (ترکیب)
- تغییر الگوریتم ژنتیک باینری به پیوسته و بالعکس
۲-۲-۴-۶- چند نمونه از کاربردهای الگوریتم ژنتیک
- نرمافزارهای شناسایی چهره (شناسایی چهره با بهره گرفتن از تصویر ثبت شده. در این روش، شناسایی چهره بر اساس فاصله اجزای چهره و ویژگیهای محلی و هندسی صورت میگیرد که تغییرات ناشی از گیم، تغییرات نور، افزایش سن کمترین تاثیر را خواهد داشت. همچنین گرافها برای چهره های جدید با بهره گرفتن از الگوریتمهای ژنتیک ساخته شده و با بهره گرفتن از یک تابع تشابه، قابل مقایسه با یکدیگر هستند که این امرتاثیر بسزایی در افزایش سرعت شناسایی خواهد داشت).
- توپولوژیهای شبکه های کامپیوتری توزیع شده
- بهینهسازی ساختار مولکولی شیمیایی
- مهندسی برق برای ساخت آنتنهای برق
- مهندسی نرمافزار
- بازیهای کامپیوتری
- مهندسی مواد
- مهندسی سیستم
- رباتیک
- تشخیص الگو و استخراج داده
- حل مسئله فروشنده دورهگرد
- آموزش شبکه های عصبی مصنوعی
- یاددهی رفتار با رباتها
- یادگیری قوانین فازی با بهره گرفتن از الگوریتم ژنتیک
[۱] - PGA
[۲] - AGA
[۳] - IAGA