نوشته‌ها

روش جستجوی تکاملی

روش‌های جستجوی ناآگاهانه، آگاهانه و فراابتکاری (به انگلیسی: Metaheuristic) برای حل مسائل هوش مصنوعی بسیار کارآمد می‌باشند. در مورد مسائل بهینه‌سازی اغلب روش‌های آگاهانه و ناآگاهانه جوابگوی نیاز نخواهند بود چرا که بیشتر مسائل بهینه‌سازی در رده مسائل NP قرار دارند؛ بنابراین نیاز به روش جستجوی دیگری وجود دارد که بتواند در فضای حالت مسائل NP به طرف جواببهینه سراسری حرکت کند. بدین منظور روش‌های جستجوی فراابتکاری مطرح می‌شوند، این روش‌های جستجو می‌توانند به سمت بهینگی‌های سراسری مسئله حرکت کنند. در کنار روش‌های جستجوی فراابتکاری، روش‌های جستجوی دیگری نیز وجود دارند که به روش‌های تکاملی معروفند.

نظریه تکامل

بر اساس نظریه تکاملداروین نسل‌هایی که از ویژگی‌های و خصوصیات برتری نسبت به نسل‌های دیگر برخوردارند شانس بیشتری نیز برای بقا و تکثیر خواهند داشت و ویژگی‌ها و خصوصیات برتر آنها به نسل‌های بعدی آنان نیز منتقل خواهد شد. همچنین بخش دوم نظریه داروین بیان می‌کند که هنگام تکثیر یک ارگان فرزند، به تصادف رویدادهایی اتفاق می‌افتد که موجب تغییر خصوصیات ارگان فرزند می‌شود و در صورتی که این تغییر فایده‌ای برای ارگان فرزند داشته باشد موجب افزایش احتمال بقای آن ارگان فرزند خواهد شد. در محاسبات کامپیوتری، بر اساس این نظریه داروین روش‌هایی برای مسائل بهینه‌سازی مطرح شدند که همه این روش‌ها از پردازش تکاملی در طبیعت نشات گرفته‌اند. به روش‌های جستجو، الگوریتم‌های جستجوی تکاملی گفته می‌شود.

انواع مختلف الگوریتم‌های تکاملی

انواع مختلف الگوریتم‌های تکاملی که تا بحال مطرح شده‌اند، به شرح زیر می‌باشد:

الگوریتم ژنتیک

الگوریتم تکاملی

Evolutionary Strategies

Evolutionary Programming

Differential Evolution

Cultural Evolution

هم‌فرگشتی

کدگذاری و نحوه نمایش

نحوه نمایش جواب مسئله و ژن‌ها در موفقیت الگوریتم و نحوه پیاده‌سازی الگوریتم ژنتیک تأثیر بسیار مهمی دارد. در بیشتر مسائل نیز روش‌های مختلفی برای نشان دادن جواب مسئله می‌توان طراحی کرد.

حل مسائل معروف با استفاده از الگوریتم ژنتیک

یکی از مسائل کلاسیک در الگوریتم‌های ژنتیک مسئله ۸ وزیر است. ماهیت مسئله به گونه‌ای است که مدلسازی آن و همچنین اعمال عملگرهای الگوریتم ژنتیک بر روی آن بسیار ساده است. همچنین علاوه برای الگوریتم ژنتیک، روش الگوریتم تبرید شبیه‌سازی شده نیز در ساده‌ترین شکل خود برای مسئله چند وزیر نیز روش مناسبی هست همچنین از مسائل مهم دیگری که با استفاده از این الگوریتم قابل حل می‌باشد مسئلهٔ فروشندهٔ دوره‌گرد یا مسئلهٔ چیدمان دینامیک می‌باشد.

فلو چارت این الگوریتم

شمای کلی سودوکوی الگوریتم

منبع

 

برای استفاده از یک الگوریتم ژنتیک، جمعیتی از افراد در داخل یک فضای جستجو حفظ می شود. هر کدام از این افراد در واقع یک راه حل ممکن برای مسئله مطرح شده هستند. هر عضو با برداری با طول محدود از اجزا یا متغیر ها و با کمک حروف الفبای خاصی کدگذاری می شود. این حروف الفبای خاص معمولا الفبای باینری  هستند. برای ادامه دادن شباهت این روش با اصول ژنتیکی، هر کدام از اعضا به عنوان کروموزوم تعبیر می شوند و متغیر ها مشابه ژن ها در نظر گرفته می شوند. پس یک کروموزوم ( یک جواب برای مسئله)، از چند ژن (متغیر ها) تشکیل شده است. برای نشان دادن توانایی های هر یک از اعضا برای رقابت با دیگر اعضای جمعیت، به هر کدام از جواب های ممکن یک امتیاز برازندگی اختصاص داده می شود.
عضوی که دارای امتیاز برازندگی بهینه ( یا به طور کلی تر نزدیک به بهینه) است دلخواه ما می باشد. هدف الگوریتم ژنتیک، استفاده از “پرورش” انتخابی جواب ها، برای ایجاد فرزندانی بهتر از والدین به کمک ترکیب کردن اطلاعات کروموزوم ها است.

الگوریتم ژنتیک قسمت ۱
الگوریتم ژنتیک قسمت ۲