انتخاب PBEST و GBEST
Pbest بهترین موقعیتی است که هر ذره به آن دست یافته است، که این مشخصه را میتوان به صورت حافظهای برای هر ذره در نظر گرفت. معمولاً Pbest براساس تابع برازندگی ذرات تعیین میشوند. البته معیارهای دیگری را میتوان برای تعیین بهترین موقعیت به کار برد و در عین حال قابلیت و کارایی جستجو کاهش نیابد. به عنوان مثال میتوان تابع برازندگی را طوری تعریف کرد که ذرات فقط موقعیتهای مربوط به جوابهای شدنی را به خاطر آورند و جوابهای نشدنی را در نظر نگیرند. Gbest بهترین موقعیتی است که ذرات موجود تاکنون به آن دست یافتهاند. برای انتخاب Gbest مقادیر برازندگی ذرات با یکدیگر مقایسه شده و بهترین به عنوان Gbest انتخاب می شود. ]۶[
ضرایب یادگیری
ضرایب یادگیری و نشاندهنده وزن شتابی است که ذرات را به سوی Gbest و Pbest هدایت می کنند. این ضرایب بیانگر تمایل ذرات به الگوبرداری از رفتارهایی هستند که در گذشته باعث موفقیت شده اند. مقادیر و برابر با ۲ در نظر گرفته شده اند تا وزن یکسانی برای جستجوی محلی و جستجوی کلی، در نظر گرفته شده باشد.برای این ضرایب میتوان مقادیر ۰ و ۱ را نیز لحاظ نمود،اما چون مقدار ۰ یکی از پارامترهای جستجو را حذف می کند و مقدار ۱ سرعت همگرایی پایینتری دارد،از مقدار ۲ در این تحقیق استفاده گردیده است. ]۶[
Initialization positions and velocities of swarm ;
Do { Evaluate F( ) ;
For I = 1 to Population Size :
Update Pbest
Update Gbest
For I = 1 to Population Size :
Update velocity ; //
Update Position ; //
} while ( stopping criterion is not met ) ;
شبه کد الگوریتم انبوه ذرات
نحوه پیادهسازی الگوریتم انبوه ذرات
همانطور که در قسمت قبل نیز عنوان شد، برای حل این مساله خاص، نیاز به سفارشیسازی این الگوریتماست. از این رو در این الگوریتم از نحوه کدگذاری که در قسمت های قبل به تفصیل راجع به آن صحبت شد، استفاده شده است اما روند برخورد با این کدگذاریها دچار تفاوت ماهوی است که در ادامه توضیح داده خواهد شد.
برای آنکه بتوان بهترین عملکرد را از مجموعه متغیرهای مورد نظر انتظار داشت، ابتدا یکبار دیگر و مبتنی بر شکل روندنمای[۵۱] ۲-۱۲ میتوان خلاصهای از آن ارائه داد:
روندنمای اجرای مراحل تحلیل
نمودار فوق به خوبی مشخص میسازد که ابزار ارائه شده در این پژوهش قابلیت دارد تا با دریافت اطلاعات اولیه شامل حجم ترافیک، درصد حداقل و حداکثری استفاده از تقاطعهای غیرهمسطح و معادلات ترافیکی، نسبت به شناسایی بهترین عملکرد در بین انواع تقاطعهای غیرهمسطح اقدام نماید.
بدیهی است که کاربر میبایست این اطلاعات را به نرمافزار اعلام نماید. سپس با دریافت این اطلاعات و سایر داده های مورد نیاز از نرمافزار خواسته می شود تا نسبت به یافتن بهینهترین تقاطع غیرهمسطح اقدام نماید و مشخص نماید که از کدامین نوع تقاطع غیرهمسطح باید استفاده نمود.
نحوه کدنویسی
به منظور اجرای الگوریتم معرفی شده در قسمت قبل نیاز است به تشریح شیوه برخورد با مسئله این تحقیق پرداخته شود. همانطور که قبلا نیز معرفی شد، هر سبد سهام در ادبیات الگوریتم ژنتیک به مثابه یک کروموزوم و در ادبیات حرکت دسته پرندگان (انبوه ذرات) به مثابه یک پرنده نگریسته می شود. در کدنویسی هر دو الگوریتم تعداد جمعیت (تعداد کروموزمها در الگوریتم ژنتیک و تعداد پرندگان در الگوریتم دسته حرکت پرندگان) برابر با ۱۰۰ در نظر گرفته شده اند و با npop مشخص گردیدهاند و تعداد تکرارهای این دو الگوریتم به صورت ثابت و برابر با ۱۰۰ تکرار در نظر گرفته شده اند؛ در سوی دیگر و در الگوریتم حرکت دسته پرندگان ، تعداد گروه های پرندگان برابر با ۱۰ در نظر گرفته شده است تا nlocals=10 باشد. برای هر یک از گروه ها، سر دستهای تعیین میگردد که در تکرارهای متوالی، پرندگان میبایست دائماً رفتار خود را ابتدا با رئیس این گروه تنظیم نمایند و رئیس گروه نیز حرکت خود را با بهترین پرنده هماهنگ خواهد نمود. ]۱۴[
این عمل بر مبنای بهترین پرنده رخ میدهد که بتوان جهتگیری کلی دستهها را بر مبنای رهبر هر یک از دسته ها ایجاد نمود. در این حالت، میبایست بهترین پرنده را انتخاب نمود و برای هر یک از رهبران اقدام به جفتگیری نمود. دراین حالت نیز دو مکان جدید برای هر رهبر بدست میآید که میتوان از بین آنها هیچ، یک یا دو مکان شدنی در اختیار داشت. در این شرایط است که اگر در بین جوابهای شدنی جواب بهتری نسبت به مکان فعلی پرنده رهبر دسته وجود داشته باشد، مکان پرنده بهروز شده و در غیر این صورت (و همچنین در صورت بروز جوابهای نشدنی) میبایست رهبر فعلی را در نظر گرفت. این عمل برای هر یک از پرندگان رهبر (برترین پرندگان در هر دسته) رخ خواهد داد. ]۱۵[
متعاقب اجرای این عمل برای هر یک از مکانهای پرندگان، مکانهای حالت و مکانهای موازیسازی نیز دچار جفتگیری شده و تنها در مورد مکانهای حالت، شدنی بودن بررسی می شود.