الگوریتم PSO در متلب عنوان موضوعی است که در این پست به آن پرداخته شده است. این الگوریتم با نام Particle Swarm Optimization Algorithm یا الگوریتم PSO نیز نامیده میشود. در این مجموعه سعی می کنیم تا جزئیات بهتری از سورس کد الگوریتم ازدحام ذرات PSO در متلب ارائه دهیم.
الگوریتم بهینه سازی PSO رفتارهای ازدحام پرندگان را شبیه سازی میکند. تصور کنید گروهی از پرندگان به طور تصادفی در یک منطقه در معرض غذا قرار میگیرند. در منطقه مورد جستجو تنها یک قطعه غذا وجود دارد. همه پرندگان نمیدانند کجا غذا است. اما آنها میدانند که چقدر مواد غذایی در هر تکرار است. بنابراین بهترین استراتژی برای یافتن غذا چیست؟ راه حل این است که دنبال پرندهای که نزدیکتر به غذا است را دنبال کنید.
الگوریتم ازدحام ذرات PSO
الگوریتم PSO با گروهی از ذرات تصادفی (راه حل) آغاز میشود و سپس با به روز رسانی نسلها جستجو میکند. در هر تکرار، هر ذره با دو ارزش “بهترین” به روزرسانی میشود. اولین مورد بهترین راه حل ( تابع تناسب ) است که تاکنون به دست آورده است. (ارزش تناسب نیز ذخیره می شود.) این ارزش pbest نامیده میشود. یکی دیگر از “بهترینها” ارزشی است که تا کنون توسط هر ذره در جمعیت به دست آمده است.
این بهترین ارزش جهانی بهترین است و به نام gbest است. هنگامی که یک ذره بخشی از جمعیت را به عنوان همسایگان توپولوژیکی خود میگیرد، بهترین ارزش بهترین محلی است و به نام lbest نامیده میشود.
پس از پیدا کردن بهترین مقادیر pbest و gbest ذره سرعت و موقعیت خود را با معادله زیر (۱) و (۲) به روز میکند.
که در آن v سرعت ذرات است، present ذره فعلی (راه حل) است. pbest و gbest قبلا تعریف شده اند. rand یک عدد تصادفی بین (۰،۱) است. C1، C2 عامل یادگیری هستند. معمولا c1 = c2 = 2 هستند.
آموزش مفاهیم تئوری و نحوه پیاده سازی الگوریتم PSO در متلب
فیلم آموزش الگوریتم PSO در متلب از دو بخش تئوری و عملی تشکیل شده است. در بخش تئوری به بررسی رفتار گروههای حیوانات و چگونگی تبادل اطلاعات در گروههای حیوانات و در بخش عملی نیز الگوریتم ازدحام ذرات در متلب پیاده سازی شده و نمودار همگرایی آن نشان داده شده است. اگر نیاز به یادگیری مراحل و نحوه پیاده سازی الگوریتم دارید میتوانید از لینک زیر آموزش نحوه پیاده سازی الگوریتم را تهیه کنید.
سورس کد الگوریتم PSO در Matlab شامل یک فایل با یک Script که در واقع کد اصلی برنامه میباشد و بقیه فراخوانیها از آنجا انجام میشود. همچنین این برنامه با ۶ تابع تست ارائه شده است. توابع تست برای ارزیابی الگوریتمهای بهینه سازی بکار میروند که در این سایت برای توضیحات بیشتر در مورد توابع تست الگوریتمهای بهینه سازی مقاله ای آماده کردیم. توابع تست این پروژه عبارتند از :
تابع SPHERE
تابع ACKLEY
تابع SUM SQUARES
تابع ROSENBROCK
تابع SUM OF DIFFERENT POWERS
تابع ZAKHAROV
توابع زیادی برای تست عملکرد الگوریتمهای بهینه سازی وجود دارد که در اینجا ما به این ۶ تابع اکتفا کردهایم. همچنین لازم به ذکر است که برای اجرای الگوریتم بهینه سازی روی مسئله مورد نظر تابع هزینه یا Cost Function آن تغییر خواهد کرد و بقیه الگوریتم دست نخورده باقی میماند بنابراین برای اجرای الگوریتم PSO برای بهینه سازی مسئله خودتان تابع هزینه خود را بر اساس پارامترهای مسئله خود تعریف کنید.
در ادامه قسمت هایی از سورس کد الگوریتم PSO در Matlab آورده شده است.
%% PSO Main Loop
for it=1:MaxIt
for i=1:nPop
% Update Velocity
particle(i).Velocity = w*particle(i).Velocity ...
+c1*rand(VarSize).*(particle(i).Best.Position-particle(i).Position) ...
+c2*rand(VarSize).*(BestSol.Position-particle(i).Position);
% Apply Velocity Limits
particle(i).Velocity = max(particle(i).Velocity,VelMin);
particle(i).Velocity = min(particle(i).Velocity,VelMax);
% Update Position
particle(i).Position = particle(i).Position + particle(i).Velocity;
% Velocity Mirror Effect
IsOutside=(particle(i).Position<VarMin | particle(i).Position>VarMax);
particle(i).Velocity(IsOutside)=-particle(i).Velocity(IsOutside);
% Apply Position Limits
particle(i).Position = max(particle(i).Position,VarMin);
particle(i).Position = min(particle(i).Position,VarMax);
% Evaluation
particle(i).Cost = CostFunction(particle(i).Position);
% Mutation
for k=1:2
NewParticle=particle(i);
NewParticle.Position=Mutate(particle(i).Position, mu);
NewParticle.Cost=CostFunction(NewParticle.Position);
if NewParticle.Cost<=particle(i).Cost || rand < 0.1
particle(i)=NewParticle;
end
end
% Update Personal Best
if particle(i).Cost<particle(i).Best.Cost
particle(i).Best.Position=particle(i).Position;
particle(i).Best.Cost=particle(i).Cost;
%particle(i).Best.Sol=particle(i).Sol;
% Update Global Best
if particle(i).Best.Cost<BestSol.Cost
BestSol=particle(i).Best;
end
end
end
درباره الگوریتم ازدحام ذرات در متلب
سورس کد الگوریتم PSO در متلب در محیط Matlab 2014b نوشته و اجرا شده است این سورس کد توسط تیم پشتیبانی پی استور تست و اجرا شده است. کیفیت اثر توسط پی استور تضمین میشود و اثر دارای نشان تضمین کیفیت پی استور میباشد. برای دانلود اثر مذکور آن را خریداری فرمایید به محض خرید لینک دانلود در دسترس خواهد بود.
مشخصات تکمیلی سورس کد
نام اثر:
الگوریتم PSO در متلب (سورس کامل الگوریتم ازدحام ذرات در متلب)
متشکل از اساتید و فارغ التحصیلان رشتههای فنی - مهندسی
تیم برنامه نویسی پی استور یکی از اولین گروههای تشکیل شده در مجموعه آموزشی پی استور میباشد. این تیم از اساتید مجرب و فارغ التحصیلان رشتههای فنی و مهندسی تشکیل شده که در زمینههای مختلف برنامهنویسی و تهیه سورس کد فعال هستند.
راهنمای خرید و ثبت سفارش
اگر در مورد این اثر یا نحوه تهیه آن سوالی دارید؟
با شماره تلفن واحد مخاطبین 44225175 (پیش شماره 041) تماس بگیرید. – تمام ساعات اداری
با ما مکاتبه ایمیلی داشته باشید (این لینک). – تمام ساعات
نظرات
مدیریت و پشتیبانی
نظرات و پیشنهادات خود را با ما در میان بگذارید.