![]() |
سوال در مورد pso
همونطور که می دونید در pso بردارحرکت به صورت زیر محاسبه می شه :
vt=(vt-pbest)A+(vt-gbest)B من خیلی از مقالات زبان اصلی رو مطالعه کردم ولی هنوز نتونستم جوابم رو بگیرم سوالم اینه که می گن ضریب الفا و بتا (یا A,B ) باید بین 1.5 تا 2.5 باشه و اگه بالاتر یا پایین تر بره بهینه نیست و تا حالا هم کسی جوابی قانع کننده به من نداده . چرا بین 1.5 تا 2.5 بیشتر هم می گن عدد 2 خیلی عالی هست و عدد 1 کارامد نیست البته جوابو بدست میاره و لی بهینه بهینه نیست از دوستان خواهش می کنم اگه اطلاعاتی در این زمینه دارن بهم کمک کنن ، چون واقعا توش موندم ؟ با تشکر |
سلام دوست عزیز ، ابرهارت و کندی روی این دو تا ضریب یه سری تحقیقات کاملی انجام دادن (من به زودی لینک مقالشونو براتون میذارم) اما اون چیزی که من تا حالا متوجه شدم اینه که به صورت کلی این ضرایب به رفتار مسئله بستگی دارند و معمولا با یک سری سعی و خطا (اما روابط تحلیلی هم وجود دارند) به دست میان هرچند که انتخاب مقدار 2 برای دو ضریب استفاده از تجربه شخصی و گروهی امکان تمرکز برابری بین جستجوی محلی و سراسری رو امکان پذیر میکنه. اما چرا مقدار برابر و یک انتخاب نمیکنن؟ خوب این سوال خود من هم هست . من برای انجام پروژم اینکار رو انجام دادم و بعد از چند بار اجرای برنامه و مقایسه جواب ها متوجه شدم که مقدار ضرایب یک باعث میشه که بهینه ساز در بهینه محلی گیر کنه. ولی هنوز جواب دقیقی برای چراییش پیدا نکردم.
|
سلام
با تشکر از دوست عزیز برای راهنمایی تون من هم یه جواب پیدا کردم که شرحش اینه : دقیقاً این ضرایب بستگی به نوع مسئله شما دارد و شما به عنوان کسی که از مسئله آگاه هست تصمیم میگیرید که این ضرایب چه مقداری داشته باشند. حتی میتونند متغیر هم باشند و بسته به شرایط زمانی و مکانی ذرات تغییر کنند. مثلاً اگر ضریب الفا رو بیشتر از بتا درنظر بگیرید، ذرات (پرندگان) شبیه الگوریتم Hill Climbing عمل می کنند. و یا اگر ضریب بتا را که با تجربه جمعی ذرات در ارتباط هست بیش از حد افزایش بدید ممکن هست دچار همگرایی زودرس بشید. کلاً این ضرایب دست خودتون هستند هرطور که بخواید مقداردهی شون میکنید. مثلاً فرض کنید ذرات بعد از مدتی به حالت بهینه محلی برسند که مدنظر ما نیست، در اینجا میتونید ضریب آلفا رو افزایش بدید تا شاید ذرات بتوانند با توجه به تجربه شخصی خودشان از موقعیت بهینه محلی فاصله گرفته و سایر ذرات رو به دنبال خودشان بکشانند. البته معمولاً برای فرار از این موقعیت یک مرحله جهش به الگوریتم اضافه می کنند (مثل الگوریتم ژنتیک) در کل هرچه A بیشتر باشه ذرات به صورت خودمختار به جستجو می پردازند و پراکنده می شوند. و هرچه B بیشتر باشه ذرات حالت جمعی خودشون رو حفظ می کنند. باید سعی کنید یک توازن بین این دو ایجاد کنید. موفق باشید/ |
سلام دوستان
توضیحاتتون خیلی خوب بود ولی ذکر یک نکته رو ضروری دونستم که بگم. ضرایب الفا و بتا نشان از اجتماعی بودن ذره میدن. و این یه مفهوم که ما تو زندگیه روز مره هم باهاش برخورد داریم. هر کسی اجتماعی تر باشه مسلما به global optimum که مد نظرمونه نزدیک تر می شه. یکی از دوستانم از trap کردن ذره درون local minimum گله کرده بودن که باید خدمت ایشونم عرض کنم که در فرمول اصلی pso یک ترم به صورت(w*v(t داریم که اگه ترم w رو به صورت adaptive در نظر بگیریم(یعنی با نزدیک شدن به global minimum) مقدارش تغییر کنه این مشکل نیز رفع می شه. |
كسي ميتونه كلا توضيح بده را جع به psoيا لينكي كه توضيحات بيشتري در مورد اين تابع و نحوه ايجاده اون داده باشه
|
سلام
من كد multiple objective pso را لازم دارم ممنون ميشوم برام توضيح اين الگوريتم را هم برامبفرستسد. |
نقل قول:
این الگوریتم از حرکت جمعی پرندگان گرفته شده است به نظر من دررده الگوریتم هایی است که نسبت به مورچه وزنبور عسل ساده است وبیشتر برای بهینه سازی وبهینه کردن ازآن استفاده می شود |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۱۰:۲۹ بعد از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.