دانلود رایگان کد برنامه بهینه سازی تابع اکلی (Ackley) توسط الگوریتم ژنتیک و الگوریتم رقابت استعماری

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

بیان مسئله
تابع اکلی (Ackley) یکی از توابع استاندارد (Benchmark) بهینه سازی به شمار می رود. این تابع به صورت زیر بیان می شود.
با در نظر گرفتن یک مسئله بهینه سازی n بعدی، بردار x دارای n بعد را به گونه ای بیابید که هر xi در بازه
32.738- و 32.738 قرار گرفته و تابع زیر را مینیمم کند. نقطه بهینه این تابع در مبدأ قرار گرفته است. در متلب کدهای مربوط به این تابع را می توان به صورت زیر نوشت.
f = -20 * exp(-.2*sqrt(sum(x.^2)/n)) – exp(sum(cos(2*pi*x))/n) + 20 + exp(1);
شکل این تابع را در زیر می بینید. همانگونه که ملاحظه می کنید، این تابع دارای تعداد زیادی نقطه بهینه محلی است. نقاطی که به عنوان مانع در برابر یافتن نقطه بهینه مطلق آن که در مبدأ قرار دارد، عمل می کنند.
نتایج بهینه سازی
نتیجه استفاده از الگوریتم ژنتیک در شکل زیر نشان داده شده است. تابع اکلی مورد استفاده 15 بعدی در نظر گرفته است. یعنی در رابطه بالا n عدد 15 می باشد. جمعیت اولیه و تعداد تکرارهای الگوریتم ژنتیک به ترتیب برابر با 500 و 800 در نظر گرفته شده اند.
BestSolution =  [0.0002    0.0001   -0.0001   -0.0003    0.0001   -0.0000   -0.0002    0.0000   0.0003    0.0001   -0.0000    0.0000    0.8212   -0.0001    0.0001]

BestCost = 0.9313

استفاده از الگوریتم رقابت استعماری نیز در مورد این تابع به نمودار، همگرایی و جوابهای زیر منجر می شود. تعداد کشورهای اولیه و نیز تعداد دهه ها در الگوریتم نیز به ترتیب برابر با 500 و 800 هستند.
BestSolution = 1.0e-003 *  [-0.0912    0.0320    0.1145   -0.0060    0.1205   -0.0238   -0.0820   -0.1838   -0.0321    0.0440   -0.3396   -0.0864   0.0636    0.1659   -0.1984]
BestCost =  5.4233e-004
همانگونه که ملاحظه می کنید در این مورد الگوریتم رقابت استعماری به نتیجه به مراتب بهتری نسیت به الگوریتم ژنتیک رسیده است (BestCostها را با هم مقایسه کنید). البته همانگونه که در پست مربوط به مقایسه دو الگوریتم بهینه سازی شرح داده شده است، نتایج یکبار اجرای برنامه را نباید به کل اجراها تعمیم داد و باید بررسی آماری بیشتری انجام داد. نکته قابل توجه است که بر مبنای مقایسه های مختلف آماری انجام گرفته تا کنون که در مقالات متعددی منتشر شده اند، الگوریتم رقابت استعماری حداقل در مسائل بهینه سازی پیوسته با بعد زیاد موفقیت بسیار بالایی از خود نشان می دهد. با کاهش پیچیدگی همین مسئله (کاهش n)، ملاحظه می شد که الگوریتم ژنتیک به جواب حدود الگوریتم رقابت استعماری و حتی در بعضی  معدود از اجراها به جواب کمی بهتر نیز رسید. در نهایت نتیجه گیری نهایی نیاز به انجام آزمونهای لازم آماری دارد.
دانلود کدهای برنامه الگوریتم ژنتیک و الگوریتم رقابت استعماری
در ادامه کدهای برنامه مورد استفاده برای بهینه سازی برای دانلود قرار داده شده اند. کدهای رایگان ارائه شده می توانند به عنوان یک پروژه کامل  و مجزا در مورد الگوریتم ژنتیک و الگوریتم رقابت استعماری، مورد استفاده آموزشی نیز قرار بگیرند. پسور فایل های زیپ شده www.icasite.info می باشد. در داخل فایل زیپ شده دو پوشه وجود دارند که یکی مربوط به الگوریتم ICA و دیگری مربوط به GA می باشد. در GA باید فایل MainGa را اجرا کنید. در ICA نیز باید فایل Main_ImperialistCompetitveAlgorithm را باز کرده و در متلب F5 را فشار دهید.
نیاز به توضیحات، راهنمائی و مشاوره بیشتری در مورد این کدها دارید؟
_____________________________________________
نظرات شما در انتهای این پست برای سایر خوانندگان، بسیار مفید خواهد بود. می توانید نظر خود را با اکانت سرویس های مختلف و یا به عنوان ناشناس در این پست درج نمائید.
صرف زمان برای یادگیری اتلاف زمان نیست. سرمایه گذاری زمانی است.



0 پاسخ

ارسال یک پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *