(بیشینه یا کمینه) هستند و همین امر موجب پیشرفت تمدن و آفرینش شده است. در دانش کامپیوتر و فناوری اطلاعات هم «جستجو» یکی از مهمترین مسائل است. تنها کافیست که حجم اطلاعات قرار گرفته بر حافظههای گوناگون و اینترنت را در نظر بگیریم تا جایگاه ویژه آن را دریابیم.
تاکنون روشهای بسیاری توسط طراحان الگوریتمها برای انجام جستجو بر دادههای دیجیتالی ارایه شده است. روشهایی به نام جستجوی سریع39 و جستجوی دودویی40، از سادهترین الگوریتمهایی هستند که دانشجویان گرایشهای مهندسی کامپیوتر در نخستین سالهای دوره کارشناسی فرا میگیرند، امّا این الگوریتمها شاید، هنگامی که با حجمی گسترده از دادهها روبرو شوند، کارایی ندارند و حتی الگوریتمهای پیشرفتهتر مانند جستجوی بازپخت شبیهسازی شده41 و الگوریتم عمیقشوندۀ تکراری42 نیز در هنگام رویارویی با مسائل ابرفضا43 از یافتن راهحل یا ناحیههای دلخواه در میمانند. در این میان یک روش جادویی وجود وجود دارد که مسائل بزرگ را به سادگی و به گونهای شگفتانگیز حل میکند و آن «الگوریتم ژنتیک»44 است. ناگفته پیداست که واژۀ «الگوریتم ژنتیک» از دو واژۀ «الگوریتم» و «ژنتیک» تشکیل شده است که خود مبیّن این مطلب است که این روش از دو علم ریاضی و زیستشناسی برای حل مسائل کمک میگیرد.
الگوریتمژنتیک بر خلاف دیگر روشهای جستجو، که توسط طراحان نگاشته میشوند، در حقیقت به دست دستگاه آفرینش پدید آمده، و پس از شناخت نسبی دانشمندان از این روش به صورت مسألهای ریاضی فرموله شده و وارد دانش مهندسی کامپیوتر و دیگر علوم مرتبط گردیده است. در یکی دو دهه گذشته که این الگوریتم در علوم مهندسی بکار گرفته شده، ناباورانه چنان دستآوردها و نتایج شگفتانگیزی داشته که نگاه بسیاری از دانشپژوهان علوم گوناگون فنیمهندسی را به خود جلب کرده است.
ایدۀ اصلی استفاده از الگوریتم ژنتیک
در دهه 70 میلادی دانشمندی از دانشگاه میشیگان به نام «جان هلند»45 ایده استفاده از الگوریتم ژنتیک را در بهینهسازیهای مهندسی مطرح کرد. ایده اساسی این الگوریتم انتقال خصوصیات موروثی توسط ژنهاست. (ژنها قطعاتی از یک کروموزوم هستند که اطلاعات مورد نیاز برای یک مولکول DNA یا یک پلی پپتید را دارند. علاوه بر ژنها، انواع مختلفی از توالیهای مختلف تنظیمی در روی کروموزومها وجود دارد که در همانندسازی، رونویسی و… شرکت دارند.(46. فرض کنید مجموعه خصوصیات انسان توسط کروموزومهای او به نسل بعدی منتقل میشوند. هر ژن در این کروموزومها نماینده یک خصوصیت است. بعنوان مثال ژن 1 میتواند رنگ چشم باشد، ژن 2 طول قد، ژن 3 رنگ مو و الی آخر. حال اگر این کروموزوم به تمامی، به نسل بعد انتقال یابد، تمامی خصوصیات نسل بعدی شبیه به خصوصیات نسل قبل خواهد بود. بَدیهیست که در عمل چنین اتفاقی رخ نمیدهد. در واقع به صورت همزمان دو اتفاق برای کروموزومها میافتد. اتّفاق اول موتاسیون(جهش)47 است. موتاسیون به این صورت است که بعضی ژنها به صورت کاملاً تصادفی تغییر میکنند. البته تعداد اینگونه ژنها بسیار کم میباشد اما در هر حال این تغییر تصادفی همانگونه که پیشتر دیدیم بسیار مهم است. مثلاً ژن رنگ چشم میتواند به صورت تصادفی باعث شود تا در نسل بعدی یک نفر دارای چشمان سبز باشد، در حالی که تمامی نسل قبل دارای چشم قهوهای بودهاند. علاوه بر موتاسیون اتفاق دیگری که میافتد و البته این اتفاق به تعداد بسیار بیشتری نسبت به موتاسیون رخ میدهد چسبیدن ابتدای یک کروموزوم به انتهای یک کروموزوم دیگر است.48 این همان چیزیست که مثلاً باعث میشود تا فرزند تعدادی از خصوصیات پدر و تعدادی از خصوصیات مادر را با هم به ارث ببرد و از شبیه شدن تام فرزند به تنها یکی از والدین جلوگیری میکند.
حال میتوانیم اینگونه بیان کنیم که: الگوریتم ژنتیک ابزاری میباشد که توسط آن ماشین میتواند مکانیزم انتخاب طبیعی را شبیه سازی نماید. این عمل با جستجو در فضای مسأله جهت یافتن جواب برتر و نه الزاماً بهینه صورت میپذیرد. الگوریتم ژنتیک را میتوان یک روش جستجوی کلّی نامید که از قوانین تکامل بیولوژیک طبیعی تقلید می کند. در واقع الگوریتمهای ژنتیک از اصول انتخاب طبیعی داروین برای یافتن فرمول بهینه جهت پیشبینی یا تطبیق الگو استفاده میکنند. الگوریتمهای ژنتیک اغلب گزینه خوبی برای تکنیکهای پیشبینی بر مبنای رگرسیون49 هستند.
مکانیزم الگوریتم ژنتیک
الگوریتم ژنتیک به عنوان یک الگوریتم محاسباتیِ بهینهسازی با در نظر گرفتن مجموعهای از نقاط فضای جواب در هر تکرار محاسباتی به نحو مؤثری نواحی مختلف فضای جواب را جستجو میکند. در مکانیزم جستجو گرچه مقدار تابع هدف تمام فضای جواب محاسبه نمیشود ولی مقدار محاسبه شده تابع هدف برای هر نقطه، در متوسطگیری آماری تابع هدف در کلیه زیر فضاهایی که آن نقطه به آنها وابسته بوده دخالت داده میشود و این زیر فضاها به طور موازی از نظر تابع هدف متوسطگیری آماری میشوند. این مکانیزم را توازی ضمنی50 میگویند. این روند باعث میشود که جستجوی فضا به نواحی از آن که متوسط آماری تابع هدف در آنها زیاد بوده و امکان وجود نقطه بهینه مطلق در آنها بیشتر است سوق پیدا کند. چون در این روش برخلاف روشهای تکمسیری فضای جواب به طور همه جانبه جستجو میشود، امکان کمتری برای همگرایی به یک نقطه بهینه محلی وجود خواهد داشت.
امتیاز دیگر این الگوریتم آن است که هیچ محدودیتی برای تابع بهینه شونده، مثل مشتقپذیری یا پیوستگی لازم ندارد و در روند جستجو خود تنها به تعیین مقدار تابع هدف در نقاط مختلف نیاز دارد و هیچ اطلاعاتِ کمکی دیگری، مثل مشتق تابع را استفاده نمیکند. لذا میتوان در مسائل مختلف اعم از خطی، پیوسته یا گسسته استفاده میشود و به سهولت با مسائل مختلف قابل تطبیق است.
در هر تکرار هر یک از رشتههای موجود در جمعیت رشتهها، رمزگشایی شده و مقدار تابع هدف برای آن به دست میآید. بر اساس مقادیر به دست آمده تابع هدف در جمعیت رشتهها، به هر رشته یک عدد برازندگی نسبت داده میشود. این عدد برازندگی احتمال انتخاب را برای هر رشته تعیین خواهد کرد. بر اساس این احتمال انتخاب، مجموعهای از رشتهها انتخاب شده و با اعمال عملکردهای ژنتیکی روی آنها رشتههای جدید جایگزین رشتههایی از جمعیت اولیه میشوند تا تعداد جمعیت رشتهها در تکرارهای محاسباتی مختلف ثابت باشد. مکانیزمهای تصادفی که روی انتخاب و حذف رشتهها عمل میکنند به گونهای هستند که رشتههایی که عدد برازندگی بیشتری دارند، احتمال بیشتری برای ترکیب و تولید رشتههای جدید داشته و در مرحله جایگزینی نسبت به دیگر رشتهها مقاومتر هستند. بدین لحاظ جمعیت دنبالهها در یک رقابت بر اساس تابع هدف در طیّ نسلهای مختلف، کامل شده و متوسط مقدار تابع هدف در جمعیت رشتهها افزایش مییابد. بطور کلی در این الگوریتم ضمن آنکه در هر تکرار محاسباتی، توسط عملگرهای ژنتیکی نقاطی جدید از فضای جواب مورد جستجو قرار میگیرند توسط مکانیزم انتخاب، روند جستجوی نواحی از فضا را که متوسط آماری تابع هدف در آنها بیشتر است، کنکاش میکند. بر اساس سیکل اجرایی فوق، در هر تکرار محاسباتی، توسط عملگرهای ژنتیکی نقاط جدیدی از فضای جواب مورد جستجو قرار میگیرند توسط مکانیزم انتخاب، روند جستجو نواحی از فضا را که متوسط آماری تابع هدف در آنها بیشتر است، کنکاش میکند. که بر این اساس، در هر تکرار محاسباتی، سه عملگر اصلی روی رشتهها عمل میکند؛ این سه عملگر عبارتند از: دو عملگر ژنتیکی و عملکرد انتخابی تصادفی. «گلد برگ»51 الگوریتم ژنتیکی «جان هولند» را با عنوان الگوریتم ژنتیک ساده52 معرفی میکند؛ الگوریتم ژنتیک را از الگوریتم ژنتیک طبیعی اقتباس کردند.. در الگوریتم ژنتیک، مجموعه ای از متغیرهای طراحی را توسط رشتههایی با طول ثابت53 یا متغیر54 کدکذاری میکنند که در سیستمهای بیولوژیکی آنها را کرروموزوم یا فرد55 مینامند. هر رشته یا کروموزوم یک نقطۀ پاسخ در فضای جستجو را نشان میدهد. به ساختمان رشتهها یعنی مجموعهای از پارامترها که توسط یک کروموزوم خاص نمایش داده میشود ژنوتیپ56 و به مقدار رمزگشایی آن فنوتیپ57 میگویند. الگوریتمهای وراثتی فرآیندهای تکراری هستند، که هر مرحلۀ تکراری را نسل و مجموعههایی از پاسخها در هر نسل را جمعیت نامیدهاند.
الگوریتمهای ژنتیک، جستجوی اصلی را در فضای پاسخ به اجرا میگذارند. این الگوریتمها با تولید نسل58 آغاز میشوند که وظیفه ایجاد مجموعه نقاط جستجوی اولیه به نام «جمعیت اولیه»59 را بر عهده دارند و به طور انتخابی یا تصادفی تعیین میشوند. از آنجایی که الگوریتمهای ژنتیک برای هدایت عملیات جستجو به طرف نقطه بهینه از روشهای آماری استفاده میکنند، در فرآیندی که به انتخاب طبیعی وابسته است، جمعیت موجود به تناسب برازندگی افراد آن برای نسل بعد انتخاب میشود. سپس عملگرهای ژنتیکی شامل انتخاب60 ، پیوند(ترکیب)، جهش و دیگر عملگرهای احتمالی اِعمال شده و جمعیت جدید به وجود میآید. پس از آن جمعیت جدیدی جایگزین جمعیت پیشین میشود و این چرخه ادامه مییابد.
معمولاً جمعیت جدید برازندگی بیشتری دارد این بدان معناست که از نسلی به نسل دیگر جمعیت بهبود میآید. هنگامی جستجو نتیجهبخش خواهد بود که به حداکثر نسل ممکن رسیده باشیم یا همگرایی حاصل شده باشد و یا معیارهای توقف برآورده شده باشد.
عملگرهای الگوریتم ژنتیک
الگوریتم ژنتیک از عملگرهای زیر تشکیل شده است:
کدگذاری61
این مرحله شاید مشکلترین مرحله حل مسأله به روش الگوریتم باشد. الگوریتم ژنتیک به جای اینکه بر روی پارامترها یا متغیرهای مسأله کار کند، با شکل کد شدۀ آنها سروکار دارد. یکی از روشهای کد کردن، کد کردن دودویی می باشد که در آن هدف تبدیل جواب مسأله به رشتهای از اعداد باینری (در مبنای 2) است.
انتخاب
در مرحله انتخاب، یک جفت از کروموزومها برگزیده میشوند تا با هم ترکیب شوند، عملگر انتخاب رابط بین دو نسل است و بعضی از اعضای نسل کنونی را به نسل آینده منتقل میکند، بعد از انتخاب، عملگرهای ژنتیک روی دو عضو برگزیده اعمال میشوند، معیار در انتخاب اعضاء ارزش تطابق آنها میباشد اما روند انتخاب حالتی تصادفی دارد.
بطور کلی روشهای متداول انتخاب در الگوریتم ژنتیک عبارتند از:
انتخاب چرخ رولت – انتخاب مسابقه تصادفی – انتخاب بولتزمن – نخبه سالاری
انتخاب رقابتی – انتخاب قطع سر – انتخاب قطعی بریندل – انتخاب حالت پایدار
انتخاب جایگزینی نسلی اصلاح شده – انتخاب مسابقه (تورنمنت) – انتخاب ترتیبی
ارزیابی62
تابع برازندگی را از اِعمال تبدیل مناسب بر روی تابع هدف یعنی تابعی که قرار است بهینه شود به دست میآورند. این تابع هر رشته را با یک مقدار عددی ارزیابی میکند که کیفیت آن را مشخص مینماید. هر چه کیفیت رشته جواب بالاتر باشد مقدار برازندگی جواب بیشتر است و احتمال مشارکت برای تولید نسل بعدی نیز افزایش خواهد یافت.
ترکیب63
مهمترین عملگر در الگوریتم ژنتیک، عملگر ترکیب است. ترکیب فرآیندی است که در آن نسل قدیمی کروموزومها با یکدیگر مخلوط و ترکیب میشوند تا نسل تازهای از کروموزومها بوجود بیاید.
جفتهایی که در قسمت انتخاب به عنوان والد در نظر گرفته شدند در این قسمت ژنهایشان را با هم مبادله میکنند و اعضای جدید بوجود میآورند. ترکیب در الگوریتم ژنتیک باعث از بین رفتن پراکندگی یا تنوع ژنتیکی جمعیت میشود زیرا اجازه میدهد ژنهای خوب یکدیگر را بیابند. متداولترین روشهای ترکیب عبارتند از :
جابهجایی دودوئی،

