-
- بهترین آنتی بادیها را که از مرحله قبل بدست آمدهاست را در حافظه ثانویه کپی میکنیم.
-
-
- برای بهترین آنتی بادیها، تعداد تکثیری که موردنظرمان است را ایجاد میکنیم. این کار را به این شکل انجام میدهیم که کل تعداد تکثیرهایی که انجام میدهیم، برابر ۶۰% کل جمعیّتی است که استفاده میکنیم. هنگامیکه حافظه ثانویه پر است، به صورت زیر عمل میکنیم:
-
- اگر عضوی که وارد حافظه ثانویه میشود، اجازه ورود نداشته باشد (یا به این خاطر که تکراری است و یا به این علت که به متراکم ترین ناحیه فضای تابع هدف تعلق دارد)، تعداد تکثیرهایی که انجام میدهیم برابر صفر است.
-
- هنگامیکه عضوی داریم که به سلولی تعلق دارد که تعداد حلهایی که دارد، زیر متوسط است (نسبت به همه سلولهای اشغال شده در حافظه ثانویه)، تعداد تکثیرهایی که انجام میدهیم دو برابر میشود.
-
- هنگامیکه عضوی داریم که به سلولی تعلق دارد که تعداد حلهایی که دارد، زیر متوسط است، تعداد تکثیرهایی که انجام میدهیم، به نصف کاهش مییابد.
-
- بهترین آنتی بادیها را براساس اطلاعاتی که از مرحله قبل بدست آمدهاست، تکثیر میکنیم.
-
- یک اپراتور جهش را به طریقی بر روی کلونها انجام میدهیم که تعداد ژنهایی که در هر رشته کروموزومی جهش مییابند، برابر تعداد متغیرهای تصمیم مسأله باشد. این کار را به این علّت انجام میدهیم که حداقل یک جهش در رشته اتفاق بیفتد، اگر غیر از این باشد، ما همان حل را دوبرابر کرده ایم (یعنی رشته اصلی و تکثیر شده دقیقاً یکسان خواهندبود).
-
- یک اپراتور جهش غیریکنواخت را به بهترین آنتی بادیهایی که یافت شدهاند اعمال میکنیم، اما تضمین نمیکنیم که تکراری صورت نگیرد (برخلاف اپراتور جهش مرحله قبل). نرخ جهش اولیه بالاست و به مرور زمان کاهش مییابد (از ۰.۹ به ۰.۳).
-
- اگر حافظه ثانویه پر باشد، تقاطع را به کسری از محتویاتش اجرا میکنیم. اعضاء جدیدی که تولید شدهاند، اگر نسبت به حافظه ثانویه غیرمغلوب باشند، به آن اضافه میشوند.
-
- فرایند مرحله ۳ به بعد را درمدت زمان مشخصی که از پیش تعیین کرده ایم، تکرار میکنیم.
علت اینکه جمعیت اولیه را با توزیع یکنواخت متغیرهای تصمیم درنظر گرفته ایم، این است که فضای جستجو را یکنواخت کنیم. این به ما کمک میکند که فضای جستجو را به طور مؤثرتری جستجو کنیم.
ما تقاطع را زمانی به حافظه ثانویه اعمال میکنیم که پر باشد و ما بتوانیم به نقاط میانی بین آنها دست یابیم. چنین اطلاعاتی برای بهبود کارایی الگوریتم استفاده میشود.
حافظه ثانویه: ما از یک حافظه ثانویه یا اضافی به عنوان یک مکانیسم نخبه گرایی استفاده میکنیم تا بهترین حلهایی که در طول فرایند یافت میشوند را نگهداری کنیم. اعضائی که در این حافظه ذخیره میشوند، نه تنها نسبت به یکدیگر، بلکه نسبت به همه اعضاء قبلی که سعی داشتهاند وارد حافظه ثانویه شوند، غیرمغلوب هستند. بنابراین، این حافظه ثانویه، ما را به جبههی پارتو مسأله نزدیک نگه میدارد.
باتوجه به اجرای یک توزیع یکنواخت بر روی حلهای غیرمغلوبی که جبههی پارتو یک مسأله را پوشش میدهند، از شبکه تطبیقی که بوسیله نولِس و کورنه[۱۰۷] ارائه شدهاست، استفاده میکنیم (شکل ۲-۷).
عضو با پایین ترین شایستگی برای هدف ۲
عضو با بالاترین شایستگی برای هدف ۱
فضای پوشش داده شده توسط شبکه هدف ۲
عضو با پایین ترین شایستگی برای هدف ۱
عضو با بالاترین شایستگی برای هدف ۲
فضای پوشش داده شده توسط شبکه هدف ۱
شکل ۲-۷- یک شبکه تطبیقی برای رسیدگی به حافظه ثانویه
به طور ایده آل، اندازه حافظه ثانویه باید بینهایت باشد. به هر حال، از آنجائی که این کار درعمل غیرممکن است، باید محدودیتی را بر سر تعداد اعضاء غیرمغلوبی که میخواهیم در حافظه ثانویه ذخیره شوند، قراردهیم. با اجرای این محدودیت، حافظه اضافی ما، حتی اگر اعضاء غیرمغلوب بیشتری که بخواهند وارد شوند، وجود داشته باشد، در بعضی نقاط، پر میشود. هنگامیکه این اتفاق میافتد، ما از یک معیار اضافی برای اجازه به اعضاء غیرمغلوبی که بخواهند وارد حافظه اضافی بشوند، استفاده میکنیم: چگالی شبکه (یعنی، اعضائی که به ناحیه با چگالی کمتر جمعیت تعلق دارند، ارجحیت دارند).
برای اجرای شبکه تطبیقی به صورت زیر عمل میکنیم:
-
- فضای تابع هدف را باتوجه به تعداد تقسیماتی که توسط کاربر مشخص میشود، تقسیم میکنیم.
-
- برای هر عضو در حافظه اضافی، سلولی که به آن تعلق دارد را تعیین میکنیم.
-
- اگر حافظه ثانویه پر باشد، متراکم ترین سلول را مشخص میکنیم.
-
- برای تعیین اینکه یک آنتی ژن مشخص اجازه ورود به حافظه اضافی را دارد یا خیر، به صورت زیر عمل میکنیم:
-
- اگر به متراکم ترین سلول تعلق داشته باشد، اجازه ورود ندارد.
-
- درغیر اینصورت، این عضو اجازه ورود دارد. به همین علت، ما یک عضو را (به صورت تصادفی) از متراکم ترین سلول حذف میکنیم تا جای خالی برای این آنتی ژن داشته باشیم.
۲-۴-۳-۳- الگوریتم VIS
در این قسمت، براساس ساختار مسأله بهینه سازی opt-aiNet، یک رویکرد بهینه سازی چندهدفه جدید ارائه میشود. این الگوریتم، سیستم ایمنی برداری (VIS) نامیده میشود و همان ساختاری را دارد که برای مسأله تک هدفه در شکل (۲-۸) نشان داده شدهاست. رویکرد پیشنهادی، تکاملی بر اولین نسخه آن است که توسط فرسچی و رِپِتو ارائه شدهاست. این الگوریتم به شکل زیر عمل میکند [۱۹]:
-
- در ابتدا، یک جمعیت اولیه به صورت یکنواخت و تصادفی از بردارهایی از اعداد واقعی ایجاد میکنیم و یک برازش را به هر حل تخصیص میدهیم. حافظه در حال حاضر خالی است.
-
- هر سلول را به تعداد بار تکثیر میکنیم و هر کدام را به صورت محلی بوسیله یک اختلال تصادفی جهش میدهیم.
-
- برای هر کلون، مقدار توابع هدف و روابط غلبه پارتو (درمیان همه اعضاء: والدین، فرزندان و سلولهای حافظه) ارزیابی میشود. از آنجاکه این برازش، به جمعیت واقعی بستگی دارد، مقدارش به همان کلون تخصیص داده میشود و برای سلولهای پدر، دوباره محاسبه میشود. اعضاء غیرمغلوب در حافظه کپی میشوند. به خاطر اینکه حافظه، فقط شامل حلهای غیرمغلوب محلی میشود، اعضائی از حافظه که درنتیجه آن، مغلوب میشوند نیز حذف میشوند.
موضوعات: بدون موضوع
[پنجشنبه 1400-07-29] [ 02:51:00 ب.ظ ]