You are on page 1of 17

‫الگوريتم هاي ژنتيک‬

‫‪Genetic Algorithms‬‬

‫‪ :‬استاد‬
‫آقاي دکتر شيري‬

‫گردآورندگان‪:‬‬

‫مينا سراجيان‬
‫ميترا حاجی علی مددی‬

‫دانشجوي فناوري اطالعات‪IT‬‬

‫مرکز تحصيالت تکميلي در علوم پايه زنجان‬


‫‪http://iasbs.ac.ir/it/archive‬‬

‫‪1‬‬
‫فهرست مطالب‬

‫چکيده موضوع ………………………………………………………………………‬

‫مقدمه……………………………………………………‬

‫الگوريتم ژنتيک چيست؟…………………………………… ……………………………………‬

‫ايده اصلي …………………………………………………………………………………‬

‫الگوريتم ژنتيک ………………………………………………………………………‪.‬‬

‫سود و کد الگوريتم………………………………………………………‪..‬‬

‫روش هاي نمايش …………………………………………………………‪.‬‬

‫روش هاي انتخاب ………………………………………………………‪..‬‬

‫روش هاي تغيير ……………………………………………………………‪..‬‬

‫نقاط قوت الگوريتم هاي ژنتيک‪…………………………………… ...‬‬

‫نقاط ضعف الگوريتم هاي ژنتيک‪…………………………………… .‬‬

‫نمونه هايي از کاربردهاي الگوريتم هاي ژنتيک در دنياي امروز……………………………………‪..‬‬

‫يک مثال ساده با جزئيات ……………………………………‪.‬‬

‫هایپر هیوریستیک ‪...................‬‬

‫‪2‬‬
‫چکيده‬

‫الگوريتم هاي ژنتيک از اصول انتخاب طبيعي داروين براي يافتن فرمول بهينه? جهت پيش بيني يا تطبيق‬
‫الگو استفاده مي کنند‪.‬الگوريتم هاي ژنتيک اغلب گزينه خوبي براي تکنيک هاي پيش بيني بر مبناي رگرسيون‬
‫هستند‪.‬همان طور ساده‪،‬خطي وپارامتري يک گفته مي شود‪،‬به الگوريتم هاي ژنتيک مي توان غير پارامتريک‬
‫گفت‪.‬‬

‫مختصراً گفته مي شود که الگوريتم ژنتيک (يا ‪ )GA‬يک تکنيک برنامه نويسي است که از تکامل ژنتيکي‬
‫به عنوان يک الگوي حل نمسئله استفاده مي کند‪.‬مسئله اي که بايد حل شود ورودي است و راه حلها طبق يک‬
‫الگو کد گذاري مي شودومتريک که تابع ‪ fitness‬هم نام دارد هر راه حل کانديد? را ارزيابي مي کندکه? اکثر آنها‬
‫به صورت تصادفي انتخاب مي شوند‪.‬‬

‫کالً اين الگوريتم ها از بخش هاي زير تشکيل مي شوند ‪:‬‬

‫تابع برازش ‪ -‬نمايش – انتخاب – تغيير‬

‫که در ادامه آنها را توضيح خواهيم داد‪.‬‬

‫مقدمه‬

‫هنگامي كه لغت تنازع بقا به كار مي‌رود اغلب بار ارزشي منفي آن به ذهن مي‌آيد‪ .‬شايد همزمان قانون‬
‫جنگل به ذهن برسد و حكم بقاي قوي‌تر!‬
‫‪   ‬البته براي آنكه خيالتان راحت شود مي‌توانيد فكر كنيد كه هميشه هم قوي‌ترين‌ها برنده نبوده‌اند‪ .‬مثال‬
‫دايناسورها با وجود جثه عظيم و قوي‌تر بودن در طي روندي كامال طبيعي بازي بقا و ادامه نسل را واگذار‬
‫كردند در حالي كه موجوداتي بسيار ضعيف‌تر از آنها حيات خويش را ادامه دادند‪ ?.‬ظاهرا طبيعت بهترين‌ها را‬
‫تنها بر اساس هيكل انتخاب نمي‌كند! در واقع درست‌تر آنست كه بگوييم طبيعت مناسب ترين‌ها (‪ )Fittest‬را‬
‫انتخاب مي‌كند نه بهترين‌ها‪.‬‬

‫‪    ‬قانون انتخاب طبيعي بدين صورت است كه تنها گونه‌هايي از يك جمعيت ادامه نسل مي‌دهند كه بهترين‬
‫خصوصيات را داشته باشند و آنهايي كه اين خصوصيات را نداشته باشند به تدريج و در طي زمان از بين‬
‫مي‌روند‪.‬‬

‫‪   ‬مثال فرض كنيد? گونه خاصي از افراد‪ ،‬هوش بسيار بيشتري از بقيه افراد يك جامعه يا كولوني دارند‪ .‬در‬
‫شرايط كامال طبيعي اين افراد پيشرفت بهتري خواهند كرد و رفاه نسبتا باالتري خواهند داشت و اين رفاه خود‬
‫باعث طول عمر بيشتر و باروري بهتر خواهد بود(توجه كنيد? شرايط طبيعيست نه در يك جامعه سطح باال با‬
‫مالحظات امروزي يعني طول عمر بيشتر در اين جامعه نمونه با زاد و ولد بيشتر همراه است)‪ .‬حال اگر اين‬
‫خصوصيت(هوش)ارثي باشد به طبع در نسل بعدي همان جامعه تعداد? افراد باهوش به دليل زاد و ولد بيشتر‬
‫اين‌گونه افراد بيشتر خواهد بود‪ .‬اگر همين روند را ادامه دهيد خواهيد ديد? كه در طي نسل‌هاي متوالي دائما‬
‫جامعه نمونه ما باهوش و باهوش‌تر مي‌شود‪ .‬بدين ترتيب يك مكانيزم ساده طبيعي توانسته است در طي چند نسل‬
‫عمال افراد كم هوش را از جامعه حذف كند عالوه بر اينكه ميزان هوش متوسط جامعه نيز دائما در حال‬

‫‪3‬‬
‫افزايش است(البته امكان داشت اگر داروين بي‌عرضگي افراد باهوش امروزي را مي‌ديد كمي در تئوري خود‬
‫تجديد نظر مي‌كرد اما اين مسئله ديگريست!)‪.‬‬

‫‪    ‬بدين ترتيب مي‌توان ديد? كه طبيعت با بهره‌گيري از يك روش بسيار ساده(حذف تدريجي گونه‌هاي نامناسب و‬
‫در عين حال تكثير باالتر گونه‌هاي بهينه) توانسته است دائما هر نسل را از لحاظ خصوصيات مختلف ارتقا‬
‫بخشد‪.‬‬

‫‪   ‬البته آنچه در باال ذكر شد به تنهايي توصيف كننده آنچه واقعا در قالب تكامل در طبيعت اتفاق مي‌افتد نيست‪.‬‬
‫بهينه‌سازي و تكامل تدريجي به خودي خود نمي‌تواند طبيعت را در دسترسي به بهترين نمونه‌ها ياري دهد‪.‬‬
‫اجازه دهيد تا اين مساله را با يك مثال شرح دهيم‪.‬‬

‫‪   ‬پس از اختراع اتومبيل به تدريج و در طي سال‌ها اتومبيل‌هاي بهتري با سرعت‌هاي باالتر و قابليت‌هاي‬
‫بيشتر نسبت به نمونه‌هاي اوليه توليد شدند‪ .‬طبيعيست كه اين نمونه‌هاي متاخر حاصل تالش مهندسان طراح‬
‫جهت بهينه‌سازي طراحي‌هاي قبلي بوده اند‪ .‬اما دقت كنيد كه بهينه‌سازي يك اتومبيل تنها يك "اتومبيل بهتر" را‬
‫نتيجه مي‌دهد‪.‬‬

‫‪   ‬اما آيا مي‌توان گفت اختراع هواپيما نتيجه همين تالش بوده است؟ يا فرضا مي‌توان گفت فضا پيماها حاصل‬
‫بهينه‌سازي طرح اوليه هواپيماها بوده‌اند؟‬

‫‪   ‬پاسخ اينست كه گرچه اختراع هواپيما قطعا تحت تاثير دستاورهاي صنعت اتومبيل بوده است اما به‌هيچ وجه‬
‫نمي‌توان گفت كه هواپيما صرفا حاصل بهينه‌سازي اتومبيل و يا فضا پيما حاصل بهينه‌سازي هواپيماست‪ .‬در‬
‫طبيعت هم عينا همين روند حكم‌فرماست‪ .‬گونه‌هاي متكامل‌تري وجود دارند كه نمي‌توان گفت صرفا حاصل‬
‫تكامل تدريجي گونه قبلي هستند‪.‬‬

‫در اين ميان آنچه شايد بتواند تا حدودي ما را در فهم اين مساله ياري كند مفهوميست به نام ‪ :‬تصادف يا‬
‫جهش‪.‬‬

‫‪   ‬به عبارتي طرح هواپيما نسبت به طرح اتومبيل يك جهش بود و نه يك حركت تدريجي‪ .‬در طبيعت نيز به‬
‫همين گونه‌است‪ .‬در هر نسل جديد بعضي از خصوصيات به صورتي كامال تصادفي تغيير مي‌يابند سپس بر اثر‬
‫تكامل تدريجي كه پيشتر توضيح داديم در صورتي كه اين خصوصيت تصادفي شرايط طبيعت را ارضا كند‬
‫حفظ مي‌شود در غير اين‌صورت به شكل اتوماتيك از چرخه طبيعت حذف مي‌گردد‪.‬‬

‫‪ ‬در واقع مي‌توان تكامل طبيعي را به اين‌صورت خالصه كرد‪ :‬جست‌وجوي كوركورانه(تصادف يا ‪Blind‬‬
‫‪ +)Search‬بقاي قوي‌تر‪.‬‬

‫‪   ‬حال ببينيم كه رابطه تكامل طبيعي با روش‌هاي هوش مصنوعي چيست ‪.‬هدف اصلي روش‌هاي هوشمند به‬
‫كار گرفته شده در هوش مصنوعي يافتن پاسخ بهينه مسائل مهندسي ست‪ .‬بعنوان مثال اينكه چگونه يك موتور‬
‫را طراحي كنيم تا بهترين بازدهي را داشته باشد يا چگونه بازوهاي يك ربات را محرك كنيم تا كوتاه‌ترين مسير‬
‫را تا مقصد طي كند(دقت كنيد كه در صورت وجود مانع يافتن كوتاه‌ترين مسير ديگر به سادگي كشيدن يك خط‬
‫راست بين مبدا و مقصد نيست) همگي مسائل بهينه‌سازي هستند‪.‬‬

‫‪4‬‬
‫‪   ‬روش‌هاي كالسيك رياضيات داراي دو اشكال اساسي هستند‪ .‬اغلب اين روش‌ها نقطه بهينه محلي(‪Local‬‬
‫‪ )Optima‬را بعنوان نقطه بهينه كلي در نظر مي‌گيرند و نيز هر يك از اين روش‌ها تنها براي مساله خاصي‬
‫كاربرد دارند‪ .‬اين دو نكته را با مثال‌هاي ساده‌اي روشن مي‌كنيم‪.‬‬

‫‪   ‬به شكل زير توجه كنيد‪ .‬اين منحني داراي دو نقطه ماكزيمم مي‌باشد‪ .‬كه يكي از آنها تنها ماكزيمم محلي‬
‫است‪ .‬حال اگر از روش‌هاي بهينه‌سازي رياضي استفاده كنيم مجبوريم تا در يك بازه بسيار كوچك مقدار‬
‫ماكزيمم تابع را بيابيم‪ .‬مثال از نقطه ‪ 1‬شروع كنيم و تابع را ماكزيمم كنيم‪ .‬بديهي است اگر از نقطه ‪ 1‬شروع‬
‫كنيم تنها به مقدار ماكزيمم محلي دست خواهيم يافت و الگوريتم ما پس از آن متوقف خواهد شد‪ .‬اما در‬
‫روش‌هاي هوشمند خاصه الگوريتم ژنتيك بدليل خصلت تصادفي آنها حتي اگر هم از نقطه ‪ 1‬شروع كنيم باز‬
‫ممكن است در ميان راه نقطه ‪ A‬به صورت تصادفي انتخاب شود كه در اين صورت ما شانس دست‌يابي به‬
‫نقطه بهينه كلي (‪ )Global Optima‬را خواهيم‬
‫داشت‪.‬‬

‫‪   ‬در مورد نكته دوم بايد بگوييم كه روش‌هاي‬


‫رياضي بهينه‌سازي اغلب منجر به يك فرمول يا‬
‫دستورالعمل خاص براي حل هر مسئله مي‌شوند‪ .‬در‬
‫حالي كه روش‌هاي هوشمند دستورالعمل‌هايي هستند‬
‫كه به صورت كلي مي‌توانند در حل هر مسئله‌اي به‬
‫كار گرفته شوند‪ .‬اين نكته را پس از آشنايي با خود‬
‫الگوريتم بيشتر و بهتر خواهيد ديد‪]1[ ?.‬‬

‫الگوريتم ژنتيک چيست؟‬

‫الگوريتم هاي ژنتيک از اصول انتخاب طبيعي‬


‫داروين براي يافتن فرمول بهينه جهت پيش بيني يا‬
‫تطبيق الگو استفاده مي کنند‪.‬الگوريتم هاي ژنتيک‬
‫اغلب گزينه خوبي براي تکنيک هاي پيش بيني بر مبناي رگرسيون هستند‪.‬همان طور ساده‪،‬خطي وپارامتريک‬
‫گفته مي شود‪،‬به الگوريتم هاي ژنتيک مي توان غير پارامتريک گفت‪.‬‬

‫براي مثال اگر بخواهيم نوسانات قيمت نفت را با استفاده از عوامل خارجي وارزش رگرسيون خطي ساده‬
‫مدل کنيم‪،‬اين فرمول را توليد خواهيم کرد‪:‬قيمت نفت در زمان ‪=t‬ضريب ‪ 1‬نرخ بهره در زمان ‪+t‬ضريب ‪2‬‬
‫نرخ بيکاري در زمان ‪+t‬ثابت ‪ . 1‬سپس از يک معيار براي پيدا کردن بهترين مجموعه ضرايب و ثابت ها‬
‫جهت مدل کردن قيمت نفت استفاده خواهيم کرد‪.‬در اين روش ‪ 2‬نکته اساسي وجود دارد‪.‬اول اين روش خطي‬
‫است و مسئله دوم اين است که ما به جاي اينکه در ميان "فضاي پارامترها"جستجو کنيم ‪،‬پارامترهاي مورد‬
‫استفاده را مشخص کرده ايم‪.‬‬

‫با استفاده از الگوريتم هاي ژنتيک ما يک ابر فرمول يا طرح تنظيم مي کنيم که چيزي شبيه"قيمت نفت در‬
‫زمان ‪ t‬تابعي از حداکثر ‪ 4‬متغير است"را بيان مي کند‪ .‬سپس داده هايي براي گروهي از متغيرهاي‬
‫مختلف‪،‬شايد در حدود ‪ 20‬متغير فراهم خواهيم کرد‪.‬سپس الگوريتم ژنتيک اجرا خواهد شد که بهترين تابع و‬
‫متغيرها را مورد جستجو قرار مي دهد‪.‬روش کار الگوريتم ژنتيک به طور فريبنده اي ساده‪،‬خيلي قابل درک‬
‫وبه طور قابل مالحظه اي روشي است که ما معتقديم حيوانات آنگونه تکامل يافته اند‪.‬هر فرمولي که از طرح‬
‫داده شده باال تبعيت کند فردي از جمعيت فرمول هاي ممکن تلقي مي شود خيلي شبيه به اين که بگوييم جرج‬
‫بوش فردي از جمعيت انسان هاي ممکن است‪.‬‬

‫‪5‬‬
‫متغير هايي که هر فرمول داده شده را مشخص مي کنند? به عنوان يکسري از اعداد نشان داده شده اند که‬
‫معادل دي ان اي آن فرد را تشکيل مي دهند‪?.‬‬

‫موتور الگوريتم ژنتيک يک جمعيت آغاز از فرمول ايجاد مي کند‪.‬هر فرد در برابر مجموعه اي از داده ها‬
‫ي مورد آزمايش قرار مي گيرند و مناسبترين آنها شايد ‪ 10‬درصد از مناسبترين ها باقي مي مانند‪.‬بقيه کنار‬
‫گذاشته مي شوند‪ .‬مناسبترين افراد با هم جفتگيري (جابجايي عناصر دي ان اي)وتغيير(تغيير تصادفي عناصر‬
‫دي ان اي) کرده اند‪.‬مشاهده مي شود که با گذشت از ميان تعدد? ريادي از نسلها‪،‬الگوريتم ژنتيک به سمت ايجاد‬
‫فرمول هايي که بيشتر دقيق هستند‪،‬ميل مي کنند‪.‬در حالي که شبکه هاي عصبي هم غير خطي و غير‬
‫پارامتريک هستند‪،‬جذابيت? زياد الگوريتم هاي ژنتيک اين است نتايج نهايي قابل مالحظه ترند‪.‬فرمول نهايي براي‬
‫کاربر انساني قابل مشاهده خواهد بود‪،‬و براي ارائه سطح اطمينان نتايج مي توان تکنيک هاي آماري متعارف‬
‫رابر روي اين فرمول ها اعمال کرد‪.‬فناوري الگوريتم هاي ژنتيک همواره در حال بهبود? استفبراي مثال با‬
‫مطرح کردن معادله ويروس ها که در کنار فرمول ها وبراي نقض کردن فرمول ها ي ضعيف توليد مي‬
‫شوندودر نتيجه جمعيت را کالً قويتر مي سازند‪]1[.‬‬

‫مختصراً گفته مي شود که الگوريتم ژنتيک (يا ‪ )GA‬يک تکنيک برنامه نويسي است که از تکامل ژنتيکي‬
‫به عنوان يک الگوي حل مسئله استفاده مي کند‪.‬مسئله اي که بايد حل شود ورودي است و راه حلها طبق يک‬
‫الگو کد گذاري مي شودومتريک که تابع ‪ fitness‬هم نام دارد هر راه حل کانديد را ارزيابي مي کندکه اکثر آنها‬
‫به صورت تصادفي انتخاب مي شوند‪]3[.‬‬

‫الگوريتم ژنتيک ‪ GA‬يک تکنيک جستجو در علم کامپيوتربراي يافتن راه حل بهينه? ومسائل جستجو‬
‫است‪.‬الگوريتم هاي ژنتيک يکي از انواع الگوريتم هاي تکاملي اند که از علم زيست شناسي مثل وراثت‪،‬‬
‫جهش‪،‬انتخاب ناگهاني ‪ ،‬انتخاب طبيعي و ترکيب الهام گرفته شده ‪]2[.‬‬

‫عموما ً راه حلها به صورت ‪ 2‬تايي ‪0‬و‪ 1‬نشان داده مي شوند ولي روشهاي نمايش ديگري هم وجود‬
‫دارد‪.‬تکامل از يک مجموعه کامالً تصادفي از موجوديت ها شروع مي شود و در نسلهاي بعدي تکرار مي‬
‫شود‪.‬در هر نسل‪،‬مناسبترين ها انتخاب مي شوند نه بهترين ها‪.‬‬

‫يک راه حل براي مسئله مورد نظر‪،‬با يک ليست از پارامترها نشان داده مي شود که به آنها کروموزوم يا‬
‫ژنوم مي گويند‪.‬کروموزوم ها عموما ً به صورت يک رشته ساده از داده ها نمايش داده مي شوند‪،‬البته? انواع‬
‫ساختمان داده هاي ديگر هم مي توانند مورد استفاده قرار گيرند‪.‬در? ابتدا چندين مشخصه به صورت تصادفي‬
‫براي ايجاد نسل اول توليد مي شوند‪ .‬در طول هر نسل ‪،‬هر مشخصه ارزيابي مي شود وارزش تناسب(‬
‫‪ )fitness‬توسط تابع تناسب اندازه گيري مي شود‪.‬‬

‫گام بعدي ايجاد دومين نسل از جامعه است که بر پايه فرآيندهاي انتخاب ‪،‬توليد از روي مشخصه هاي‬
‫انتخاب شده با عملگرهاي ژنتيکي است‪:‬اتصال کروموزوم ها به سر يکديگر و تغيير‪.‬‬

‫براي هر فرد ‪،‬يک جفت والد انتخاب مي شود‪.‬انتخابها به گونه اي اند که مناسبترين عناصر انتخاب شوند تا‬
‫حتي ضعيفترين عناصر هم شانس انتخاب داشته باشند تا از نزديک شدن به جواب محلي جلوگيري شود‪.‬چندين?‬
‫الگوي انتخاب وجود دارد‪ :‬چرخ منگنه دار(رولت)‪،‬انتخاب مسابقه اي (‪. ...، )Tournament‬‬

‫معموالً الگوريتم هاي ژنتيک يک عدد احتمال اتصال دارد که بين ‪0.6‬و‪ 1‬است که احتمال به وجود آمدن‬
‫فرزند را نشان مي دهد‪.‬ارگانيسم ها با اين احتمال با هم دوباره با هم ترکيب مي شوند‪.‬اتصال ‪ 2‬کروموزوم‬
‫فرزند ايجاد مي کند‪،‬که به نسل بعدي اضافه مي شوند‪.‬اين کارها انجام مي شوند تا اين که کانديدهاي مناسبي‬
‫براي جواب‪،‬در نسل بعدي پيدا شوند‪ .‬مرحله بعدي تغيير دادن فرزندان جديد است‪.‬الگوريتم هاي ژنتيک يک‬
‫احتمال تغيير کوچک وثابت دارند که معموالً درجه اي در حدود ‪ 0.01‬يا کمتر دارد‪ .‬بر اساس اين احتمال‬

‫‪6‬‬
‫‪،‬کروموزوم هاي فرزند به طور تصادفي تغيير مي کنند يا جهش مي يابند‪.‬مخصوصا ً با جهش بيتها در‬
‫کروموزوم ساختمان داده مان‪.‬‬

‫اين فرآيند باعث به وجود آمدن نسل جديدي از کروموزوم ها يي مي شود‪ ،‬که با نسل قبلي متفاوت است‪.‬کل‬
‫فرآيند? براي نسل بعدي هم تکرار مي شود‪،‬جفتها براي ترکيب انتخاب مي شوند‪،‬جمعيت نسل سوم به وجود مي‬
‫آيندو‪. ...‬‬

‫اين فرآيند? تکرار مي شود تا اين که به آخرين مرحله برسيم‪.‬‬

‫شرايط خاتمه الگوريتم هاي ژنتيک عبارتند? از‪:‬‬

‫به تعداد ثابتي از نسل ها برسيم ‪.‬‬ ‫‪‬‬

‫بودجه اختصاص داده شده تمام شود(زمان محاسبه‪/‬پول)‪.‬‬ ‫‪‬‬


‫يک فرد(فرزند توليد شده) پيدا شود که مينيمم (کمترين)مالک? را برآورده کند‪.‬‬ ‫‪‬‬
‫بيشترين درجه برازش فرزندان حاصل شود يا ديگر نتايج بهتري حاصل نشود‪.‬‬ ‫‪‬‬
‫بازرسي دستي‪.‬‬ ‫‪‬‬
‫ترکيبهاي باال‪.‬‬ ‫‪‬‬

‫ايده اصلي‬

‫‪   ‬در دهه هفتاد ميالدي دانشمندي از دانشگاه ميشيگان به نام جان هلند ايده استفاده از الگوريتم ژنتيك را در‬
‫بهينه‌سازي‌هاي مهندسي مطرح كرد‪ .‬ايده اساسي اين الگوريتم انتقال خصوصيات موروثي توسط ژن‌هاست‪.‬‬
‫فرض كنيد مجموعه خصوصيات انسان توسط كروموزوم‌هاي او به نسل بعدي منتقل مي‌شوند‪ .‬هر ژن در اين‬
‫كروموزوم‌ها نماينده يك خصوصيت است‪ .‬بعنوان مثال ژن ‪ 1‬مي‌تواند رنگ چشم باشد ‪ ،‬ژن ‪ 2‬طول قد‪ ،‬ژن ‪3‬‬
‫رنگ مو و الي آخر‪ .‬حال اگر اين كروموزوم به تمامي‪ ،‬به نسل بعد انتقال يابد‪ ،‬تمامي خصوصيات نسل بعدي‬
‫شبيه به خصوصيات نسل قبل خواهد بود‪ .‬بديهيست كه در عمل چنين اتفاقي رخ نمي‌دهد‪ .‬در واقع بصورت‬
‫همزمان دو اتفاق براي كروموزوم‌ها مي‌افتد‪ .‬اتفاق اول موتاسيون (‪ )Mutation‬است‪ .‬موتاسيون به اين صورت‬
‫است كه بعضي ژن‌ها بصورت كامال تصادفي تغيير مي‌كنند‪ ?.‬البته تعداد? اين گونه ژن‌ها بسيار كم مي‌باشد اما در‬
‫هر حال اين تغيير تصادفي همانگونه كه پيشتر ديديم? بسيار مهم است‪ .‬مثال ژن رنگ چشم مي‌تواند بصورت‬
‫تصادفي باعث شود تا در نسل بعدي يك نفر داراي چشمان سبز باشد‪ .‬در حالي كه تمامي نسل قبل داراي چشم‬
‫قهوه‌اي بوده‌اند‪ .‬عالوه بر موتاسيون اتفاق ديگري كه مي‌افتد و البته اين اتفاق به تعداد? بسيار بيشتري نسبت به‬
‫موتاسيون رخ مي‌دهد چسبيدن ابتداي يك كروموزوم به انتهاي يك كروموزوم ديگر است‪ .‬اين مساله با نام‬
‫‪ Crossover‬شناخته مي‌شود‪ .‬اين همان چيزيست كه مثال باعث مي‌شود تا فرزند تعدادي از خصوصيات پدر و‬
‫تعدادي از خصوصيات مادر را با هم به ارث ببرد و از شبيه شدن تام فرزند به تنها يكي از والدين جلوگيري‬
‫مي‌كند‪]1[.‬‬

‫در ابتدا تعداد? مشخصي از ورودي ها‪ X1,X2,…,Xn،‬که متعلق به فضاي نمونه ‪ X‬هستند? را انتخاب مي‬
‫کنيم و آنها را در يک عدد برداي )‪ X=(x1,x2,…xn‬نمايش مي دهيم‪..‬در مهندسي نرم افزار اصطالحا ً به آنها‬
‫ارگانيسم يا کروموزوم گفته مي شود‪.‬به گروه کروموزوم ها ‪ Colony‬يا جمعيت مي گوييم‪.‬در هر دوره‬
‫‪ Colony‬رشد مي کند و بر اساس قوانين مشخصي که حاکي از تکامل زيستي است تکامل مي يابند‪.‬‬

‫براي هر کروموزوم ‪، Xi‬ما يک ارزش تناسب(‪ )Fitness‬داريم که آن را )‪ f(Xi‬هم مي ناميم‪.‬عناصر‬


‫قويتر يا کروموزوم هايي که ارزش تناسب آنها به بهينه ‪ Colony‬نزديکتر است شانس بيشتري براي زنده‬
‫ماندن در طول دوره هاي ديگر و دوباره توليد شدن را دارند و ضعيفترها محکوم به نابودي اند‪ .‬به عبارت‬
‫ديگر الگوريتم ورودي هايي که به جواب بهينه نزديکترندرانگه داشته واز بقيه صرف نظر مي کند‪.‬‬

‫‪7‬‬
‫يک گام مهم ديگر درالگوريتم‪،‬تولد است که در هر دوره يکبار اتفاق مي افتد‪ .‬محتويات دو کروموزومي که‬
‫در فرآيند توليد شرکت مي کنند? با هم ترکيب ميشوند تا ‪ 2‬کروموزوم جديد که ما انها را فرزند مي ناميم ايجاد‬
‫کنند‪.‬اين هيوريستيک به ما اجازه مي دهد تا ‪ 2‬تا از بهترين ها را براي ايجاد يکي بهتر از آنها با هم ترکيب‬
‫کنيم‪ )evolution(.‬به عالوه در طول هر دوره‪،‬يک سري از کروموزوم ها ممکن است جهش يابند[‪(]6‬‬
‫‪. )Mutation‬‬

‫الگوريتم‬

‫هر ورودي ‪ x‬در يک عدد برداري )‪ X=(x1,x2,..,xn‬قرار دارد ‪.‬براي اجراي الگوريتم ژنتيک مان بايد هر‬
‫ورودي را به يک کروموزوم تبديل? کنيم‪.‬مي توانيم اين را با داشتن )‪ log(n‬بيت براي هر عنصرو تبديل? ارزش‬
‫‪ Xi‬انجام دهيم مثل شکل زير ‪.‬‬

‫‪1111011‬‬ ‫‪1010111‬‬ ‫‪...‬‬ ‫‪0111111‬‬

‫)‪e(X1‬‬ ‫)‪e(X1‬‬ ‫)‪e(X1‬‬


‫)‪(X1, X2,…,Xn)= (123, 87,…, 63‬‬

‫مي توانيم از هر روش کد کردن براي اعداد استفاده کنيم‪.‬در دوره ‪ ،0‬يک دسته از ورودي هاي ‪ X‬را به‬
‫صورت تصادفي انتخالب مي کنيم‪.‬بعد براي هر دوره ‪i‬ام ما ارزش مقدار ‪ Fitness‬را توليد‪،‬تغيير وانتخاب را‬
‫اعمال مي کنيم‪.‬الگوريتم وقتي پايان مي يابد که به معيارمان برسيم‪.‬‬

‫[‪]6‬‬

‫سود و کد ‪:‬‬

‫‪Choose initial population‬‬

‫‪Repeat‬‬

‫‪Evaluate the individual fit nesses of a certain proportion of the population‬‬

‫‪Select pairs of best-ranking individuals to reproduce‬‬

‫‪8‬‬
‫‪Apply crossover operator‬‬

‫‪Apply mutation operator‬‬

‫‪Until terminating condition‬‬

‫[‪]2‬‬

‫[‪]5‬‬

‫روش هاي نمايش‬

‫قبل از اين که يک الگوريتم ژنتيک براي يک مسئله اجرا شود‪،‬يک روش براي کد کردن ژنوم ها به‬
‫زبان کامپيوتر بايد به کار رود‪ .‬يکي از روش هاي معمول کد کردن به صورت رشته هاي باينري‬
‫است‪:‬رشته هاي ‪0‬و‪ .1‬يک راه حل مشابه ديگر کدکردن? راه حل ها در آرايه اي از اعداد صحيح يا‬
‫اعشاري است ‪،‬که دوباره هر جايگاه يک جنبه از ويژگي ها را نشان مي دهد‪.‬اين راه حل در مقايسه با‬
‫قبلي پيچيده تر و مشکل تر است‪ .‬مثالً اين روش توسط استفان کرمر‪،‬براي حدس ساختار ‪ 3‬بعدي يک‬
‫پروتئين موجود در آمينو اسيد ها استفاده شد‪.‬الگوريتم هاي ژنتيکي که براي آموزش شبکه هاي عصبي‬
‫استفاده مي شوند‪،‬از اين روش بهره مي گيرند‪.‬‬

‫‪9‬‬
‫سومين روش براي نمايش صفات در يک ‪ GA‬يک رشته از حروف است‪،‬که هر حرف دوباره نمايش‬
‫دهنده يک خصوصيت از راه حل است‪.‬‬

‫خاصيت هر ‪3‬تاي اين روشها اين است که آنها تعريف سازنده ايي را که تغييرات تصادفي در آنها ايجاد مي‬
‫کنند را آسان مي کنند‪0?:‬را به ‪ 1‬وبرعکس‪،‬اضافه يا کم کردن ارزش يک عدد يا تبديل? يک حرف به حرف‬
‫ديگر‪.‬‬

‫يک روش ديگر که توسط ‪ John Koza‬توسعه يافت‪،‬برنامه نويسي ژنتيک (‪Genetic‬‬
‫‪)programming‬است‪.‬که برنامه ها را به عنوان شاخه هاي داده در ساختار درخت نشان مي دهد‪.‬در اين روش‬
‫تغييرات تصادفي مي توانند با عوض کردن عملگرها يا تغيير دادن ارزش يک گره داده شده در درخت‪،‬يا‬
‫عوض کردن يک زير درخت با ديگري به وجود آيند‪.‬‬

‫روش هاي انتخاب‬

‫روش هاي مختلفي براي الگوريتم هاي ژنتيک وجود دارند که مي توان براي انتخاب ژنوم ها از آنها استفاده‬
‫کرد‪.‬اما روش هاي ليست شده در پايين از معمولترين روش ها هستند‪.‬‬

‫انتخاب ‪: Elitist‬مناسبترين عضو هر اجتماع انتخاب مي شود‪.‬‬

‫انتخاب ‪ : Roulette‬يک روش انتخاب است که در آن عنصري که عدد برازش(تناسب)بيشتري داشته‬


‫باشد‪،‬انتخاب مي شود‪.‬‬

‫انتخاب ‪: Scaling‬به موازات افزايش متوسط عدد برازش جامعه‪،‬سنگيني انتخاب هم بيشتر مي شودوجزئي‬
‫تر‪.‬اين روش وقتي کاربرد دارد که مجموعه داراي عناصري باشد که عدد برازش بزرگي دارند وفقط تفاوت‬
‫هاي کوچکي آنها را از هم تفکيک مي کند‪.‬‬

‫انتخاب ‪ : Tournament‬يک زير مجموعه از صفات يک جامعه انتخاب مي شوندواعضاي آن مجموعه با‬
‫هم رقابت مي کنندو سرانجام فقط يک صفت از هر زير گروه براي توليد انتخاب مي شوند‪.‬‬

‫بعضي از روشهاي ديگر عبارتند? از‪Rank Selection, Generational Selection, Steady-State:‬‬


‫‪Selection .Hierarchical Selection‬‬

‫روش هاي تغيير‬

‫‪10‬‬
‫وقتي با روش هاي انتخاب کروموزوم ها انتخاب شدند‪،‬بايد به طور تصادفي براي افزايش تناسبشان اصالح‬
‫شوند‪ 2.‬راه حل اساسي براي اين کار وجود دارد‪.‬اولين وساده ترين جهش (‪ )Mutation‬ناميده مي شود‪.‬درست‬
‫مثل جهش در موجودات زنده که عبارت است از تغيير يک ژن به ديگري‪ ،‬در الگوريتم ژنتيک جهش تغيير‬
‫کوچکي در يک نقطه از کد خصوصيات ايجاد مي کند‪.‬‬

‫دومين روش ‪ Crossover‬نام دارد و ‪ 2‬کروموزوم براي معاوضه سگمنتهاي کدشان انتخاب مي شوند‪.‬اين‬
‫فرآيند? بر اساس فرآيند? ترکيب کروموزوم ها در طول توليد مثل در موجودات زنده شبيه سازي شده‪ .‬اغلب‬
‫روش هاي معمول ‪ Crossover‬شامل ‪Single-point Crossover‬هستند? ‪ ،‬که نقطه تعويض در جايي تصادفي‬
‫بين ژنوم ها است‪.‬بخش اول قبل از نقطه ‪،‬و بخش دوم سگمنت بعد از آن ادامه پيدا مي کند‪،‬که هر قسمت‬
‫برگرفته از يک والد است‪،‬که ‪ 50/50‬انتخاب شده‪.‬‬

‫شکل هاي باال تاثير هر يک از عملگر هاي ژنتيک را روي کروموزوم هاي ‪ 8‬بيتي نشان مي دهد‪ .‬شکل‬
‫باالتر ‪ 2‬ژنوم را نشان مي دهد که نقطه تعويض بين ‪5‬امين و ‪6‬امين مکان در ژنوم قرار گرفته‪،‬ايجاد يک ژنوم‬
‫جديد از پيوند? اين ‪ 2‬والد بدست مي آيند‪.‬شکل ‪2‬وم ژنومي را نشان مي دهد که دچار جهش شده و ‪ 0‬در آن‬
‫مکان به ‪ 1‬تبديل شده ‪.‬‬

‫تقاط قوت الگوريتم هاي ژنتيک‬

‫اولين و مهمترين نقطه قوت اين الگوريتم ها اين است که الگوريتم هاي ژنتيک ذاتا ً موازي اند ‪.‬اکثر‬
‫الگوريتم هاي ديگر موازي نيستند? و فقط مي توانند فضاي مسئله مورد نظر را در يک جهت در يک لحظه‬
‫جستجو کنند? واگر راه حل پيدا شده يک جواب بهينه محلي باشدويا زير مجموعه اي از جواب اصلي باشد بايد‬
‫تمام کارهايي که تا به حال انجام شده را کنار گذاشت ودوباره از اول شروع کرد‪.‬از آنجايي که ‪ GA‬چندين‬
‫نقطه شروع دارد‪،‬در يک لحظه مي تواند فضاي مسئله را از چندجهت مختلف جستجو کند‪ .‬اگر يکي به نتيجه‬
‫نرسيد ساير راه ها ادامه مي يابند و منابع بيشتري را در اختيار شان قرار مي گيرد‪.‬در نظر بگيريد‪ ?:‬همه ‪ 8‬عدد‬
‫رشته باينري يک فضاي جستجو را تشکيل مي دهند‪،‬که مي تواند به صورت ******** نشان داده شود‪.‬رشته‬
‫‪ 01101010‬يکي از اعضاي اين فضاست‪.‬همچنين عضوي از فضاهاي *******‪0‬و******‪01‬و‪****** 0‬‬
‫‪0‬و*‪0*1*1*1‬و ‪ 01*01**0‬والي آخر باشد‪.‬‬

‫به دليل موازي بودن واين که چندين رشته در يک لحظه مورد ارزيابي قرار مي گيرند ‪ GA‬ها براي‬
‫مسائلي که فضاي راه حل بزرگي دارند بسيار مفيد است ‪.‬اکثر مسائلي که اين گونه اند به عنوان "غير خطي"‬
‫شناخته شده اند‪.‬در يک مسئله خطي‪ Fitness،‬هر عنصر مستقل است‪،‬پس هر تغييري در يک قسمت بر تغيير‬
‫وپيشرفت کل سيستم تاثير مستقيم دارد‪.‬مي دانيم که تعداد کمي از مسائل دنياي واقعي به صورت خطي اند‪.‬در‬
‫مسائل غير خطي تغيير در يک قسمت ممکن است تاثيري ناهماهنگ بر کل سيستم ويا تغيير در چند عنصر‬
‫تاثير فراواني بر سيستم بگذارد‪ .‬خوشبختانه موازي بودن ‪ GA‬باعث حل اين مسئله مي شود ودر مدت کمي‬
‫مشکل حل مي شود‪.‬مثالً براي حل يک مسئله خطي ‪ 1000‬رقمي ‪ 2000‬امکان حل وجود دارد ولي براي يک‬
‫غير خطي ‪ 1000‬رقمي ‪ 21000‬امکان ‪.‬‬

‫‪11‬‬
‫يکي از نقاط قوت الگوريتم هاي ژنتيک که در ابتدا يک کمبود به نظر مي رسد اين است که ‪ GA:‬ها هيچ‬
‫چيزي در مورد مسائلي که حل مي کنند نمي دانندو? اصطالحا ً به آنها‪ Blind Watchmakers‬مي گوييم ‪ .‬آنها‬
‫تغييرات تصادفي را در راه حل هاي کانديدشان مي دهند? وسپس از تابع برازش براي سنجش اين که آيا آن‬
‫تغييرات پيشرفتي ايجاد کرده اند يا نه‪ ،‬استفاده مي کنند‪.‬مزيت? اين تکنيک اين است که به ‪ GA‬اجازه مي دهند يا‬
‫با ذهني باز شروع به حل کنند‪.‬از آنجايي که تصميمات آن اساسا ً تصادفي است‪،‬بر اساس تئوري همه راه حلهاي‬
‫ممکن به روي مسئله باز است‪،‬ولي مسائلي که محدود به اطالعات هستند? بايد از راه قياس تصميم بگيرند ودر‬
‫اين صورت بسياري از راه حلهاي نو وجديد را از دست مي دهند‪.‬‬
‫يکي ديگر از مزاياي الگوريتم ژنتيک اين است که آنها مي توانند چندين پارامتر را همزمان‬
‫تغييردهند‪.‬بسياري ازمسائل واقعي نمي توانند محدود به يک ويژگي شوند تا آن ويژگي ماکسيمم شود يا مينيمم و‬
‫بايد چند جانبه در نظر گرفته شوند‪GA.‬ها در حل اين گونه مسائل بسيار مفيدند‪،‬و? در حقيقت قابليت موازي کار‬
‫کردن آنها اين خاصيت را به آنها مي بخشد‪.‬و ممکن است براي يک مسئله ‪ 2‬يا چند راه حل پيدا شود‪،‬که هر کدام با‬
‫در نظر گرفتن يک پارامتر خاص به جواب رسيده اند‪.‬‬
‫محدوديتهاي ‪GA‬ها‬
‫يک مشکل چگونگي نوشتن عملگر ‪ Fitness‬است که منجر به بهترين راه حل براي مسئله شود‪.‬اگر اين‬
‫کارکرد برازش به خوبي و قوي انتخاب نشود ممکن است باعث شود که راه حلي براي مسئله پيدا نکنيم يا مسئله‬
‫اي ديگر را به اشتباه حل کنيم‪ .‬به عالوه براي انتخاب تابع مناسب براي ‪، Fitness‬پارامترهاي ديگري مثل اندازه‬
‫جمعيت‪،‬نرخ جهش و‪، Crossover‬قدرت ونوع انتخاب هم بايد مورد توجه قرار گيرند‪.‬‬
‫مشکل ديگر‪،‬که آن را نارس مي ناميم اين است که اگر يک ژنوم که فاصله اش با ساير ژنوم هاي نسل اش زياد‬
‫باشد(خيلي بهتر از بقيه باشد)و خيلي زود ديده شود(ايجاد شود)ممکن است محدوديت ايجاد کند و راه حل را به‬
‫سوي جواب بهينه محلي سوق دهد‪.‬اين? اتفاق معموالً در جمعيت هاي کم اتفاق مي افتد‪.‬روش هاي ‪Rank ,Scaling‬‬
‫‪ tournament selection‬بر اين مشکل غلبه مي کنند?‪]3[.‬‬
‫چند نمونه از کاربرد هاي الگوريتم هاي ژنتيک‬
‫نرم‌افزار شناسايي چهره با استفاده از تصوير ثبت شده به همت مبتکران ايراني طراحي و ساخته شد‪ .‬در‬
‫اين روش‪ ،‬شناسايي چهره براساس فاصله اجزاي چهره و ويژگي‌هاي محلي و هندسي صورت مي‌گيرد که‬
‫تغييرات ناشي از گيم‪ ،‬تغييرات نور و افزايش سن کمتين? تأثير را خواهد داشت‪.‬‬

‫همچنين گراف‌ها براي چهره‌هاي جديد با استفاده از الگويتم‌هاي ژنتيک ساخته شده و با استفاده از يک تابع‬
‫تشابه‪ ،‬قابل مقايسه با يکديگر هستند که اين امر تأثير به‌سزايي در افزايش سرعت شناسايي خواهد داشت‪.‬‬
‫توپولوژي هاي شبکه هاي کامپيوتي توزيع شده‪.‬‬
‫بهينه? سازي ساختار ملکولي ِشميايي (شيمي)‬
‫مهندسي برق براي ساخت آنتنهاي ‪Crooked-Wire Genetic Antenna‬‬
‫مهندسي نرم افزار‬
‫بازي هاي کامپيوتري‬
‫مهندسي مواد‬
‫مهندسي سيستم‬
‫رباتيک(‪)Robotics‬‬
‫تشخيص الگوو استخراج داده(‪)Data mining‬‬
‫حل مسئله فروشنده دوره گرد‬
‫آموزش شبکه هاي عصبي مصنوعي‬
‫ياددهي رفتار به رباتها با ‪. GA‬‬
‫يادگيري قوانين فازي با استفاده از الگويتم هاي ژنتيک‪.‬‬
‫براي کسب اطالعات بيشتر و کامل تر به مرجع شماره ‪ 3‬مراجعه شود‪.‬‬
‫يک مثال ساده‪:‬‬

‫ما يک مربع ‪ 3*3‬داريم که مي خواهيم اعدادي بين ‪1‬تا‪ 15‬را در اين مربع قرار دهيم به طوري که جمع‬

‫‪12‬‬
‫اعداد در هر سطرو ستون برابر ‪ 24‬شود‪.‬‬

‫‪=24‬‬ ‫‪N‬‬ ‫‪N‬‬


‫‪N‬‬

‫‪=24‬‬ ‫‪N‬‬ ‫‪N‬‬ ‫‪N‬‬


‫‪N‬‬ ‫‪N‬‬ ‫‪N‬‬
‫‪=24‬‬ ‫=‬ ‫=‬ ‫=‬
‫‪24‬‬ ‫‪24‬‬ ‫‪24‬‬

‫ابن مسئله تا حدودي پيچيده است‪.‬ممکن است يک انسان بتواند آن را در مدت زماني مشخص حل کند ولي‬
‫هيچ گاه يک کامپيوتر نخواهد توانست آن رادر مدت زمان کوتاهي با استفاده از اعداد تصادفي حل کند‪.‬‬
‫ولي الگوريتم ژنتيک مي تواند اين مشکل را حل کند‪.‬‬

‫نسل اول‬

‫اولين گام ايجاد کردن يک نسل ابتدايي براي شروع کار است که شامل تعدادي ژنوم تصادفي است‪.‬اين‬
‫ژنوم ها به صورت باينري(‪0‬و‪ )1‬نشان داده مي شوند‪ .‬حاال مثال مان‪:‬‬

‫اول يکسري عدد به صورت تصادفي توليد مي شوند‪ .‬هر ژنوم يا کروموزوم شامل اطالعاتي براي هر ‪9‬‬
‫جاي خالي است ‪.‬چون اين اعداد مقادير بين ‪0‬تا‪ 15‬دارند مي توان آنها را با ‪ 4‬بيت يا ژن داده نمايش داد‪.‬‬
‫پس هر ژنوم شامل ‪ 36‬بيت است‪.‬‬

‫يک نمونه ژنوم مي تواند به شکل زير باشد‪:‬‬

‫‪Bits (Genes) 0110‬‬ ‫‪1100‬‬ ‫‪1111‬‬ ‫‪1011‬‬ ‫‪0100‬‬ ‫‪1010‬‬ ‫‪0111‬‬


‫‪0101 1110‬‬

‫)‪Values(Traits‬‬ ‫‪6‬‬ ‫‪12‬‬ ‫‪15‬‬ ‫‪11‬‬ ‫‪4‬‬ ‫‪10‬‬ ‫‪7‬‬ ‫‪5‬‬ ‫‪14‬‬

‫حاالبايد به هر ژنوم در مجموعه يک عدد تناسب(‪ )Fitness‬بنابر تاثير آن در حل مسئله نسبت داد‪.‬فرآيند?‬
‫وروش محاسبه اين عدد براي هر مسئله فرق مي کند‪.‬انتخاب الگوي مناسب براي مسئله مشکلترين و‬
‫حساسترين بخش در حل مسئله ژنتيک است‪.‬دراين مثال ما اعداد را در مکان هايشان جايگذاري مي کنيم و‬
‫بررسي مي کنيم که چقدر با جواب اصلي فاصله دارند‪.‬‬

‫=‪33‬‬ ‫‪6‬‬ ‫‪12‬‬


‫‪=33‬‬ ‫‪15‬‬

‫=‪25‬‬ ‫‪=25‬‬

‫‪=26‬‬
‫=‪26‬‬ ‫‪13‬‬
‫‪11‬‬ ‫‪4‬‬ ‫‪10‬‬

‫‪7‬‬ ‫‪5‬‬ ‫‪14‬‬

‫=‬ ‫=‬ ‫=‬


‫‪24‬‬ ‫‪21‬‬ ‫‪39‬‬
‫مقادير معادل عبارتند از ‪33‬و‪25‬و‪26‬و‪24‬و‪21‬و‪.39‬واضح است که اين مقادير مسئله را حل نمي کنند‪.‬پس بايد‬
‫مقادير تناسب را براي اين ژنوم محاسبه کرد‪.‬براي اين کار ابتدا فاصله هرمجموع را از‪ 24‬محاسبه کرده‪،‬سپس‬
‫معکوس مجموع تفاصل آنها را محاسبه مي کنيم ‪.‬‬
‫‪1‬‬
‫‪33‬‬ ‫‪‬‬‫‪42‬‬ ‫‪52‬‬ ‫‪‬‬‫‪42‬‬ ‫‪62‬‬ ‫‪42‬‬ ‫‪42‬‬ ‫‪‬‬‫‪42‬‬ ‫‪12‬‬ ‫‪42‬‬ ‫‪93‬‬ ‫‪‬‬‫‪42‬‬

‫‪1‬‬
‫‪9  1  2  0  3 51‬‬

‫‪1‬‬
‫‪ 330‬‬
‫‪0.‬‬
‫‪03‬‬

‫بنابراين درجه تناسب براي اين ژنوم تقريبا ً برابر ‪ 0.033‬است‪.‬هرچقدر که اعداد ما به جواب نزديکتر باشند‬
‫عدد تناسب بزرگتر خواهد شد‪.‬اما اگر مخرج ما برابر ‪0‬شود چه اتفاقي مي افتد؟ دراين صورت همه اعداد ما‬
‫برابر ‪ 24‬شده اند وما به جواب رسيده ايم‪.‬‬

‫نسل بعدي‬

‫دو ژنوم به طور تصادفي براي توليد نسل بعدي انتخاب مي شوند‪ .‬اين اصلي ترين بخش الگوريتم ژنتيک‬
‫است که از ‪ 3‬مرحله تشکيل شده‪:‬‬

‫انتخاب‬

‫دو ژنوم به طور تصادفي از نسل قبل انتخاب مي شوند‪.‬اين ژنوم ها داراي اعداد تناسب بزرگتري هستند? و‬
‫بعضي صفات آنها به نسل بعدي منتقل مي شوند‪ .‬اين بدين معني است که عدد تناسب در حال افزايش خواهد‬
‫بود‪.‬‬

‫بهترين روش براي تابع انتخاب(‪ )Fitness‬در اين مسئله روشي به نام رولت(‪ )Roulette‬است‪.‬اول يک عدد‬
‫تصادفي بين ‪ 0‬وعدد تناسب نسل قبلي انتخاب مي شود‪ .‬تابع انتخاب به صورت زير خواهد بود‪:‬‬
‫)(‪RouletteSelection‬‬
‫{‬
‫;)‪float ball = rand_float_between(0.0, total_fitness‬‬
‫;‪float slice = 0.0‬‬
‫‪ ‬‬
‫‪for each genome in population‬‬
‫{‬
‫;‪slice += genome. fitness‬‬

‫‪14‬‬
‫‪if ball < slice‬‬
‫;‪return genome‬‬
‫}‬
‫}‬

‫تغيير از يک نسل به نسل بعدي(‪)Cross over‬‬

‫حاال دو ژنوم بخشي از ژنهايشان را براي ايجاد نسل بعدي اهدا مي کنند‪ ?.‬اگر آنها تغيير پيدا نکنند? همانطور‬
‫بي تغيير به نسل بعدي منتقل خواهند شد‪.‬درجه ‪ Crossover‬نشان دهنده اين است که هر چند وقت يکبار ژنوم‬
‫ها تغيير پيدا خواهند کرد و اين عدد بايد در حدود ‪ %85-65‬باشد‪.‬‬

‫عملگر تغيير در ژنوم هاي باينري مثال ما با انتخاب يک مکان تصادفي در ژنوم براي تغيير آغاز مي شود‪.‬‬
‫بخش اول ژنهاي پدر و بخش دوم ژنهاي مادر با هم ترکيب مي شوند(و بالعکس) تا‪ 2‬فرزند توليد شوند‪ .‬در‬
‫زيريک عمل تغيير را مي بينيم‪.‬‬

‫‪Before Crossing‬‬

‫‪Father 011110010011 001011011000111011010000‬‬

‫‪Mother 010100111110 010101111101000100010010‬‬

‫‪After Crossing‬‬

‫‪Child1 011110010011 010101111101000100010010‬‬

‫‪Child2 010100111110 001011011000111011010000‬‬

‫جهش(‪)Mutation‬‬

‫قبل از اين که ژنوم ها در نسل بعدي قرار بگيرند‪،‬احتمال دارد دچار جهش يا تغيير ناگهاني شوند شوند‪.‬جهش‬
‫يک تغيير ناگهاني در ژن است‪.‬در ژنهاي باينري اين تغيير به معناي تغيير يک بيت از ‪0‬به ‪ 1‬يا از ‪ 1‬به ‪0‬‬
‫است‪ .‬درجه جهش نشان دهنده احتمال بروز جهش در يک ژن است و تغريبا ً بين ‪ %5-1‬براي ژنهاي باينري و‬
‫‪%20-5‬براي ژنهاي عددي است‪.‬‬

‫نمونه برنامه اين مسئله به زبان ‪ ++C‬همراه اين تحقيق آورده شده است‪]4[.‬‬

‫هايپر هيوريستيک‬

‫مثال هاي بسياري وجود دارد که براي حل ان ها از الگوريتم ژنتيک استفاده شده است از جمله ‪Traveling‬‬
‫‪. salesman& bin packing&scheduling‬مسئله ي جدول زماني پرسنل وکارکنان با استفاده از الگوريتم‬
‫ژنتيک به صورت موفقيت اميزي حل شده است ‪ aickelin& dowslamd.‬از الگوريتم ژنتيک ليست کار‬
‫پرستاران در يکي از بيمارستان هاي بزرگ انگلستان به کا ر برده شد ‪ eston & mansour‬از الگوريتم ژنتيک‬
‫براي حل مسئله ي جدول زمان بندي کار استفاده کردند ‪.‬در واقع براي حل اين مسئله از الگوريم ژنتيک توزيع شده‬
‫که به صورت موازي روي شبکه ي محل کار وجود داشت دست يافتند‪.‬آنچه از اين تحقيق بدست آمد سه دسته ي‬
‫متفاوت زمان بندي براي مجموعه اي از کارهاي متفاوت بود‪ .‬اين محققين مسائلي را که با هيوريستيک و متا‬
‫هيوريستيک کار ميکرند با هم مقايسه کردند و نتيجه ان بود که الگوريتم ژنتيک بهتر از همه ي آنها کار مي کرد‬

‫‪15‬‬
‫در نتيجه الگوريتم هاي ژنتيک با کروموزوم هاي مستقيم و کروموزوم هاي غير مستقيم به صورت گسترده اي‬
‫مورد مطالعه قرار گرفت ‪ .‬به عنوان مثال ‪ hart & ross& nelson‬از الگوريتم ژنتيک با کروموزوم هاي مستقيم‬
‫براي حل مسئله ي زمان بندي امتحانات طراحي شد‪ .‬انه استراتژي هاي به عنوان پارامتر در ده خانه اي ارايه‬
‫ايجاد کردند‪ .‬بنابراين کروموزوم ها ساختار جدول زمان بندي را ايجاد مي کنند نه خود جدول زمان بندي‪.‬‬
‫کروموزوم هاي غير مستقيم براي رفع محدوديت هاي کروموزوم هاي مستقيم مورد استفاده قرار مي گيرند‪ .‬که اين‬
‫محدوديت همان شکست هماهنگ بين قسمت هاي مختلف حل مسئله وجود داشت‪.‬‬
‫از الگوريم ژنتيک بيشتر در مسائلي مورد استفاده قرار مي گرفت که روي مسئله ي زمان و زمان بندي تاکيد‬
‫داشت و در اين نوع مسائل ما نياز به دامنه ي دانش مسئله داريم ‪ .‬در واقع کروموزوم ها که به عنوان ساختار حل‬
‫مسئله بودند دانش مسئله در طراحي کروموزوم ها در الگوريتم ژنتيک بسيار الزم و ضروري است ‪ .‬وابستگي‬
‫زياد اين طراحي به دامنه ي دانش مسئله موجب مي شود تا نتوانيم الگوريتم ژنتيک بدست آمده در مسائل ديگر به‬
‫کار ببريم‪.‬‬
‫الگوريتم هاي ژنتيک که از کروموزوم هاي غير مستقيم بر پايه ي سلسله مراتب تکاملي هيوريستيک طراحي‬
‫شده است را در مسائلي همچون مسئله ي زمان بندي کار پرسنل مي توان به صورت عمومي ودر همه ي مکان ها‬
‫استفاده کرد‪.‬‬
‫متد هايپر هيوريستيک که از ان در مسئله ي حمل و نقل مرغ هاي زنده تو سعه و تکامل دادنداين? مسئله به اين‬
‫شيوه حل شد که اين مسئله را به دو زير مسئله تقسم کردند هر يک از اين دو زير مسئله از الگوريتم زنتيک جدا‬
‫استفاده ميکردند‪ .‬هر کدام از اين دو الگوريتم ژنتيک يک استراتژي براي توليد برنامه معين مي کنند نه اينکه‬
‫خودشان يک برنامه باشند تمامي اطالعات شرکت به عنوان يکسري قانون است که به وسيله ي توانايي جستجوي‬
‫الگوريتم ژنتيک پشتيباني مي شود‪.‬سلسله مراتب در الگوريتم هيوريستيک معين ميکند که کدام هيوريستيک براي‬
‫قرار دادن کارها در برنامه استفاده شود‪ .‬در نتيجه ي اين تحقيق ساختار برنامه ي زمان بندي براي حمل و نقل‬
‫تعداد زيادي مرغ زنده در يک کار خانه طراحي شد‪.‬الگوريتم هاي هايپر هيوريستيک که با الگوريتم هاي زنتيک‬
‫با کرو موزوم هاي غير مستقيم طراحي کرده ايم ‪.‬که در اين نوع الگوريتم کروموزوم ها داراي اندازه هاي متغير‬
‫انداين نوع الگوريتم هم براي مسائل زمان بندي مورد استفاده قرار مي گيرد‪.‬‬
‫الگوريتم هايپرهيوريستيک غير مستقيم الگوريتمي است که از يکسري هيوريستيک سطح پايين و يکسري‬
‫هيوريستيک سطح باال که هايپر هيوريستيک که فقط ميداند? که کي توابع هدف ماکسيمم يا مينيمم هستندو هيچ‬
‫اطالعاتي در مورد اينکه تابع هدف چه چيزي را نشان ميدهد? ندارد و هيچ گونه دامنه ي دانشي در هايپر‬
‫هيوريستيک و هيوريستيک هاي سطح پايين مرتبط با ان موجود نمي باشد ‪ .‬همچنين با توجه به چهارچوب کلي‬
‫يکسري توابع انتخاب داريم که که تصميم ميگيرند کدام هيوريستيک را صدا بزنند‪.‬‬

‫[‪ ]1‬مجله علم و کامپيوتر ‪www.ccwmagazine.com‬‬

‫[‪www.wikipedia.com ]2‬‬

‫[‪www.talkorigins.org ]3‬‬

‫[‪www.gpwiki.org ]4‬‬

‫[‪ ]5‬پاورپوينت ‪Koza‬‬

‫‪www.smi.stanford.edu/people/koza‬‬

‫[‪ ]6‬دانشکده کامپيوتر دانشگاه ‪ McGill‬کانادا‬

‫‪www.cgm.cs.mcgill.ca‬‬

‫‪16‬‬
www.sharifthinktank.com]7[

www.itna.com ]8[

Guided operators for a hipper-heuristic Genetic Algorithm [9]

www.cs.nott.ac.ukIT university of Nottingham

17

You might also like