فازی نوع 2 یا Type-2 Fuzzy Logic توسعهای از منطق فازی نوع 1 است که با هدف مدلسازی بهتر عدم قطعیت طراحی شده است. در سیستم فازی نوع 1، درجه عضویت هر ورودی یک مقدار مشخص بین صفر و یک است، اما در فازی نوع 2 خود تابع عضویت نیز میتواند دارای عدم قطعیت باشد.
این ویژگی باعث میشود سیستمهای فازی نوع 2 در مسائلی که دادهها دارای نویز، ابهام یا عدم قطعیت زیادی هستند، انعطاف بیشتری نسبت به سیستمهای فازی معمولی داشته باشند.
چرا فازی نوع 2؟
در بسیاری از مسائل واقعی تعیین دقیق تابع عضویت کار سادهای نیست.
برای مثال ممکن است چند متخصص درباره مرز میان مفاهیمی مانند «کم»، «متوسط» و «زیاد» نظرهای متفاوتی داشته باشند. همچنین دادههای واقعی ممکن است دارای نویز باشند یا رفتار سیستم با گذشت زمان تغییر کند.
در چنین شرایطی استفاده از یک تابع عضویت ثابت ممکن است نتواند عدم قطعیت موجود را به خوبی نمایش دهد.
فازی نوع 2 برای همین نوع مسائل طراحی شده است و میتواند عدم قطعیت موجود در خود تابع عضویت را نیز مدل کند.
تفاوت فازی نوع 1 و نوع 2
در فازی نوع 1، برای هر مقدار ورودی یک درجه عضویت مشخص در بازه صفر تا یک داریم.
اما در فازی نوع 2، درجه عضویت میتواند خود یک مجموعه فازی باشد.
در کاربردهای عملی، یکی از مهمترین و پرکاربردترین انواع فازی نوع 2، Interval Type-2 Fuzzy System است که نسبت به نوع عمومی محاسبات سادهتری دارد.
در این آموزش تمرکز اصلی بر سیستمهای فازی نوع 2 بازهای است.
مفهوم FOU
یکی از مهمترین مفاهیم در فازی نوع 2، Footprint of Uncertainty یا FOU است.
FOU ناحیهای است که عدم قطعیت تابع عضویت را نمایش میدهد.
در یک سیستم فازی نوع 2 بازهای، معمولاً دو تابع عضویت اصلی داریم:
- Upper Membership Function
- Lower Membership Function
فضای بین این دو تابع همان FOU است.
هرچه عدم قطعیت در تعریف تابع عضویت بیشتر باشد، این ناحیه میتواند گستردهتر شود.
تابع عضویت Upper و Lower
برای تعریف یک مجموعه فازی نوع 2 بازهای، از تابع عضویت بالا و پایین استفاده میشود.
تابع Upper حد بالای درجه عضویت و تابع Lower حد پایین آن را مشخص میکند.
در نتیجه به جای آنکه برای یک ورودی یک مقدار عضویت مشخص داشته باشیم، یک بازه از مقادیر عضویت در اختیار خواهیم داشت.
این موضوع یکی از تفاوتهای اصلی سیستم فازی نوع 2 با فازی نوع 1 است.
ساختار کلی سیستم فازی نوع 2
یک سیستم فازی نوع 2 معمولاً شامل بخشهای زیر است:
- Fuzzifier
- Rule Base
- Inference Engine
- Type Reducer
- Defuzzifier
ورودی ابتدا وارد بخش Fuzzifier میشود و سپس قوانین فازی توسط موتور استنتاج مورد ارزیابی قرار میگیرند.
یکی از بخشهای مهمی که در سیستم فازی نوع 1 وجود ندارد، Type Reducer است.
وظیفه Type Reducer تبدیل خروجی فازی نوع 2 به یک مجموعه فازی نوع 1 است تا در نهایت بتوان یک مقدار عددی Crisp تولید کرد.
Type Reduction چیست؟
خروجی موتور استنتاج در یک سیستم Type-2 هنوز دارای عدم قطعیت است و نمیتوان مستقیماً آن را به یک عدد تبدیل کرد.
بنابراین ابتدا باید مرحلهای به نام Type Reduction انجام شود.
در این مرحله مجموعه فازی نوع 2 به یک مجموعه فازی نوع 1 تبدیل میشود و سپس عملیات Defuzzification روی آن انجام میشود.
یکی از مهمترین روشهای کاهش نوع، روش مبتنی بر مرکز ثقل است.
الگوریتم Karnik-Mendel
یکی از الگوریتمهای مشهور در سیستمهای فازی نوع 2، Karnik-Mendel یا KM است.
این الگوریتم برای محاسبه حدود چپ و راست خروجی Type-Reduced استفاده میشود.
در این آموزش الگوریتم KM و شبهکد آن بررسی شده و نحوه محاسبه مقادیر مورد نیاز برای رسیدن به خروجی نهایی تشریح میشود.
مفاهیمی مانند:
- yl
- yr
- L
- R
- Firing Interval
در این بخش مورد بررسی قرار میگیرند.
Firing Interval در قوانین فازی
در سیستمهای فازی نوع 2، میزان فعال شدن یک قانون لزوماً یک عدد مشخص نیست و ممکن است به صورت یک بازه بیان شود.
این بازه با عنوان Firing Interval شناخته میشود.
در دوره نحوه محاسبه Firing Interval در قسمت Antecedent و Consequent قوانین بررسی میشود تا کاربر روند کامل اجرای یک Rule را در سیستم Type-2 درک کند.
قوانین فازی نوع 2
مانند سیستمهای فازی نوع 1، در فازی نوع 2 نیز از قوانین If-Then استفاده میشود.
تفاوت اصلی در این است که توابع عضویت موجود در قسمت شرط و نتیجه دارای عدم قطعیت هستند.
در آموزش نحوه تعریف Rule Base، ایجاد Rule Table و عملکرد قوانین با مثالهای گرافیکی بررسی میشود.
عملیات Min، Max و Product
در موتور استنتاج فازی از عملگرهای مختلفی برای ترکیب شرایط قوانین استفاده میشود.
در این دوره نحوه عملکرد عملگرهای:
- Min
- Max
- Product
در سیستم فازی نوع 2 توضیح داده میشود.
درک این عملیات برای فهم نحوه تولید Fired Rule FOU و خروجی نهایی سیستم اهمیت زیادی دارد.
طراحی گرافیکی سیستم فازی نوع 2
یکی از بخشهای مهم این دوره، آموزش کار با Toolbox فازی نوع 2 است.
کاربر یاد میگیرد چگونه بدون کدنویسی اولیه، یک سیستم فازی نوع 2 را از طریق محیط گرافیکی طراحی کند.
از جمله کارهایی که در این بخش آموزش داده میشوند:
- تعریف ورودیها
- تغییر نام ورودیها
- تعیین بازه ورودی
- افزایش یا کاهش تعداد ورودیها
- تعریف توابع عضویت
- تغییر نام Membership Functionها
- تنظیم Upper و Lower
- تعریف قوانین
- حذف و اضافه کردن Rule
- تنظیم بخش Inference
انواع Membership Function
در طراحی سیستم فازی نوع 2 میتوان از انواع مختلف توابع عضویت استفاده کرد.
در آموزش با نمونههایی مانند:
- Gaussian
- Triangular
- Gauss Mean
- Gauss Div
- Gauss Uncertain Peak
- Triangular Uncertain Peak
آشنا میشوید.
همچنین نحوه تنظیم پارامترهای این توابع و تغییر میزان عدم قطعیت آنها بررسی میشود.
تولید کد MATLAB بدون کدنویسی اولیه
یکی از قابلیتهای کاربردی Toolbox مورد استفاده در این آموزش، امکان طراحی گرافیکی سیستم و سپس Export کردن مدل به کد MATLAB است.
به این ترتیب ابتدا میتوانید ساختار سیستم را در محیط گرافیکی ایجاد کنید و سپس M-File تولیدشده را مشاهده و ویرایش کنید.
در دوره کد تولیدشده به صورت خط به خط بررسی میشود تا کاربر با ساختار برنامه نیز آشنا شود.
کدنویسی فازی نوع 2 در MATLAB
علاوه بر طراحی گرافیکی، نحوه پیادهسازی مستقیم سیستم فازی نوع 2 در MATLAB نیز آموزش داده میشود.
موضوعاتی مانند:
- ساخت FuzzyT2Struct
- تعریف ورودی و خروجی
- تعریف Membership Function
- تعریف Rule Base
- استفاده از تابع type2fls
- اعمال داده به سیستم
- دریافت خروجی
در بخش برنامهنویسی مورد بررسی قرار میگیرند.
این قسمت برای افرادی اهمیت زیادی دارد که میخواهند سیستم فازی نوع 2 را در یک پروژه بزرگتر یا الگوریتم دیگر استفاده کنند.
مدلسازی با دو ورودی و یک خروجی
در آموزش یک سیستم فازی نوع 2 دارای دو ورودی و یک خروجی نیز بررسی میشود.
این مثال کمک میکند کاربر مراحل طراحی یک سیستم را از تعریف توابع عضویت تا ایجاد قوانین و محاسبه خروجی به صورت عملی مشاهده کند.
بعد از درک این ساختار میتوان سیستم را برای تعداد بیشتری از ورودیها یا مسائل متفاوت توسعه داد.
کاربردهای فازی نوع 2
سیستمهای فازی نوع 2 در حوزههایی که عدم قطعیت و نویز اهمیت زیادی دارند قابل استفاده هستند.
برخی از کاربردهای آن عبارتند از:
- کنترل سیستمهای غیرخطی
- رباتیک
- پردازش تصویر
- تشخیص لبه
- Pattern Recognition
- Classification
- پیشبینی سری زمانی
- مدلسازی سیستمها
- پردازش دادههای نویزی
- تصمیمگیری
- سیستمهای هوشمند
- کاربردهای پزشکی
این آموزش برای چه افرادی مناسب است؟
این دوره میتواند برای گروههای زیر مناسب باشد:
- دانشجویان مهندسی برق و کنترل
- دانشجویان کامپیوتر و هوش مصنوعی
- پژوهشگران منطق فازی
- دانشجویان کارشناسی ارشد و دکتری
- افرادی که در پایاننامه از فازی نوع 2 استفاده میکنند
- پژوهشگران سیستمهای هوشمند
- علاقهمندان Computational Intelligence
- افرادی که قصد پیادهسازی Type-2 Fuzzy در MATLAB را دارند
پیشنیاز پیشنهادی
برای درک بهتر مطالب، آشنایی مقدماتی با منطق فازی نوع 1 توصیه میشود.
بهتر است کاربر با مفاهیمی مانند:
- Membership Function
- Fuzzification
- Rule Base
- Inference
- Defuzzification
آشنا باشد.
برای بخش کدنویسی نیز آشنایی اولیه با MATLAB مفید خواهد بود.
هدف این آموزش
هدف این دوره آن است که مخاطب ابتدا تفاوت سیستمهای فازی نوع 1 و نوع 2 را درک کرده و سپس با اجزای مختلف یک سیستم Interval Type-2 آشنا شود.
در ادامه کاربر میآموزد چگونه الگوریتم Karnik-Mendel و Type Reduction عمل میکنند و در نهایت میتواند یک سیستم فازی نوع 2 را هم به صورت گرافیکی و هم به صورت کدنویسی در MATLAB پیادهسازی کند.