سورس کد الگوریتم تکاملی تفاضلی برای TSP یا حل مسئله فروشنده دوره گرد عنوان موضوعی است که در این پست به آن پرداخته شده است. الگوریتم تکاملی تفاضلی (Differential Eevolution Algorithm) یا الگوریتم DE یک الگوریتم بهینه سازی است و مشابه اساس الگوی الگوریتم ژنتیک کار می کند. این الگوریتم یک الگوریتم تکاملی است که اولین بار در سال 1995 توسط Rainer Storn و Kenneth Price معرفی شد.
الگوریتم DE توانایی خوبی در بهینه سازی توابع غیرخطی مشتق ناپذیر دارد که به عنوان روشی قدرتمند و سریع برای مسائل بهینه سازی در فضاهای پیوسته معرفی شده است. در ادامه توضیحات مختصری در رابطه با الگوریتم تکاملی تفاضلی و مسئله فروشنده دوره گرد ارائه می شود.
برنامهنویس: تیم برنامه نویسی پی استور
متشکل از اساتید و فارغ التحصیلان رشته های فنی - مهندسی
تیم برنامه نویسی پی استور یکی از اولین گروه های تشکیل شده در مجموعه آموزشی پی استور می باشد. این تیم از اساتید مجرب و فارغ التحصیلان رشته های فنی و مهندسی تشکیل شده که در زمینه های مختلف برنامه نویسی و تهیه سورس کد فعال هستند.
الگوریتم تکاملی تفاضلی Differential Eevolution Algorithm
الگوریتم DE جهت غلبه بر عیب اصلی الگوریتم ژنتیک، یعنی نبود جستجوی محلی دراین الگوریتم ارائه شده است، تفاوت اصلی بین الگوریتم های ژنتیک و الگوریتم DE در عملگر انتخاب Selection Operators است. در عملگر انتخاب الگوریتم GA ،شانس انتخاب یک جواب به عنوان یکی از والدین وابسته به مقدار شایستگی آن می باشد، اما در الگوریتم DE همه جواب ها دارای شانس مساوی جهت انتخاب شدن می باشند.
یعنی شانس انتخاب شدن، وابسته به مقدار شایستگی آنها نمی باشد، پس از این که یک جواب جدید با استفاده از یک عملگر جهش mutation و عملگر crossover تولید شد، جواب جدید با مقدار قبلی مقایسه می شود و در صورت بهتر بودن جایگزین می گردد.
در الگوریتم تکاملی تفاضلی بر خلاف دیگر الگورتیم ها که اول عملگر crossover و سپس عملگر mutation انجام می شود به گونه ای که ابتدا عملگر جهش اعمال شده و سپس عملگر crossover اعمال می شود تا بدین وسیله نسل جدید ایجاد گردد. برای اعمال عملگر mutation از توزیع خاصی استفاده نمی شود بلکه طول گام جهش برابر با مقدار از فاصله میان اعضای فعلی تعیین می شود.
برای درک الگوریتم تکاملی تفاضلی توضیح کامل این الگوریتم را می توانید در همین سایت از مقاله ای کامل تحت عنوان الگوریتم تکاملی تفاضلی Differential Eevolution Algorithm مطالعه فرمایید.
مسئله فروشنده دورگرد TSP
مساله فروشنده دوره گرد Travelling salesman problem یا به اختصار TSP مساله اي است که شرح آن خيلي آسان مي باشد. تعريف آن بدين صورت است که تعداد متناهي شهر با هزينه پيمايش بين هر جفت از آنها داده مي شود و هدف مساله اين است که يک فروشنده دوره گرد تمامي اين شهرها را به گونه اي ملاقات کند که هر يک از اين شهرها را فقط يک بارملاقات کرده و دوباره به شهر آغازين برگردد با اين شرط که با کمترين هزينه پيمايش اين کار را انجام دهد.
به طور کلي هدف پيدا کردن کم هزينه ترين تور براي ملاقات همه شهرها و بازگشت به شهر آغازين حرکت است. مساله فروشنده دوره گرد در شکل ساده و اختصاري با نام TSP شناخته مي شود. شکل زیر يک نمونه جواب از مساله فروشنده دوره گرد که در سال 1591 براي 15 شهر از کشور آمريکا مطرح شد را نشان مي دهد که با روش شاخه و حد حل شد.
سور س حل مسئله فروشنده دوره گرد TSP با الگوریتم DE در متلب
در این قسمت سورس برنامه حل مسئله فروشنده دوره گرد TSP با الگوریتم تکاملی تفاضلی DEدر متلب آماده شده است این سورس کد شامل 4 فایل می باشد که عبارتند از:
- DE.m: فایل اصلی برای اجرای الگوریتم می باشد و بقیه فراخوانی ها از این قسمت انجام می شود.
- CreateModel.m: مختصات شهرها و تعداد و فاصله آنها در این تابع تعریف و ایجاد می شود.
- PlotSolution.m: رسم چگونگی اتصال شهرها یا نشان دادن جواب مسئله در این تابع انجام می شود.
- TourLength.m: تابع هزینه یا Cost Function می باشد و عبارت است از طول مسیرهای یک جواب.
قسمتی از سورس کد مربوط به DE.m در اینجا نوشته شده است.
clc; clear; close all; %% Problem Definition model=CreateModel(); % Create Problem Model CostFunction=@(tour) TourLength(tour,model); nVar=model.n; % Number of Decision Variables VarSize=[1 nVar]; % Decision Variables Matrix Size VarMin=-5; % Lower Bound of Decision Variables VarMax= 5; % Upper Bound of Decision Variables %% DE Parameters MaxIt=1000; % Maximum Number of Iterations nPop=100; % Population Size beta_min=0.3; % Lower Bound of Scaling Factor beta_max=0.7; % Upper Bound of Scaling Factor pCR=0.3; % Crossover Probability %% Initialization empty_individual.Position=[]; empty_individual.Cost=[]; BestSol.Cost=inf; pop=repmat(empty_individual,nPop,1); for i=1:nPop pop(i).Position=unifrnd(VarMin,VarMax,VarSize); [~,sol]=sort(pop(i).Position); pop(i).Cost=CostFunction(sol); if pop(i).Cost<BestSol.Cost BestSol=pop(i); end end
تصاویر خروجی الگوریتم تکاملی تفاضلی برای TSP
ویدئوی معرفی محصول
درباره الگوریتم تکاملی تفاضلی برای TSP
سورس کد الگوریتم تکاملی تفاضلی برای حل مسئله فروشنده دوره گرد TSP در متلب عنوان محصولی است که در این پست به آن پرداخته شده است. محصول در نرم افزار Matlab نوشته شده و بصورت کامل توسط گروه پشتیبانی پی استور تست و اجرا شده است. محصول دارای نشان تضمین کیفیت پی استور می باشد. برای دانلود محصول آن را خریداری کنید بلافاصله پس از خرید لینک دانلود در دسترس خواهد بود.
مباحث مرتبط با این موضوع
تاریخ انتشار: | 15 فروردین 1398 |
---|---|
تاریخ بروزرسانی: | 8 شهریور 1398 |
حجم فایل: | 2.2 کیلوبایت |
فرمت فایل | m. در قالب متلب |
نسخه: | 1.0 |
شناسه اثر: | ندارد |
هماهنگی با: | Matlab 2009 و بالاتر |
تاکنون 333 نفر این محصول را تهیه کرده اند و 1 نظر برای آن ثبت شده است.
نظرات و دیدگاه ها
قوانین ثبت دیدگاه
- لطفاً دیدگاه های خود را فارسی تایپ کنید.
- دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
- از درج دیدگاه های تکراری پرهیز نمایید.
- سوالات تخصصی خودتان را از طریق تیکت پشتیبانی مطرح کنید.
قیمت 49,000 تومان
تاریخ انتشار: | 15 فروردین 1398 |
---|---|
تاریخ بروزرسانی: | 8 شهریور 1398 |
حجم فایل: | 2.2 کیلوبایت |
فرمت فایل | m. در قالب متلب |
نسخه: | 1.0 |
شناسه اثر: | ندارد |
هماهنگی با: | Matlab 2009 و بالاتر |
1 بازخورد (مشاهده نظرات)
قیمت: 49,000 تومان
مدیریت و پشتیبانی
نظرات و دیدگاه های خود را با ما در میان بگذارید.