جعبهابزار الگوريتم ژنتيك در نرم افزار MATLAB جعبهابزار الگوريتم ژنتيكجعبه ابزار الگوريتم ژنتيك مجموعهاي از تابعهايي هستند كه توانايي اپيتيمم كردن را با استفاده از محيط محاسبات عددي دارد. اين الگوريتم قابليت حل مسائل مختلف در زمينه بهينهسازي است تمام توابع اين جعبه ابزار از M فايلهاي مطلب هستند كه تابع را بهينه ميكند.البته ميتوانيد قابليتهاي الگوريتم ژنتيك را توسط M فايلي كه خودتان مينويسيد يا با تركيب تابعهاي مطلب افزايش دهيد.
نوشتن M فايلدر اين قسمت نشان مي دهيم كه چهطور ميتوان يك M فايل براي تابع نوشت كه ميخواهيم آن را بهينه كنيم فرض كنيم ميخواهيم تابع زير را بهينه كنيم.
مراحل زير را انجام دهيد1- new را از منوي فايل انتخاب كنيد2- M فايل را انتخاب كنيد.
3- كدهاي زير را در داخل m فايل بنويسيد.
- فايل را ذخيره كنيد
اگر شما بخواهيد اين فايل را ماكزيمم كنيد ميتوانيد f(X) -را مينيمم كنيد چون مينيمم در همان نقطه اتفاق ميافتد كه ماكزيمم در f(x) وجود دارد.
فراخواني الگوريتم ژنتيك براي استفاده از اين الگوريتم در خط دستور، دستور زير را در خط دستور تايپ كنيد
كهfitnessfun – @ كه تابع مورد نظر استn vars- تعداد متغيرهاي مستقل در داخل تابع استدر نتايج داريم:fval * مقدار نهايي تابع* xنقطهاي كه در آن تابع بهينه است.
استفاده از جعبه ابزار الگوريتم ژنتيك.اين جعبه ابزار يك جعبه ابزرا گرافيكي است كه كاربر را قادر ميسازد كه از اين الگوريتم بدون خط دستور استفاده كرد اما بايد در خط دستور
>>gatool-Fitness function تابعي را كه ميخواهيد بهينه كنيد در اين قسمت تايپ كنيد.Number of variables-تعداد متغيرهاي مستقل كه در تابع وجود دارد.براي شروع حل كليد start را در قسمت run solver بزنيد.در قسمت current generation تعداد نسل را توضيح ميدهد. شما ميتوانيد حل را توسط دكمه puase موقتاً متوقف كنيد.* در قسمت status & result اطلاعات زير نمايش داده ميشودمقدار نهايي تابع وقتي الگوريتم تمام ميشوددليل تمام شدن الگوريتمنقطهاي كه تابع در آن نقطه بهينه است.
پلاتدر قسمت plots ميتوانيد انواع اطلاعات را در زمان اجراي برنامه مشاهده كنيد. شما ميتوانيد با مشاهده نتايج و اعمال تغييرات مناسب به جواب بهتري برسيد با انتخاب best fitness ميتوانيد بهترين و متوسط تابع مورد نظر را در هر نسل ببينيد.
مثال:تابع رستريجين با دو متغير مستقل را در نظر بگيريد
شكل تابعاين تابع اكترمهاي محلي زيادي دارد اما در نقطه [o.o] مينيمم مطلق دارد كه توسط خط عمودي نشان داده شده است كه مقدار تابع در اين مينيمم برابر صفر است
پيدا كردن نقطه مينيمم تابع رسترينجدر اين قسمت توضيح ميدهيم كه چگونه با استفاده از الگوريتم ژنتيك مينيمم تابع را به دست آوريم.1- در خط دستور gatoal را تايپ كنيد. اين تابع ميتواند مثال خوبي براي تست كردن اين الگوريتم باشد در ادامه كانتور محل ماكزيمم و مينيمم آمده است.- در قسمت fitness funetion كلمهrastriginsfcn.@ را وارد كنيد- در number variable عدد 2 را وارد كنيد- با زدن start الگوريتم شروع به كار ميكند. براي پيدا كردن مينيمم با استفاده از خط دستور ميتوان مراحل زير را انجام داد.
اصطلاحات جعبه ابزار الگوريتم ژنتيك در نرمافزار MATLAB افراد Individualبه عنوان مثال براي تابع زير بردار (2, 3, 1) يك فرد است و f(2, 3, 1)=51 امتياز اين فرد است. فرد ممكن است به عنوان ژن معرفي شود.
جمعيت و نسل Generationجمعيت آرايهاي از افراد است به عنوان مثال اگر تابع متغير داشته باشد و اندازه جمعيت 100 باشد يك آرايه 3×100 داريم.Diversity
: ميانگين فاصله بين افراد تعريف ميشود كه جمعيت با متوسط فاصله زياد دايورسيتي زياد دارد.
مقدار فيتنس و بهترين فيتنس Fitness Values and Best Fitness Valuesمقدار فيتنس مقدار تابع براي افراد مختلف ميباشد. به دليل اين كه اين جعبه ابزار وظيفه پيدا كردن كمترين فيتنس تابع را دارد. بهترين فيتنس براي يك جمعيت كمترين فيتنس ميباشد.
والدين و بچههاParents and children براي به وجود آوردن نسل بعدي، الگوريتم ژنتيك يك سري افراد را از جمعيت فعلي انتخاب كرده و به نام والدين و از آنها براي به وجود آوردن نسل بعدي استفاده ميكند كه بچهها نام دارد اين الگوريتم والدين را انتخاب ميكند كه فيت نس بهتري داشته باشد.
موارد زير مراحل مينيمم كردن اين الگوريتم را توضيح ميدهد1- الگوريتم جمعيت اوليه را رندم انتخاب ميكند. 2-الگوريتم جمعيت بعدي را از جمعيت فعلي به وجود ميآورد براي به دست آوردن نسل بعدي الگوريتم موارد زير را اجرا ميكند.(a امتيازدهي به هر عضو جمعيت با حساب كردن مقدار فيتنس(b مقياسبندي امتيازات داده شده براي استفاده بهتر از امتيازات و جمعيت(c انتخاب بچهها از والدين. توليدمثل با تغيير اندامي از يكي از والدين- جهش ژنتيكي و يا تركيب والدين براي توليد مثل(d انتخاب والدين بر اساس فيتنس(e جايگزيني نسل جديد با نسل قديم3- اين الگوريتم زمان متوقف ميشود كه به معيار توقف برسد
شرايط توقف براي الگوريتماين الگوريتم از پنج شرايط براي توقف الگوريتم استفاده ميكند.- Generations: زماني كه تعداد نسلها به عدد مورد نظر برسد- Time limit: وقتي زمان اجرا برنامه به ثانيه به عدد موردنظر برسد- Fitness limit : وقتي كه مقدار فيتنس تابع در بهترين نقطه نسل جاري كمتر از عدد مورد نظر باشد.Stall generations زماني كه متغير بهتري در نسلها ايجاد نشود.Stall time limit زماني كه متغير بهتري در نسلها ايجاد نشود بين دو زمان به ثانيه الگوريتم متوقف ميشود.اگر هر كدام از شرايط زير اول اتفاق بيفتد الگوريتم متوقف ميشود Plat optionبا فعال كردن موارد موجود درplat ميتوانيد در هنگام اجرا برنامه روند كار را ببينيدفانكشنهاي زير در plat موجودند Plot interval (PlotInterval): تعداد نسلهايي كه در پلات از آن ها استفاده ميكندBest fitness (@gaplotbestf): كشيدن بهترين مقدار تابع در هر نسلExpectation (@gaplotexpectation): كشيدن تعداد بچههايي كه انتظار ميرود در مقابل امتيازات هر نسلScore diversity (@gaplotscorediversity): كشيدن هيستوگرام از امتيازات براي هر نسلStopping (@plotstopping): كشيدن معيار توقف در هر سطحBest individual (@gaplotbestindiv): كشيدن بردار هر فرد با بهترين فيتنسGenealogy (@gaplotgenealogy): كشيدن نوع توليد نسل بعديScores (@gaplotscores): كشيدن امتياز هر فرد در نسل خودشDistance (@gaplotdistance): كشيدن متوسط فاصله بين افراد در هر نسلRange (@gaplotrange): كشيدن مينيمم، ماكزيمم متوسط مقدار تابع در هر نسلSelection (@gaplotselection): كشيدن هيستوگرام والدين
Population optionPopulation tyme: مشخص كردن اطلاعات ورودي براي تابع فيتنسPopulatin sice: مشخص كردن تعداد افراد در هر نسل. با تعداد بالا جمعيت الگوريتم تعداد بيشتري از فيتنسها را چك ميكند و شانس پيدا كردن اكسترمم نسبي نسبت به اكسترمم مطلق كاهش مييابد اما سرعت جواب گرفتن كاهش مييابد. Creat function: مشخص كردن فانكشني براي به دست آوردن جمعيت اوليهInitial population: شما را قادر ميسازد كه تعداد افراد امتياز و رنج در اولين جمعيت را مشخص سازيد.
Fitness scaling optionاين فانكشن امتياز هر فيتنس را به يك مقياس خاص تبديل ميكند كه براي فانكشن انتخاب مناسب باشد.پيشفرض اين قسمت rank ميباشد مقياسبندي بر اساس چيدمان هر فرد است به جاي استفاده از امتيازproportional مقياسبندي بر اساس امتياز هر فرد. Selection- optionاين اپشن مشخص ميكند كه الگوريتم بر چه اساس والدين را براي تشكيل نسل بعدي انتخاب كند.Reproduction:اين اپشن مشخص ميكند كه الگوريتم بر چه اساس فرزندان را براي نسل بعدي انتخاب كند.Mutation option: اين اپشن مشخص ميكند كه چگونه اين الگوريتم كه چگونه تغيير رندمي كوچكي در هر فرد را براي جهش ژنتيكي دهد. جهش ژنتيكي اجازه گفتن فضاي وسيعتري را به الگوريتم ميدهد.Crossover:اين اپشن مشخص ميكند كه چگونه الگوريتم از دو فرد فرد جديد را توليد كند.
Migration optionدر اين مشخص مي شود که چگونه افراد بين زير جمعيتها حرکت کنند.اين مهاجرت وقتي اتفاق مي افتد که اندازه بردار جمعيت بزرگتر از يک شود .وقتي اين عمل اتفاق بيفتد بهترين افراد از يک جمعيت جاي خود را با بدترين افراد از يک زير جمعيت ديگر عوض مي کنند. اين تعويض بصورت کپي است
Hybrid Function Optionاين فانکشن يک تابع بهينه سازي ديگر است که در صورت فعال بودن بعد از اين که الگوريتم ژنتيک تمام شد اجرا مي شود مثالدر اين مثال الگوريتم ژنتيک در تابع رزنبرگ نقطه اي نزديک مينيمم پيدا مي کند Set Fitness function to @dejong2fcnSet Number of variables to 2.Set Population size to 10 سپس مي توانيد با استفاده از Hybrid Function اين بهينه سازي را بهبود ببخشيد و جواب نزديکتري به نقطه مينيمم پيدا کنيد