شکل ۳- ۵: کدگذاری پارامترهای متغیرهای ورودی و خروجی
که Cn تعداد کلاسها در مسئله دستهبندی و m تعداد متغیرها است. از ترکیب پارامترهای توابع عضویت متغیرهای ورودی و خروجی با مجموعه قوانین یک ذره کامل تولید میشود.
۳-۳-۲- کدگذاری قوانین فازی
یک ذره کامل که نمایانگر یک سیستم فازی است به صورت شکل (۳-۶) نشان داده میشود. رشته اولی نشان دهنده کدگذاری پارامترهای ورودی، رشته دومی نشان دهنده کدگذاری خروجی که در مسئله دسته بندی تعداد توابع عضویت خروجی به اندازه تعداد دسته ها میباشد. رشته سوم مجموعه قوانین را نمایش میدهد.
شکل ۳- ۶:کدگذاری هر ذره شامل پارامترهای توابع عضویت و مجموعه قوانین
در شکل بالا rN مجموعه فازی تالی قانون و برابر با برچسب کلاس و R ماکسیمم تعداد قوانین است. برای کدگذاری تالی در مجموعه دادههای دیابت ما نیاز به دو بخش فازی داریم. در این پایان نامه برای مشخص کردن توابع عضویت کلاس بیماران و افراد سالم دو تابع عضویت ذوزنقهای استفاده شده است که برای مشخص کردن آنها به صورت متقارن دو نقطه نیاز است. همچنین بخش حیاتی دیگر در کدگذاری هر ذره بخش قوانین است، این بخش که پس از پارامترهای توابع عضویت میآید شامل مجموعه قوانین فازی میشود که هر قانون فازی شامل بخش مقدم و تالی میشود. متغیرهای ورودی توسط سه مجموعه فازی سازی میشوند که این مجموعههای فازی همان طور که بیان شد به وسیله نُه نقطه تعریف میشوند .
در مسئله دستهبندی تعداد مقدم قوانین برابر با تعداد خصوصیتهای ورودی است. هر یک از این مقدمهای قانون یک عدد گسسته بین ۱ تا ۳ میباشد که در آن ۱ نشان دهنده کم، ۲ نشان دهنده متوسط و ۳ نشان دهنده زیاد است. تعداد تالیهای هر قانون برابر با تعداد کلاسها در مسئله دستهبندی است. شماره کلاس به عنوان خروجی هر قانون فازی در نظر گرفته میشود که برای مجموعه دادههای دیابت با اعداد صحیح گسسته ۱ نشان دهنده کلاس غیر بیماران و یا ۲ نشان دهنده کلاس بیماران دیابتی نمایش داده میشود. تعداد قوانین میتواند در محدوده یک تا یک حد بیشینهای متغیر باشد.
طراحی یک مدل فازی میتواند به عنوان یک مسئله بهینهسازی در فضای چند بُعدی در نظر گرفته شود که در آن هر یک از اعضای جمعیت به صورت بالقوه یک مدل فازی با ساختار و پارامترهای متفاوت میباشد. طول هر ذره در الگوریتم بهینهسازی ازدحام ذرات پیشنهادی به روش زیر محاسبه میشود:
(۳-۱)
در مسئله دستهبندی طبق فرض m ورودی و یک خروجی وجود دارد و هر یک از متغیرهای ورودی با سه تابع عضویت نشان داده میشود (یک تابع عضویت مثلثی و دو تابع عضویت ذوزنقهای) و خروجی به اندازه تعداد کلاسها © دارای توابع عضویت ذوزنقهای خواهد بود. هر تابع عضویت شامل سه پارامتر است. تعداد کل نقاط مورد نیاز برای تعیین توابع عضویت ورودی و خروجی برابر . Nr تعداد قوانین و هر قانون m+1 متغیر دارد. بنابراین، تعداد پارامترهایی که الگوریتم PSO برای اجرای یک سیستم فازی بهینه کند (اندازه ذره) به صورت معادله (۳-۱) محاسبه میشود.
۳-۳-۳- PSO پیشنهادی
همان طور که بیان شد PSO یک الگوریتم بهینهسازی فرا اکتشافی بر مبنای جمعیت است و شامل ازدحامی از ذرات است که در فضای n بُعدی حرکت میکنند. در PSO استاندارد هر ذره نمایشگر یک راهحل ممکن برای مسأله موجود است و هر ذره دارای یک بردار مکان xi و یک بردار سرعت v است. در تکرار t موقعیت ذره توسط بهترین موقعیت شخصی و بهترین موقعیت کلی در میان تمام ذرات بدست میآید سرعت به صورت رابطه (۲-۱۱) به روز میشود. اگر xi(t) نشان دهندهی موقعیت فعلی ذرهی i ام در فضای جستجو در زمان t باشد، موقعیت آتی ذره i ام به وسیلهی جمع سرعت جدید همان ذره vi(t+1)، با موقعیت فعلی آن، طبق رابطهی (۲-۱۰) محاسبه میشود.
شکل ۳- ۷: فلوچارتPSO [30]
در تمام الگوریتمهای بر پایهی جمعیت مانند PSO و GA که دارای رفتار اجتماعی میان اعضای جمعیت هستند، دو ویژگی اساسی باید بررسی شود: قابلیت الگوریتم برای اکتشاف و جستجو در تمام بخشهای فضای راهحل و قابلیت استخراج (بهره کشی) بهترین راه حل ممکن. در این پایان نامه PSO پایه را به وسیله به کار بستن مکانیزمهای ارتقاء تنوع ذرات و استراتژیهای جستجوی همسایگی بهترین خاطره جمعی بهبود بخشیدیم که یک موازنه میان تواناییهای اکتشاف و بهره کشی الگوریتم پیشنهادی برقرار میکند.
کاهش تنوع ذرات یک مشکل بنیادی طی فرایند جستجو برای الگوریتمهای بر پایه PSO است. برای جلوگیری از افت تنوع و حفظ گوناگونی ذرات در این پایان نامه مکانیزم جدیدی ارائه شده است. برای هر ذره ذره جدید توسط معادلههای (۳-۲) و (۳-۳) گسترش مییابد. ذره آزمایشی به روش زیر توسعه مییابد:
(۳-۲)
که در آن شماره ذرات، تعداد ابعاد، یک احتمال از پیش تعریف شده و یک عدد تصادفی یکنواخت بین صفر و یک است. اگر در معادله (۳-۲) بزرگتر باشد احتمال اینکه ذره آزمایشی برابر با باشد بیشتر است و اگر کوچکتر باشد احتمال اینکه بدون تغییر بماند بیشتر خواهد بود. فرایند انجام گرفته مشابه برش در الگوریتم تکامل تفاضلی (DE) است. تفاوت روش ارائه شده با سایر روشها که از ترکیب DE و PSO استفاده کردهاند در این است که دیگران از DE برای تکامل بهترین خاطره جمعی و ارتقاء سرعت همگرایی استفاده کردهاند. در حالی که، در روش ارائه شده عملگر برش DE پس از تغییر یافتن به وسیله ترکیب با روش تعمیم یافته آموزش بر پایهی ذره مخالف برای بهبود تنوع ذرات و قابلیت اکتشاف الگوریتم PSO به کار میرود. نهایتاً ذره جدید با توجه به مناسب بودن پاسخ ارائه شده توسط ذره جدید و ذره آزمایشی انتخاب میشود.
(۳-۳)
علاوه بر این، تنوع را میتوان با جا به جا کردن بدترین ذرات با رونوشتهای بهترین ذرات افزایش داد. برای غلبه بر مشکلات جستجوی ناقص توسط PSO دو روش مختلف یکپارچه شدند تا قابلیت اکتشاف PSO را بهبود بدهند. همچنین کارایی الگوریتم با در نظر گرفتن این که جابهجایی تنها در صورتی رخ میدهد که ذره آزمایشی کیفیت بهتری نسبت به ذره جدید داشته باشد ارتقاء مییابد.
همانند بسیاری از الگوریتمهای بهینهسازی PSO از مشکل اساسی همگرایی زودرس رنج میبرد به خصوص زمانی که با مسائل با ابعاد بالا سر و کار دارد. بعضی اوقات راهحلی که بدست آمده در مرز بهینه و به بهینه سراسری نزدیک است و همسایههای ذرات گیر افتاده ممکن است در بر دارنده بهینه سراسری باشند. در چنین شرایطی، جستجوی همسایگی ذرات بدست آمده میتواند برای یافتن راه حل های بهتر سودمند باشد. به همین منظور، یک سری استراتژیهای جستجوی همسایگی به برخی از الگوریتمهای الهام گرفته از طبیعت اعمال شده است.
برای بهره کشی بیشتر، یک روش جستجوی بهترین همسایه که از الگوریتم جستجوی نزدیکترین همسایه الهام گرفته به کار برده شده که بر روی بهترین خاطره جمعی اعمال میشود. در تمام تکرارها، الگوریتم به جستجوی بهترین ذرات همسایه میپردازد و pbest را به سمت آنها حرکت میدهد تا بهترین ذره حقیقی را بیابد.
۳-۳-۴- شرح الگوریتم
در الگوریتم پیشنهادی هر یک ذرات در ابتدا به صورت تصادفی پارامترهای توابع عضویت را مقداردهی اولیه کرده و ترمهای فازی را برای هر صفت انتخاب میکنند و یک سیستم فازی بالقوه را ایجاد میکنند. اکنون در حلقهی داخلی هر ذره مجموعه پارامترهای توابع عضویت و ترمهای مجموعه قوانین را با توجه به بهترین خاطره شخصی خود و بهترین خاطره جمعی تمام ذرات تغییر میدهد.
در این روش هر ذره در هر دور تعدادی از پارامترها و ترمها را تغییر میدهد تا قانون بهتری را ایجاد کند. هر ذره میتواند حداکثر به اندازه مقدار پارامتر Max_Change ترمهای قانون ایجاد شده را تغییر دهد به این امید که کیفیت قانون ساخته شده را افزایش دهد. استفاده از پارامتر Max_Change سبب میشود که هر ذره (Particlet t>0) از قوانین ساخته شده قبلی استفاده کند. بدین ترتیب سطح رقابت ذرات کاهش مییابد و سطح همکاری آنها افزایش مییابد. همچنین از آنجا که محدوده بازه هر متغیر مشخص هست باید برای ساخت توابع عضویت محدودیتهایی را بر روی پارامترهای توابع عضویت اعمال کنیم.
شکل ۳- ۸: تابع Membership_and_Rule_Learn
// Membership_and_Rule_Learn Function //
//Input: training samples
// Output: Fuzzy Classifier (Membership function parameters and Fuzzy Rules)
Begin
Rule Num= 1;
While (Rule Num <=MaxNumRule)
-
- J=0; // PSO iteration counter
-
- Training Set = (all of the training samples), Test Set = (all of the test samples);
-
- Define coding method for variable’s parameters and fuzzy rules;
Repeat
-
- Initialize particles;
-
- Compute fitness of particles and find the best personal and best global;
While (t<Max_particles) or (same fitness value has been obtained Max-Unchanged)
-
- Particlet modifies membership function’s parameters and rules according to variable’s limitations and Max_Change;
-
- Computing the quality of constructed fuzzy classifier by Training Set;
-
- Updating the best personal and best global;
-
- Use hybrid of DE and opposition-based learning to enhance the diversity;
- Use nearest neighborhood search on best global to accelerate convergence;
-
-