منطق های تصمیم گیری
ساختار فازی یک ابزار کنترلی کارآمد است که منجر به بهبود عملکرد حوزه های مختلف بهینه سازی، مباحث کنترلی و .. می شود. از انجایی که خود منطق فازی در نهایت برای اخذ تصمیم گیری نیز از ورودی و خروجی کریپس استفاده می کند لازم است که در مقدمه به منطق کریسپ اشاره شود.
- منطق های تصمیم گیری
- منطق کریسپ
- منطق فازی - تفاوت منطق کریسپ و فازی
- منطق فازی
- تابع عضویت
- فازی سازی ورودی
- قوانین فازی
- غیر فازی سازی
- موتور استنتاج فازی
استنتاج ممدانی
استنتاج سوگنو - رابط گرافیکی fuzzy در متلب
منطق کریسپ همان منطق صفر و یک است که اساس کامپیوتر های امروزی را تشکیل می دهد. در این منطق پاسخ های صفر و یک را می توان معادل صحیح غلط، بله و خیر هم درنظر گرفت. تنها نکته اصلی این است در این منطق پاسخ دو حالت را بیشتر شامل نمی شود.
به عنوان مثال آیا هوا سرد است؟ بله (1) یا خیر (0)

منطق فازی که می تواند دسته بندی های مختلفی را به عنوان پاسخ به مساله شامل شود. همانطور که در شکل زیر مشاهده می شود، پاسخ منطق فازی می تواند قطعا، شاید، شاید نه و ... باشد.
به عنوان مثال آیا هوا سرد است؟ جواب می تواند مقادیر بین بله (1) و خیر(0) را هم شامل شود. مثلا معتدل (0.5)

تفاوت مجموعه کریسپ و فازی
تا اینجا ما با دو مفهوم قطعی و فازی به شکل زیر آشنا شده ایم:
- متغير هاي قطعي (Crisp Variables): متغير هايي هستند كه ارزش آن ها با يك مقدار معين بيان مي شود. روشن است كه مقدار متغییر ها دقيق و قطعي است.
- متغير هاي فازي يا زباني (Linguist Variables): متغير هايي هستند كه ارزش آن ها با يك مقدار معين بيان نمي شود بلكه براي توصيف آن ها از يك دسته از عبارات استفاده مي گردد. برخلاف حالت قبل توصيف ها مبهم هستند و هيچ قطعيتي ندارند. (متغيرها زبانی هستند نه عددی)
در جدول زیر سعی شده پر اهمیت ترین تفاوت های مجموعه کریسپ و فازی ذکر شود.
مجموعه فازی | مجموعه کریسپ | |
روش ها | Maximum membership principle, centroid method weighted average method, center of sums | Intuition, inference, rank ordering [1] angular fuzzy sets, neural network |
ویژگی | عناصر مجاز اند به صورت جزئی عضو مجموعه باشد. | عنصر یا عضو یک مجموعه است یا خیر. |
کاربرد | در کنترلر فازی استفاده شده است | طراحی دیجیتال |
Logic | بی نهایت مقدار | دو مقداره |
منطق فازی
منطق فازی ابداع شده توسط دکتر لطفی زاده امروزه یکی از پایه های اساسی نزدیک کردن عمکرد ماشین به منطق انسانی می باشد. سیستم های منطق فازی یک خروجی قابل قبول اما قطعی در پاسخ به یک ورودی ناقص ، مبهم ، تحریف شده و یا نادرست (fuzzy) تولید می کنند. در واقع می توان گفت که منطق فازی عملکردی مشابه مغز انسان درتصمیم گیری را پیاده سازی می کند.

مشابه بلوک نمایش داده شده هر سیستم فازی شامل زیر بخش هایی است که در زیر با هم مرور و با منطق کریسپ مقایسه خواهیم کرد.
سیستم فازی مبتنی بر دانش فرد از مساله می باشد. این بدین معناست که در صورتی می توانیم بالاتری کارایی را از سیستم انتظار داشت که بهترین درک را در تعیین پارامتر های ورودی و مشخص کردن توابع عضویت داشته باشیم.
تابع عضويت (Membership Function)
در این بخش بیایید بر روی توابع عضویت هر دو منطق اشاره کنیم و تفاوت این دو را در کنار هم مشاهده کنیم.

- در شکل سمت چپ می بینید مقدار تایع عضویت یا صفر است یا یک در حالی که در منطق فازی این مقادیر بین صفر و یک متغییر است. (محور عمودی معرف تابع عضویت)
- تابع عضویت در منطق کریسپ گسسته و مشتق پذیر نیست در حالی که منطق فازی این شکل پیوسته و مشتق پذیر می باشد.
فازی سازی ورودی ها (Fuzzifier)
همانطور که گفته شد باید با توجه به مسئله، تایع عضویت مورد استفاده را تشخیص داد. در واقع هر تابع عضویت بیانگر مقدار زبانی برای هر متغییر زبانی می باشد. متلب توابع زیر را برای فازی سازی در اختیار شما می گذارد.
از این میان توابع نشان داده شده، توابع Triangular و Gaussian جز پر کاربردترین ها می باشد.
قوانين فازي (Fuzzy Rules)
گزاره های فازی جملاتی هستند که ارتباط بین متغیر زبانی را با مقادیر زبانی مشخص می کنند. مثلا سرعت متوسط است. یا "x is A" که x سرعت، یک متغیر زبانی و A (متوسط) یک مقدار زبانی است.
می توانیم چندین متغییر زبانی (فازی) را با عملگر هایی AND ، OR و NOT برای گرفتن تصمیم در خروجی، با هم دیگر ترکیب کنیم.
منطق OR یا MAX
در این حالت درهر بازه بیشینه دو مقدار در نظر گرفته می شود. برای حالت زیر دو متغییر زبانی A و B در هر لحظه بیشترین مقدار در نمودار قرمز نمایش داده شده است. نمودار قرمز نمایشگر ترکیب دو مقدار زبانی منطق OR می باشد.

منطق AND یا MIN
در این حالت درهر بازه کمینه دو مقدار در نظر گرفته می شود. برای حالت زیر دو متغییر زبانی A و B در هر لحظه کمترین مقدار در نمودار قرمز نمایش داده شده است. نمودار قرمز نمایشگر ترکیب دو مقدار زبانی منطق AND می باشد.

منطق NOT
برای محاسبه مکمل یک متغییر زبانی باید در هرزمان آن را از مقدار یک کسر کنیم که به صورت شکل زیر خواهد بود.

غیر فازی سازی تصمیم (Defuzzifier)
انواع روش های غیرفازی سازی شامل موارد زیر می باشد که روش های COA و WM پر کاربرد ترین آنها می باشد.
- مركز ثقل ناحيه (COA) Centroid of area
- نيمساز ناحيه Bisecter of area (BOA)
- بيشترین ماكزیمم Smallest of maximum (SOM)
- كوچکترین ماكزیمم Largest of maximum (LOM)
- ميانگين وزنی Weighted average (WM)
- ميانگين ماكزیمم (MOM)Mean of maximum
- مجموع وزنی (WS) Weighted sum
موتور استنتاج فازی
در این قسمت سعی شده است دو الگوریتم استنتاج اصلی تشریح شود. (نرم افزار متلب می تواند هر دو این الگوریتم ها را پیاده سازی کند. )
الگوریتم استنتاج ممدانی
این سيستم ها به دليل داشتن طبيعت بصری و تفسيری از قوانين میتوانند به طور گستردهای در سيستمهای پشتيبانی تصميم استفاده شوند، همچنين دارای قدرت بيانی بالایی هستند و میتوانند به هردو صورت چند ورودی و چند خروجی (MIMO) و چند ورودی و یک خروجی (MISO) پياده سازی می شود. روش های دفازی سازی در سيستم استنتاج ممدانی به صورت ,BOA, COA, SOM, LOM, MOM می باشد.

الگوریتم استنتاج تاکاگی سوگنو
این سيستم استنتاج بيشتر در سيستمهای كنترلی و در زمينه هایی كه نياز به محاسبات ریاضی باشد مورداستفاده قرار میگيرد. خروجی الگوریتم استنتاج سوگنو از یک چند جمله ای مرتبه اول از متغيرهای ورودی به عنوان نتيجه قانون استفاده می كند و روش دفازی سازی در آن از نوع روشهای دفازی سازی WS,WA می باشد، همچنين سيستم استنتاج سوگنو به صورت MISO پياده سازی می شود و نمی تواند به صورت MIMO پياده سازی شود.

واسط گرافیکی fuzzy در متلب
در ویدیو آموزشی زیر، یک مثال فازی برای تنظیم دور سیستم سرمایش توضیح داده شده است. در این مثال ورودی رطوبت و دمای محیط بوده و در خروجی دور تند و کند سیستم سرمایش تصمیم گیری می شود.
fuzzy('tem.fis')
fis = readfis ('tem.fis')
output = evalfis([input1,input2],fis)
%for mimo fuzzy (more then one output)
%output1 = output(1)
%output2 = output(2) ,...
همچنین نحوه تنظیم پارامتر های مختلف توضیح داده شده است. و در نهایت نحوه استفاده از این واسط گرافیکی در کد نویسی اشاره شده است.
واقعا عالی و راحت و قابل فهم برای همه. دستتان درد نکند.
با تشکر فراوان از لطف شما استاد محترم
مطالب بهینه سازی سایت به لطف تدریس عالی شما استاد عزیز گرد آوری و تدوین شد.
سلام
شما میتونید منو در مورد تولید قوانین خودکار سوگنو در متلب راهنمایی کنید.
ی سر نخ کوچیک هم بدید ممنون میشم
سلام تو متلب دستور خودش رو داره fis = sugfis(Name,Value)
این لینک رو مطالعه بفرمایید انشالله کمکتون کنه
سایت مث ورک
سپاس
با سلام وخسته نباشین استاد.
من با توجه به فیلم های آموزشی شما خیلی چیزا یادگرفتم ممنونم.من فقط یه مقاله دارم که جداول فازی نداره یه سری شرط وشروط داره.میخوام پیاده سازیش کنم تشخیص نمیدم ورودی خروجی هامو چی بدم بیزحمت ر اهنماییم کنین.
سلام لطف دارید
باید مساله رو بخونید ببینید چی رو می خواید به عنوان خروجی تنظیم کنید
ورودی ها باید اون عواملی باشند ک در خروجی اثر دارند
مثلا دمای اتاق با ساعت روز تنظیم میشه پس ساعت های روز رو ب ممبرشیپ فانکشن ها می دیم با توجه به اون دما رو تصمیم بگیره