fuzzy-logic

منطق های تصمیم گیری

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

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

به عنوان مثال آیا هوا سرد است؟ بله (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)

در این بخش بیایید بر روی توابع عضویت هر دو منطق اشاره کنیم و تفاوت این دو را در کنار هم مشاهده کنیم.

تابع عضويت (Membership Function)
تابع عضويت (Membership Function)
  • در شکل سمت چپ می بینید مقدار تایع عضویت یا صفر است یا یک در حالی که در منطق فازی این مقادیر بین صفر و یک متغییر است. (محور عمودی معرف تابع عضویت)
  • تابع عضویت در منطق کریسپ گسسته و مشتق پذیر نیست در حالی که منطق فازی این شکل پیوسته و مشتق پذیر می باشد.

فازی سازی ورودی ها (Fuzzifier)

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

از این میان توابع نشان داده شده، توابع  Triangular و Gaussian جز پر کاربردترین ها می باشد.

قوانين فازي (Fuzzy Rules)

گزاره های فازی جملاتی هستند که ارتباط بین متغیر زبانی را با مقادیر زبانی مشخص می کنند. مثلا سرعت متوسط است. یا "x is A" که x سرعت، یک متغیر زبانی و A (متوسط) یک مقدار زبانی است.
می توانیم چندین متغییر زبانی (فازی) را با عملگر هایی AND ، OR و NOT برای گرفتن تصمیم در خروجی، با هم دیگر ترکیب کنیم.

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

or in fuzzy logic
OR (MAX)

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

and in fuzzy logic
AND (MIN)

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

not in fuzzy logic

غیر فازی سازی تصمیم (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 می باشد.

mamdani
الگوریتم ممدانی

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

sugeno
تاکاگی سوگنو

واسط گرافیکی 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) ,...

همچنین نحوه تنظیم پارامتر های مختلف توضیح داده شده است. و در نهایت نحوه استفاده از این واسط گرافیکی در کد نویسی اشاره شده است.

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

  1. سلام
    شما میتونید منو در مورد تولید قوانین خودکار سوگنو در متلب راهنمایی کنید.
    ی سر نخ کوچیک هم بدید ممنون میشم

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

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

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

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