Xi(k + 1) = Xi(k) + Vi(k + 1)
حال مراحل الگوریتم فراابتکاری PSO استاندارد را به طور خلاصه در مراحل ذیل تشریح میکنیم:
مرحله ۱ : ابتدا به یک جمعیت از ذرات، مکان و سرعت اولیه به صورت تصادفی داده میشود.
مرحله ۲ : حال P-best و G-best را در مرحله کنونی محاسبه میکنیم.
مرحله ۳ : سرعت و مکان هر ذره را در مرحله جدید طبق دو فرمول بالا بروزرسانی میکنیم.
مرحله ۴ : اگر معیار توقف ما ارضا شد توقف میکنیم و گرنه به مرحله ۲ بازمیگردیم.
در اینجا میخواهیم نشان دهیم که الگوریتم فراابتکاری PSO حالت خاصی از الگوریتم فراابتکاری ASO است. برای این کار ابتدا بردارهای ذیل را معرفی میکنیم :
Vicurrent(k) = ω Visum(k)
Visociety(k) = ʎ۱r1(k) [G(k) – Xi(k)]
Vipast(k) = ʎ۲r2(k) [ Pi(k) – Xi(k)]
جاییکه فرمول کلی ذیل داریم:
Visum(k) = Vicurrent (k – ۱) + Visociety(k – ۱) + Vipast(k – ۱)
حال سیاستهای حرکتی و قانون ترکیب را به صورت ذیل تعریف میکنیم:
سیاست حرکتی MPicurrent(k) را به صورت حرکت ذره i ام در مرحله k ام با سرعت Vicurrent(k) در فاصله زمانی یک واحد زمانی در نظر میگیریم. سیاست حرکتی MPisociety(k) را به صورت حرکت ذره i ام در مرحله k ام با سرعت Visociety(k) در فاصله زمانی یک واحد زمانی در نظر میگیریم. سیاست حرکتی MPipast(k) را به صورت حرکت ذره i ام در مرحله k ام با سرعت Vipast(k) در فاصله زمانی یک واحد زمانی در نظر میگیریم. قانون ترکیب را به صورت دنباله ای از سه سیاست حرکتی یاد شده در نظر میگیریم. مکان جدید عضو i ام بعد از بکار بردن سیاستهای حرکتی بالا مشابه این حالت است که ذره با سرعت ذیل در مرحله ۱+k ام برای یک واحد زمانی حرکت کند:
Visum(k + 1) = Vicurrent (k ) + Visociety(k ) + Vipast(k )
بنابراین با توضیحات یاد شده در الگوریتم فراابتکاری ASO نیز مشابه PSO فرمول ذیل را داریم:
Xi(k + 1) = Xi(k) + Vi(k + 1)
پس میتوان نتیجه گرفت که الگوریتم فراابتکاری PSO حالت خاصی از الگوریتم فراابتکاری جدید ASO است، پس میتوان از ساختار الگوریتم ASO برای همه مسائلی که در گذشته از الگوریتم فراابتکاری PSO برای حل آن استفاده میشد، سود جست، به خصوص برای مسائلی که از الگوریتم فراابتکاری PSOبرای مسائل پیوسته بکارگرفته میشد.
فصل چهارم
پیاده سازی الگوریتم ASO و ارائه نتایج
۴-۱)الگوریتم ASO طراحی شده برای مساله
در این قسمت، نحوه پیادهسازی الگوریتم ASO برای مساله RCPSP شرح داده می شود. الگوریتم با یک جمعیت اولیه که به صورت تصادفی تولید میشوند، آغاز و با یک شرط پایانی به اتمام میرسد. شرط پایانی برای الگوریتم بهبود نیافتن بهترین جواب در ۲۰۰ تکرار متوالی تکرار الگوریتم است.
۴-۱-۱)کدگذاری و شیوه نمایش جوابها
برای استفاده از الگوریتمهای فراابتکاری نیاز است هر جواب از مسئله به صورتی ساده و قابل استفاده در برنامه نویسی، کدگذاری شود. نحوه کدگذاری جواب تاثیر بسزایی در سرعت و دقت هر الگوریتم فراابتکاری دارد؛ کدگذاری جوابها بر اساس رعایت شرایط زیر باید صورت گیرد.
-
- رابطهای یک به یک و پوشا بین هر جواب از مسئله و نحوه نمایش جواب ها وجود داشته باشد. یعنی هر جواب از مسئله، دقیقاً با یک ساختار نمایش داده شود و هر ساختار نمایش تنها با یک جواب از مسئله متناظر باشد.
-
- هر جواب باید در فضای حافظه کوچکی ذخیره شود.
-
- نمایش هر جواب باید بگونهای انتخاب شود تا استفاده از عملگرها و همسایگیهای مورد نیاز در الگوریتمهای فراابتکاری به آسانی صورت گیرد.
برای کدگذاری هر جواب مساله RCPSP، از یک آرایه به طول تعداد کارها استفاده می شود. در این آرایه کارها بر اساس زمان شروع خود مرتب میشوند.
برای مثال شکل زیر را در نظر بگیرید.
شکل۴-۱: شکل شماتیک یک مثال از مساله RCPSP
این جواب به صورت آرایه زیر کدبندی می شود
شکل ۴-۲ : ساختار جواب مرتبط با مثال شکل ۴-۱
در کدبندی جواب ها، هر گاه دو کار زمان شروع برابر داشتند به صورت قراردادی کاری که شماره کوچکتر دارد، جلوتر از کار با شماره بزرگتر قرار میگیرد(کارهای ۳ و ۴ یا کارهای ۵ و ۶ و یا … در شکل بالا).
برای استفاده از این کدبندی باید بتوان با داشتن هر آرایهای، جواب متناظر با آن را بدست آورد. بدست آوردن جواب از روی ساختار جواب با بهره گرفتن از الگوریتم زیر صورت میگیرد.
الگوریتم ۴-۱ بدست آوردن جواب از روی ساختار جواب
If and solution is infeasible and return
For i=1 to N
{
For j=1 to N
If then
While do
{
For j=min to