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

که

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

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

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

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

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

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

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

>>gatool

.

 

 

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

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

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

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

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

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

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

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

 

 

پلات

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

 

مثال:

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

شکل تابع

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

 

 

 

 

 

 

 

 

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

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

۱- در خط دستور gatoal را تایپ کنید

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

 

 

 

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

– در number variable عدد ۲ را وارد کنید

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

 

 

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

 

 

 

 

 

 

 

 

اصطلاحات جعبه ابزار الگوریتم ژنتیک در نرم‌افزار MATLAB

افراد   Individual

به عنوان مثال برای تابع زیر بردار (۲, ۳, ۱) یک فرد است و f(2, 3, 1)=51 امتیاز این فرد است. فرد ممکن است به عنوان ژن معرفی شود.

جمعیت و نسل Generation

جمعیت آرایه‌ای از افراد است به عنوان مثال اگر تابع متغیر داشته باشد و اندازه جمعیت ۱۰۰ باشد یک آرایه ۳×۱۰۰ داریم.

 

Diversity

: میانگین فاصله بین افراد تعریف می‌شود که جمعیت با متوسط فاصله زیاد دایورسیتی زیاد دارد.

مقدار فیت‌نس و بهترین فیت‌نس Fitness Values and Best Fitness Values

مقدار فیت‌نس مقدار تابع برای افراد مختلف می‌باشد. به دلیل این که این جعبه ابزار وظیفه پیدا کردن کم‌ترین فیت‌نس تابع را دارد. بهترین فیت‌نس برای یک جمعیت کم‌ترین فیت‌نس می‌باشد.

والدین و بچه‌هاParents and children

برای به وجود آوردن نسل بعدی، الگوریتم ژنتیک یک سری افراد را از جمعیت فعلی انتخاب کرده و به نام والدین و از آن‌ها برای به وجود آوردن نسل بعدی استفاده می‌کند که بچه‌ها نام دارد این الگوریتم والدین را انتخاب می‌کند که فیت نس بهتری داشته باشد.

 

موارد زیر مراحل مینیمم کردن این الگوریتم را توضیح می‌دهد

۱- الگوریتم جمعیت اولیه را رندم انتخاب می‌کند.

 

 

 

۲-الگوریتم جمعیت بعدی را از جمعیت فعلی به وجود می‌آورد برای به دست آوردن نسل بعدی الگوریتم موارد زیر را اجرا می‌کند.

(a امتیازدهی به هر عضو جمعیت با حساب کردن مقدار فیت‌نس

(b مقیاس‌بندی امتیازات داده شده برای استفاده بهتر از امتیازات و جمعیت

(c انتخاب بچه‌ها از والدین. تولیدمثل با تغییر اندامی از یکی از والدین- جهش ژنتیکی و یا ترکیب والدین برای تولید مثل

(d انتخاب والدین بر اساس فیت‌نس

(e جایگزینی نسل جدید با نسل قدیم

۳- این الگوریتم زمان متوقف می‌شود که به معیار توقف برسد

 

 

 

 

 

 

شرایط توقف برای الگوریتم

این الگوریتم از پنج شرایط برای توقف الگوریتم استفاده می‌کند.

– 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 این بهینه سازی را بهبود ببخشید

 

 

 

 

 

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