در این پست کد فروشنده دوره گرد با الگوریتم جهش قورباغه SFLA در متلب قرار داده شده است. الگوریتم بهینه سازی جهش قورباغه یا Shuffled Frog Leaping Algorithm (به اختصار SFLA)، یکی از الگوریتم های بهینه سازی فرا ابتکاری است که از رفتار اجتماعی قورباغه ها در طبیعت الهام گرفته شده است، و از نظر دسته بندی، در میان الگوریتم های رفتاری یا الگوریتم های ممتیک (Memetic Algorithms) قرار می گیرد.
از نام های دیگر الگوریتم بهینه سازی جهش قورباغه، می توان به الگوریتم قورباغه و الگوریتم جهش قورباغه و الگوریتم SFLA اشاره نمود. در ادامه به تشریح حل مسئله فروشنده دوره گرد TSP با الگوریتم جهش قورباغه SFLA در متلب پرداخته خواهد شد.
برنامهنویس: تیم برنامه نویسی پی استور
متشکل از اساتید و فارغ التحصیلان رشته های فنی - مهندسی
تیم برنامه نویسی پی استور یکی از اولین گروه های تشکیل شده در مجموعه آموزشی پی استور می باشد. این تیم از اساتید مجرب و فارغ التحصیلان رشته های فنی و مهندسی تشکیل شده که در زمینه های مختلف برنامه نویسی و تهیه سورس کد فعال هستند.
الگوریتم بهینه سازی جهش قورباغه یا SFLA
الگوریتم SFLA یک الگوریتم مبتنی بر ممتیک متأهيوريستیک است. الگوریتم ممتیک، یک الگوریتم مبتنی بر جمعیت است که برای مسائل بهینه سازی پیچیده و بزرگ مورداستفاده قرار می گیرد. ایده اصلی این الگوریتم، به کار گیری یک روش جستجوی محلی در درون ساختار الگوریتم ژنتیک برای بهبود کار آبی فرآیند تشدید هنگام جستجو است.
الگوریتم ممتیک در ابتدا مجموع جوابهای اولیه را رمزگذاری می کند، آنگاه ابن الگوریتم میزان مطلوبیت هر یک از جوابها را بر اساس یک تابع برازندگی را محاسبه کرده و جواب های جدیدی را تولید می کند.
الگوریتم SFLA از نحوه جستجوی غذای گروه قورباغه ها الهام می گیرد. این الگوریتم برای جستجوی محلی میان زیر گروه قورباغه ها از روش نموممتیک استفاده می کند. الگوريتم جهش ترکیبی قورباغه از استراتژی ترکیب استفاده می کند و امکان مبادله پیام در جستجوی محلی را فراهم می سازد. این الگوریتم مزایای الگوریتم نموممتیک و بهینه سازی گروه ذرات را ترکیب می کند.
در الگوریتم جهش ترکیبی قورباغه نه تنها در جستجوی محلی بلکه در جستجوی سراسری نیز پیامها مبادله می شوند. بدین ترتیب جستجوی محلی و سراسری به خوبی در این الگوریتم ترکیب می شوند. الگوریتم جهش ترکیبی قورباغه قابلیت بالایی برای جستجوی سراسری دارد و پیاده سازی آن آسان است. الگوريتم جهش ترکیبی قورباغه می تواند بسیاری از مسائل غیر خطی، غیرقابل تشخیص و چند حالته را حل کند.
مسئله فروشنده دورگرد TSP
مساله فروشنده دوره گرد Travelling salesman problem یا به اختصار TSP مساله اي است که شرح آن خيلي آسان مي باشد. تعريف آن بدين صورت است که تعداد متناهي شهر با هزينه پيمايش بين هر جفت از آنها داده مي شود و هدف مساله اين است که يک فروشنده دوره گرد تمامي اين شهرها را به گونه اي ملاقات کند که هر يک از اين شهرها را فقط يک بارملاقات کرده و دوباره به شهر آغازين برگردد با اين شرط که با کمترين هزينه پيمايش اين کار را انجام دهد.
به طور کلي هدف پيدا کردن کم هزينه ترين تور براي ملاقات همه شهرها و بازگشت به شهر آغازين حرکت است. مساله فروشنده دوره گرد در شکل ساده و اختصاري با نام TSP شناخته مي شود. شکل 3- 1 يک نمونه جواب از مساله فروشنده دوره گرد که در سال 1591 براي 15 شهر از کشور آمريکا مطرح شد را نشان مي دهد که با روش شاخه وحد حل شد.
سورس کد فروشنده دوره گرد با الگوریتم جهش قورباغه
در این قسمت سورس برنامه حل فروشنده دوره گرد با الگوریتم جهش قورباغه SFLA در متلب آماده شده است این سورس کد شامل 8 فایل می باشد که عبارتند از:
- main.m: فایل اصلی برنامه است و فراخوانی دیگر توابع و مقادیر پارامتر ها و الگوریتم SFLA در داخل این فایل قرار دارد.
- 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 [z sol]=MyCost(s,model) d=model.d; [~, tour]=sort(s); sol.tour=tour; n=numel(tour); tour=[tour tour(1)]; L=0; for i=1:n L=L+d(tour(i),tour(i+1)); end sol.L=L; z=L; end
- SortPopulation.m: این تابع برای مرتب سازی جمعیت قورباغه ها بکار می رود.
function [pop, SortOrder] = SortPopulation(pop) % Get Costs Costs = [pop.Cost]; % Sort the Costs Vector [~, SortOrder]=sort(Costs); % Apply the Sort Order to Population pop = pop(SortOrder); end
- RunFLA.m
- RandSample.m
- IsInRange.m
برای دریافت سورس کامل محصول لطفا آن را خریداری کنید.
تصاویر خروجی
ویدئوی معرفی
درباره سورس کد فروشنده دوره گرد با الگوریتم جهش قورباغه
سورس برنامه حل مسئله فروشنده دوره گرد TSP با الگوریتم جهش قورباغه SFLA در متلب عنوان محصولی است که در این پست به آن پرداخته شده است. محصول در نرم افزار متلب نوشته شده و بصورت کامل توسط گروه پشتیبانی پی استور تست و اجرا شده است. محصول دارای نشان تضمین کیفیت پی استور می باشد. برای دانلود محصول آن را خریداری کنید.
مباحث مرتبط با این موضوع
مباحث مرتبط با حل مسئله فروشنده دوره گرد
تاریخ انتشار: | 15 بهمن 1398 |
---|---|
تاریخ بروزرسانی: | 14 اردیبهشت 1399 |
حجم فایل: | 4 کیلوبایت |
فرمت فایل | m. |
هماهنگی با: | متلب 2017 و بالاتر |
سفارش تدریس: | توضیحات تکمیلی |
تاکنون 249 نفر این محصول را تهیه کرده اند و 1 نظر برای آن ثبت شده است.
نظرات و دیدگاه ها
قوانین ثبت دیدگاه
- لطفاً دیدگاه های خود را فارسی تایپ کنید.
- دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
- از درج دیدگاه های تکراری پرهیز نمایید.
- سوالات تخصصی خودتان را از طریق تیکت پشتیبانی مطرح کنید.
قیمت 39,000 تومان
تاریخ انتشار: | 15 بهمن 1398 |
---|---|
تاریخ بروزرسانی: | 14 اردیبهشت 1399 |
حجم فایل: | 4 کیلوبایت |
فرمت فایل | m. |
هماهنگی با: | متلب 2017 و بالاتر |
سفارش تدریس: | توضیحات تکمیلی |
1 بازخورد (مشاهده نظرات)
قیمت: 39,000 تومان
مدیریت و پشتیبانی
نظرات و پیشنهادات خود را با ما در میان بگذارید.