تبلیغات
مهندسی مکانیک و هوافضا - جعبه‌ابزار الگوریتم ژنتیك در متلب ( ga toolbox )
هر آنچه که یک مهندس بخواهد اینجا هست!
 
آخرین مطالب
 
محبوبترین ها ی سایت
جعبه‌ابزار الگوریتم ژنتیك در متلب ( ga toolbox )
جعبه‌ ابزار الگوریتم ژنتیك مجموعه‌ای از تابع‌هایی هستند كه توانایی اپیتیمم كردن را با استفاده از محیط محاسبات عددی دارد. این الگوریتم قابلیت حل مسائل مختلف در زمینه بهینه‌سازی است تمام توابع این جعبه ابزار از M فایل‌های مطلب هستند كه تابع را بهینه می‌كند.البته می‌‌توانید قابلیت‌های الگوریتم ژنتیك را توسط M فایلی كه خودتان می‌نویسید یا با تركیب تابع‌های مطلب افزایش دهید.

نوشتن ‌M فایل

در این قسمت نشان می دهیم كه چه‌طور می‌توان یك M فایل برای تابع نوشت كه می‌خواهیم آن را بهینه كنیم فرض كنیم می‌خواهیم تابع زیر را بهینه كنیم.

 

y1

مراحل زیر را انجام دهید .

... ادامه مطلب 


1- new را از منوی فایل انتخاب كنید

2- M فایل را انتخاب كنید.

3- كدهای زیر را در داخل m فایل بنویسید.

y11

- فایل را ذخیره كنید

اگر شما بخواهید این فایل را ماكزیمم كنید می‌توانید f(X) -را مینیمم كنید چون مینیمم در همان نقطه اتفاق می‌افتد كه ماكزیمم در f(x) وجود دارد.

y111


فراخوانی الگوریتم ژنتیك

برای استفاده از این الگوریتم در خط دستور، دستور زیر را در خط دستور تایپ كنید

y666

كه

fitnessfun –  @  كه تابع مورد نظر است

n vars-  تعداد متغیرهای مستقل در داخل تابع است

در نتایج داریم:

fval * مقدار نهایی تابع

* xنقطه‌ای كه در آن تابع بهینه است.

استفاده از جعبه ابزار الگوریتم ژنتیك.

این جعبه ابزار یك جعبه‌ ابزرا گرافیكی است كه كاربر را قادر می‌سازد كه از این الگوریتم بدون خط دستور استفاده كرد اما باید در خطدستور

>>gatool

-Fitness function  تابعی را كه می‌خواهید بهینه كنید در این قسمت تایپ كنید.

Number of variables-تعداد متغیرهای مستقل كه در تابع وجود دارد.

برای شروع حل كلید start را در قسمت run solver بزنید.

در قسمت‌ current generation تعداد نسل را توضیح می‌دهد. شما می‌توانید حل را توسط دكمه puase موقتاً متوقف كنید.

* در قسمت status & result اطلاعات زیر نمایش داده می‌شود

مقدار نهایی تابع وقتی الگوریتم تمام می‌شود

دلیل تمام شدن الگوریتم

نقطه‌ای كه تابع در آن نقطه بهینه است.

 

پلات

در قسمت plots می‌توانید انواع اطلاعات را در زمان اجرای برنامه مشاهده كنید. شما می‌توانید با مشاهده نتایج و اعمال تغییرات مناسب به جواب بهتری برسید با انتخاب best fitness می‌توانید بهترین و متوسط تابع مورد نظر را در هر نسل ببینید.

 

مثال:

تابع رستریجین با دو متغیر مستقل را در نظر بگیرید

y6669

شكل تابع

این تابع اكترمهای محلی زیادی دارد اما در نقطه [o.o] می‌نیمم مطلق دارد كه توسط خط عمودی نشان داده شده است كه مقدار تابع در این مینیمم برابر صفر است

پیدا كردن نقطه مینیمم تابع رسترینج

در این قسمت توضیح می‌دهیم كه چگونه با استفاده از الگوریتم ژنتیك مینیمم تابع را به دست آوریم.

1- در خط دستور gatoal را تایپ كنید

. این تابع می‌تواند مثال خوبی برای تست كردن این الگوریتم باشد در ادامه كانتور محل ماكزیمم و مینیمم آمده است.

- در قسمت fitness funetion كلمهrastriginsfcn.@ را وارد كنید

- در number variable عدد 2 را وارد كنید

- با زدن start الگوریتم شروع به كار می‌كند.

 

 

برای پیدا كردن مینیمم با استفاده از خط دستور می‌توان مراحل زیر را انجام داد.

y90

 

اصطلاحات جعبه ابزار الگوریتم ژنتیك در نرم‌افزار 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 option

Population 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 @dejong2fcn

Set Number of variables to 2.

Set Population size to 10

 

سپس می توانید با استفاده از Hybrid Function این بهینه سازی را بهبود ببخشید

 

و جواب نزدیکتری به نقطه مینیمم پیدا کنید



می توانید دیدگاه خود را بنویسید
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر