Professional Documents
Culture Documents
Genetic Algorithms
:استاد
آقاي دکتر شيري
گردآورندگان:
مينا سراجيان
ميترا حاجی علی مددی
1
فهرست مطالب
مقدمه……………………………………………………
سود و کد الگوريتم………………………………………………………..
2
چکيده
الگوريتم هاي ژنتيک از اصول انتخاب طبيعي داروين براي يافتن فرمول بهينه? جهت پيش بيني يا تطبيق
الگو استفاده مي کنند.الگوريتم هاي ژنتيک اغلب گزينه خوبي براي تکنيک هاي پيش بيني بر مبناي رگرسيون
هستند.همان طور ساده،خطي وپارامتري يک گفته مي شود،به الگوريتم هاي ژنتيک مي توان غير پارامتريک
گفت.
مختصراً گفته مي شود که الگوريتم ژنتيک (يا )GAيک تکنيک برنامه نويسي است که از تکامل ژنتيکي
به عنوان يک الگوي حل نمسئله استفاده مي کند.مسئله اي که بايد حل شود ورودي است و راه حلها طبق يک
الگو کد گذاري مي شودومتريک که تابع fitnessهم نام دارد هر راه حل کانديد? را ارزيابي مي کندکه? اکثر آنها
به صورت تصادفي انتخاب مي شوند.
مقدمه
هنگامي كه لغت تنازع بقا به كار ميرود اغلب بار ارزشي منفي آن به ذهن ميآيد .شايد همزمان قانون
جنگل به ذهن برسد و حكم بقاي قويتر!
البته براي آنكه خيالتان راحت شود ميتوانيد فكر كنيد كه هميشه هم قويترينها برنده نبودهاند .مثال
دايناسورها با وجود جثه عظيم و قويتر بودن در طي روندي كامال طبيعي بازي بقا و ادامه نسل را واگذار
كردند در حالي كه موجوداتي بسيار ضعيفتر از آنها حيات خويش را ادامه دادند ?.ظاهرا طبيعت بهترينها را
تنها بر اساس هيكل انتخاب نميكند! در واقع درستتر آنست كه بگوييم طبيعت مناسب ترينها ( )Fittestرا
انتخاب ميكند نه بهترينها.
قانون انتخاب طبيعي بدين صورت است كه تنها گونههايي از يك جمعيت ادامه نسل ميدهند كه بهترين
خصوصيات را داشته باشند و آنهايي كه اين خصوصيات را نداشته باشند به تدريج و در طي زمان از بين
ميروند.
مثال فرض كنيد? گونه خاصي از افراد ،هوش بسيار بيشتري از بقيه افراد يك جامعه يا كولوني دارند .در
شرايط كامال طبيعي اين افراد پيشرفت بهتري خواهند كرد و رفاه نسبتا باالتري خواهند داشت و اين رفاه خود
باعث طول عمر بيشتر و باروري بهتر خواهد بود(توجه كنيد? شرايط طبيعيست نه در يك جامعه سطح باال با
مالحظات امروزي يعني طول عمر بيشتر در اين جامعه نمونه با زاد و ولد بيشتر همراه است) .حال اگر اين
خصوصيت(هوش)ارثي باشد به طبع در نسل بعدي همان جامعه تعداد? افراد باهوش به دليل زاد و ولد بيشتر
اينگونه افراد بيشتر خواهد بود .اگر همين روند را ادامه دهيد خواهيد ديد? كه در طي نسلهاي متوالي دائما
جامعه نمونه ما باهوش و باهوشتر ميشود .بدين ترتيب يك مكانيزم ساده طبيعي توانسته است در طي چند نسل
عمال افراد كم هوش را از جامعه حذف كند عالوه بر اينكه ميزان هوش متوسط جامعه نيز دائما در حال
3
افزايش است(البته امكان داشت اگر داروين بيعرضگي افراد باهوش امروزي را ميديد كمي در تئوري خود
تجديد نظر ميكرد اما اين مسئله ديگريست!).
بدين ترتيب ميتوان ديد? كه طبيعت با بهرهگيري از يك روش بسيار ساده(حذف تدريجي گونههاي نامناسب و
در عين حال تكثير باالتر گونههاي بهينه) توانسته است دائما هر نسل را از لحاظ خصوصيات مختلف ارتقا
بخشد.
البته آنچه در باال ذكر شد به تنهايي توصيف كننده آنچه واقعا در قالب تكامل در طبيعت اتفاق ميافتد نيست.
بهينهسازي و تكامل تدريجي به خودي خود نميتواند طبيعت را در دسترسي به بهترين نمونهها ياري دهد.
اجازه دهيد تا اين مساله را با يك مثال شرح دهيم.
پس از اختراع اتومبيل به تدريج و در طي سالها اتومبيلهاي بهتري با سرعتهاي باالتر و قابليتهاي
بيشتر نسبت به نمونههاي اوليه توليد شدند .طبيعيست كه اين نمونههاي متاخر حاصل تالش مهندسان طراح
جهت بهينهسازي طراحيهاي قبلي بوده اند .اما دقت كنيد كه بهينهسازي يك اتومبيل تنها يك "اتومبيل بهتر" را
نتيجه ميدهد.
اما آيا ميتوان گفت اختراع هواپيما نتيجه همين تالش بوده است؟ يا فرضا ميتوان گفت فضا پيماها حاصل
بهينهسازي طرح اوليه هواپيماها بودهاند؟
پاسخ اينست كه گرچه اختراع هواپيما قطعا تحت تاثير دستاورهاي صنعت اتومبيل بوده است اما بههيچ وجه
نميتوان گفت كه هواپيما صرفا حاصل بهينهسازي اتومبيل و يا فضا پيما حاصل بهينهسازي هواپيماست .در
طبيعت هم عينا همين روند حكمفرماست .گونههاي متكاملتري وجود دارند كه نميتوان گفت صرفا حاصل
تكامل تدريجي گونه قبلي هستند.
در اين ميان آنچه شايد بتواند تا حدودي ما را در فهم اين مساله ياري كند مفهوميست به نام :تصادف يا
جهش.
به عبارتي طرح هواپيما نسبت به طرح اتومبيل يك جهش بود و نه يك حركت تدريجي .در طبيعت نيز به
همين گونهاست .در هر نسل جديد بعضي از خصوصيات به صورتي كامال تصادفي تغيير مييابند سپس بر اثر
تكامل تدريجي كه پيشتر توضيح داديم در صورتي كه اين خصوصيت تصادفي شرايط طبيعت را ارضا كند
حفظ ميشود در غير اينصورت به شكل اتوماتيك از چرخه طبيعت حذف ميگردد.
در واقع ميتوان تكامل طبيعي را به اينصورت خالصه كرد :جستوجوي كوركورانه(تصادف يا Blind
+)Searchبقاي قويتر.
حال ببينيم كه رابطه تكامل طبيعي با روشهاي هوش مصنوعي چيست .هدف اصلي روشهاي هوشمند به
كار گرفته شده در هوش مصنوعي يافتن پاسخ بهينه مسائل مهندسي ست .بعنوان مثال اينكه چگونه يك موتور
را طراحي كنيم تا بهترين بازدهي را داشته باشد يا چگونه بازوهاي يك ربات را محرك كنيم تا كوتاهترين مسير
را تا مقصد طي كند(دقت كنيد كه در صورت وجود مانع يافتن كوتاهترين مسير ديگر به سادگي كشيدن يك خط
راست بين مبدا و مقصد نيست) همگي مسائل بهينهسازي هستند.
4
روشهاي كالسيك رياضيات داراي دو اشكال اساسي هستند .اغلب اين روشها نقطه بهينه محلي(Local
)Optimaرا بعنوان نقطه بهينه كلي در نظر ميگيرند و نيز هر يك از اين روشها تنها براي مساله خاصي
كاربرد دارند .اين دو نكته را با مثالهاي سادهاي روشن ميكنيم.
به شكل زير توجه كنيد .اين منحني داراي دو نقطه ماكزيمم ميباشد .كه يكي از آنها تنها ماكزيمم محلي
است .حال اگر از روشهاي بهينهسازي رياضي استفاده كنيم مجبوريم تا در يك بازه بسيار كوچك مقدار
ماكزيمم تابع را بيابيم .مثال از نقطه 1شروع كنيم و تابع را ماكزيمم كنيم .بديهي است اگر از نقطه 1شروع
كنيم تنها به مقدار ماكزيمم محلي دست خواهيم يافت و الگوريتم ما پس از آن متوقف خواهد شد .اما در
روشهاي هوشمند خاصه الگوريتم ژنتيك بدليل خصلت تصادفي آنها حتي اگر هم از نقطه 1شروع كنيم باز
ممكن است در ميان راه نقطه Aبه صورت تصادفي انتخاب شود كه در اين صورت ما شانس دستيابي به
نقطه بهينه كلي ( )Global Optimaرا خواهيم
داشت.
براي مثال اگر بخواهيم نوسانات قيمت نفت را با استفاده از عوامل خارجي وارزش رگرسيون خطي ساده
مدل کنيم،اين فرمول را توليد خواهيم کرد:قيمت نفت در زمان =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رشد مي کند و بر اساس قوانين مشخصي که حاکي از تکامل زيستي است تکامل مي يابند.
7
يک گام مهم ديگر درالگوريتم،تولد است که در هر دوره يکبار اتفاق مي افتد .محتويات دو کروموزومي که
در فرآيند توليد شرکت مي کنند? با هم ترکيب ميشوند تا 2کروموزوم جديد که ما انها را فرزند مي ناميم ايجاد
کنند.اين هيوريستيک به ما اجازه مي دهد تا 2تا از بهترين ها را براي ايجاد يکي بهتر از آنها با هم ترکيب
کنيم )evolution(.به عالوه در طول هر دوره،يک سري از کروموزوم ها ممکن است جهش يابند[(]6
. )Mutation
الگوريتم
هر ورودي xدر يک عدد برداري ) X=(x1,x2,..,xnقرار دارد .براي اجراي الگوريتم ژنتيک مان بايد هر
ورودي را به يک کروموزوم تبديل? کنيم.مي توانيم اين را با داشتن ) log(nبيت براي هر عنصرو تبديل? ارزش
Xiانجام دهيم مثل شکل زير .
مي توانيم از هر روش کد کردن براي اعداد استفاده کنيم.در دوره ،0يک دسته از ورودي هاي Xرا به
صورت تصادفي انتخالب مي کنيم.بعد براي هر دوره iام ما ارزش مقدار Fitnessرا توليد،تغيير وانتخاب را
اعمال مي کنيم.الگوريتم وقتي پايان مي يابد که به معيارمان برسيم.
[]6
سود و کد :
Repeat
8
Apply crossover operator
[]2
[]5
قبل از اين که يک الگوريتم ژنتيک براي يک مسئله اجرا شود،يک روش براي کد کردن ژنوم ها به
زبان کامپيوتر بايد به کار رود .يکي از روش هاي معمول کد کردن به صورت رشته هاي باينري
است:رشته هاي 0و .1يک راه حل مشابه ديگر کدکردن? راه حل ها در آرايه اي از اعداد صحيح يا
اعشاري است ،که دوباره هر جايگاه يک جنبه از ويژگي ها را نشان مي دهد.اين راه حل در مقايسه با
قبلي پيچيده تر و مشکل تر است .مثالً اين روش توسط استفان کرمر،براي حدس ساختار 3بعدي يک
پروتئين موجود در آمينو اسيد ها استفاده شد.الگوريتم هاي ژنتيکي که براي آموزش شبکه هاي عصبي
استفاده مي شوند،از اين روش بهره مي گيرند.
9
سومين روش براي نمايش صفات در يک GAيک رشته از حروف است،که هر حرف دوباره نمايش
دهنده يک خصوصيت از راه حل است.
خاصيت هر 3تاي اين روشها اين است که آنها تعريف سازنده ايي را که تغييرات تصادفي در آنها ايجاد مي
کنند را آسان مي کنند0?:را به 1وبرعکس،اضافه يا کم کردن ارزش يک عدد يا تبديل? يک حرف به حرف
ديگر.
يک روش ديگر که توسط John Kozaتوسعه يافت،برنامه نويسي ژنتيک (Genetic
)programmingاست.که برنامه ها را به عنوان شاخه هاي داده در ساختار درخت نشان مي دهد.در اين روش
تغييرات تصادفي مي توانند با عوض کردن عملگرها يا تغيير دادن ارزش يک گره داده شده در درخت،يا
عوض کردن يک زير درخت با ديگري به وجود آيند.
روش هاي مختلفي براي الگوريتم هاي ژنتيک وجود دارند که مي توان براي انتخاب ژنوم ها از آنها استفاده
کرد.اما روش هاي ليست شده در پايين از معمولترين روش ها هستند.
انتخاب : Scalingبه موازات افزايش متوسط عدد برازش جامعه،سنگيني انتخاب هم بيشتر مي شودوجزئي
تر.اين روش وقتي کاربرد دارد که مجموعه داراي عناصري باشد که عدد برازش بزرگي دارند وفقط تفاوت
هاي کوچکي آنها را از هم تفکيک مي کند.
انتخاب : Tournamentيک زير مجموعه از صفات يک جامعه انتخاب مي شوندواعضاي آن مجموعه با
هم رقابت مي کنندو سرانجام فقط يک صفت از هر زير گروه براي توليد انتخاب مي شوند.
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شود.
ابن مسئله تا حدودي پيچيده است.ممکن است يک انسان بتواند آن را در مدت زماني مشخص حل کند ولي
هيچ گاه يک کامپيوتر نخواهد توانست آن رادر مدت زمان کوتاهي با استفاده از اعداد تصادفي حل کند.
ولي الگوريتم ژنتيک مي تواند اين مشکل را حل کند.
نسل اول
اولين گام ايجاد کردن يک نسل ابتدايي براي شروع کار است که شامل تعدادي ژنوم تصادفي است.اين
ژنوم ها به صورت باينري(0و )1نشان داده مي شوند .حاال مثال مان:
اول يکسري عدد به صورت تصادفي توليد مي شوند .هر ژنوم يا کروموزوم شامل اطالعاتي براي هر 9
جاي خالي است .چون اين اعداد مقادير بين 0تا 15دارند مي توان آنها را با 4بيت يا ژن داده نمايش داد.
پس هر ژنوم شامل 36بيت است.
)Values(Traits 6 12 15 11 4 10 7 5 14
حاالبايد به هر ژنوم در مجموعه يک عدد تناسب( )Fitnessبنابر تاثير آن در حل مسئله نسبت داد.فرآيند?
وروش محاسبه اين عدد براي هر مسئله فرق مي کند.انتخاب الگوي مناسب براي مسئله مشکلترين و
حساسترين بخش در حل مسئله ژنتيک است.دراين مثال ما اعداد را در مکان هايشان جايگذاري مي کنيم و
بررسي مي کنيم که چقدر با جواب اصلي فاصله دارند.
=25 =25
=26
=26 13
11 4 10
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
}
}
حاال دو ژنوم بخشي از ژنهايشان را براي ايجاد نسل بعدي اهدا مي کنند ?.اگر آنها تغيير پيدا نکنند? همانطور
بي تغيير به نسل بعدي منتقل خواهند شد.درجه Crossoverنشان دهنده اين است که هر چند وقت يکبار ژنوم
ها تغيير پيدا خواهند کرد و اين عدد بايد در حدود %85-65باشد.
عملگر تغيير در ژنوم هاي باينري مثال ما با انتخاب يک مکان تصادفي در ژنوم براي تغيير آغاز مي شود.
بخش اول ژنهاي پدر و بخش دوم ژنهاي مادر با هم ترکيب مي شوند(و بالعکس) تا 2فرزند توليد شوند .در
زيريک عمل تغيير را مي بينيم.
Before Crossing
After Crossing
جهش()Mutation
قبل از اين که ژنوم ها در نسل بعدي قرار بگيرند،احتمال دارد دچار جهش يا تغيير ناگهاني شوند شوند.جهش
يک تغيير ناگهاني در ژن است.در ژنهاي باينري اين تغيير به معناي تغيير يک بيت از 0به 1يا از 1به 0
است .درجه جهش نشان دهنده احتمال بروز جهش در يک ژن است و تغريبا ً بين %5-1براي ژنهاي باينري و
%20-5براي ژنهاي عددي است.
نمونه برنامه اين مسئله به زبان ++Cهمراه اين تحقيق آورده شده است]4[.
هايپر هيوريستيک
مثال هاي بسياري وجود دارد که براي حل ان ها از الگوريتم ژنتيک استفاده شده است از جمله Traveling
. salesman& bin packing&schedulingمسئله ي جدول زماني پرسنل وکارکنان با استفاده از الگوريتم
ژنتيک به صورت موفقيت اميزي حل شده است aickelin& dowslamd.از الگوريتم ژنتيک ليست کار
پرستاران در يکي از بيمارستان هاي بزرگ انگلستان به کا ر برده شد eston & mansourاز الگوريتم ژنتيک
براي حل مسئله ي جدول زمان بندي کار استفاده کردند .در واقع براي حل اين مسئله از الگوريم ژنتيک توزيع شده
که به صورت موازي روي شبکه ي محل کار وجود داشت دست يافتند.آنچه از اين تحقيق بدست آمد سه دسته ي
متفاوت زمان بندي براي مجموعه اي از کارهاي متفاوت بود .اين محققين مسائلي را که با هيوريستيک و متا
هيوريستيک کار ميکرند با هم مقايسه کردند و نتيجه ان بود که الگوريتم ژنتيک بهتر از همه ي آنها کار مي کرد
15
در نتيجه الگوريتم هاي ژنتيک با کروموزوم هاي مستقيم و کروموزوم هاي غير مستقيم به صورت گسترده اي
مورد مطالعه قرار گرفت .به عنوان مثال hart & ross& nelsonاز الگوريتم ژنتيک با کروموزوم هاي مستقيم
براي حل مسئله ي زمان بندي امتحانات طراحي شد .انه استراتژي هاي به عنوان پارامتر در ده خانه اي ارايه
ايجاد کردند .بنابراين کروموزوم ها ساختار جدول زمان بندي را ايجاد مي کنند نه خود جدول زمان بندي.
کروموزوم هاي غير مستقيم براي رفع محدوديت هاي کروموزوم هاي مستقيم مورد استفاده قرار مي گيرند .که اين
محدوديت همان شکست هماهنگ بين قسمت هاي مختلف حل مسئله وجود داشت.
از الگوريم ژنتيک بيشتر در مسائلي مورد استفاده قرار مي گرفت که روي مسئله ي زمان و زمان بندي تاکيد
داشت و در اين نوع مسائل ما نياز به دامنه ي دانش مسئله داريم .در واقع کروموزوم ها که به عنوان ساختار حل
مسئله بودند دانش مسئله در طراحي کروموزوم ها در الگوريتم ژنتيک بسيار الزم و ضروري است .وابستگي
زياد اين طراحي به دامنه ي دانش مسئله موجب مي شود تا نتوانيم الگوريتم ژنتيک بدست آمده در مسائل ديگر به
کار ببريم.
الگوريتم هاي ژنتيک که از کروموزوم هاي غير مستقيم بر پايه ي سلسله مراتب تکاملي هيوريستيک طراحي
شده است را در مسائلي همچون مسئله ي زمان بندي کار پرسنل مي توان به صورت عمومي ودر همه ي مکان ها
استفاده کرد.
متد هايپر هيوريستيک که از ان در مسئله ي حمل و نقل مرغ هاي زنده تو سعه و تکامل دادنداين? مسئله به اين
شيوه حل شد که اين مسئله را به دو زير مسئله تقسم کردند هر يک از اين دو زير مسئله از الگوريتم زنتيک جدا
استفاده ميکردند .هر کدام از اين دو الگوريتم ژنتيک يک استراتژي براي توليد برنامه معين مي کنند نه اينکه
خودشان يک برنامه باشند تمامي اطالعات شرکت به عنوان يکسري قانون است که به وسيله ي توانايي جستجوي
الگوريتم ژنتيک پشتيباني مي شود.سلسله مراتب در الگوريتم هيوريستيک معين ميکند که کدام هيوريستيک براي
قرار دادن کارها در برنامه استفاده شود .در نتيجه ي اين تحقيق ساختار برنامه ي زمان بندي براي حمل و نقل
تعداد زيادي مرغ زنده در يک کار خانه طراحي شد.الگوريتم هاي هايپر هيوريستيک که با الگوريتم هاي زنتيک
با کرو موزوم هاي غير مستقيم طراحي کرده ايم .که در اين نوع الگوريتم کروموزوم ها داراي اندازه هاي متغير
انداين نوع الگوريتم هم براي مسائل زمان بندي مورد استفاده قرار مي گيرد.
الگوريتم هايپرهيوريستيک غير مستقيم الگوريتمي است که از يکسري هيوريستيک سطح پايين و يکسري
هيوريستيک سطح باال که هايپر هيوريستيک که فقط ميداند? که کي توابع هدف ماکسيمم يا مينيمم هستندو هيچ
اطالعاتي در مورد اينکه تابع هدف چه چيزي را نشان ميدهد? ندارد و هيچ گونه دامنه ي دانشي در هايپر
هيوريستيک و هيوريستيک هاي سطح پايين مرتبط با ان موجود نمي باشد .همچنين با توجه به چهارچوب کلي
يکسري توابع انتخاب داريم که که تصميم ميگيرند کدام هيوريستيک را صدا بزنند.
[www.wikipedia.com ]2
[www.talkorigins.org ]3
[www.gpwiki.org ]4
www.smi.stanford.edu/people/koza
www.cgm.cs.mcgill.ca
16
www.sharifthinktank.com]7[
www.itna.com ]8[
17