صفحه 1:
صفحه 2:
الگوریتم 60 5 ۳( ازدحام ذرات یا برررسی رفتارپررندگان/ماهی ها )
صفحه 3:
PSO
ساختار الگوریتم الهام گرفته شده از زندگی موجوداتی است که
بصورت گروهی زندگی می کنند.
همه پرندگان دنبال پرنده اول هستند با یک انحراف.
۱6/2 ها با ذرلشپ رندگانبه سم ولحیموفقمیلمی
ans
(نّازجمله هیوریستیک های بسیار ۴ ۱/۲۱۷( است.
صفحه 4:
ايده يايه در PSO
أهر ذره در حال جابجابي است (در غير اینصورت نميتواند جستجو کندا)
all دليل اين جابجابى؛ داراى سرعت ابست.
al ذره در هر مرحله موقعيتى را كه بهترين نتبجه رادر آن داشته به خاطر میسپارد. (بهشرين موقعييت
فردی هر ذره)
قط دلايل فوق بتنهايى خبلى خوب نبستند. ذرات به اين كمك احتياج دارند كه بدانند در كجا به جستجو
ai
لأذرات در روه ذرات با هم هميارى مىكنند. ذرات اطلاعاتى كه دربرة موقعيتى كه در أن هستند را باهم
تبادل م كنئدء
صفحه 5:
هر ذره چه کارهایی را انجام می دهد؟
ایک ذره در هر مرحلة زمانی (۲11068160) باید به یک موقعیت جدید جابجا شود. این جابجایی با تنظيم
سرعت ذره انجام میشود.
#لاتنظيم سرعت بقرار زير است:
-سرعت فعلی
- سیم وزنيافتة تصادفی در جهت بهترین موقعیت منفرد هر ذره
- سهم وزنیافتة تصادفی در جهت بهترین موقعیت موجود در همسایگی ذره
#اننظيم موقعیت بشکل زي
الامقدار قديمى موقعيت
-سرعت جدید
صفحه 6:
جستجوی نا آگاهانه یا کور
جستجوی آگاهانه با هیورستیک 6 ۳
wt
جستجوی متاهیوریستیک Jee.
5 ۲۰
صفحه 7:
الگوریتمهای فرا ابتکاری با فراتکاملی یا فرااکتشافی
* نوعی از الگوریتمهای تصادفی هستند که برای یافتن پاسخ بهینه به کار
میروند.
روشها و الگوریتمهای بهینهسازی
الف.الگوریتمهای دقیق( 62261 )
قادر به یافتن جواب بهینه به صورت دقیق هستند اما در مورد مسائل
بهینهسازی سخت کارایی کافی ندارند و زمان اجرای آنها متناسب با ابعاد
مسائل به صورت نمایی افزایش مییابد.
ب. الگوریتمهای تقریبی 9G approximate algorithms)) «
یافتن جوابهای خوب (نزدیک به بهینه) در زمان حل کوتاه براى مسائل
بهینهسازی سخت هستند.
صفحه 8:
انواع الگوریتم های تقریبی
* الگوریتمهای ابتکاری (516ز۳6۲)
(meta-heuristic),¢ (cu1|,3 °
۶ فوق ابتکاری Chyper heuristic)
الگوریتمهای فراابتکاری. یکی از انواع الگوربتمهای بهینهسازی تقریبی
هستند که دارای راهکارهای برونرفت از نقاط بهینه محلی هستند و
قابلیت کاربرد در طیف گستردهای از مسائل را دارند.
صفحه 9:
دستهبندی الگوریتمهای فراابتکاری
* مبتنی برسیک جواب و مبتنی بر جمعیت: الگوربتمهای مبتنی بر
یک جواب در حین فرایند جستجو یک جواب را تغییر میدهند. در
حللی که در الگوریتمهای مبتنی بر جمعیت در حین جستجو یک
جمعیت از جوابها در نظر گرفته میشوند.
* الهام گرفته شده از طبیعت و بدون الهام از طبیعت: بسیاری از
الگوریتمهای فراابتکاری از طبیعت الهام گرفته شدهلند. در این میان
برخی از الگوریتمهای فراابتکاری نیز از طبیعت الهام گرفته نشدهاند.
صفحه 10:
۰ با حافظه و بدون حافظه
* برخی از الگوربتمهای فرابتکاری فاقد حافظه
میباشند. به اين معنا كه. اين نوع الكوريتمها از
اطلاعات بدست امده در حين جستجو استفاده
نمی کنند (به طور مثال تبرید شبیهسازی شده).
* برخی از الگوریتمهای فراابتکاری نظیر جستجوی
ممنوعه از حافظه استفاده مى كنند. اين حافظه
اطلاعات بدست آمده در حين جستجو را در خود
ذخيره مى WS
صفحه 11:
۰ قطعی و احتمالی
یک الگوریتم فراابتکاری قطعی نظیر جستجوی ممنوعه. مسئله را
با استفاده از تصمیمات قطعی حل میکند. اما در الگوریتمهای
فراابتکاری احتمللی نظیر تبیید شبیهسازی شده.یک سری قوانین
احتمالی در حین جستجو مورد استفاده قرار میگیرد.
صفحه 12:
انواع الگوریتمهای فر اابتکاری بر پایه جمعیت
الگوریتمهای تکاملی(الگوریتم ژنتیک. برنامهریزی ژنتیک ...4
بهینهسازی کلونی مورچگان؛
کلونی زنبورهاء
روش بهینهسازی ازدحام ذرات.
الگوریتم قهرمانی در لیگهای ورزشی.
بهینهسازی ملهم از فیزیک نور
الگوریتم ريشه -پاجوش و الگوریتم چکه آبهای هوشمند
صفحه 13:
انواع الگوریتمهای متداول فراابتکاری مبتنی بر یک جواب
* الگوریتم جستجوی ممنوعه
* الگوریتم تبرید شبیهسازی شده
صفحه 14:
نکات کلیدی ۳50
خاصیت هوش جمعی
هوش ذرات
کنترل ۳۴5۵
تعداد ذرات
محدوده ذرات
شرایط توقف
صفحه 15:
هو ش حمء Swarm Intelligence
هوش جمعی خاصیتی است سیستماتیک که در این سیستم؛
عامل هابه طور محلی با هم همکاری می نمایند و رفتار جمعی
تمام عامل هاء باعث یک همگرایی در نقطه ای نزدیک به
جواب بهینه سراسری می شود. نقطه قوت این الگوریتم عدم
نیاز به یسك کنترل سراسری می باشد. هر ذره(عامل) خود
مختاری نسبی دار که می تواند در سراسر فضای جواب ها
OS > کند و می بایست با سایرذرات(عامل ها) همکاری
داشته باشد. یکی از الگوریتم های مشهور هوش جمعی بهینه
سازی توده ذرات می باشند
صفحه 16:
هو ش حمه Swarm Intelligence
در کاربردهای محاسباتی, از موجودلتی مانند مورچه هاء زنبورهاء
موربلنه هاء دسته های ماهیان و دسته ی پرند گان» الگو برداری
هی شود. در این نوع اجتماعات. هر یکت از موجودات ساختار
نستباً ساده ای دارند ولی رفتار جمعی آنها بی نهایت پیچیده است.
برای مثال در کولهنی مورچه هاء هر یکت از مورچه ها یک کار
ساده ی مخصوص را انجام می دهد ولی به طور جمعی عمل و
رفتار مورچه هاء ساختن بهینه ی لایه محافظت از ملکه و
نوزادانء تمیزکردن لانه» یافتن بهترین منابع غذایی و بهینه
سازی استراتژی حمله را تضمین می کند.
صفحه 17:
هوش جمعی Swarm Intelligence
مثال همیاری:
>) god) go
صفحه 18:
هوش ذرات
* بر پایه یکسری رفتار جمعی
* بصورت غیر متمرکز و خود سازمان یافته
* تاکید برروی کنش متقابل ما بین عامل ها که رفتار عمومی می
باشد.
صفحه 19:
کنترل ۳50
هنگامیکه 50 به مسایل بهینه سازی اعمال می شود دو
مرحله کلیدی دارد:
الف. نمایش راه حل
ب. تابع ۴۱۲۳6۵55
صفحه 20:
تعداد و محدوده ذرات
٠ ۳۵۲۱06 معمولذرلندر محدودم۲۰-۴۰لستدر برخیمسلیل
خاص۱۰۰ تا۲۰۰ همدر نظر گرفته میشسود.
* با توجه به مساله ای که بهینه سازی می شود متفاوت است.
صفحه 21:
شرایط توقف
تعداد تکر ار
زمان
عدم بهبود
همگرایی جوابها
صفحه 22:
PSOsLI jo
* قابلیت حل اکثر مسایل بهینه سازی( توابع ریاضی,
مسیریابی, آموزش شبکه های عصبی, کنترل
حرکت روبات ها و..) . _
* تنها الگوریتم تکاملی که در آن اعضای جمعیت در
طول اجرا حذف نمی شوند, فقط مقدار هر ذره
٠ نیاز به عملیات سنگین ریاضی مانند گرادیان گیری
ندارد.
صفحه 23:
یک روش مرتبه صفر است.
تقریب مرتبه صفر (همچنین مرتبه 0*8) اصطلاحی است که دانشمندان برای اولین حدس
تحصیل شده برای یک پاسخ استفاده میکنند. بسیاری از پیش فرضهای ساده ساخته میشود و
زملنی که یکی مورد نیاز باشد. اغلب مرتبه ای از مقادیر پاسخها ارلئه میشود. برای مثال شما
ممکن است بگویید «لين شهر چند هزار سکنه دارد» در حالیکه تعداد سکنه در حقیقت ۳۹۹۱۴
نفر در وآقعیت است. لین مسئله گاهی اوقات به عنوان مرتبه بزرگی تقریب عنوان میشود.
منظور از صفر در «مرتبه صفر» نشان دهنده لین وآقعیت است که تنها بیان عدد توصیف ضعیفی
از «چند» است.
مرتبه صفرییک تلبع (تلبع: فرم ریاضیلتی که بر روی چندین نقطه قلبل تنظیم باشد) یک
تلبع ثلبت یاییک be صاف بدون شیب خواهد بود:ییک چند جمله ای از مرتبه صفر. به عنوان
مثال:
zx =(0,1,2]
y = (3,3, 5]
y~ f(z) = 3.67
صفحه 24:
0 حافظه دار است.
* علاوه بردانستن مهمترین مقدار بدست آمده از مکان لن نیز آگاه
است(حافظه داربودن).
* در050جمعیت یا گروه تنها به پارامترهای کیفیت]0-065و-9
51پاسخ می دهد(کیفیت)و جمعیت تنها زملنی حالتش را تغییر
می دهد که]0-065 تغییر کند(پایداری) و زمانیکه9-0651
تغییر کند جمعیت خودش را با آن تطبیق می دهدروفق پذیری)
* همه ذرات در طول اجرا باقی می مانند و در اجرای الکوریتم دخیل
صفحه 25:
سس
ابداع كنندة :١
Russell
Eberhart
eberhart@engr.iupui.edu
صفحه 26:
APRS
ابداع کننده ۲:
James
Kenned
Kenntdy_Jim@bls.gov
صفحه 27:
تار دخجه
اولين مقاله در زمينة PSO
در سال 1116 براى اولين بار ارائه شد
Kennedy, J. and Eberhart, R., “Particle Swarm
Optimization,” Proceedings of the IEEE International
Conference on Neural Networks, Perth, Australia 1995,
pp. 1942-1945.
صفحه 28:
دار یحج هت
ابن الگوریتم اولین بار توسط ۵۲۳۵۵۷ و
۲ مطرح شد. آنها نام این الگوریتم را
0 نهادند.
یکت الکوربتم جستجوی اجتماعی است که از روی
رفتار اجتماعی دسته های پرند گان مدل شده است.
در ابندا لین الگوریتم به منظور کشف الگوهای حاکم
بر پرواز همزمان پرند گان و تغییر ناگهلنیی مسیرها در
فضای جستجو بود.
صفحه 29:
در دسته پرندگان هميشه حرکت هر پرنده متمایل به
سمت سردسته پرندگان است. اگر سردسته. انحرافی
داشته باشد. بقیه هم همان انحراف را دارند. سردسته
بهترین موقعیت را دارد.
صفحه 30:
مقدمه
اين الكوريتم از يك سو به حیات مصنوعی خصوصا تئوری های گروهی
و از سوی دیگربه الگوربتم های پردازش تکاملی وبه طور خاص به
استراتژی تکاملی مرتبط است که از رفتار دسته جمعی ماهی ها یا
پرندگان برای یافتن غذا الهام می گیرد.
گروهی از پرندگان یا ماهی ها در یک فضای تصادفی دنبال غذا می
گردند و تنهایک تکه غذا وجود دارد و هیچ یک از پرندگان از محل
غذا اطلاعی ندارد و فقط فاصله خودتا غذا راحی داند. یکی از بهترین
استراتژی ها دنبال کردن پرنده ای می باشد که به غذا نزییک تر
است.
صفحه 31:
مقدمه
الكوريتم (250 بك الكورينم جستجوى اجتماعى است كه از روى رفتار اجتماعى دستدهاى برندكان مدل
شده است. در ابتدا ابن الكوربتم به منظور كشف الكوهاى حاكم بر برواز همزمان يرندكان و تغبير ناكهانى مسير
أنها و تغبير شكل ببيندى دسته به كار كرفته شد. در ۳90 00101016ها در فضای جستجو جارى میشوند.
تغيير مكان 035]1616ها در فضاى جستجو تحت تأثير تجربه و دانش خودشان و همسايكانشان است. بنابراين
موقعیت دیگر 00110016های ۹0۱۵111 روی چگونگی جستجوی یک 0011010 اثر میگذارد. نتیجهی
مدلسازی این رفتار اجتماعی فرایند جستجویی است که 18ع021/1ها به سمت نواحی he Gye مىكنند.
laParticle در 5150150 از یکدیگر میآموزند و بر مبنای دانش بدست آمده به سمت بهترین همسایگان خود
ast
صفحه 32:
مقدمه
۴ هر ذره در حال جستجو برای نقطة بهینه است.
۴ به همین Wo در حال جابجایی است
" به دليل این جابجایی. دارای سرعت است.
مانند سایر الگوربتم های جمعیتی, الگوربتم PSO از مجموعه
ای از پاسخهای ممکن استفاده می کند که لین پاسخها تا
زمانیکه یک پاسخ بهینه بافت شود و یا شرالیط پابان الگوریتم
محقق شود به حر کت خود ادامه می دهد.
در این روش هر پاسخ به صورت یک ذره نمایش داده
می شود. (همچنانکه در الگوریتم ژنتیک به هر پاسخ.
کروموزم گفته می شود)
صفحه 33:
مقدمه
مانند بقيه الكوريتم ها بايد يك جمعيت اوليه تشکیل
گردد. در لین روش معادله سرعت. ضامن حرکت ذرات
به سمت ناحيه بهينه است. اين معادله معمولا براساس سه
عنصر اصلی ارائه می شود که عبار تند از:
* مولفه شناختی 0065: بهترین وضعیت ذره
مولفه جمعی 0065: بهترین ذره ای که تابحال داشتیم
one
صفحه 34:
مقدمه
در شبیه سازی این الگوریتم. رفتار هر ذره می تواند
تحت تاثیر بهترین ذره محلی (865 ۳۵۲۵۳۸۵۱)(در
داخل يك همسایگی مشخص یا همان بهترین
وضعیتی که آن ذره تابحال داشته است) و یا بهترین
ذره عمومی(865 6100۱)(بهترین ذره در میان
ذرات) باشد.
صفحه 35:
وبا وضعیرنجد پد( ینده) ذیدلست
اگر مابه وضعیت فعلی مقدار سرعت آبنده را اضافه کنیم به
وضعیت جدید(آینده) می رسیم
,۷ سرعتآینده از میزلنتصاهفیسه مولفه (سرعت
قسیم( ف علیل و wy [cw (pbest 9 gbest
صفحه 36:
الگور هو
عمللا + Prew = Poa
Vaew=W ota+ C14R1*( Procat est -Pota)+ C2*R2*(Pogtovat vest -Prota)
© و © مقاهير تابرو مثسو ,]و ر؟العداد تصامفی
هستند كد به صوونفرماإدر بازم|ا,١| توليد مى
براى قابليت بهتر جستجوء بارامترى به نام وزن اينرسى
به شكل زير و به صورت ضریبی در پارامتر سرعت
الكوريتم اضافه مى كردد:
vest-Poia) دحمو 2*)18 لخد ن) جروو تأسوود بوه 8)ختخأعدن) بوه لا+ لالا-س.. لا
صفحه 37:
الگور هو
وزن اینرسی تأثیر سرعت ذرات در گام قبل را بر سرعت
فعلی تعیین می نمایدسبه این ترتیب کهبا مقادیر بزرگی از
وزن اینرسی» قابلیت جستجوی عموصی الگوریتم بهبود
يافته و فضای بیشتری مورد بررسی قرار می گیرد. حال
آنکهبا مقادیر کوچک وزن اینرسی فضای مورد بررسی
محدود شده و جستجو در لین فضای محدود شده صورت
مى كيرد.
صفحه 38:
الكوريتم
سبه همين دلميل» معمولا الكوريتمبا مقدار بزركى از وزن
اینرسی شروع به حركت عى كند كه سبب جستجوى
كسترده فضا در ابتداى اجراى الكوريتم شده ولمين وزن به
مرور در طول زمان كاهش عى يلبد كه سبب تمركز
جستجو در فضاى كوجك در كام هاى يايانى مى شود.
صفحه 39:
الگوره ی
همه الگوریتم ها از دو مکانیسم تنوع و تمر کز استفاده می کنند
تنوع يعنى ما دوست داریم در ابتدای الگوریتم فضای
بیشتری از فضای جستجوء موردجستجو قراردهیم و هرچه به
پایان الگوریتم نزدیکتر حی شهیم لین تنوع راکم کنیم و به
سمت ناحيه بهینه تم رکز پیدا كنيم.
۷(وزن اینرسی) همان میزان تنوع است که در ابتدا زياد و
در مراحل پایانی میزان آن کم و کمتر می شود.
صفحه 40:
الكورش_0 SS
در ابتدا ذراتبه صورت تصادفی در سرتاسر فضای جستجو
مقداردهی عی شهند که لین موقعیت های اولیه به عنوان
بهترین تجربه شخصی ذرات نیز شناخته می (pest) wigs
در گام بعد بهتیین ذره از میان ذرات موجود انتخاب و به
عنوان بهترین پاسخ شناخته می شود.(0065)
سپس گروه ذرات در فضای جستجو حرکت حی نمایند» تا
زمانیکه شرلیط پایان محقق شود. لین حرکت شامل اعمال
معادله سرعتبه گروه ذراتعی باشد که موقعیت هر ذره
براساس آن تغییر می کند.
صفحه 41:
الكوريتم
مقدار برازش جدید حاصل از ذره با مقدار 065 ذره
مقایسهعی گردد. لگر موقعیت جدید ذره دارای برازش بهتری
باشد» اين موقعيت جدید جایگزین موقعیت ۵651 می شود.
روالی مشابه نیز برای 251 دا انجام می گیرد.
صفحه 42:
بارامترها
۲ تعداد ذرات (تعداد کل ذراتی که در فضای جستجو )
نشان داده شده است که ۵۰-۱۰ کافی میباشد.
۴ 21) (لهمییتربوط به بهتوینهر فد)
" 02 (لمسعربوط به بهتيينهسليكوها)
به دلايل تجربى معمولاً 4 - 01+02 درنظر گرفته شود.
ve
* معیار خاتمه
صفحه 43:
Pseudo code
Algorithm gbest PSO (Initialize)
gbest=X,
for i=0 to No onicies dO
pbest=X,;, (initialize randomly)
fitness,=f(X;)
if fitness, < f(gbest) then
gbest=X,
end if
end for
صفحه 44:
Pseudo code
Algorithm gbest PSO (Main loop)
repeat
for i=0 to Ny sicies dO
V.=W*V,+c,*r,*(pbest,-X,)+c,*r,*(gbest-x,)
1۶۷ Vacceptavie then
correct V;
end if
X=X+V,
fitness, = f(X,)
if fitness, < f(pbest,) then
pbest=X,
end if
if fitness, < f(gbest) then
gbest=X,
end if
end for
untill terminate criteria
صفحه 45:
ae
PSO
Algorithm
صفحه 46:
46
معادلات توصیف کننده رفتار ذرات
صفحه 47:
47
معادلات توصیف کنندهی رفتار ذرات
v'ft+lj=wv'[r]
۱ 1-۲ (
6 عم
صفحه 48:
+ PSO parameters:
— Swarm Size = 30
— Inertia, w = 0.5 (static)
in? 5 +sin? x,) = Self Confidence, ¢, = 1.5
~ Swarm Confidence, ¢) = 1.5
— Stopping Tolerance, € = 0,001
S(x)= x7 +23 +25)
صفحه 49:
۴تا متغیر 1 6اتا64اداریم.حد پابین را
١٠-و حد بالا را ۱۰ در نظر می گیریم و
بین این دو حد ۴ تا عدد بصورت
تصادفی انتخاب می کنیم.هر عدد را به
توان دو رسانده سپس باهم جمع می
صفحه 50:
پارامتر های اولیه
% Number of Variables
nvar=5;
lb=-10*ones(1,nvar); % Lower Bound
ub= 10*ones(1,nvar); % Upper Bound
% Lower Bound of Velocity
% Upper Bound of Velocity
lb.v=-0.8;
ub.v= 0.8;
۰
صفحه 51:
۰ ۷۷ 9۵ ۱86۲۵ ۷۷6۱9۲ وزن يا اهمیت تجربه
* W_RF=0.99; % Inertia Weight KeaUction tractor
۱ ضریب کاهنده
Yo versonal Best Learning 0-27 ۰
Coefficient
وزن با اهمیت بهترین تجربه
شخصی
C2=2; % Global Best Learning *
وزن یا اهمیت بهترین تجربه Coefficient
كروهى 5
تعدادتکرار یا
* Npar=100; % Population Siz~ “3ysrun
+ Maxiter=1000; % Max Iteration Ps!
صفحه 52:
ویز
گی های یک ذره
4 موقعيت
سرعت(در جمء
سر ر جمعيت | ۲
1 ولیه صفر در نظر گرفته
می شود)
۰
بهترین تجربه ذره
صفحه 53:
بهترین تجربه ذره
502
90
35
25
25
25
25
25
35
30
29
soll
100
90
95
92
89
87
80
85
84
84
iter1
iter2
iter3
iter4
iter5
iter6
iter7
iter8
iter9
iter10
صفحه 54:
بهترین تجربه ذره
soll sol2
iter1 100 90
iter2 90 35
iter3 95
iter4 92 25
iter5 89 25
iter6 87 25
| 1۳677 ۳78071 25 |
iter8 85 35
iter9 84 30
iter10 84 29
صفحه 55:
جمعیت |
وليه به صورت تصادفی
٠ موقعيت
: حد پایین و بالا
تبرعتا
صفر در نظر گرفته میشو
۳۹
محاسبه مية
به ميشود
بهترين تجربه ذره - ذ
59
صفحه 56:
صفحه 57:
شروع حلقه اصلی
صفحه 58:
به ازای هر ذره خواهیم داشت
گفتیم که هر ذره تمایل دارد به سمت هدفی حرکت کند
صفحه 59:
۷/۵
سرعت جدید موقعیت قبلی/قدیم موقعیت جدید
صفحه 60:
۱- موقعیت قدیم
¥~ فا 7 ع
۱ فاصله ات تا بهشرین تج eee
Fe, ۱ ۱ جربه ش< ۰
فاصله اش تا بهترین 7 :
ین تجربه کل
صفحه 61:
Fal
ل
swarm influence
patticle memory
influence
a
oy
‘étintent motion
influence
صفحه 62:
فاصله تا
بهترین تسیر
تجربه
۷) =w*V;, (¢-1) wan
+ c, + rand, * (P; nese — Xi (t-1))
( 6-10 بل (Po nese * قرو +e
\ عدد تصادقی برای
ایجاد شیب در حرکت
فاصله تا rong (ع),۷ + (6-1) رز < رز
صفحه 63:
if cost(X (1) < cost (F, pest) _, (COSt (P.best) = cost (Xi), _ 12,3, 4
else Not change P. best = Xi(t)
آگر آهمیت موقعیت جدید ذره آز آهمیت بهترین تجربه
شخصی ذره کمتر باشد درنتیجه اهمیت/وزن موقعیت جدید ,
۱ /
{" (Qbest) = cost XO), قل ققدت
[tess )0( < cost (Best) _,
9 dost = 0
else Not change
آگر اهمیت موقعیت جدید ذره از آهمیت تجربه گل ذره ها
موه اود تجن ۰(
کمتر باشد درنتیجه اهمیت/وزن موقعیت جدید .۱ بهترین
تجریه کل :مج شود
صفحه 64:
پایان یک دور از حلقه اصلی
صفحه 65:
تا زمان برقراری شرط توقف این فرایند ادامه پیدا میکند:
شرط های توقف
تعداد تکرار
زمان
عدم بهبود
همگرایی جوابها
صفحه 66:
فلوچارت الگوریتم
صفحه 67:
مقایسه ی ۳50 با الگوریتم ژنتیک
* برخلاف الگوریتم ژنتیک در PSO عملیات انتخاب وجود ندارد.
* عمل ترکیب جواب ها 0۷6۷ ۲۵55 در 500 وجود ندارد.
* در 2500 نيز عمل جهش(00 هل به نوعی وجود دارد.
* میتوان در ۴50 نسبت بین جستجوی محلی و سراسری رابه کمک
وزن ها مشخص کرد.
6%7
صفحه 68:
68
+ ل شبه کد الکورت, 959
12 واه ده
Initialize randomly 3
Xpbest; ~ X,
مد و Vax
fess, = F(X)
tases,
if fimess, < zbest then,
for
repeat
Tor i=1 to Nya 10
NIE WV,F ep Stee XI OH Sates 35)
رک
fitness, = £ (X))
it imess, < phest, then
سه 26 رسد pest, = fimess,
enait
it himess, < ghost then
Xuron =X, and ghest = fimess,
enait
end for
until Termination criteria
صفحه 69:
مراحل اجرای الگوریتم توده ذرات
۱) مقدار دهی به پارامترهای الگوریتم
) ساخت جمعيت اولية ؤرات به صورت تصادفی
۳( ارزيابى هر ذره و محاسبه شليستكى آن
۴) موقعیت فعلی هر ذره را بعنوان بهترین تجربه آن در نظر میگیریم و
همچنین بهترین ذره در بین همه ذرات را بعنوان بهترین کلی در نظر
میگیریم
* تا زمانی که شرط توقف برقرار نشده است مراحل ۶ تا ۱۲ را تکرار کن
صفحه 70:
۶ برای هر ذره مراحل ۱ تا ۷ را تکرارکن.
۷) بردار سرعت ذره را بروزرسانی کن.
۸)موقعیت ذره را با توجه به سرعت آن بروزرسانی کن.
)شایستگی /1655] ذره را محاسبه کن.
۰)گر میزان شایستگی ذره جدید بهتر از بهترین تجربه شخصی آن شده ات. موقعیت جدید
را بعنوان بهترین تجربه شخصی آن ذره در نظر ب
۱ذره جدید را با پهترین ذره کلی مقایسه OF و اگر بهتر است آن را جایگزین بهترین کلی
کن.
اگر شرط توقف برقرار نشده است به مرحله ۵ برو و گرنه پایان.
70
صفحه 71:
صفحه 72:
ميخواهيم با الكوريتم ©05] Sphere at را يبدا كنيم'
Sphere ati تابع شناخته شده و به اصطلاح بنج مارك در مسائل بهينه
سازى مى باشد و از جمله توابعى هست كه براى محك كردن ميزان قدرت
الگوریتم های تکاملی مورد استفاده قرار میگیرد .
فرم ریاضی این تابع بصورت زیر می باشد
صفحه 73:
توضیحات کد
فاز اول: مقدار دهی پارامترهای الگوریتم
صفحه 74:
مرحله اول: مقداردهی به پارامترها
يندا محيط نرم افزار متلب را اماده ميكنيم
ones (1, varNum) ;
حد بابين با کمترین مقدار مجاز برای هر متغیر
upperBound=100 *
ones(1,varNum);
شترین مقدار مجاز برای هر متغیر ۸
صفحه 75:
تنظیم پا رامترهای الگوریتم ۳50
اد برندوتها با تعداد راه.حل.ها particlelNum=100;
96حداکترتعداد تکرار الگوریتم maxLoop=100;
پارامتر مقدار سرعت سکون ذره | ۶ ۷۲-1
لهمیشجرنه شقصت ]پارانتر شناعتی 60122۶
پارامتر ترکیب کننده C2=2;"*
alpha=0.05;
ضریب کاهش ۷ در هر بار اجرای برنامه
صفحه 76:
مرحله دوم و سوم: ساخت ع 9 بصورت تصادفی و ارزیابی
بعد از مقدار دهى بارامتر ها ء الكوريتم ابتدا يك سرى ذرات را بصورت تصادفى توليد ميكند. و اين كاررا به
تعداد افراد جمعيت تكرار ميكند يعنى بصورت خلاصه: 11 تا ذره را بصورت تصادفى ايجاد ميكند . در اولين كام
در اين مرحله ما ابتدا يك ساختار يا ©1لا]506ا9 براى نمايش هر ذره بصورت زیر تعریف میکنیم؛
در خط زير در جلوى عبارت 8 نام
آن قرار كرفته است را قرار ميدهيم. همانطور كه د
اين مثال : هدف ما خل تابع 300626 می باشد که کد آن را در فابلی
نرشته ایم؛
costFunction=@SphereFun;
صفحه 77:
ادامه مرحله دوم و سوم
هر ذره یا راه حل طبق الگوریتم ۳500 سه مقدار باید داشته باشد؛
solution=[];
solution.Position=[];
solution.Cost:
solution.Velocity=[];
ت ذره می باشد. که ما در کد موقعیت را با متفیر 240 091ظ مشخص میکنيم.
- دومین مقدار » میزان تطایق یا شایستکی هر ذره است که ان را با 009۶ نشان داد ایم
- سومین مقدار هم سرعت می باشد كه ان را یا 7۵100421 نشان میدهیم.
صفحه 78:
ادامه مرحله دوم و سوم
هر ذره يا راه حل طبق الكوريتم 550 سه مقدار بايد داشته باشدة
solution=[];
solution.Position=[];
solution,Cost=[];
solution .Velocity=[]7
اولین مقدار موقعیت ذره مى باشد كه ما در كد موقعيت را با متفير 2051107 مشخص ميكنيم .
- دومین مقدار . میزان تطابق یا شایستگی هر ذره است که آن را با 00۵۶ نشان داد ایم
- سومین مقدار هم سرعت می باشد که آن را با 1 ۲۵1063 نشان میدهیم.
صفحه 79:
ادامه مرحله دوم و سوم
بنابراین با توجه به این تعریف هر ذره یک سه تایی است یعنی سه مقدار دارد که ما برای فهم بهتر هر ذره را
بصورت یک 8الالا ناگ یا همان ساختار در نظر میگیریم و به شکل زیر آن را در متلب نمایش داده میشود:
solution <tx1 struct>
Field « Value
Position 1
Cost a
Velocity 1
صفحه 80:
تولید ذره بطور تصادفی به تعداد 0۵۲۲۱۱6۱۱۱۰۳
ابتدا يك آرايه به تعداد ذره هاء از ساختاری که در بالا تعريف كرده بوديم را ايجاد ميكنيم كه اين كار با استفاده
از تابع 29۳۳026 انجام میگیرد: آرایه ای بنام 22۲61016 که نشان دهنده هر ذره در الگوریتم می باشد.
Particle=repmat (solution, [particlelNum,1]);
همچنین یک آرابه نیز نام 10021368 تعريف كرده ايم تا هر ذره در هر مرحله از الگوریتم بهترین تجربه
شخصی خود را در آن قرار دهد؛
LocalBest=repmat (solution, [particle1Num, 1]);
20
صفحه 81:
ایجاد موقعیت هر ذره بطور تصادفی و تعیین برازندگی هر ذره
سرعت اولیه صفرفرض شده است for i=1: particlelNum
یک حلقه است یعنی از 1 تا تعداد ذره ها که در 0181171210 ۳31 قرار دارد کارهای زير را تکرار کن
Particle (i) .Position =unifrnd(lowerB, upperB) ;
كد فوق ميكويد كه برای ذره ام موقعیت ذره را بصورت تصادفی در بازه قابل قبول ايجاد كن. يعنى هر ذره
منوا مثال در حالتى كه دو متغير تصميم در نظر ميكيرم داراى دو بعد است . و هر بعد ان هم يك حدبالاو
يك حد پاپین دارد که ما انها را به ترتیب در متغبر های 106180050 و qe oals ,|,5 upperBound
صفحه 82:
ایجاد موقعیت هر ذره بطور تصادفی
بنابراین برای تولید موقعیت ذره بصورت تصادفی کد زیر را داریم:
unifrnd(lowerBound, upperBound) ;
بنابراین با استفاده از تابع ۵1222۳۵ بصورت تصادفی و با توزیع یکنواخت در بازه مورد نظر موقعیت ذره
بصورت تصادفی تولید می شود.
82
صفحه 83:
تعیین برازندگی هر ذره
برای تعیین برازندگی هر ذره از تابعی با نام Cost FUNCTION
استفاده می شود که میزان شایستگیابرازندگی را محاسبه می کند.م ثلا
برای برنامه9/۱6۲6 این تابع مقدار تابع 50/۱616 را به ازای مقادیر
این ذره محاسبه می کند. مقدار محاسبه شده را بعنوان مقدار شایستگی
ذره در متغیر COST مربوط به این ذره قرار می دهیم.
Particle(i).Cost=costFunction(particle(i).posation,
varNum);
83
صفحه 84:
تعیین برازندگی هر ذره
Particle (i) .Velocity=0;
حال كه موقعیت هر ذره ایجاد شد و شایستگی آن محاسبه شد. همین تجربه فعلی ذره را بعنوان بهترین تجربه
فعلى ان ذره در متغير 110681165 قرار میدهیم درواقع برای شروع کار مقدار هر ذره را بعنوان بهترين
تجربه شخصی آن در نظر میگیریم
100218691 )1( 22۵ ۶
End
صفحه 85:
مرحله چهارم: مقداردهی بهترین جواب عمومی
بعنوان آخرین کار از بخش اول الگوریتم باید مقدار بهترین جواب عمومی یعنی 91021265۲ را باید پیدا
کنیم که بهترین جواب عمومی ان جوابی است که میزان شایستگی ان از همه کمتر باشد چون ما در اینجا به
دنبال پیدا کردن مینیمم تابع هستیم پس بهترین جواب [ن هست که کمترین مقدار تابع را نتیجه میدهد
بنابراین برای بدست آوردن بهترین جواب شخصی و بهترین جواب عمومی کدهای زیر نوشته شده است:
[value,index]=min((particle.cost]);
کد فوق در مقدار 0051 تماكردره ها كمترين bday Ly jladde میکند که اين کار با دستور ۲۳8 در متلب انجام
ae
85
صفحه 86:
مرحله چهارم: مقداردهی بهترین جواب عمومی
globalBest=Particle(index);
تمام ذرات پیدا کرده لبا دستور MIN ور متلب)و
فوق کمترین مقدار05) یا اهمیت را
در متغیر 31116 ۷قرار می دهد و شماره ذرهای که کمترین مقدار 05 را داشته باشد در
متغیر ۱016 أقرار می دهد.ذره شماره(006 را در متغیر01001065 (بهترین جواب
عمومی) قرار می دهیم:
:alobalBest=Particle(index)
بس ما تا اینجا ذره ها را بصورت تصادفی ایجاد کردیم و ارزیابی کردیم و بعد هم بهترین جواب شخصی و
بهترین جواب عمومی اولیه را هم مقدار دهی کردیم . حالا نوبت حلقه اصلی الگوریتم مى باشد كه بايد بصورت
تکراری انجام شود
86
صفحه 87:
a7
مرحله پنجم: تا وقتی شرط پایان برقرار نشده مراحل 6 تا 12 را انجام بده
08 ۶20۲
شرط بايان الكوريتم را حداكثر تعداد تكرار در نظر كرفته ايم و اين حلقه در واقع تا رسيدن به حداكثر دفعات
تكرار, الكوريتم را اجرا ميكدند.
صفحه 88:
مرحله ششم : به ازای تمام ذره ها مراحل 7 تا 11 را تکرار کن:
for i=1:particlelNum
مراحل /اتا١١ الكوريتم بليد اجرا شود يعنى به ازای هر ذره ابتدا سرعت ن و سپس
موقعیت آن بروز شودو بعد هم شایستگی آن محاسبه شودو بهترین جواب شخصی و
بهترین جواب عمومی نیز بروز شود.
صفحه 89:
مرحله هفتم: بروزرسانی سرعت ذره
Viz WV + کیره بل سرت X)
%Update velocity
particle(i).velocity=W*particle(i).velocity
+C1*rand(1,varNum).*(localBest(i).position-
particle(i).posation)
+C2*rand(1,varNum).*(globalBest.position-
particle(i).posation);
پش با کد فوق مقدار سرفت ذره pl محاسبه مؤكتهم
صفحه 90:
مرحله هشتم: بروزرسانی موقعیت ذره
+ رل
بن معنی که موقعبت جدید مساوی لست با موقعیت قبلی بعلاوه مقدار سرعت. ما همین کار را در متلب
انجام داده یم و کد ان بصورت زیر می باشد؛
SUpcate Posation
particle (i) .posatio: icle(i).posationtparticle (i) .velocity;
(globalBest. poiation-particle(i).position)
90
صفحه 91:
بررسی مجاز بودن مقدار هر متغیر
حال بررسی میکنیم که ایا مقدار موقعیت جدید در بازه حد بالا و حد پایینی که برای هر متفیر تصمیم در نظر
كرفته بوديم صدق ميكند يا خير و اكر مقدار ان از حد بالاى مجاز بيشتر شد ان را مساوى حد بالا قرار ميدهيم
وهمجنين اكر مقدار ان از حد بايين مجاز كمتر شد ان را مشاوى حد يايين مجاز قرار ميدهيم:
202 1117
if particle )1( قنعممنا <(3) 165غ53ه5. )3(
91
صفحه 92:
بررسی مجاز بودن مقدار هر متغیر
اگ مقدا
متغیر [ ام بیشتر از حد بالا یعنی ( 3
particle(i).posation(j)=upperB(j);
مقدار آن را مساوى [[6 6112010411 لاقرار بده
End
if particle(i).position(j)< lowerB(j)
اگر مقدار ام کمتر ازحدپایین با () 0۷۷6۲۳8 |است آنگاه:
jparticle(i).position(j)=lowerB(j)
مقدار آن را برابر () 0۷۷6۲8 قرار بده.
End
End
صفحه 93:
مرحله نهم: محاسبه شایستگی /655]]]ذره پروز شده
در این مرحله باید میزان شایستگی هر ذره را محاسبه کنیم که در شبه كد به صورت زیر نشان داده شده است
fitness, = f (X;)
و ما در برنامه این کار را با کد زیر و فراخوانی تابع 22006۴10 205 که قبلا توضیح داده شد انجام داده ایم:
particle(i).cost=costFunction (particle(i) .posation, varNum) ;
93
صفحه 94:
مرحله دهم و بازدهم: بروزرسانی بهترین تجربه شخصی و
بهترین جواب عمومی
در اخر نیز باید مقدار بهترین شخصی و بهترین عمومی را بروزرسانی کنیم که شبه کد این عمل را بصورت زیر
نشان داده است:
if fitness, < pbest, then
Xpvesti= Xi and — pbest, = fitness,
end if
if fitness, < gbest then
Xypest = XG مضه gbest = fitness,
end if
94
صفحه 95:
مرحله دهم و بازدهم: بروزرسانی بهترین تجربه شخصی و
بهترین جواب عمومی
%Update local and global best solution
if particle(i).cost<localBest(i).cost
برای بدست اوردن بهترین تجربه شخصی می گوییم اگر
مقدار شایستگی یعنی 605۴
مقدار 605۴ مربوط به تجربا يعنى
۶ 06۵1 است آنگاه بهترین تجربه شخصی را با
کد زیر بروز رسانی
jlocalBest(i)=particle(i)
یعنی مقدار فعلی ذره را جایگزین مقدار قبلی بهترین
تجربه شخصی می کنیم.
صفحه 96:
بروزرسانی بهترین تجربه عمومی
اگر مقدار بهترین شایستگی شخصی ذره فعلی از مقدار شایستگی عمومی کمتر
است یعنی اين جواب بهتر از جواب عمومی شده. پس جواب عمومی را مساوی این
جواب قرار می دهیم.
if localBest(i).cost<globalBest.cost
اگر شایستگی بهترین تجریه شخصی ذره فعلی از بهترین عمومی بهتر بود انگاه؛
۱
بهترین تجربه شخصی ذره فعلی را در بهترین عمومی بریز
96
صفحه 97:
بروزرسانی پارامتر الا
پارامتر ۷۸ را با كد زیر بروزرسانی می کنیم و بهترین جواب این مرحله
را در متغیری با نام 065150۴3۲ قرار می دهین(۱۷-۷۷*)1-۵۱002
bestSoFar(it)=globalBest.cost;
در هربار اجرای الگوریتم بررسی می کنیم که چه جوابی بدست آمده است. کد زیر
نمایش بهترین جواب را انجام می دهد:
disp([‘In Iteration= ' num2str(it) ' Best
Cost='
num2str(globalBest.Cost)]);
97
صفحه 98:
مرحله آخر: نمایش نتایج
جواب پیدا شده را با کد زیر چاپ می کنیم. ابتدا بهترین جواب پیدا شده برای
تابع را نمایش می دهیم:
num2str(globalBest.cost)]); ' =
disp (['best
disp(' ');
در خط زیر نیز راه حلی که بهترین جواب را تولید کرده است را نمایش میدهیم
' num2str( lobalBest.posation)])
disp(['best so.
خروجی برنامه برای تابع 50616 به صورت زیر می باشد:
best fitness = 2.5483e-49
best solution found is: 4.4526e-25 2.3785e-25
98
صفحه 99:
99
مرحله آخر: نمایش نتایج
همانطور که در ابتدا گفته شد. مقدار بهینه این تابع مساوی 0 می باشد و مقداری که برنامه پیدا کرده نیز
4 به توان منفی 49 است که یک عدد خیلی کوچک و تقریبا صفر است.
بهترین راه حل نیز 1120 و 220 بود که الگوریتم جوایهای ۹۰۹5266725 و 2.37856-25 را بيدا
کردهاست كه خیلی خيلى اعداد كوجكى هستند و تقريبا صفر مى باشند
صفحه 100:
نمایش نمودار پیشرفت الگوریتم در حین اجرا
pso
ot progress of
maxLoop;
plot (x,bestSoFar)
با دستور]00بهترین نتیجه هر مرحله الگوریتم را که در متفیر 065050۴۲ قرار داده بودیم را نمایش
عنوان محورا
عنوان محورلا
می دهیم.
xlabel ("
ylabel(*
عنوان نمودار
title('Pso Result For Ackley Function’)
100
صفحه 101:
خروجی کد
صفحه 102:
ما
1. فیلم و اسلاید
آموزشی
http://en.wikipedia.org/wiki/Swarm_intelligence .2
3. http://en.wikipedia.org/wiki/Particle_swarm_optimization
4. http://www.swarmintelligence.org.
5. Venter, G. and Sobieski, J., “Particle Swarm Optimization,”
Structural Dynamics, and Materials Conference, Denver, CO.,
April 2002.
6. Kennedy, J. and Eberhart, R., Swarm Intelligence,
Academic Press, 1st ed., San Diego, CA, 2001.