برنامه نویسی و ITمهندسی

آموزش منطق فازی در متلب

منطق فازی در متلب چیست؟ منظور از منطق فازی استدلال علمی مسائل بر اساس ساختار اندیشه واقعی یک انسان است. نام اولیه این شیوه نظریه ابهام بوده که توسط فردی به نام مکس بلکه مطرح شد. عبارت منطق فازی در فرهنگ لغات به شرایط نامعلوم و غیر قطعی اطلاق می‌شود. این نظریه ادعا دارد ابهام در ماهیت علم است. حال این که منطق فازی در متلب چگونه پیاده‌سازی می‌شود را در ادامه مقاله خواهیم آموخت.

ساختار منطق فازی در متلب

ساختار منطق فازی در متلب را می‌توانید در تصویر زیر ببینید. در ادامه هرکدام از بخش‌هایی که در تصویر وجود دارد را توضیح می‌دهیم.

ساختار منطق فازی در متلب

  • قوانین: تمام قواعد و شرایطی که به صورت «اگر… آنگاه» توسط شما تعیین می‌شوند در این قسمت قرار دارند. کم و زیاد کردن این قوانین امکان پذیر است. البته تجربه نسان می‌دهد بهترین پاسخ باید با کمترین قوانین ممکن دریافت ‌شود.
  • فازی سازی: در این مرحله ورودی‌ها به اطلاعات قابل استفاده در منطق فازی تبدیل می‌شود. یعنی اعداد قطعی به اعداد فازی تغییر شکل می‌دهند؛ زیرا منطق فازی با اعداد قطعی کار نمی‌کند.
  • موتور استنتاج: این بخش در تصویر هوش نامیده شده است که ما آن را مغز نیز می‌خوانیم. در این مرحله میزان انطباق ورودی‌های با قوانین سنجیده می‌شود. درصد این انطباق نزدیکی پاسخ دریافتی به منطق اندیشه انسان را نشان می‌دهد.
  • برگردان از فازی: این قسمت را فازی زدایی نیز می‌نامیم. در این مرحله اعداد فازی مجدداً به اعداد قطعی تبدیل شده و به عنوان خروجی نمایش داده می‌شوند. هدف از این تبدیل قابل درک بودن برای انسان است.
آموزش مقدماتی تا پیشرفته متلب

 

در ادامه منطق فازی را با جزئیات بیشتری مورد بررسی قرار خواهیم داد.

ویژگی‌های منطق فازی در متلب

از جمله ویژگی‌های اساسی منطق فازی در متلب می‌توان به موارد زیر اشاره نمود. البته این موارد تنها قابلیت‌های اساسی منطق فازی در متلب محسوب می‌شوند.

  • انعطاف‌پذیری بالا در پیاده‌سازی
  • سادگی پیاده‌سازی الگوریتم‌های یادگیری ماشین
  • امکان تولید دو پاسخ متفاوت برای یک مسئله
  • قابلیت حل مسئله با پاسخ تقریبی یا غیر قطعی
  • امکان استفاده از شرط‌ها و قید‌های منعطف
  • امکان فرایندی سازی استنتاج
  • امکان تولید توابع غیر‌خطی با پیچیدگی‌های دلخواه
  • وجود وابستگی‌های میان مدل‌های ایجاد شده

پیشنهاد مطالعه: بررسی کاربردهای متلب در مهندسی مخابرات

منطق فازی در متلب

متلب یک امکان عالی برای پیاده سازی منطق فازی ارائه می‌دهد و آن فراهم شدن یک محیط گرافیکی برای این منظور است. برای دسترسی به این محیط گرافیکی می‌توانید در خط فرمان این نرم‌افزار کلمه Fuzzy را تایپ کنید.

منطق فازی در متلب

با تایپ این کلید واژه و زدن Enter صفحه زیر باز می‌شود. این پنجره تولباکس فازی در متلب نیز نام دارد. در ادامه این بخش با آموزش تولباکس فازی در متلب همراه شما عزیزان خواهیم بود.

این محیط دارای سه بخش است. بخش اول ورودی یا Input1 نام دارد. دلیل وجود عدد در نام این بخش این است که می‌توانیم به روشی که در تصویر بعدی می‌بینید تعداد ورودی‌ها را افزایش دهیم. هر ورودی جدید یک شماره افزایش پیدا می‌کند.

بخش دوم نیز مربوط به الگوریتم یا سیستم تصمیم گیری است که قصد داریم استفاده کنیم. یعنی همان قواعد و شرایطی که برای فازی سازی به کار می‌گیریم. به صورت پیش فرض الگوریتم یا سیستم ممدانی mamdani در این بخش نمایش داده می‌شود که می‌توانید با توجه به نیاز خود آن را تغییر دهید. دستورات فازی اطلاعات خود را از این بخش دریافت می‌کنند. بخش سوم نیز شامل المان خروجی می‌شود. یعنی ورودی وارد قسمت میانی که هوش است شده و پس از پردازش به بخش خروجی می‌رود تا عملیات دفازی روی آن انجام پذیرد.

برای اضافه کردن خروجی یا Output نیز می‌توانید طبق تصویر زیر عمل کنید. نام گذاری این بخش نیز از قواعدی که برای ورودی توضیح دادیم تبعیت می‌کند.

با کلیک روی قسمت‌های هرکدام از ورودی و خروجی می‌توانیم نام آن‌ها را تغییر دهیم.

برای تعییر نام خروجی هم به همین منوال عمل کنید. یعنی روی خروجی مورد نظر کلیک کرده و در کادر مشخص شده در تصویر نام جدید را برای آن می‌نویسیم.

جهت تغییر اسم بخش میانی باید پروژه را ذخیره کنیم. برای این کار از منوی فایل گزینه مربوطه را می‌زنیم.

با کلیک روی این گزینه یک صفحه ذخیره سازی مانند هر برنامه دیگری باز می‌شود که باید یک نام برای آن تعیین و دکمه OK را بزنیم تا در قالب یک فایک ذخیره شود. در هنگام ذخیره هر نامی برای فایل در نظر بگیریم همان نام در قسمت میانی نمایش داده خواهد شد.

اگر به کادر موجود در سمت چپ پنجره دقت کنید ۵ گزینه خواهید دید. گزینه‌های اول و دوم از بالا مربوط به ورودی‌ها هستند. با این گزینه‌ها منطق‌های AND، OR، و NOT را روی ورودی اعمال می‌کنند. گزینه سوم که Implication نام دارد مربوط به بخش میانی رابط گرافیکی ما یا همان مغز سیستم است. در این بخش الگوریتم فازی سازی را مشخس می‌کنیم. دو گزینه آخر نیز متدهای قابل تنظیم برای خروجی را در بر می‌گیرند. این متد‌ها همان الگورتیم‌های دفازی هستند.

این محیط گرافیکی که تولباکس منطق فازی در متلب نام دارد ابزار‌های مهمی را در اختیار کاربر قرار می‌دهد. این ابزارها شامل المان‌های گرافیکی، بلوک سیمولینک جهت تحلیل و شبیه‌ساز سیستم‌ها بر پایه منطق فازی می‌شوند. ویژگی‌های کلی این ابزار‌ها به شرح زیر هستند.

  • واسطه گرافیکی خاص جهت ایجاد سیستم‌های استنتاجی فازی
  • قابلیت مشاهده و تحلیل نتایج دریافتی
  • قابلیت پشتیبانی از مدارهای منطقی مانند AND، OR و NOT
  • پشتیبانی از توابع عضویت سیستم‌های استنتاجی فازی
  • پشتیبانی پیش فرض از سیستم‌های استنتاجی ممدانی و سوگنو
  • امکان اعمال الگوریتم‌های استنتاجی و غیر استنتاجی به صورت ‌سفارشی
  • شکل دهی خودکار به توابع عضویت
  • پشتیبانی از تکنیک‌های آموزش تطبیقی عصبی و خوشه‌بندی فازی
  • امکان تعبیه سیستم استنتاج در مدل سیمولینک

سیستم استنتاج ممدانی چیست؟

حال که با پیاده سازی منطق فازی در متلب و رابط گرافیکی آن آشنا شدیم، بیایید در مورد مغز سیستم صحبت کنیم. مغز یا هوش سیستم همان الگوریتمی است که منطق فازی طبق آن عمل می‌کند. چون سیستم ممدانی پیش فرض نرم‌افزار است، با آن شروع کردیم.

آموزش کامل سیمبولینک با نرم افزار متلب

 

ممدانی و اسیلیان افرادی هستند که این سیستم را در سال ۱۹۷۵ طراحی کردند. این سیستم به طور گسترده‌ای در سیستم‌های پشتیبانی تصمیم در هوش مصنوعی و یادگیری ماشین استفاده می‌شود؛ زیرا طبیعت بصری و تفسیری دارد. دیاگرام کلی سیستم استنتاج فازی ممدانی به شکل زیر است.

سیستم استنتاج ممدانی چیست

سیستم استنتاج تاکاگی سوگنو چیست؟

در سال ۱۹۸۵ سیستم استنتاج دیگری با نام تاکاگی سوگنو طراحی شد که بیشتر به نام سوگنو معروف است. طراحان این الگوریتم، تاکاگی و میشو سوگنو بودند. این تکنیک بیشتر در سیستم‌های کنترلی که محاسبات ریاضی پیچیده‌تری دارند استفاده می‌شود. شکل بعدی نشان دهنده دیاگرام سیستم استنتاجی تاکاگی سوگنو در منطق فازی است.

سیستم استنتاج تاکاگی سوگنو چیست؟

غیر فازی‌سازی چیست؟

تا اینجا در مورد فازی سازی صحبت کردیم و گفتیم که منظور از این عبارت شرایط نامعلوم است. اما اگر بخواهیم به شرایط معلوم یا قطعی برسیم باید عملیات غیرفازی‌سازی را انجام دهیم. این کلید واژه در منابع مختلف فازی‌ زدایی یا DFuzyy نیز نامیده می‌شود. در واقع به تبدیل اعداد فازی را به اعداد قطعی، فازی زدایی می‌گوییم. روش‌های دفازی عبارت‌اند از:

  • Centroid Of Area (COA) یا مركز ثقل ناحيه
  • Bisecter Of Area (BOA) یا نيمساز ناحيه
  • Mean Of Maximum (MOM)یا ميانگين ماكزیمم
  • Smallest Of Maximum (SOM) یا بيشترین ماكزیمم
  • Largest Of Maximum (LOM) یا کوچک‌ترین ماكزیمم
  • Weighted Average (WM) یا ميانگين وزنی
  • Weighted Sum (WS)یا مجموع وزنی

میان موارد معرفی شده گزینه‌ای COA و WM کاربرد گسترده‌تری دارند.

پیشنهاد مطالعه: کتاب آموزش سیمولینک متلب برای افراد مبتدی و حرفه‌ای

مقایسه سیستم‌های استنتاج فازی ممدانی و سوگنو

الگوریتم ممدانی یک ساختار منطقی نسبتاً ساده را ارائه می‌دهد. در حالی که الگوریتم سوگنو برای سیستم‌هایی که نیاز به محاسبات نسبتاً پیچیده ریاضی دارند مناسب است. مقایسه کلی این دو الگوریتم را در جدول زیر مشاهده می‌کنیم.

ممدانی سوگنو
خروجی قوانین آن تابع عضویت است. خروجی قوانین آن تابع عضویت نیست.
خروجی توزیع شده دارد. خروجی آن توزیع شده نبوده بلکه ترکیبی ریاضی از قدرت قوانین است.
سطح خروجی آن پیوسته نیست. سطح خروجی پیوسته دارد.
به صورت MISO و MIMO است. فقط به صورت MISO است.
دارای قدرت بیانی و تفسیر قوانین است. قدرت تفسیری پایینی دارد.
انواع دفازی سازی SOM، COA، BOA، MOM و LOM را پشتیبانی می‌کند. انواع دفازی سازی WS و WA را پشتیبانی می‌کند.
انعطاف‌پذیری پایینی در طراحی سیستم دارد. انعطاف‌پذیری بالایی در طراحی سیستم دارد.

آموزش ANFIS در متلب

برای پیاده سازی منطق فازی در متلب معمولاً از سیستم‌های استنتاج فازی معروف به نام‌های ممدانی و تاکاگی سوگنو استفاده می‌شود. سیستم دیگری هم وجود دارد که ساختار ANFIS می‌نامیم. این الگوریتم بسیار شبیه سیستم‌های استنتاج فازی عمل می‌کند. این روش از زیر شاخه‌های الگوریتم شبکه عصبی محسوب می‌شود؛ بنابراین در آموزش شبکه عصبی در متلب بیشتر این نام را خواهید شنید.

ANFIS مخفف شده عبارت adaptive network-based fuzzy inference system است. این سیستم یک شبکه تطبیق پذیر و قابل آموزش محسوب می‌شود. به‌عنوان مثال فرض کنید روابط منطقی زیر را داریم.

آموزش ANFIS در متلب

در این رابطه دو ورودی x و y به یک خروجی z ختم می‌شوند. سیستم ANFIS این رابطه به شکل زیر خواهد بود.

بنابراین در لایه اول ورودی‌ها از توابع عضویت عبور می‌کنند.

لایه‌های ۲ تا ۴ نیز عملیاتی هستند که قرار است روی ورودی‌ها انجام شوند. در نهایت در لایه ۵ خروجی را داریم. این الگوریتم معادل سیستم استنتاج فازی سوگنو است.

دستورات منطق فازی در متلب

تمام دستورات منطق فازی در متلب را می‌توانید از جدول زیر استخراج کنید. دستورات منطق فازی در متلب تقریبا تمام نیاز‌های شما را براورده خواهند کرد.

ردیف کد توضیحات
۱ Fuzzy جهت فراخوانی محیط گرافیکی پیاده‌سازی منطق فازی
۲ Anfisedit فراخوانی محیط پیاده سازی شبکه عصبی ANFIS
۳ Findcluster فراخوانی محیط ادیتور به منظور دسته بندی فازی
۴ Mfedit فراخوانی ادیتور توابع عضویت ورودی و خروجی
۵ Surfview مشاهده سطح قوانین خروجی کنترلرهای فازی
۶ Ruleview مشاهده سطح قوانین کنترلرهای فازی
۷ Ruleedit کد تغییر قوانین فازی کنترلرها
۸ Dsigmf کد ساخت توابع عضویت مرکب از اختلاف بین ۲ تابع عضویت حلقوی
۹ Plotmf با کاربرد ترسیم توابع عضویت با دریافت مقادیر ورودی
۱۰ Plotfis با کاربرد ترسیم نتایج خروجی توابع عضویت
۱۱ Sigmf نمایش تابع عضویت سیگما شکل
۱۲ Psigmf نمایش توابع عضویت ساخته شده از ترکیب ۲ تابع عضویت هلالی شکل
۱۳ Pimf نمایش توابع عضویت ساخته شده پی شکل
۱۴ Gbellmf نمایش توابع عضویت ساخته شده زنگوله شکل عمومی
۱۵ Gaussmf نمایش توابع عضویت ساخته شده منحنی گوسینی
۱۶ gauss2mf نمایش توابع عضویت ترکیب شده گوسین
۱۷ Evalfis دریافت خروجی از سیستم استنتاج فازی
۱۸ Defuzz نمایش تابع عضویت حقیقی شده
۱۹ Addvar افزودن متغیر به سیستم استنتاج فازی
۲۰ Addrule افزودن قوانین به سیستم استنتاج فازی
۲۱ Addmf افزودن توابع عضویت به سیستم استنتاج فازی
۲۲ Zmf نمایش تابع عضویت Z شکل
۲۳ Trimf نمایش تابع عضویت مثلثی شکل
۲۴ Trapmf نمایش تابع عضویت ذوزنقه‌ای شکل
۲۵ Smf نمایش تابع عضویت S شکل
۲۶ Readfis فراخوانی از کردن سیستم استنتاج فازی از طریق فایل
۲۷ Parsrule نمایش قوانین فازی تجزیه شده
۲۸ Newfis ایجاد سیستم استنتاج فازی جدید
۲۹ mf2mf نمایش تابع عضویت بین پارامترهای ترجمه شده فازی
۳۰ Getfis نمایش خصوصیات سیستم فازی
۳۱ Gensurf نمایش سطح خروجی سیستم استنتاج فازی
۳۲ Evalmf ارزیابی تابع عضویت عمومی
۳۳ Fcm دسته بندی C-means فازی
۳۴ Anfis ورود به محیط ادیتور فازی عصبی تنها از موتور استنتاج سوگنو
۳۵ Writefis ذخیره سیستم استنتاج فازی در فایل
۳۶ Showrule نمایش قوانین سیستم استنتاج فازی
۳۷ Showfis نمایش حاشیه در سیستم استنتاج فازی
۳۸ Setfis تنظیم خواص سیستم فازی
۳۹ Rmvar حذف متغیر از سیستم استنتاج فازی
۴۰ Rmmf حذف توابع عضویت از سیستم استنتاج فازی
۴۱ genfis1 ساختن ساختار سیستم استنتاج فازی با استفاده از داده‌های شبکه بندی شده
۴۲ genfis2 ساختن ساختار سیستم استنتاج فازی با استفاده از داده‌های کلاس‌بندی کاهشی
۴۳ genfis3 ساختن ساختار سیستم استنتاج فازی با استفاده از داده‌های کلاس‌بندی روش FCM
۴۴ Subclust پیدا کردن مراکز دسته‌ها با دسته‌بندی کاهشی داده‌ها
۴۵ Fuzblock کتابخانه شبیه‌سازی منطق فازی
۴۶ Sffis صفحه کدنویسی سیستم فازی برای پیکربندی شبیه‌سازی آموزش متلب آسان

سخن پایانی

منطق فازی یکی از علوم مورد استفاده در مباحث علمی مانند هوش مصنوعی و یادگیری ماشین محسوب می‌شود. این الگوریتم توسط دکتر لطفی زاده بهینه سازی شده است. پیاده‌سازی منطق فازی در متلب با توجه به محیط گرافیکی‌ که در اختیار کاربرد قرار می‌گیرید بسیار ساده شده. در این مطلب سعی کردیم یک راهنمای جامع در مورد کار با منطق فازی در متلب ارائه دهیم. برای کسب اطلاعات بیشتر در این مورد می‌توانید از فیلم‌های آموزش متلب که در مکتب خونه وجود دارند استفاده کنید.

آموزش پردازش سیگنال در متلب

کامل بهرامی

کامل بهرامی دانش‌آموخته کارشناسی ارشد رشته مهندسی کامپیوتر گرایش نرم‌افزار از دانشگاه ارومیه است. به حوزه کامپیوتر، برنامه‌نویسی و فناوری اطلاعات علاقه‌مند‌ است و هم اکنون به عنوان عضو تیم سئو و مدیر تیم نویسنده‌های مکتب خونه در این مجموعه فعالیت می‌کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا