ليلا-محمدي-الگوريتم

Report
‫الگوریتم ژنتیک‬
‫لیال محمدی‬
‫حمیدرضا کردلویی‬
‫فروردین ‪93‬‬
‫‪1‬‬
2
‫مقدمه‬
‫در چنددهه گذشته عناوین شبکه های عصبی‪،‬الگوریتم ژنتیک و منطق‬
‫فازی از موضوعاتی بوده اند که توجه بسیاری از دانشگاهیان را به خود‬
‫جلب کرده است این مباحث به عنوان ابزاری نیرومند در حل مسایلی که‬
‫دیگر با روش شناسی و شیو های سنتی قابل حل نبودند شناخته‬
‫شده و مورد استفاده قرار گرفته است‪.‬‬
‫هوش مصنوعی‬
‫•‬
‫•‬
‫‪3‬‬
‫ساخت تجهیزات و نرم افزارهای کاربردی است که بسیاری از رفتارهای‬
‫خاص انسان مانند استدالل‪،‬یادگیری‪،‬حل مساله و شناخت را تقلید می‬
‫کند‪.‬‬
‫از جمله مباحث هوش مصنوعی‪ :‬شبکه ی عصبی‪،‬الگوریتم ژنتیک و منطق‬
‫فازی است‪...‬‬
‫کاربردهای هوش مصنوعی درحوزه حسابداری ومالی‬
‫‪)1‬ارائه خدمات بهتر به مشتری‬
‫‪)2‬تقلیل زمان انجام و تکمیل وظایف‬
‫‪)3‬افزایش میزان تولید‬
‫‪)4‬انجام تصمیم گیری و پیش بینی‬
‫مناسب‬
‫‪4‬‬
‫مقدمه الگوریتم ژنتیک‪:‬‬
‫ایده ی اصلی الگوریتم های ژنتیک بر پایه ی نظریه ی داروین می باشد ‪.‬‬
‫بر اساس نظریه داروین نسل هایی که از ویژگی ها و خصوصیات برتری‬
‫نسبت به نسل های دیگر برخوردارند شانس بیشتری نیز برای بقا و تکثیر‬
‫خواهند داشت و ویژگی ها و خصوصیات برتر آنها به نسل های بعدی آنان‬
‫نیز منتقل خواهد شد‪.‬‬
‫همچنین بخش دوم نظریه داروین بیان می کند که هنگام تکثیر یک فرزند ‪،‬‬
‫به تصادف رویدادهایی اتفاق می افتد که موجب تغییر خصوصیات فرزند‬
‫می شود و در صورتی که این تغییر فایده ای برای فرزند داشته باشد‬
‫موجب افزایش احتمال بقای آن فرزند خواهد شد‪.‬‬
‫‪5‬‬
‫‪Charles darwin‬‬
‫الگوریتم ژنتیک‬
‫الگوریتم ژنتیک یک روش بهینه سازی غیر کالسیک و جستجوی مستقیم‬
‫است که فقط با خود تابع و نه مشتقات آن سرو کار دارد و بر اساس‬
‫مکانیزم بقای برتر و علم ژنتیک طبیعی الهام گرفته از نظریه داروین بنا‬
‫شده است‪.‬‬
‫الگوریتمهای ژنتیک توسط جان هالند دردهه ی ‪1960‬اختراع شد ودر دهه‬
‫های ‪ 1960‬و‪ 1975‬توسط وی‪،‬دانشجویان و چند تن از همکارانش در‬
‫دانشگاه میشیگان توسعه داده شد‪.‬‬
‫این الگوریتم در مسائلی نطیر بهینه سازی‪،‬شناسایی و کنترل سیستم‪،‬‬
‫پردازش تصویر‪،‬و سیستم های مبتنی بر تصمیم وقاعده‪...‬به کار میرود‪.‬‬
‫بهبود ژنتیک با گذشت زمان‬
‫‪6‬‬
‫روش کارکرد الگوریتم ژنتیک ‪:‬‬
‫الگوريتمهاي ژنتیكي براساس تئوري تكاملي داروين مي باشند و جواب مساله اي كه از‬
‫طريق الگوريتم ژنتیك حل مي شود مرتبًا بهبود مي يابد‪ .‬الگوريتم ژنتیك با يك مجموعه از‬
‫جوابها كه از طريق كروموزوم ها نشان داده مي شوند شروع مي شود‪ .‬در اين الگوريتم‬
‫جواب هاي حاصل از يك جمعیت)‪ (Population‬براي تولید جمعیت بعدي استفاده مي شوند‬
‫که عمل تولید )احتماال( با ادغام )‪ (crossover‬و جهش)‪ (mutation‬همراه خواهد بود‪.‬‬
‫در اين فرايند امید است كه جمعیت جديد نسبت به جمعیت قبلي بهتر باشد‪ .‬انتخاب‬
‫بعضي از جوابها(كروموزوم ها) از میان كل جواب ها (والدين ‪ (Parent‬به منظور ايجاد جواب‬
‫هاي جديد )فرزندان ‪(Offspring‬بر اساس میزان مطلوبیت آنها مي باشد که این کار با‬
‫استفاده از تابع برازش )‪ (fitness‬صورت می گیرد‪ .‬طبیعي است كه جوابهاي مناسبتر‬
‫شانس بیشتري براي تولید مجدد داشته باشند‪ .‬اين فرايند تا برقراري شرطي كه از پیش‬
‫تعیین شده است (مانند تعداد جمعیت ها يا میزان بهبود جواب) ادامه مي يابد‪.‬‬
‫‪7‬‬
‫تشریح کلی الگوریتم ژنتیک‪:‬‬
‫‪ (1‬جمعیتی از رشته ها را به صورت تصادفی بسازید‬
‫‪ (2‬هر رشته داخل جمعیت را ارزیابی کنید‬
‫‪ (3‬انتخاب بهترین والد‬
‫‪ (4‬رشته های جدید را با استفاده از عملگر های تبادل و جهش ایجاد‬
‫کنید‬
‫‪ (5‬اعضایی از جمعیت را برای ایجاد فضایی از رشته های جدید حذف‬
‫کنید‬
‫‪ (6‬رشته های جدید را ارزیابی کرده و آن ها را داخل جمعیت جدید قرار‬
‫دهید‬
‫‪ (7‬اگر زمان اجرا تمام شده توقف کرده بهترین رشته ر باز گردانید در‬
‫غیر اینصورت به مرحله سه بازگردید‬
‫‪8‬‬
‫تشریح کلی الگوریتم ژنتیک‪:‬‬
‫‪ )1‬موجودات زنده برای بقا با نیروهای طبیعی مبارزه میکنند و آن هایی که با این‬
‫نیروها تطابق بیشتری دارند(قوی تر‪،‬سریع تر و بزرگترند)احتمال زنده ماندن‬
‫بیشتری دارند‪.‬‬
‫‪ )2‬آن های که سازگاری بیشتری دارند زنده مانده و تولید مثل می کنند‪.‬‬
‫‪ )3‬فرزندان به والدین خود شباهت دارند اما با آنها یکسان نیستند(به خاطر ارث بردن‬
‫از ویژگی ای هر دو والد خود و همچنین جهش های ژنتیکی)لذا فرزندان ممکن‬
‫است نسبت به والدین خود مناسب تر باشند یا نباشند‪.‬‬
‫‪ )4‬فرزندان همان راه والدین خود را ادامه می دهند وبعد از چندین نسل موجودات‬
‫زنده ایجاد شده نسبت به اجداد خود سازگاری و تناسب بیشتری دارند‪.‬‬
‫طرز کار الگوریتم ژنتیک نیز به همین صورت است با این تفاوت که برای اجرای آن‬
‫باید ابتدا موجودات مورد نظر‪،‬نحوه تولید مثل و درجه تناسب (سازگاری) آنها را‬
‫برای برنامه الگوریتم ژنتیک مورد نظر تعریف کرد‪.‬‬
‫‪9‬‬
‫مفاهیم پایه ای در الگوریتم ژنتیک ‪:‬‬
‫كروموزوم‬
‫رشته يا دنباله اي از بیتها كه به عنوان شكل كد شده يك جواب ممكن (مناسب يا‬
‫نامناسب) از مساله مورد نظر مي باشد‪ ،‬را كروموزوم مي گويند‪ .‬در حقیقت بیتهاي يك‬
‫كروموزوم‪ ،‬نقش ژنها را در طبیعت بازي مي كنند‪ .‬هربیت‪ ،‬متغیري گسسته است كه از‬
‫يك مجموعه ‪ Q‬عضوي انتخاب مي شود‪ .‬چنانچه از كدگذاري باينري استفاده شود‪ ،‬هر‬
‫بیت يكي از دو مقدار ‪ ٠‬يا ‪ ١‬را مي پذيرد بنابراين ‪ Q= ٢‬مي باشد ‪ .‬در شكل زیر یک‬
‫کروموزم ‪ n‬ژنی (بیتی) نمايش داده شده است‪.‬‬
‫‪Bn‬‬
‫‪B n-1‬‬
‫…‬
‫‪b3‬‬
‫نمایش یک کروموزوم ‪ n‬بیتی‬
‫‪10‬‬
‫‪b2‬‬
‫‪b1‬‬
‫جمعیت ( ‪)Population‬‬
‫مجموعه اي از كروموزوم ها را جمعیت گويند‪ .‬يكي از ويژگي هاي ژنتیك اين است كه به‬
‫جاي تمركز بر روي يك نقطه از فضاي جستجو يا يك كروموزوم‪ ،‬بر روي جمعیتي از‬
‫كروموزوم ها كار مي كند‪ .‬بدين ترتیب در هر مرحله‪ ،‬الگوريتم داراي جمعیتي از كروموزوم‬
‫ها بوده كه خواص مورد نظر را بیشتر از جمعیت مرحله قبل دارا مي باشد‪ .‬اندازه جمعیت‬
‫معرف تعداد كروموزوم هاي موجود در ‪ Population Size‬است‪ .‬اگر تعداد كروموزوم ها‬
‫خیلي كم باشد‪ ،‬امكان شكل گیري عملیات جابجايي توسط الگوريتم ژنتیك بسیار كم‬
‫خواهد بود و تنها قسمت كمي از فضاي جستجو مورد كاوش قرار خواهد گرفت‪ .‬از طرف‬
‫ديگر‪ ،‬اگر تعداد كروموزوم ها خیلي زياد باشد‪ ،‬الگوريتم بسیار كند خواهد شد‪ .‬بر اساس‬
‫تحقیقات‪ ،‬جمعیت هاي با اندازه مناسب حدود ‪ ٢٠‬تا ‪ ٣٠‬كروموزوم دارند‪ .‬البته گاهي‬
‫اوقات جمعیت با اندازه ‪ ٥٠‬تا ‪ ١٠٠‬بهترين جواب ها را داده اند‪ .‬بعضي تحقیقات نیز نشان‬
‫مي دهد كه اندازه جمعیت بايد بر اساس نوع مساله و كدينگ آن تعريف شود و افزايش‬
‫بیشتر آن بي فايده خواهد بود و هرگز به حل سريعتر مساله كمك نمي كند‪.‬‬
‫‪11‬‬
‫مقدار برازندگي ( ‪)Fitness Value‬‬
‫مناسب بودن يا نبودن جواب‪ ،‬با معیاري كه از تابع هدف بدست مي آيد‪ ،‬سنجیده مي‬
‫شود‪ .‬هر چه كه يك جواب مناسب تر باشد‪ ،‬مقدار برازندگي بزرگتري دارد‪ .‬براي آنكه‬
‫شانس بقاي چنین جوابي بیشتر شود‪ ،‬احتمال بقاي آن‪ ،‬متناسب با مقدار برازندگي آن در‬
‫نظر گرفته مي شود‪ .‬بنابراين كروموزومي كه برازنده ترين است با احتمال بیشتري در تولید‬
‫فرزندان شركت مي كند و دنباله هاي بیشتري از آن به وجود مي آيد‪ .‬به عنوان مثال‬
‫چنانچه هدف بیشینه كردن يك تابع باشد‪ ،‬مقدار برازندگي‪ ،‬يك تابع صعودي از تابع هدف‬
‫در نظر گرفته مي شود و اگر هدف يافتن مقدار كمینه يك تابع باشد‪ ،‬عدد برازندگي‪ ،‬يك‬
‫تابع نزولي از آن قرار داده مي شود‪ .‬معمو ال ً در مواردي كه امكان دارد‪ ،‬تابع برازندگي را در‬
‫فاصله [ ‪٠‬و ‪ ]١‬نرمالیزه مي كنند‪.‬‬
‫‪12‬‬
‫نمودار مراحل الگوریتم ژنتیک ‪:‬‬
‫‪13‬‬
‫فاز های الگوریتم ژنتیک ‪:‬‬
‫‪ .1‬کدینگ مسئله )‪(encoding‬‬
‫‪ .2‬تعیین جمعیت اولیه‬
‫‪ .3‬انتخاب کردن‬
‫‪ .4‬ادغام )‪(crossover‬‬
‫‪ .5‬جهش)‪(mutation‬‬
‫‪ .6‬پذیرش جمعیت جدید و تست‬
‫‪ .7‬جایگزینی‬
‫‪14‬‬
‫‪ )1‬کدینگ مسئله‪:‬‬
‫‪‬کدینگ باینری‬
‫در این نحوه نمایش هر ژن از کروموزوم مقدار ‪ 1‬یا ‪ 0‬به خود می گیرد و موجب تشیکل یک‬
‫رشته باینری در کروموزوم می گردد‪ .‬به عنوان مثال فرض کنید یک تابع ‪ 3‬پارامتری داریم و‬
‫می خواهیم مقدار این ‪ 3‬پارامتر را طوری انتخاب کنیم که مقدار تابع مینیمم گردد‪.‬‬
‫‪F ( x , y , z ) = xyz – x 2 + zy‬‬
‫فرض کنیم که اعداد ما در بازه ‪ 0‬تا‬
‫‪ 8‬هستند پس هر عدد ‪ 3‬بیت نیاز دارد در این‬
‫مثال ما کروموزم را ترکیب ‪ xyz‬در نظر میگیریم ‪.‬‬
‫‪0‬‬
‫‪0‬‬
‫‪z‬‬
‫‪15‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪y‬‬
‫نمونه ی یک کرموموزوم با ژن های باینری‬
‫‪0‬‬
‫‪x‬‬
‫‪1‬‬
‫‪‬كدينگ جهشي (کدینگ جایگشتی)‬
‫اين نوع كدينگ مي تواند در مسائل ترتیبي نظیر مساله فروشنده دوره گرد يا مساله‬
‫ترتیب كارها بكار رود‪ .‬در كدينگ جهشي‪ ،‬هر كروموزوم يك رشته از اعداد مي باشد‪.‬‬
‫شكل زير نمونه اي از اين نوع كدينگ را نشان مي دهد‪.‬‬
‫كدينگ جهشي تنها براي مسائل ترتیبي مفید است‪ .‬حتي براي همین مسائل نیز‬
‫گاهي اوقات بايد تقاطع ها و جهش هاي اصالحي به منظور ايجاد كروموزوم هاي سازگار‬
‫و مناسب انجام شود‪.‬‬
‫‪16‬‬
‫‪‬كدينگ ارزشي (مقداری )‪:‬‬
‫اين نوع كدينگ در مسائلي كه در آنها مقادير پیچیده نظیر اعداد حقیقي بكار مي روند‬
‫استفاده مي شود‪ .‬استفاده از كدينگ باينري براي چنین مسائلي بسیار سخت مي‬
‫باشد‪ .‬در كدينگ ارزشي هر ژن ارزش خاصي دارد‪ .‬اين پارامتر باارزش مي تواند عدد‪،‬‬
‫حرف يا كلمه باشد‪ .‬دراين نوع كدينگ نیاز به توسعه عملگرهاي جابجايي و جهش‬
‫جديدي براي مسائل خاص مي باشد‪.‬‬
‫‪17‬‬
‫‪‬كدينگ درختي‬
‫كدينگ درختي در برنامه هاي تكاملي به منظور برنامه ريزي تكاملي بكار مي رود‪ .‬در‬
‫كدينگ درختي هر كروموزوم يك درخت از اشیائي نظیر توابع يا دستورها در زبان برنامه‬
‫نويسي مي باشد‪ .‬شكل زير دو نمونه از اين كروموزوم ها را نشان مي دهد‪ .‬اين نوع‬
‫كدينگ براي برنامه هاي تكاملي بسیار عالي است‪ .‬اغلب از اين نوع كدينگ استفاده‬
‫مي كند و اين بدين علت است كه برنامه ‪ LISP‬زبان برنامه نويسي هاي آن به اين فرم‬
‫نمايش داده مي شوند و مي توانند به راحتي مورد تجزيه قرار بگیرند‪ .‬بنابراين عمل‬
‫تقاطع و جهش نیز به همان نسبت راحت انجام مي شوند‪.‬‬
‫‪18‬‬
‫‪ )2‬تعیین جمعیت اولیه‪:‬‬
‫الگوریتم ژنتیک کارخود را با تولید جمعیت اولیه ای از کروموزوم ها آغاز می کند و سپس‬
‫در یک حلقه به طور مکرر تعدادی از کروموزوم های برتر نسل فعلی را انتخاب کرده و‬
‫سپس نسل جدیدی را از این کروموزوم ها تولید می کند‪ .‬همانطور که دیدیم هر کروموزوم‬
‫نشان دهنده یک حالت از فضای حالت مسئله می باشد و بنابراین منظور از تولید جمعیت‬
‫اولیه‪ ،‬تولید تعدادی جواب برای مسئله خواهد بود‪ .‬تولید جواب های اولیه نیز به دو صورت‬
‫تصادفی و هیوریستیکی می تواند انجام پذیرد‪ .‬به عنوان مثال در مسئله ‪ 8‬وزیر می توانیم‬
‫به شکل تصادفی وزیرها را در خانه های صفحه شطرنج قرار دهیم و یا در مسئله‬
‫فروشنده دوره گرد می توانیم ترتیب مالقات شهرها هم به شکل تصادفی و هم به شکل‬
‫هیوریستیکی انتخاب کنیم‪ .‬نکته مهم هنگام تولید جمعیت اولیه آن است که هنگام تولید‬
‫جواب برای مسئله ( تصادفی یا هیوریستیکی ) جواب تولید شده باید به شکل‬
‫کروموزومی که در مرحله قبل تعیین کردیم کدگذاری شده و به مجموعه جمعیت اضافه‬
‫گردد‪ .‬بنابراین از تولید جواب هایی که موجب نقض نحوه کدگذاری تعیین شده برای‬
‫کروموزوم گردد باید اجتناب کنیم‪.‬‬
‫‪19‬‬
‫‪ )3‬انتخاب (‪: (selection‬‬
‫‪ ‬بر اساس نظریه حیات بهترین ها ‪ ،‬باید بهترین موارد انتخاب شود تا نسل بعدی بهتری‬
‫را تولید کند‪ .‬این احتمال به صورت زیر محاسبه می شود‪:‬‬
‫)‪ P(hi) = Fitness (hi) / Σj Fitness (hj‬‬
‫‪ ‬اين عملگر از بین كروموزومهاي موجود در يك جمعیت‪ ,‬تعدادي كروموزوم را براي تولید‬
‫مثل انتخاب ميكند‪ .‬كروموزومهاي برازندهتر شانس بیشتري دارند تا براي تولید مثل‬
‫انتخاب شوند‪.‬‬
‫‪ ‬مناسبترین عضو هر اجتماع انتخاب میشود‪ .‬با توجه به مقدار شایستگی که از تابع‬
‫ارزیاب دریافت کرده است‪.‬‬
‫انواع روش های انتخاب‪:‬‬
‫•روش چرخ رولت ( ‪) Roulette Wheel‬‬
‫•روش رقابتی (‪)Tournament‬‬
‫‪20‬‬
) Roulette Wheel ( ‫•روش چرخ رولت‬
21
‫•روش رقابتی (‪)Tournament‬‬
‫یک زیر مجموعه از صفات یک جامعه انتخاب میشوند و اعضای آن مجموعه با هم رقابت‬
‫میکنند و سرانجام فقط یک صفت از هر زیرگروه برای تولید انتخاب میشوند‪.‬‬
‫‪22‬‬
‫‪ )4‬عملگر ادغام (‪:) mating‬‬
‫‪ ‬عملگر ادغام تك نقطه اي‪ ،‬دو كروموزوم را به طور تصادفي از يك نقطه شكسته و‬
‫بخش هاي شكسته دو كروموزوم را جابجا مي كند ‪.‬بدين ترتیب دو كروموزوم جديد‬
‫بدست مي آيد ‪.‬به كروموزومهاي اولیه‪ ،‬كروموزومهاي”والد “و به كروموزومهاي حاصل‬
‫شده از عمل جابجايي وعمل جهش‪ ،‬كروموزوم”فرزند“مي گويند‪.‬‬
‫ادغام تک نقطه ای یا تک مکانی (‪:)Single – Sight Cross Over‬‬
‫‪ (1‬دو رشته را به صورت تصادفی انتخاب می کند‪.‬‬
‫‪ (2‬محلی را برای عمل ادغام به صورت تصادفی انتخاب می کند‪.‬‬
‫‪ (3‬سرانجام مقدار دو رشته را با توجه به محل ادغام جا به جا می کند‪.‬‬
‫در شکل باال کروموزومهاي ‪ 1‬و‪ 2‬در نقش والدين هستند‪ .‬و حاصل تولید مثل آنها در رشته هائي‬
‫بنام ‪Offspring‬ذخیره شده است‪.‬دقت شود که عالمت "|" محل ادغام مي باشد‪.‬‬
‫‪23‬‬
)Two – Point Cross Over( ‫ادغام دو نقطه ای‬
Parents
Children
1 1 1 00 01 0 00 0 1 0 0 0
1 1 01 00 01 0 00 10 1 0 0 0
0 0 01 00 01 0 00 01 0 1 0 1
0 0 1 00 01 0 00 00 0 1 0 1
‫ در ترکیب کروموزوم ها‬two point ‫روش‬
)Uniform Cross Over( ‫ادغام یکنواخت‬
Parents
Children
1 1 1 0 1 0 0 1 0 0 0
1 0 0 0 1 0 0 0 1 0 0
0 0 0 0 1 0 1 0 1 0 1
0 1 1 0 1 0 1 1 0 0 1
‫ در ترکیب کروموزوم ها‬uniform ‫روش‬
24
‫‪ )5‬جهش ( ‪) mutation‬‬
‫نظریه داروین بیان می کند که پس از تولید کروموزوم های فرزند ممکن است در برخی از‬
‫این کروموزوم ها جهش هایی به تصادف روی دهند که موجب بهینگی هرچه بیشتر‬
‫کروموزوم و یا بدتر شدن آن گردند‪.‬‬
‫اين عملگر روي هر يك از كروموزوم هاي حاصل از عملگر تقاطعي عمل مي كند‪ .‬بدين‬
‫ترتیب كه به ازاي هر بیت از كروموزوم‪ ،‬يك عدد تصادفي تولید مي گردد‪ .‬اگر مقدار اين‬
‫عدد تصادفي از مقدار ”احتمال انجام جهش“ كمتر باشد‪ ،‬در آن بیت عمل جهش انجام‬
‫مي شود و در غیر اينصورت‪ ،‬در آن بیت عمل جهش انجام نمي گیرد‪ .‬عمل جهش در هر‬
‫بیت با تولید تصادفي عدد ‪ ٠‬يا ‪ ١‬و جايگزيني آن بجاي بیت مورد جهش انجام مي گیرد‪.‬‬
‫جهش‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫کروموزوم بعد از جهش‬
‫‪25‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫کروموزوم قبل از جهش‬
‫‪ )6‬پذیرش جمعیت جدید و تست‬
‫در این مرحله کروموزم ها مورد آزمایش و تست قرار می گیرند تا صحیح‬
‫بودن ساختارشان از نظر پیش فرض های مسئله تایید شود ‪ .‬و همچنین‬
‫عدد برازندگی آنها به وسیله ی تابع ‪ fitness‬مشخص می شود ‪.‬‬
‫شرایط خاتمه الگوریتم ژنتیک‬
‫‪‬به تعداد ثابتی نسل برسیم‬
‫‪‬بودجه اختصاص داده شده تمام شود(زمان محاسبه)‬
‫‪‬یک فرد(فرزند تولید شده)پیدا شده که کمترین مالک را برآورده کند‬
‫‪‬بیشترین درجه برازش برای فرزندان حاصل شود یا دیگر نتایج بهتری حاصل نشود‬
‫‪‬ترکیبهای باال‬
‫‪26‬‬
‫شبه کد الگوریتم ژنتیک‬
‫‪27‬‬
‫پارامترهای شبه کد ‪:‬‬
‫‪ :Fitness ‬تابعی برای ارزیابی یک فرضیه که مقداری عددی به هر فرضیه نسبت‬
‫میدهد‪.‬‬
‫‪ :Fitness_threshold ‬مقدار آستانه که شرط پایان را معین میکند‪.‬‬
‫‪ :p ‬تعداد فرضیههائی که باید در جمعیت در نظر گرفته شوند‪.‬‬
‫‪ :r ‬درصدی از جمعیت که در هر مرحله توسط الگوریتم ‪ Crossover‬جایگزین میشوند‪.‬‬
‫‪ :m ‬نرخ ‪Mutation‬‬
‫‪ :Initialize ‬جمعیت را با تعداد ‪ p‬فرضیه به طور تصادفی مقداردهی اولیه کنید‪.‬‬
‫‪ :Evaluate ‬برای هر فرضیه ‪ h‬در ‪ p‬مقدار تابع )‪ Fitness(h‬را محاسبه نمائید‪.‬‬
‫‪ ‬تا زمانیکه ‪ [maxh Fitness(h)] < Fitness_threshold‬یک جمعیت جدید ایجاد کنید‪.‬‬
‫‪ ‬فرضیهای که دارای بیشترین مقدار ‪ Fitness‬است را برگردانید‪.‬‬
‫‪28‬‬
‫مزایای الگوریتم ژنتیک‬
‫‪‬پردازش موازی یکی از مهمترین برتری های الگوریتم ژنتیک می باشد‪ .‬به این معنی که در‬
‫این روش به جای یک متغیر‪ ،‬در یک زمان یک جمعیت را به سوی نقطه بهینه رشد می‬
‫دهیم‪ .‬بنابراین سرعت همگرایی روش بسیار باال می رود‪.‬‬
‫‪‬با استفاده از این روش می توان مسائلی را که نسبت به تغییر پارامترهای خود‪ ،‬خوش‬
‫رفتار نیستند (مثال دارای تناوب های زیاد و در نتیجه مینیمم های نسبی زیاد هستند و یا‬
‫توابعی که به شدت غیر خطی عمل می کنند) با مقیاس خوبی بهینه کرد‪.‬‬
‫‪‬در این روش مشتق پذیر بودن تابع اهمیتی ندارد‪ ،‬در حالی که در بسیاری از روش های‬
‫دیگر‪ ،‬بهینه سازی بر اساس مشتقات مراتب مختلف تابع صورت می گیرد‪.‬‬
‫‪ ‬برای بهینهسازی مسائل گسسته )‪ (Discrete Optimization‬و مسائل‬
‫پیوسته قابل استفاده است ‪.‬‬
‫‪29‬‬
‫معایب الگوریتم ژنتیک‬
‫‪‬در صورتی که فضای جستجو به طور نسبی کوچک باشد‪ ،‬الگوریتم ژنتیک نسبت به‬
‫برخی روش های دیگر کند عمل می کند‪.‬‬
‫‪‬اگر تابع هدف مساله‪ ،‬تابع خوش رفتار و نسبتا یکنواختی باشد‪ ،‬روش هایی مانند‬
‫‪ )Conjugate Gradiant(CG‬گزینه بهتری می باشند‪.‬‬
‫‪‬در مواردی که رفتار تابع ‪ fitness‬به طور کلی مشخص است‪ ،‬می توان روش های‬
‫مناسب تری برای بهینه کردن مساله طراحی کرد‪.‬‬
‫‪30‬‬
‫دالیل استفاده از الگوریتم ژنتیک‬
‫‪‬توسعه و پیشرفت زمینه های تحقیق و توسعه‪،‬تخصصی شدن‪،‬رقابت در سرعت و‬
‫هزینه انجام پروژه های تحقیقاتی‪،‬نیازمحققان را به بکار گیری روشهای متنوع و کار‬
‫آمد بهیه سازی نسبت به گذشته دو چندان کرده است‪.‬‬
‫‪‬از جمله روشهای کارآمد بهینه سازی‪،‬استفاده از مباحث علم ژنتیک و الگوریتم‬
‫ژنتیک است که شاخه ای از هوش مصنوعی است‪.‬‬
‫‪‬مسائلی وجود دارند که برای رسیدن به جواب بهینه ی آن راه و روش مشخصی‬
‫وجود ندارد گاه مسائلی هستند که بنظر می رسد صرفا از طریق جستجوی‬
‫تصادفی می توان به جواب نسبی برای آن دست یافت اما در بسیاری از مسائل راه‬
‫حل های موجود بسیار زیاد بوده و بررسی یک به یک آنها میسر نیست الگوریتم‬
‫ژنتیک یکی از تکنیک هایی است که از دانش غیر قطعی برای حل چنین مسائلی‬
‫استفاده می کند‪.‬‬
‫‪31‬‬
‫کاربردهای الگوریتم ژنتیک در حوزه حسابداری‬
‫‪32‬‬
‫‪(1‬‬
‫کشف تقلب در صورت های مالی‬
‫‪(2‬‬
‫استفاده از الگوریتم ژنتیک در سیستم های خبره‬
‫‪(3‬‬
‫پیش بینی ورشکستگی‬
‫‪(4‬‬
‫انتخاب پرتفوی‬
‫‪(5‬‬
‫سایر حوزه ها‬
‫انتخاب پرتفوی‬
‫‪‬پیچیدگی بازارها‪ ،‬به ویژه طیف گسترده ابزارهای سرمایه گذاری و عوامل متعدد مؤثر بر‬
‫آنها‪ ،‬تصمیمگیری درخصوص انتخاب نوع دارایی را برای سرمایه گذاران دشوار می کند؛ به‬
‫طوری که سرمایه گذاران همواره درتصمیم گیریهای خود با مسئله بهینه سازی مجموعه‬
‫دارایی روبه رو هستند ‪.‬هدف از این بهینه سازی‪ ،‬تعیین میزان تخصیص وجه به هر دارایی‬
‫به گونه ای است که بازده مجموعه دارایی‪ ،‬حداکثر و ریسک آن‪ ،‬حداقل گردد‬
‫‪‬با توجه به عدم اطمیناني كه بر بورس اوراق بهادار حاكم است و همچنین و با درنظر‬
‫داشتن تمايالت و ترجیحات مختلف سرمايه گذاران‪ ،‬يافتن روشي براي انتخاب يك مجموعه‬
‫مناسب از اوراق بهادار كه از طريق آن بتوان بر عدم اطمینان و ترجیحات مختلف افراد غلبه‬
‫كرد ضروري به نظر مي رسد‪ .‬از سوي ديگر با توجه به عملكرد موفق الگوريتم ژنتیك در‬
‫مسائل بهینه سازي‪ ،‬اين الگوريتم مي تواند روشي مناسب در اختیار سرمايه گذاران قرار‬
‫دهد تا به انتخاب بهینه سبد سهام دست يابند‪ .‬سرمايه گذار مي تواند با توجه به كارايي‬
‫الگوريتم‪ ،‬با مشخص نمودن تعداد سهام موردنظر خود اقدام به تشكیل سبدهاي سهام كارا‬
‫در سطوح مختلف ريسك و بازده نمايد‪ .‬بديهي است كه اين امر مي تواند هزينه هاي‬
‫سرمايه گذاري را با پايین آوردن هزينه معامالت به شكل چشمگیري كاهش دهد‪.‬‬
‫‪33‬‬
‫‪‬در خصوص بكارگیري الگوریتم ژنتیک در انتخاب سبد سهام مطالعات فراواني وجود دارد‪.‬‬
‫آرنون و همكارانش يك الگوريتم ژنتیك را براي مساله پرتفوي نامقید ارائه دادند اما معیار‬
‫ريسك مورد استفاده آن ها نیم واريانس بود‪ .‬نتايج محاسبات براي ‪ 15‬دارايي محاسبه گرديد‬
‫(آرنون و همكاران ‪)1993‬‬
‫‪‬در مورد تحقیقات انجام شده در اين زمینه در داخل كشور نیزمی توان به تحقیق سیمین‬
‫عبدالعلي زاده (‪ ،)1381‬كارشناس ارشد مهندسي صنايع از دانشگاه صنعتي شريف تحت‬
‫ارائه »روش كارا براي حل مسئله مجموعه دارايي بهینه « عنوان اشاره كرد پژوهشگر در اين‬
‫تحقیق با استفاده از الگوي خاصي از الگوريتم ژنتیك (استفاده از عملگر تقاطعي دو نقطه‬
‫برش و عملگر جهشي معاوضه ) به انتخاب مجموعه هايي از دارايي از بین سهم هاي‬
‫گوناگون پرداخته است ‪.‬در اين تحقیق از اطالعات ساالنه بازده و ریسک شركتها به عنوان‬
‫ورودي هاي مدل استفاده شده است‬
‫‪34‬‬
‫کاربرد الگوریتم ژنتیک در انتخاب یک مجموعه دارایی از سهام‬
‫بورس اوراق بهادار‬
‫•هدف از این بهینه سازی‪،‬تعیین میزان تخصیص وجه به هر دارایی به گونه ای است که‬
‫بازده مجموعه دارایی‪،‬حداکثر و ریسک آن حداقل شود‪.‬‬
‫•مساله انتخاب مجموعه دارایی بهینه یکی ازنظریه های بازار سرمایه است که در نقطه‬
‫تالقی اقتصاد خرد و کالن قرار دارد‪.‬‬
‫•تصمیم سرمایه گذار در انتخاب مجموعه دارایی مرتبط با نوع دارایی و همچنین‪،‬میزان‬
‫تخصیص وجه به هر دارایی است‪.‬‬
‫•هدف از الگوریتم ژنتیک ارائه شده در این بخش‪ ،‬انتخاب یک مجموعه از دارایی ها‬
‫است که عالوه بر اینکه دارای بیشترین بازده و کمترین ریسک هستند‪ ،‬ضریب‬
‫همبستگی بین دارایی های موجود در این مجموعه نیز کمترین مقدار را دارا باشد‪.‬‬
‫‪35‬‬
‫‪ ‬در این بخش‪ ،‬یک الگوریتم ژنتیک به منظور انتخاب یک مجموعه منتخب به تعداد‬
‫موردنظر از بین مجموعه داراییهای بالقوه ارائه می شود‬
‫‪ ‬هدف از الگوریتم ژنتیک ارائه شده در این بخش‪ ،‬انتخاب یک مجموعه از دارایی ها‬
‫است که عالوه بر اینکه دارای بیشترین بازده و کمترین ریسک هستند‪ ،‬ضریب‬
‫همبستگی بین دارایی های موجود در این مجموعه نیز کمترین مقدار را دارا‬
‫باشد ‪.‬بدین ترتیب تابع ریاضی هدف مسئله به شکل زیر تعیین می شود ‪:‬‬
‫که در آن‪:‬‬
‫‪ P ‬مجموعه دارایی‬
‫‪ Ri ‬بازده دارایی ‪i‬‬
‫‪ σi ‬انحراف معیار و یا همان ریسک دارایی ‪i‬‬
‫‪ ρij ‬ضریب همبستگی بین دارایی ‪ i‬و ‪j‬‬
‫‪36‬‬
‫‪ ‬با فرض اینکه ‪n‬تعداد دارایی های موجود در بازارباشد‪ ،‬هر کروموزوم شامل‬
‫‪n‬ژن است که در واقع هر ژن‪ ،‬نشان دهنده یکی از دارایی های موجود در بازار‬
‫است ‪.‬به عبارت دیگر‪ ،‬ژن ‪ i‬نشان دهنده دارایی‪ i‬ام است ‪.‬طی اجرای‬
‫الگوریتم‪ ،‬هر ژن دارای یکی از دو مقدار صفر(عدم حضور در مجموعه دارایی) و‬
‫یا یک (حضور در مجموعه دارایی) بوده و در هر کروموزوم صرفاً (تعداد دارایی‬
‫موردنظر سرمایه گذار) ژن دارای مقدار یک خواهد بود‪.‬‬
‫‪ ‬به منظور تعیین یک الگوریتم مناسب برای این قسمت از دو عملگر تقاطعی‬
‫(روش یک نقطه برش و روش دو نقطه برش)‪ ،‬و یک عملگر جهشی( معاوضه)‬
‫و نیز دو رویکرد برای انتخاب بهترین کروموزومها (چرخ رولت و)‪( ( λ+μ‬‬
‫استفاده شده است که در نهایت‪ ،‬با استفاده از روشهای آماری بهترین حالت‬
‫انتخاب خواهد شد ‪.‬‬
‫‪37‬‬
‫‪ ‬کاربرد الگوریتم ژنتیک در حل مساله انتخاب مجموعه دارایی‬
‫نام پژوهشگر‬
‫روش مورد استفاده‬
‫نوع مجموعه‬
‫دارایی‬
‫جان و سایرین‬
‫از الگوریتم زنتیک برای بهینه‬
‫سازی چند مرحله ای مجموعه‬
‫دارایی استفاده کرده اند‬
‫دلخواه‬
‫لراسچی و سایرین‬
‫از الگوریتم ژنتیک وکمینه سازی‬
‫ریسک قسمت پایین استفاده کرده اند‬
‫اوراق بهادار‬
‫پاچکو و سایرین‬
‫مدیریت دارایی و‬
‫از الگوریتم ژنتیک به منظور‬
‫برنامه ریزی جریان نقدینگی استفاده بهی‬
‫شده است‬
‫‪...‬‬
‫‪38‬‬
‫‪...‬‬
‫‪...‬‬
‫کاربرد الگوریتم ژنتیک در تعیین ساختار بهینه سرمایه شرکت های‬
‫پذیرفته شده در بورس اوراق بهادار تهران‬
‫‪ ‬هدف اصلی شرکت ‪ ،‬حداکثر رساندن ثروت سهامداران است و یکی از عوامل‬
‫موثر بر این امر‪،‬ساختار سرمایه می باشد‪.‬‬
‫‪ ‬تعیین ساختار بهینه سرمایه‪،‬یکی از مسائل اساسی تامین مالی شرکت ها‬
‫می باشد‪.‬تا سقف معینی هرچه میزان استفاده از بدهی برای تامین مالی‬
‫بیشتر باشد‪،‬هزینه سرمایه کل شرکت کمتر و سود آوری بیشتر می شود‪.‬با این‬
‫وجود با افزایش بدهی‪،‬ریسک مالی شرکت افزایش می یابد در نتیجه اعتبار‬
‫دهندگان نرخ بهره باالتری را مطالبه می کنند در این وضعیت هزینه سرمایه کل‬
‫افزایش می یابد‪.‬‬
‫‪ ‬معموال ساختار سرمایه از طریق نسبت هایی از قبیل نسبت بدهی به مجموع‬
‫دارایی ها‪،‬نسبت حقوق صاحبان سهام به مجموع دارایی ها‪،‬نسبت بدهی ها‬
‫به حقوق صاحبان سهام و نسبت حقوق صاحبان سهام به بدهی ها اندازه‬
‫گیری میشود‪.‬‬
‫‪39‬‬
‫‪ ‬مطالعه اسکات یکی از اولین مطالعات تجربی است که نشان دهنده ساختار بهینه‬
‫سرمایه نه تنها در تئوری بلکه در عمل نیز وجود دارد‪،‬اسکات با بررسی ‪ 77‬شرکت در‬
‫‪12‬صنعت مختلف‪،‬دیدگاه تئوری سنتی مبنی بر اینکه حداقل کردن هزینه سرمایه‬
‫منجربه بهینه شدن ساختار سرمایه می شود را تایید کرد‪.‬‬
‫‪ ‬باقر زاده به تبیین الگوی ساختار سرمایه شرکت های پذیرفته شده در بورس اوراق‬
‫بهادار پرداخت‪.‬یافته های بررسی ‪158‬شرکت تولیدی در قلمرو زمانی‬
‫‪1377‬الی‪1381‬حاکی از آنست که الگوی ساختار سرمایه شرکت های پذیرفته شده‬
‫در بورس اوراق بهادار تهران تابع متغیر هایی نظیر میزان دارایی های شرکت‪،‬اندازه‬
‫شرکت و سود آوری ان می باشد‪.‬‬
‫‪ ‬نمازی و شیرزاده به بررسی تاثیر ساختار سرمایه بر سودآوری شرکت های پذیرفته در‬
‫بورس اوراق بهادار تهران پرداختند‪ .‬نتایج بررسی ‪108‬شرکت از صنایع مختلف در دوره‬
‫های زمانی‪1375-1379‬حاکی از ان است که بطور کلی رابطه مثبتی(اما از لحاظ آماری‬
‫در حد ضعیف)بین ساختار سرمایه و سودآوری شرکت ها وجود دارد بعالوه ساختار‬
‫بهینه سرمایه را می توان در برخی از صنایع تعیین کرد‪.‬‬
‫‪ ‬بلکویی ساختار سرمایه را ادعای کلی بر دارایی های شرکت معرفی می کند‬
‫‪40‬‬
‫جامعه آماری کلیه شرکت های پذیرفته شده در بورس اوراق‬
‫بهادار تهران طی دوره زمانی‪ 1380‬الی‪ 1386‬می باشد‪.‬‬
‫‪ ‬یافته ها حاکی از آنست که تاثیر ساختار سرمایه بر سود آوری شرکت های‬
‫پذیرفته شده در بورس اوراق بهادار تهران به تعریف سود آوری بستگی دارد‪.‬‬
‫‪ ‬نتایج نشان میدهد که رابطه ساختار سرمایه و نرخ بازده دارایی ها در سطح‬
‫کلیه شرکت ها و همچنین در صنایع مختلف(به استثنای گروه‬
‫ساختمانی)منفی و معنی دار است وجود رابطه منفی وبین سود اوری و‬
‫ساختار سرمایه با نظریه سلسله مراتبی و عدم تقارن اطالعاتی مطابقت‬
‫دارد‪(.‬عدم تطابق با نمازی و شیرزاده)‬
‫‪ ‬همچنین نتایج حاکی از ان است که رابطه معنی داری بین ساختار سرمایه و‬
‫نرخ بازده حقوق صاحبان سهام در گروه های خودرو سازی‪،‬دارویی‪،‬شیمیایی و‬
‫ساختمانی وجود دارد‪.‬‬
‫‪41‬‬
‫‪‬به دلیل وجود رابطه معنی دار بین ساختار سرمایه و نرخ بازده دارایی ها‪،‬از متغیر‬
‫نرخ بازده دارایی ها در سطح شرکت ها و همچنین صنایع مختلف به عنوان معیار‬
‫سود آوری و عامل تعیین کننده در ساختار بهینه سرمایه در الگوریتم ژنتیک استفاده‬
‫شده است‪.‬‬
‫‪‬نتایج الگوریتم ژنتیک همبستگی منفی بین ساختار بهینه سرمایه و نرخ بازده دارایی ها‬
‫را مورد تایید قرار می دهد به عبارت دیگر الگوریتم ژنتیک بیشترین سود را در ازای استفاده‬
‫کمتر از بدهی ها تعیین می کند‪.‬‬
‫‪‬نتایج الگوریتم ژنتیک حاکی از انست که بیشترین سود آوری در ازای استفاده کمتر از‬
‫اهرم مالی(بدهی)حاصل شده است‪.‬‬
‫‪42‬‬
‫سایر حوزه ها‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪(4‬‬
‫‪(5‬‬
‫‪(6‬‬
‫‪(7‬‬
‫‪43‬‬
‫ارزیابی دارایی ها‬
‫مدل بندی رفتار حسابرس در برخورد با تقلب‬
‫پیش بینی تورم‬
‫رتبه بندی اوراق قرضه‬
‫موجودی کاال‬
‫پیش بینی ریسک اعتباری‬
‫قبول سفارش‬
‫نتیجه گیری‬
‫الگوريتم ژنتیك پديده ي جديدي در امر بهینه سازي است كه كاربردهای متنوع و بسیاری‬
‫دارد‪ .‬از جمله مهمترين این كاربردهاي در حوزه حسابداري در كشف تقلب صورت هاي‬
‫مالي‪ ،‬سیستم هاي خبره‪ ،‬بانكداري‪ ،‬پیش بیني ورشكستگي‪ ،‬انتخاب پرتفوي مي‬
‫باشد كه در اينجا به انتخاب پرتفوي پرداخته شد‪ .‬اين روش جستجوی تصادفی امروزه‬
‫می تواند بیش از پیش به عنوان ابزار تصمیم گیري مديران و سازمان هاي موفق مورد‬
‫استفاده قرار گیرد كه البته نتايج حاصل از كاربرد آنها (همچون تصمیمات صحیح‪ ،‬صرفه‬
‫جويي هاي زماني‪ ،‬انعطاف پذيري) بر محبوبیت آن افزوده است‪.‬‬
‫می توان در صورت ادغام مناسب اين فناوري با ساير روشهای هوشمند (مانند استدالل‬
‫مبتني بر موضوع‪،‬منطق فازی‪ ،‬شبکه های عصبی مصنوعی) مي توان روز به روز بر‬
‫موارد استفاده آنها در حوزه هاي مختلف افزوده و از مزاياي آن ها بهره مند شد‪.‬‬
‫‪44‬‬
45

similar documents