همانطور که در جلسه اول خدمتتان عرض کردیم، الگوریتمهای تکاملی معمولا الهام گرفته از طبیعت هستند. ما سیستم را طوری طراحی میکنیم که مسیر خود را به سوی تکامل سیر کند.
الگوریتمهای تکاملی معمولا بهینه ساز هستند، یعنی ما یک مسئلهای داریم که برای آن n پاسخ مختلف پیدا شده است. حال ما میخواهیم این n پاسخ را بهینه کنیم و بهترین را به عنوان راه حل اصلی انتخاب کنیم.
یکی از الگوریتمهای بهینهسازی، کلونی مورچگان بود که در جلسه اول درباره آن صحبت کردیم(ساختار الگوریتم کلونی مورچگان (ACO)).
کلمه PSO به معنی Particle Swarm Optimization یا بهینهسازی توده ذرات است. توده ذرات در طبیعت برای ما بیانگر هوش جمعی است. حرکت جمعی ماهیها درون آب یا پرندگان هنگام مهاجرت را در نظر بگیرید، همگی اعضا با یکدیگر به صورت کاملا هماهنگ حرکت میکنند، اگر قرار است شکار کنند با هم شکار میکنند و اگر قرار است طعمه شکار دیگری شوند با حرکت گروهی از چنگ شکارچی فرار میکنند.
نحوه کارکرد الگوریتم توده ذرات
در کل اگر بخواهیم به صورت ساده ساختار را بیان کنیم، تمام ذرات به دنبال بهترین نقطه میگردند، در هر بار که حرکت انجام میشود ذرات تابع فیتنس خود را محسابه میکنند(طبق فرمول زیر) هر ذرهای که بهترین فیتنس را داشته باشد(یعنی به پاسخ نزدیک تر است) به دیگران اطلاع میدهد و دیگر ذرات به سمت او حرکت میکنند. این حرکت تا زمانی ادامه پیدا میکند که همه ذرات در بهترین نقطه در کنار یکدیگر جمع شوند.
ویژگیهای الگوریتم توده ذرات
- هر ذره به طور مستقل، به دنبال نقطه بهينه میگردد.
- هر ذره در هم گام با سرعت یکسان حرکت میکند.
- هر ذره مكان بهترين نقطههایی كهتابحال درآن قرارداشته را به خاطر میسپارد.
- ذرات با هم همكاری می كنند و يكديگر را از مكانهايی كه جستجو كردهاند مطلع میسازند.
- هر ذره با ذرات همسایهاش، درارتباط است.
- هر ذره از فیتنس ذراتی كه در همسايگی قرار دارند مطلع است.
- هر ذره ازمكان بهترين ذراتی كه در همسايگيش قرار دارد مطلع است.
برای درک بهتر الگوریتم PSO، پیشنهاد میکنیم که پروژه دانلود رایگان پروژه متلب، مسیریابی رباتهای خودمختار توسط الگوریتم PSO را دانلود، و توسط نرم افزار متلب اجرا کنید.