منطق فازی

منطق فازی

مفاهیم منطق فازی (fuzzy logic) اولین بار به وسیله پروفسور لطفی زاده ارائه شد و سپس توسط دیگران گسترش یافت.ریاضیات محض بخودی خود اهمیت چندانی ندارد بلکه نحوه کاربرد آن در صنعت اهمیت دارد.منطق فازی نیز بیش از بیست سال پس از ۱۹۶۵ از درگاه دانشگاه ها به بیرون راه نیافت زیرا کمتر کسی معنای آنرا درک کرده بود. در اواسط دهه ۸۰ میلادی قرن گذشته صنعتگران ژاپنی معنا و ارزش صنعتی این علم را دریافته و منطق فازی را به کار گرفتند. اولین پروژه آنها طرح هدایت و کنترل تمام خودکار قطار زیرزمینی شهر سندای بود که توسط شرکت هیتاچی برنامه ریزی و ساخته شد.از این پس منطق فازی بسیار سریع در تکنولوژی دستگاه های صوتی و تصویری ژاپنی ها راه یافت (از جمله نلرزیدن تصویر فیلم دیجیتال ضمن لرزیدن دست فیلم بردار).


کلمه fuzzy به معنای غیر دقیق و مبهم است و این منطق در مقابل منطق صفر و یک بوجود آمد.در منطق صفر و یک ارزش یک گزاره یا یک  بود یا صفر،یا درست بود یا غلط، یاسفید بود یا سیاه ولی در منطق فازی ارزش یک گزاره بین صفر و یک می باشد.اجازه دهید این تفاوت را با یک مثال توضیح دهیم.
فرض کنید گزاره ما درباره گرم بودن یا سرد بودن یک محیط باشد.در منطق صفر و یک باید یک دمای مرجع را در نظر بگیریم و اگر دمای محیط بالاتر از دمای مرجع بود می گوییم محیط گرم است و در غیر این صورت محیط سرد است.ولی در منطق فازی یک محدوده را بجای دمای مرجع در نظر گرفته و ممکن است محیط مثلا 0.3 گرم باشد.این تفاوت میان دو منطق را در شکل زیر می توانید ببینید:

Logic Different منطق فازی

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

متغیرهای زبانی:

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

توابع عضویت (Membership function):

برای هر مجموعه X، تابع عضویت مجموعه X تابعی است از X نسبت به بازه [0,1] .
توابع عضویت X بیانگر زیرمجموعه فازی X است. تابع عضویت مجموعه فازی A معمولاً بصورت μA نمایش داده می‌شود. درجه عضویت μA(x)i بیانگر میزان عضویت عنصر x به مجموعه فازی A است.

Membership Function

اگر درجه عضویت یک عنصر از مجموعه برابر با صفر باشد، آن عضو کاملاً از مجموعه خارج است و اگر درجه عضویت یک عضو برابر با یک باشد، آن عضو کاملاً در مجموعه قرار دارد. حال اگر درجه عضویت یک عضو بین صفر و یک باشد، این عدد بیانگر درجه عضویت تدریجی می‌باشد.برای مثال اگر متغیر دما در تابع عضویت سرد،دارای مقدار درجه عضویت 0.3 باشد بدین مفهوم است که دمای محیط 0.3 سرد است.
شکل زیر انواع توابع عضویت را نشان می دهد:

kind of membership function

شکل زیر قسمت های مختلف یک سیستم فازی را نشان می دهد:

fuzzy-inference

چون که ورودی سیستم ها بصورت یک عدد قطعی (Crisp) می باشد وظیفه قسمت فازی (Fuzzification) این است که ورودی را بصورت یک مجموعه فازی در بیاورد.در قسمت پایگاه داده (Data Base) اطلاعات توابع عضویت ها قرار دارد.قسمت پایگاه قوانین (Rule Base) شامل قوانینی است که خروجی سیستم فازی را معین می کند.برای مثال فرض کنید که می خواهیم یک فن را برای متعادل کردن دمای محیط کنترل کنیم.پایگاه قوانین می تواند شامل قوانین زیر باشد:

1.IF temperature IS very cold THEN stop fan
2.IF temperature IS cold THEN turn down fan
3.IF temperature IS normal THEN maintain level
4.IF temperature IS hot THEN speed up fan

توجه کنید که temperature یک متغیر زبانی و عبارات

{very cold,cold,normal,hot,stop,turn down,maintain level,speed up}

هر کدام یک تابع عضویت می باشند.
توجه کنید که در منطق فازی یک گزاره کاملا صحیح یا کاملا اشتباه نمی باشد بلکه عددی بین صفر و یک می باشد.پس ممکن است قانون شماره یک 0.3 صحیح باشد و قانون شماره دو 0.6 صحیح و… .
وظیفه قسمت غیر فازی کننده (Defuzzification) استنتاج است.روش های مختلفی برای استنتاج وجود دارد برای مثال ممکن است هر قانونی که صحیح تر بود را بعنوان خروجی در نظر بگیریم ولی بهتر است که میانگینی از همه قوانین را در نظر بگیریم.به این روش،روش center of area نیز گفته می شود.خروجی در این روش از رابطه زیر بدست می آید:

آموزش تخصصی سیمولینک منطق فازی

تنها مشکل این روش محاسبات زیاد برای توابع عضویت پیچیده می باشد.
 

طراحی کنترل کننده فازی(Fuzzy Logic Controller):

پروفسور Wang در مقاله ای نحوه طراحی یک کنترل کننده فازی راشرح داد.فرض کنید سیستمی با فیدبک منفی دارای پاسخ پله زیر باشد:

Step Response

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

NB (Negative Big)
NM (Negative Medium)
NS (Negative Small)
Z (Zero)
PS (Positive Small)
PM (Positive Medium)
PB (Positive Big)

پایگاه قوانین را بصورت زیر می توان نوشت:

Rule Base منطق فازی

در قسمت بعد نحوه طراحی یک کنترل کننده فازی با Matlab را برای کنترل یک سرو موتور شرح می دهیم.

7 Comments

محسن

درباره10 سال ago

با عرض سلام. خیلی مفید بود ممنون از مطلب خوبتون

پاسخ

AP

درباره10 سال ago

سلام بسیار مفید بود با تشکر

پاسخ

amir

درباره9 سال ago

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

پاسخ

Admin

درباره9 سال ago

دو کتاب زیر می توانند به شما در این مورد کمک کنند:

1-Modern Power Electronics And Ac Drives K.Bose

2-Sensorless Vector and Direct Torque Control by Peter Vas

پاسخ

iman

درباره9 سال ago

سلام پروژه من کنترل فازی برای موتور dcبا استفاده از متلب است لطفا راهنمایی کنید

پاسخ

Admin

درباره9 سال ago

در سایت یک کنترل کننده فازی برای یک سرو موتور دی سی طراحی شده است که می تواند به شما کمک کند.

پاسخ

الهام

درباره8 سال ago

خیلی ممنون مطالب خیلی مفید بود

پاسخ

Leave a Comment

Please be polite. We appreciate that.
Your email address will not be published and required fields are marked