Matlab

محاسبه نقطه مینیمم تابع Ackley  به روش Differential evolution

محاسبه نقطه مینیمم تابع Ackley به روش Differential evolution

وضعیت : موجود

برند :Matlab

تعداد بازدید: 32
0 0

تابع Ackley یک تابع غیر محدب است که برای تست مباحث بهینه سازی مورد استفاده قرار میگیرد. رابطه تابع Ackley به صورت زیر است

 

نقطه مینمم این تابع در مقدار صفر قرار دارد

شکل این تابع در فضای دو بعدی به صورت زیر است 

 

 

برای پیدا کردن نقطه مینیمم این تابع از روش تکاملی تفاضلی یا Differential evolution استفاده کرده ایم. 

الگوریتم Differential evolution یکی از روش‌های محاسبه توابع حقیقی (Real value) با استفاده از استراتژی‌های تکاملی است. روند تکامل در این الگوریتم مبتنی بر ایجاد بهبود تدریجی و مستمر در حدس اولیه بوده و طبق اصول تمامی الگوریتم‌های تکاملی، به یک تابع برازندگی (Fitness function) جهت مقایسه پاسخها نیاز داریم که این تابع در این پیاده سازی، تابع شایستگی Ackley است.

الگوریتم تکامل تفاضلی، الگوریتمی تصادفی و مبتنی بر جمعیت است که در سال ۱۹۹۵ ارایه شده است. در الگوریتم تکامل تفاضلی اطلاعات مربوط به جهت و فاصله اعضا برای جستجوی جواب بهینه مورد استفاده قرار می گیرد. این الگوریتم توانایی بالایی برای حل مسائل بهینه سازی دارد.

در الگوریتم تکامل تفاضلی بر خلاف دیگر الگورتیم ها که اول عملگر بازترکیبی crossover و سپس عملگر جهش mutation انجام می شود، اول عملگر جهش و سپس عملگر تقاطع اعمال می شود تا بدین وسیله نسل جدید ایجاد گردد.
 

نقطه قوت الگوریتم DE در مقایسه با روشهای حل معادلات حقیقی دیگر (مانند روشهای نیوتن)، عدم نیاز آن به گرادیان یا شیب تابع است. در نتیجه با استفاده از این الگوریتم، بدون وجود هر گونه اطلاعاتی در مورد نوع تابع میتوان به محاسبه یک پاسخ نسبتا بهینه برای انواع توابع چند بعدی پیوسته وغیر پیوسته، متغیر زمانی و نامنظم امیدوار بود.

مراحل الگوریتم Differential Evolution به صورت زیر است: 

1. تولید جمعیت اولیه از پاسخهای کاندید. هر پاسخ کاندید، یک بردار از اعداد حقیقی به تعداد ابعاد مسئله (پارامترهای مجهول) می‌باشد.

2. به ازای هر پاسخ کاندید X، سه پاسخ متمایز a, b, c را از جمعیت انتخاب می‌نماییم

3. تعیین پارامتر تصادفی R، در محدوده  1 و ابعاد مسئله.

4. محاسبه پاسخ بهبود یافته V به این صورت که به ازای هر بعد Xi از X، در صورت برابر بودن R با i و یا برآورده شدن احتمال ترکیب pi، از فرمول برآورد 

 V(i) = a(i) + F*( b(i) – c(i) )

برای محاسبه بعد Vi استفاده می‌نماییم. در غیر اینصورت خود Xi به Vi انتصاب داده می‌شود.

5. پذیرش پاسخ جدید V، در صورتی که برازندگی آن از X بیشتر باشد.

6. تکرار مراحل 2 تا 5 تا زمان تحقق شرط خاتمه.

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

ویدیوی زیر نحوه اجرای این پیاده سازی را نشان میدهد.

ویدیو نحوه اجرای کد و نمایش خروجی

 

 

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

 

در صورت هر گونه سوال نسبت به کالای مورد نظر، با ایمیل msd.abasian@gmail.com  یا شماره 09132324263 و یا آیدی تلگرام masoudabasian مکاتبه نمایید.

همچنین در صورت دانلود فایل و مشاهده هر گونه مشکل در کدها و گزارش، میتوانید از طریق راه های ارتباطی ذکر شده، مشکل را اعلام فرمایید تا در اسرع وقت پشتیبانی لازم را انجام دهیم.

با تشکر از حسن اعتماد شما

مسعود عباسیان

 

محاسبه نقطه مینیمم تابع Ackley به روش Differential evolution

5,000 تومان افزودن به سبد خرید

محل نوشتن دیدگاه شما


تعداد نظرات : 0