به دلیل موازی بودن و این که چندین رشته در یک لحظه مورد ارزیابی قرار میگیرند الگوریتم های ژنتیک برای مسائلی که فضای راهحل بزرگی دارند بسیار مفیدند. اکثر مسائلی که این گونهاند به عنوان غیرخطی شناخته شدهاند. در یک مسأله خطی،Fitness هر عنصر مستقل است، پس هر تغییری در یک قسمت بر تغییر و پیشرفت کل سیستم تأثیر مستقیم دارد. میدانیم که تعداد کمی از مسائل دنیای واقعی به صورت خطیاند. در مسائل غیرخطی تغییر در یک قسمت ممکن است تاثیری ناهماهنگ بر کل سیستم و یا تغییر در چند عنصر تاثیر فراوانی بر سیستم بگذارد. خوشبختانه موازی بودن GA باعث حل این مسأله میشود و در مدت کمی مشکل حل میشود. مثلاً برای حل یک مسأله خطی ۱۰۰۰ رقمی ۲۰۰۰ امکان حل وجود دارد ولی برای یک غیرخطی ۱۰۰۰ رقمی امکان. یکی از نقاط قوت الگوریتمهای ژنتیک که در ابتدا یک کمبود به نظر میرسد این است که: GA ها هیچ چیزی در مورد مسائلی که حل میکنند نمیدانند و اصطلاحاً به آنها «ساعتساز نابینا»[۶۳] میگوییم. آنها تغییرات تصادفی را در راه حل های کاندیدشان میدهند و سپس از تابع برازش برای سنجش این که آیا آن تغییرات پیشرفتی ایجاد کردهاند یا نه، استفاده میکنند. مزیت این تکنیک این است که به GA اجازه میدهد تا با ذهنی باز شروع به حل مسائل کند. از آنجایی که تصمیمات آن اساساً تصادفی است، بر اساس تئوری همه راه حل های ممکن به روی مسأله باز است، ولی مسائلی که محدود به اطلاعات هستند باید از راه قیاس تصمیم بگیرند و در این صورت بسیاری از راه حل های نو و جدید را از دست میدهند.
یکی دیگر از مزایای الگوریتم این است که آنها میتوانند چندین پارامتر را همزمان تغییر دهند. بسیاری از مسائل واقعی نمیتوانند محدود به یک ویژگی شوند تا آن ویژگی ماکسیمم شود و باید چند جانبه در نظر گرفته شوند.GA ها در حل این گونه مسائل بسیار مفیدند، و در حقیقت قابلیت موازی کار کردن آنها این خاصیت را به آنها میبخشد. و ممکن است برای یک مسأله ۲ یا چند راهحل پیدا شود، که هر کدام با در نظرگرفتن یک پارامتر خاص به جواب رسیدهاند.
به طور خلاصه مزایای الگوریتم ژنتیک را میتوان در موارد زیر برشمرد:
-
- با متغیرهای پیوسته و هم گسسته میتواند عمل بهینهسازی را انجام دهد.
-
- نیازی به محاسبه مشتق توابع ندارد.
-
- به طور همزمان میتواند تمامی ناحیه جستجو شونده وسیع تابع هزینه را جستجو کند.
-
- قادر به بهینه سازی مسائل با تعداد متغیرهای زیاد میباشد.
-
- قابل اجرا از طریق کامپیوترهای موازی است.
-
- توابع هزینهای که بسیار پیچیده باشند نیز از این طریق قابل بهینهسازی میباشند و الگوریتم در اکسترمم محلی به دام نمیافتد.
-
- قادر است تا چند جواب بهینه را به طور همزمان به دست آورد نه فقط یک جواب.
-
- الگوریتمهای ژنتیک بر روی مجموعهای از راه حل ها اعمال میشوند و نه بر روی یک راهحل خاص.
-
- قادر است تا متغیرها را کد بندی نموده و بهینهسازی را با متغیرهای کدبندی شده انجام دهد. کد بندی سرعت همگرایی الگوریتم را افزایش میدهد.
-
- الگوریتم توانایی کار کردن با داده های عددی تولید شده و داده های تجربی را علاوه بر توابع تحلیلی دارد.
-
- فرایند ارائه شده توسط الگوریتمهای ژنتیک بر روی فضایی از مجموعه نمایندگان یا همان فضای کروموزومها اعمال میگردد و نه بر روی خود فضای راه حل ها.
-
- الگوریتمهای ژنتیک از قوانین انتقالی احتمالی بجای قوانین انتقالی قطعی استفاده میکنند، بدین معنا که حرکت آن در هر نقطه از الگوریتم کاملا احتمالی بوده و بر اساس قطعیت صورت نمیپذیرد. این امر از مزایای مهم این روش بوده و از افتادن سیستم در کمینه محلی جلوگیری میکند.
-
- البته میزان احتمال به گونهای است که احتمال حرکت به سمت مسأله بیشتر از احتمال حرکت آن به سمت مخالف جواب میباشد.
-
- تنها ملاک ارزشیابی و سنجش میزان شایستگی هر راهحل توسط الگوریتمهای ژنتیک، مقدار تابع شایستگی آن در فضای کروموزومها میباشد و نه معیارهای مورد نظر در سطح فضای راه حل ها.
-
- برای حل برخی از مسائلی از رده NP-Hard نیز استفاده میشود.
- این الگوریتم بیشتر در مسائل بهینه سازی و امثالهم به کار میرود.
محدودیتهای GA ها
یک مشکل چگونگی نوشتن عملگر ارزیاب است که منجر به بهترین راهحل برای مسأله شود. اگر این کارکرد برازش به خوبی و قوی انتخاب نشود ممکن است باعث شود که راهحلی برای مسأله پیدا نکنیم یا مسألهای دیگر را به اشتباه حل کنیم. به علاوه برای انتخاب تابع مناسب برای ارزیاب، پارامترهای دیگری مثل اندازه جمعیت، نرخ ترکیب، قدرت و نوع انتخاب هم باید مورد توجه قرار گیرند.
مشکل دیگر، که آن را «نارس» مینامیم این است که اگر یک ژنوم که فاصلهاش با سایز ژنومهای نسلاش زیاد باشد. (خیلی بهتر از بقیه باشد) خیلی زود دیده میشود (ایجاد میشود) ممکن است محدودیت ایجاد کند و راهحل را به سوی جواب بهینه محلی سوق دهد. این اتفاق معمولاً در جمعیتهای کم اتفاق میافتد. روشهای Rank Scaling , Tournament Selection بر این مشکل غلبه میکنند.
استراتژی برخورد با محدودیتها
بحث دیگری که در اجرای الگوریتم ژنتیک وجود دارد چگونگی برخورد با محدودیتهای مسأله میباشد، زیرا عملگرهای ژنتیک مورد استفاده در الگوریتم باعث تولید کروموزومهای غیرموجّه میشود. «میکالویچ» چند تکنیک معمول جهت مواجهه با محدودیتها تقسیمبندی نموده است که در ادامه به چند تا از آنها اشاره میشود.
استراتژی اصلاح عملگرهای ژنتیک
یک روش برای جلوگیری از تولید کروموزوم غیرموجّه این است که عملگر ژنتیکی طوری تعریف گردد که پس از عمل بر روی کروموزمها، کروموزوم تولید شده نیز موجّه باشد. در این حالت یکسری مشکلات وجود دارد. مثلاً پیدا کردن عملگری که دارای شرط فوق باشد بسیار دشوار بوده و از مسأله دیگر متفاوت میباشد.
استراتژی رَدّی
در این روش پس از تولید هر کروموزوم آن را از نظر موجّه بودن تست کرده و در صورت غیرموجّه بودن حذف میگردد. این روش بسیار ساده و کارا میباشد.
استراتژی اصلاحی
در این روش به جای اینکه کروموزوم غیرموجّه حذف گردد تبدیل به یک کروموزوم موجّه میشود. این روش نیز مانند روش اول به مسأله وابسته بوده و یافتن فرایند اصلاح گاهی بسیار پیچیده میباشد.