الگوریتم ژنتیک در متلبشنبه 17, اکتبر 2020
الگوریتم ژنتیک در متلب
در ادامه آموزش های سایت همیارپروژه برنامه نویسی متلب ارائه خواهد شد .آموزشها از مقدماتی تا پیشرفته ادامه دارد و ما به شما کدنویسی در نرم افزار متلب را رایگان یاد خواهیم داد. با ما همراه باشید.
الگوریتم ژنتیک در متلب
الگوریتم فرا ابتکاری
عوامل موثر در پیچیدگی محاسباتی مدل های تصمیم گیری
- غیر خطی بودن تابع هدف یا محدودیت ها
- گسسته بودن فضای حل مساله
- اندازه مساله
روش های دقیق در شرایط فوق قادر به پیدا کردن جواب بهینه در زمان قابل قبولی نیستند
به جهت پیدا نمودن بهترین جواب ممکن در زمان قابل قبول از روش های فرا ابتکاری استفاده می شود.
الگوریتم ژنتیک
اﻟﮕﻮرﯾﺘﻢ ژﻧﺘﯿﮏ، اﻟﻬﺎﻣﯽ از ﻋﻠﻢ ژﻧﺘﯿﮏ و ﻧﻈﺮﯾﮥ ﺗﮑﺎﻣﻞ داروﯾﻦ می باشد و ﺑﺮ اﺳﺎس ﺑﻘﺎي ﺑﺮﺗﺮﯾﻦﻫﺎ ﯾﺎ اﻧﺘﺨﺎب ﻃﺒﯿﻌﯽ اﺳﺘﻮار می باشد. ﯾﮏ ﮐﺎرﺑﺮد ﻣﺘﺪاول اﻟﮕﻮرﯾﺘﻢ ژﻧﺘﯿﮏ، اﺳﺘﻔﺎده از آن ﺑﻌﻨﻮان ﺗﺎﺑﻊ ﺑﻬﯿﻨﻪ ﮐﻨﻨﺪه اﺳﺖ. اﻟﮕﻮرﯾﺘﻢ ژﻧﺘﯿﮏ اﺑﺰار ﺳﻮدﻣﻨﺪي درﺑﺎزﺷﻨﺎﺳﯽ اﻟﮕﻮ، اﻧﺘﺨﺎب وﯾﮋﮔﯽ،درك ﺗﺼﻮﯾﺮو ﯾﺎدﮔﯿﺮي ﻣﺎﺷﯿﻨﯽ می باشد.
در اﻟﮕﻮرﯾﺘﻢﻫﺎي ژﻧﺘﯿﮑﯽ، ﻧﺤﻮه ﺗﮑﺎﻣﻞ ژﻧﺘﯿﮑﯽ ﻣﻮﺟﻮدات زﻧﺪه ﺷﺒﯿﻪﺳﺎزي ﻣﯽﺷﻮد. اﯾﻦ اﻟﮕﻮرﯾﺘﻢ ﻫﺎ ﺑﺎ اﻟﻬﺎم از روﻧﺪ ﺗﮑﺎﻣﻠﯽ ﻃﺒﯿﻌﺖ ﻣﺴﺎﺋﻞ را ﺣﻞ ﻣﯽ ﻧﻤﺎﯾﻨﺪ . ﯾﻌﻨﯽ ﻣﺎﻧﻨﺪ ﻃﺒﯿﻌﺖ ﯾﮏ ﺟﻤﻌﯿﺖ از ﻣﻮﺟﻮدات را ﺗﺸﮑﯿﻞ ﻣﯽ دﻫﻨﺪ و ﺑﺎ اﻋﻤﺎﻟﯽ ﺑﺮ روي اﯾﻦ ﻣﺠﻤﻮﻋﻪ ﺑﻪ ﯾـﮏ ﻣﺠﻤﻮﻋﻪ ﺑﻬﯿﻨﻪ و ﯾﺎ ﻣﻮﺟﻮد ﺑﻬﯿﻨﻪ دﺳﺖ ﻣﯽ ﯾﺎﺑﻨﺪ.
جدول هم ارزی مفاهیم بیولوژیکی و عناصر GA
نمودار گردشی فرآیند یک الگوریتم تکاملی
ساختار الگوریتم ژنتیک
مدلسازی مساله با الگوریتم ژنتیک
برای اینکه بتوانیم یک مساله را به وسیله الگوریتم های ژنتیک حل کنیم , بایستی آنرا به فرم مخصوص مورد نیاز این الگوریتم ها تبدیل کنیم.
در این روند ما باید راه حل مورد نیاز مساله را به گونه ای حل نماییم که قابل نمایش به وسیله یک کروموزوم باشد.
اینکه چه نوع باز نمایی را برای مساله استفاده نماییم به شخص طراح و فرم مساله بستگی دارد.
چند نمونه از باز نمایی هایی را که معمولا استفاده می شوند
- اعداد صحیح
- رشته های بیتی
- اعداد حقیقی در فرم نقطه شناور
- اعداد حقیقی به فرم رشته های بینی
- یک مجموعه از اعداد حقیقی یا صحیح
- ماشینهای حالت محدود
- هر فرم دیگری که بتوانیم عملگرهای ژنتیک را بر روی آنها تعریف کنیم
- انتخابselection (انتخاب والدین)
سوق دادن جستجو به بخش هایی از فضا که امکان یافتن جوابهای با کیفیت بالاتر وجود دارد.
نسل جدیدی از راه حل ها را با انتخاب والدینی که بالاترین fitness را دارند تولید می کند.
والدین
در هر نسل تعدادی از عناصر جمعیت این فرصت را پیدا می کنند که تولید مثل کنند. به این عناصر که از میان جمعیت انتخاب می شوند, والدین می گویند.
روشهای مختلفی برای انتخاب والدین وجود دارند. در زیر به چند مورد این روشها اشاره می کنیم:
انتخاب تمام جمعیت به عنوان والدین
در واقع هیچ گونه انتخابی انجام نمی دهیم.( همه عناصر انتخاب می شوند.)
انتخاب تصادفی
به صورت تصادفی تعدادی از موجودات جمعیت به عنوان والدین انتخاب می کنیم, این انتخاب می تواند با جایگزاری یا بدون جایگذاری باشد.
در این روشها عناصر با شایستگی بیشتر شانس بیشتری برای انتخاب شدن بعنوان والدین را دارند.
سایر روشها:
این روشها با استفاده از تکنیک هایی سعی می کنند که انتخاب هایی را ارائه می دهند, که هم رسیدن به جواب نهایی را تسریع کنند و هم اینکه کمک می کنند که جواب بهینه تری پیدا شود.
انجام عمل بازترکیبی
روش کار الگوریتم ژنتیک در بازترکیبی به صورت زیر می باشد
روش کار به صورت زیر می باشد:
بصورت تصادفی یک نقطه از کروموزوم را انتخاب می کنیم
ژن های ما بعد آن نقطه از کروموزوم ها را جابه جا می کنیم
بازترکیبی تک نقطه ای (single point crossover)
اگر عملیات بازترکیبی را در یک نقطه انجام دهیم به آن بازترکیبی تک نقطه ای می گویند.
در این روش یک مکان تصادفی در طول رشته انتخاب می شود و gene ها از این مکان به بعد جابه جا می شوند.
ﺑﻬﯿﻨﻪ ﺳﺎزي ﺑﺎ اﻟﮕﻮرﯾﺘﻢ ژﻧﺘﯿﮏ ﻣﺘﻠﺐ GATools
اولین گام در حل مساله این است که دو تابع به یکی برای معاددله اصلی بهینه سازی و دیگری برای قیدهای غیرخطی بنویسید این توابع را جداگانه در m فایل های متفاوت ساخته و در دایرکتوری اصلی متلب ذخیره کنید.
تابع اصلی که قرار است بهینه سازی شود. به صورت زیر نوشته ذخیره می کند. توجه نمایید که هر اسمی را که برای تابع استفاده کردید. در هنگام ذخیره ام فایل مربوطه باید به همان اسم ذخیره شود.
به عنوان نمونه مینیمم تابع زیر را به دست خواهیم آورد:
قیود ما عبارتند از:
قید های غیر خطی نیز در تابع nonlconstr در متلب ذخیره می شوند
حال با نوشتن دستور gatoolدر پنجره دستورات متلب به سراغ تولباکس الگوریتم ژنتیک متلب می رویم و پارامترهای زیر را تنظم می کنیم:
که نقطه فاینال که محاسبه شده و بهینه می باشد در اینجا نقطه (۱,۱) می باشد.
در اینجا آشنایی با محیط متلب بخش نودو یک به پایان رسیده است و در آموزش های بعدی به مباحث دیگر آموزش متلب می پردازیم. همچنین از شما مخاطبین عزیز سایت همیارپروژه دعوت می کنم که برای انجام پروژه متلب خود آموزش های ما را دنبال نمایید.
جهت سفارش پروژه به لینک زیر مراجعه نمایید :
همچنین می توانید برای ارتباط سریعتر با شماره و آیدی تلگرام زیر تماس حاصل کنید :
۰۹۱۲۹۵۴۰۱۲۲ – آیدی تلگرام : @fnalk
از طریق کلیک برروی آیکن های زیر میتوانید پروژه خود را در تلگرام و یا واتساپ برای ما ارسال کنید:
ثبت سفارش در واتس آپ ثبت سفارش در تلگرام
دیدگاهتان را بنویسید