الگوریتم CMAES فروشنده دوره گرد یکی از الگوریتم های بهینه سازی برای حل مسائل سخت در علوم کامپیوتر مختلف می باشد که در این پست به تشریح و چگونگی عملکرد این الگوریتم برای حل مسئله فروشنده دوره گرد پرداخته می شود. الگوریتم CMA-ES از یک توزیع نرمال، نمونهگیری کرده و جمعیت جدید را به وجود میآورد.
این الگوریتم تکاملی یک ماتریس کواریانس و یک بردار میانگین را از جمعیت تخمین میزند. قوانین مختلف به روزرسانی، ماتریس کواریانس تطبیق یافتهای را در هر نسل ایجاد میکند که در کیفیت جمعیت جدید و در نتیجه هدایت تکامل نقش مهمی دارد.
برنامهنویس: تیم برنامه نویسی پی استور
متشکل از اساتید و فارغ التحصیلان رشته های فنی - مهندسی
تیم برنامه نویسی پی استور یکی از اولین گروه های تشکیل شده در مجموعه آموزشی پی استور می باشد. این تیم از اساتید مجرب و فارغ التحصیلان رشته های فنی و مهندسی تشکیل شده که در زمینه های مختلف برنامه نویسی و تهیه سورس کد فعال هستند.
الگوریتم CMAES
این الگوریتم مخفف Covariance Matrix Adaptation Evolution Strategy به معنای استراتژی تکاملی انطباق ماتریس کوواریانس می باشد. دو اصل اصلی برای سازگاری پارامترهای توزیع جستجو در الگوریتم CMA-ES مورد استفاده قرار می گیرند.
ابتدا، یک اصل حداکثر احتمال maximum-likelihood، برای افزایش احتمال موفقیت راه حل های کاندید شده و مراحل جستجو در نظر گرفته می شود. متوسط توزیع به روز می شود به طوری که احتمال موفقیت پیشین موفق به راه حل های حداکثر می شود.
ماتریس کوواریانس توزیع (به طور تدریجی) به روز می شود به طوری که احتمال مراحل پیشین موفق جستجو افزایش می یابد. هر دو به روز رسانی را می توان به عنوان یک شیب طبیعی شناخت. همچنین، در نتیجه، CMA یک مولفه اصلی تکرار شده برای تجزیه و تحلیل مراحل جستجو موفق را در حالی که تمام محورهای اصلی را نگه می دارد انجام می دهد.
دوم، دو مسیر از زمان تکامل میانگین توزیع استراتژی ثبت شده، به نام مسیر جستجو یا تکامل می باشد. این مسیرها حاوی اطلاعات مهمی درباره همبستگی بین مراحل متوالی هستند.
به طور خاص، اگر مراحل متوالی در جهت مشابهی گرفته شود، مسیرهای تکاملی بلند می شوند. مسیرهای تکاملی از دو راه بهره برداری می شوند. یک راه برای روش انطباق ماتریس کوواریانس به جای مراحل موفقیت آمیز موفقیت آمیز استفاده می شود و باعث افزایش احتمال واریانس بسیار بیشتر جهت جهت مطلوب می شود. مسیر دیگر مورد استفاده برای کنترل اضافی اندازه گام است.
مسئله فروشنده دورگرد TSP
مساله فروشنده دوره گرد Travelling salesman problem یا به اختصار TSP مساله اي است که شرح آن خيلي آسان مي باشد. تعريف آن بدين صورت است که تعداد متناهي شهر با هزينه پيمايش بين هر جفت از آنها داده مي شود و هدف مساله اين است که يک فروشنده دوره گرد تمامي اين شهرها را به گونه اي ملاقات کند که هر يک از اين شهرها را فقط يک بارملاقات کرده و دوباره به شهر آغازين برگردد با اين شرط که با کمترين هزينه پيمايش اين کار را انجام دهد.
به طور کلي هدف پيدا کردن کم هزينه ترين تور براي ملاقات همه شهرها و بازگشت به شهر آغازين حرکت است. مساله فروشنده دوره گرد در شکل ساده و اختصاري با نام TSP شناخته مي شود. شکل 3- 1 يک نمونه جواب از مساله فروشنده دوره گرد که در سال 1591 براي 15 شهر از کشور آمريکا مطرح شد را نشان مي دهد که با روش شاخه وحد حل شد.
سورس حل مسئله فروشنده دوره گرد TSP با الگوریتم CMAES در متلب
در این قسمت سورس برنامه حل مسئله فروشنده دوره گرد TSP با الگوریتم الگوریتم CMAES در متلب آماده شده است این سورس کد شامل 4 فایل می باشد که عبارتند از:
- الگوریتمcmaes.m: فایل اصلی برنامه است و فراخوانی دیگر توابع و مقادیر پارامتر ها و الگوریتم الگوریتم CMAES در داخل این فایل قرار دارد.
- CreateModel.m: برای ایجاد شهرهای فاصله و مختصات هر یک از شهرها از این تابع استفاده می شود.
function model=CreateModel() x=[82 91 12 92 63 9 28 55 96 97 15 98 96 49 12 92 63 9 28 55 96 97 15 98 80 14 42 92 80 96]; y=[12 92 63 9 28 55 96 97 15 98 66 3 85 94 68 76 75 39 66 17 71 3 27 4 9 83 70 32 95 3]; n=numel(x); D=zeros(n,n); for i=1:n-1 for j=i+1:n D(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2); D(j,i)=D(i,j); end end model.n=n; model.x=x; model.y=y; model.D=D; end
- PlotSolution.m: برای رسم مسیر های بین شهرها از این تابع استفاده می شود.
function PlotSolution(tour,model) tour=[tour tour(1)]; plot(model.x(tour),model.y(tour),'k-s',... 'MarkerSize',12,... 'MarkerFaceColor','y',... 'LineWidth',2); end
- TourLength.m: این تابع برای محاسبه طول مسیرهای یک تور یا یک پیمایش کامل شهرها بکار می رود.
function L=TourLength(tour,model) n=numel(tour); tour=[tour tour(1)]; L=0; for i=1:n L=L+model.D(tour(i),tour(i+1)); end end
برای دریافت سورس کامل محصول لطفا آن را خریداری کنید.
تصاویر خروجی فروشنده دوره گرد با CMAES
ویدئوی معرفی محصول
درباره الگوریتم CMAES برای TSP
سورس برنامه حل مسئله فروشنده دوره گرد TSP با الگوریتم الگوریتم CMAES در متلب عنوان محصولی است که در این پست به آن پرداخته شده است. محصول در نرم افزار متلب نوشته شده و بصورت کامل توسط گروه پشتیبانی پی استور تست و اجرا شده است. محصول دارای نشان تضمین کیفیت پی استور می باشد. برای دانلود محصول آن را خریداری کنید.
مطالب مرتبط با الگوریتم CMAES
مباحث مرتبط با مسئله حل فروشنده دوره گرد
تاریخ انتشار: | 14 تیر 1398 |
---|---|
تاریخ بروزرسانی: | 25 بهمن 1398 |
حجم فایل: | 2.8 کیلوبایت |
فرمت فایل | .m در قالب Matlab |
نسخه: | 1.0 |
شناسه اثر: | ندارد |
هماهنگی با: | Matlab 2009 و بالاتر |
تاکنون 210 نفر این محصول را تهیه کرده اند و 1 نظر برای آن ثبت شده است.
نظرات و دیدگاه ها
قوانین ثبت دیدگاه
- لطفاً دیدگاه های خود را فارسی تایپ کنید.
- دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
- از درج دیدگاه های تکراری پرهیز نمایید.
- سوالات تخصصی خودتان را از طریق تیکت پشتیبانی مطرح کنید.
قیمت 29,000 تومان
تاریخ انتشار: | 14 تیر 1398 |
---|---|
تاریخ بروزرسانی: | 25 بهمن 1398 |
حجم فایل: | 2.8 کیلوبایت |
فرمت فایل | .m در قالب Matlab |
نسخه: | 1.0 |
شناسه اثر: | ندارد |
هماهنگی با: | Matlab 2009 و بالاتر |
1 بازخورد (مشاهده نظرات)
قیمت: 29,000 تومان
مدیریت و پشتیبانی
نظرات و پیشنهادات خود را با ما در میان بگذارید.