ip(i) = nearest facility node to node i;
end
end
اگر کروموزوم تولید شده شدنی بود، به جمعیت اولیه اضافه میشود. جمعیت اولیه سه برابر جمعیت در هر دور اجرای الگوریتم میباشد.
تست شدنی بودن[۳۵]
فقط کروموزومهای شدنی میتوانند وارد جمعیت شده و در عملیاتهای الگوریتم شرکت کنند. لذا لازم است پس از تولید کروموزوم، شدنی بودن آن بررسی شود.
جهت انجام تست شدنی بودن یک کروموزوم، باید موارد زیر رعایت شوند:
الف) کروموزوم باید محدودیت شانس را رعایت کند؛
ب) مقدار باید از بیشتر باشد؛
دراینصورت است که جواب شدنی بودن کروموزوم، مثبت است.
لازم به ذکر است با توجه به نوع تولید جمعیت اولیه و همچنین روش عملیاتهای تقاطع و جهش که در ادامه توضیح داده میشوند، نیازی به بررسی تعداد تسهیلات استقرار یافته در کروموزومها جهت تست شدنی بودن نمیباشد.
تابع ارزیابی[۳۶]
تابع ارزیابی در این الگوریتم همان تابع هدف مسأله میباشد. در این تابع، مقدار و به ترتیب مقادیر دو ژن آخر است.
فرایند انتخاب والد[۳۷]
در فرایند انتخاب والد، جهت انتخاب والد برای شرکت در عملیات تقاطع، از انتخاب تصادفی استفاده میشود.
( اینجا فقط تکه ای از متن فایل پایان نامه درج شده است. برای خرید متن کامل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. )
عملیات تقاطع[۳۸]
از عملیات تقاطع جهت تولید فرزند[۳۹] از والد استفاده میشود. طبق فرایند انتخاب والد، یک جفت والد انتخاب میشود. برای انجام عملیات تقاطع، به صورت تصادفی یکی از دو روش تقاطع تک نقطه یا دو نقطه به کار برده میشود. در تقاطع تک نقطه یک عدد تصادفی تولید میشود که نشاندهنده ژنی در کروموزوم است که برای عملیات تقاطع از این ژن و جابجایی بخشهای ایجاد شده بوسیله آن استفاده میشود. شکل (۳-۲) این عملیات را نشان میدهد.
نحوه عملکرد عملیات تقاطع تک نقطه
در تقاطع دو نقطه دو عدد تصادفی متفاوت تولید میشود که نشاندهنده دو ژن در کروموزوم است که برای عملیات تقاطع از این ژنها و جابجایی بخشهای میانی ایجاد شده بوسیله آنها استفاده میشود. شکل (۳-۳) این عملیات را نشان میدهد.
نحوه عملکرد عملیات تقاطع دو نقطه
جهت تسریع در روند اجرای الگوریتم، پس از انجام عملیات تقاطع، فرزندان تولید شده بروز میشوند. چراکه پس از انجام عملیات تقاطع، امکان دارد تعداد تسهیلات مستقر شده برابر نباشد و لذا عملیات باید تکرار شود اما در بروز رسانی فرزندان، تعداد تسهیلات برابر شده و تغییرات لازم اعمال میشود. کد بروز رسانی فرزند تولید شده به صورت زیر است:
function nc = new child (c, sof, nof, nofs)
% c : child
% sof : set of facilities
% nofs : number of facilities in set
% nof : number of facilities
if nofs > nof
for k=1:(nofs-nof)
select randomly two sites and replace one of them with another;
end
elseif nofs < nof
for k=1:(nof-nofs)
select randomly a facility site (fs) and a non-facility site (nfs). Then, set a facility in nfs and change allocations from fs to nfs alternately;
end
else