آموزش الگوریتم pso در متلبدوشنبه 02, نوامبر 2020
آموزش الگوریتم pso در متلب
در ادامه آموزش های سایت همیارپروژه برنامه نویسی متلب ارائه خواهد شد .آموزشها از مقدماتی تا پیشرفته ادامه دارد و ما به شما کدنویسی در نرم افزار متلب را رایگان یاد خواهیم داد. با ما همراه باشید.
آموزش الگوریتم pso در متلب
الگوریتم بهینه سازی ازدحام ذرات آن دسته الگوریتم های بهینه سازی است که بر مبنای تولید تصادفی جمعیت اولیه عمل می کند.
الگوریتم بر پایه پرواز دسته پرندگان و حرکت دسته جمعی ماهی ها شکل گرفته است. در زیر, تعاریف اولیه الگوریتم pso بررسی شده است,
فرض کنید یک فضای جستجوی d بعدی داریم. i آمین ذره در این فضای d بعدی باب بردار موقعیت x به صورت زیر تعریف می شود:
بردار سرعتi امین ذره با بردار Vi تعریف می شود:
بهترین موقعیتی که ذره iام پیدا کرده است رابا Pi.bestنشان می دهیم که به صورت زیر است:
بهترین موقعیتی که بهترین زره در بین کل ذرات به دست آورده است را با p g.best نشان می دهیم:
برای به روز رسانی هر کدام از ذرات رابطه زیر استفاده می کنیم:
w: ضریب وزنی اینرسی ( حرکت در مسیر خودی) نشان دهنده میزان تاثیر بردار سرعت تکرار قبل ) بر روی بردار سرعت در تکرار فعلی( ) است.
c1:ضریب ثابت آموزش ( در مسیر بهترین مقدار ذره مورد بررسی)
c2: ضریب ثابت آموزش( حرکت در مسیر بهترین ذره یافت شده کل جمعیت)
Rand1,Rand2 دو عدد تصادفی با توزیع یکنواخت در بازه صفر تا یک
Vi(t-1) بردار سرعت در تکرارt-1ام
Xi(t-1) بردار موقعیت در تکرار( t-1 ) ام
برای جلوگیری از افزایش بیش از حد سرعت حرکت یک ذره در حرکت از یک محل به محل دیگر( واگرا شدن بردار سرعت)، سرعت را به رنج محدود میکنیم، یعنی حد بالا و حد پایین سرعت نوع مسئله تعیین می گردد.
اگر در مسئله مورد بررسی قید و یا قیودی وجود داشته باشد، باید توسط مکانیزمی این قیود لحاظ گردند تا از ورود ذرات به فضای غیر مجاز جلوگیری شود. این مکانیزم را اصطلاحاً محدودسازی فضا می نامند. اگر از این مکانیزم ها استفاده نشود، پاسخ پیدا شده توسط الگوریتم اشتباه و یا غیر قابل اطمینان است. مثلاً تابعی زیر برای مقادیر منفی x در زبان های برنامه نویسی، خطا محسوب می شود.
مکانیزمی که برای لحاظ کردن این قید میشود به صورت زیر است:
در تابه مقادیر مجازx: یعنی هیچ گونه تغییری نگاشت می شوند اما مقادیر غیر مجازx یعنیقدار مجاز نگاشت می شوند. کلی تر اگر بخواهیم محل ذرات به صورت [αmin,αmax]D باشد, برای محدودسازی می توان از رابطه زیر استفاده کرد:.
با استفاده از رابطه فوق محل ذراتی که در خارج از محدوده تعریف شده قرار داشته باشند به داخل محدوده مجاز نگاشت می شوند سایر ذراتی که در محدوده مجاز قرار دارند تغییر داده نمی شود.
مراحل الگوریتم بهینه سازی pso
۱ تولید تصادفی جمعیت اولیه ذرات
تولید تصادفی جمعیت اولیه به طور ساده عبارت است از تعیین تصادفی محل اولیه ذرات با توزیع یکنواخت در فضای حل( فضای جستجو). مرحله تولید تصادفی جمعیت اولیه تقریباً در تمامی الگوریتم های بهینه سازی احتمالاتی وجود دارد. اما در این الگوریتم علاوه بر محل تصادفی اولیه ذرات, مقداری برای سرعت اولیه ذرات نیز اختصاص می یابد. رنگ پیشنهادی اولیه برای سرعت ذرات را می توان از رابطه زیر استخراج کرد.
۲. انتخاب تعداد ذرات اولیه
تعداد جمعیت اولیه با توجه به مسئله تعیین می گردد. در حالت کلی تعداد ذرات اولیه مسالهی بین پارامترهای درگیر در مسئله است. به طور تجربی انتخاب جمعیت اولیه ذرات به تعداد ۲۰ تا ۳۰ انتخاب مناسبی است که تقریباً برای تمامی مسائل تست به خوبی جواب می دهد. میتوانید تعداد ذرات را کمی بیشتر از حد لازم نیز در نظر بگیرید تا کمی حاشیه ایمنی در مواجهه با مینیموم های محلی داشته باشید.
۳. ارزیابی تابع هدف( محاسبه هزینه یا برازندگی) ذرات
در این مرحله باید هر یک از ذرات را که نشان دهنده یک حل برای مسئله مورد بررسی است, ارزیابی کنیم. بسته به مسئله مورد بررسی, روش ارزیابی متفاوت خواهد بود. مثلاً اگر امکان تعریف یک تابع ریاضی برای هدف وجود داشته باشد, با جایگذاری پارامترهای ورودی( که از بردار موقعیت ذره استخراج شده اند) در این تابع ریاضی, به راحتی مقدار هزینه این ذره محاسبه خواهد شد. توجه داشته باشید که هر ذره حاوی اطلاعات کاملی از پارامترهای ورودی مسئله است دین اطلاعات استخراج شده و در تابع هدف قرار می گیرد.
اوقات امکان تعریف یک تابع ریاضی برای ارزیابی ذرات وجود ندارد. این حالت زمانی پیش می آید که ما الگوریتم را با یک نرمافزار دیگر لینک کرده باشیم و و یا الگوریتم را برای داده های تجربی( آزمایش) استفاده می کنیم. در این گونه موارد باید به اطلاعات مربوط به پارامترهای ورودی نرم افزار یا آزمایش را از بردار موقعیت ذرات استخراج کرده و در اختیار نرمافزار لینک شده با الگوریتم جایگذاری کرده و یا در آزمایش مربوطه اعمال نمود. با اجرای نرم افزار و یا انجام آزمایش و مشاهده و اندازه گیری نتایج هزینهای را که هر یک از ذرات در پی دارند مشخص خواهد شد.
۴٫ثبت بهترین موقعیت برای هر ذره (pi.best) و بهترین موقعیت در بین کل ذره ها(Pg.best) اگر در تکرار اول باشیمt=1 موقعیت فعلی هر ذره را به عنوان بهترین محل یافت شده برای آن ذره در نظر می گیریم.
در سایر تکرار ها مقدار هزینه بدست آمده برای را در مرحله ۲ را با مقدار بهترین هزینه به دست آمده برای تک تک ذرات مقایسه میکنیم. اگر این هزینه کمتر از بهترین هزینه ثبت شده برای این زره باشد، آنگاه محل و هزینه این زره جایگزین مقدار قبلی می گردد، در غیر این صورت تغییری در محل و هزینه ثبت شده برای این زره ایجاد نمی شود، یعنی:
بهروزرسانی بردار سرعت تمامی ذره ها
ضرایب w,c1,c2 با توجه به مسئله مورد نظر به روش تجربی تعیین می گردند. اما به عنوان یک قانون کلی در نظر داشته باشید که w باید کمتر از یک باشد زیرا اگر بزرگتر از یک انتخاب شود،(t)۷ افزایش می یابد تا جایی که واگرا شود. همچنین توجه داشته باشید، هر چند در تئوری ضریب w می تواند منفی نیز باشد اما در استفاده عملی از این الگوریتم هیچگاه این ضرایب را منفی در نظر نگیرید زیرا منفی بودن دابلیو موجب ایجاد نوسان در(t )7 میشود. انتخاب مقدار کوچک برای این ضریبw نیز مشکلاتی را در پی خواهد داشت. اغلب در الگوریتم pso مقدار این ضریب را مثبت و در رنج ۰،۷ تا ۰٫۸ در نظر می گیرندc2,c3 نیز باید زیاد بزرگ انتخاب شوند زیرا انتخاب مقادیر بزرگ برای این دوزری باعث انحراف شدید ذره از مسیر خودی میشود. اغلب در الگوریتم pso مقدار این ضرایب را مثبت و در رنج ۱،۵الی ۱،۷ در نظر می گیرند.
۵ تست همگرایی
تست همگرایی در این الگوریتم مانند سایر الگوریتم های بهینه سازی است. برای بررسی الگوریتم روش های گوناگون وجود دارد. برای مثال می توان تعداد مشخصی تکرار را از همان ابتدا معلوم کرد و در هر مرحله بررسی کرد که آیا تعداد تکرارها به مقدار تعیین شده رسیده است یا خیر. اگر تعداد تکرارها کوچکتر از مقدار تعیین شده اولیه باشد، آنگاه باید به مرحله دو بازگردید در غیر این صورت الگوریتم پایان می پذیرد. روش دیگری که اغلب در تست همگرایی الگوریتم استفاده می شود، اگر در چند تکرار متوالی مثلاً ۱۵ یا ۲۰ تکرار تغییری در مقدار هزینه بهترین ذره ایجاد نگردد آنگاه الگوریتم پایان می یابد، در غیر این صورت باید به مرحله ۲ بازگردید.
در اینجا آشنایی با محیط متلب بخش نود و سوم به پایان رسیده است و در آموزش های بعدی به مباحث دیگر آموزش متلب می پردازیم. همچنین از شما مخاطبین عزیز سایت همیارپروژه دعوت می کنم که برای انجام پروژه متلب خود آموزش های ما را دنبال نمایید.
نویسنده: زهرا رستمی
جهت سفارش پروژه به لینک زیر مراجعه نمایید :
همچنین می توانید برای ارتباط سریعتر با شماره و آیدی تلگرام زیر تماس حاصل کنید :
۰۹۱۲۹۵۴۰۱۲۲ – آیدی تلگرام : @fnalk
از طریق کلیک برروی آیکن های زیر میتوانید پروژه خود را در تلگرام و یا واتساپ برای ما ارسال کنید:
ثبت سفارش در واتس آپ ثبت سفارش در تلگرام
دیدگاهتان را بنویسید