منطق فازی
مفاهیم منطق فازی (fuzzy logic) اولین بار به وسیله پروفسور لطفی زاده ارائه شد و سپس توسط دیگران گسترش یافت.ریاضیات محض بخودی خود اهمیت چندانی ندارد بلکه نحوه کاربرد آن در صنعت اهمیت دارد.منطق فازی نیز بیش از بیست سال پس از ۱۹۶۵ از درگاه دانشگاه ها به بیرون راه نیافت زیرا کمتر کسی معنای آنرا درک کرده بود. در اواسط دهه ۸۰ میلادی قرن گذشته صنعتگران ژاپنی معنا و ارزش صنعتی این علم را دریافته و منطق فازی را به کار گرفتند. اولین پروژه آنها طرح هدایت و کنترل تمام خودکار قطار زیرزمینی شهر سندای بود که توسط شرکت هیتاچی برنامه ریزی و ساخته شد.از این پس منطق فازی بسیار سریع در تکنولوژی دستگاه های صوتی و تصویری ژاپنی ها راه یافت (از جمله نلرزیدن تصویر فیلم دیجیتال ضمن لرزیدن دست فیلم بردار).
کلمه fuzzy به معنای غیر دقیق و مبهم است و این منطق در مقابل منطق صفر و یک بوجود آمد.در منطق صفر و یک ارزش یک گزاره یا یک بود یا صفر،یا درست بود یا غلط، یاسفید بود یا سیاه ولی در منطق فازی ارزش یک گزاره بین صفر و یک می باشد.اجازه دهید این تفاوت را با یک مثال توضیح دهیم.
فرض کنید گزاره ما درباره گرم بودن یا سرد بودن یک محیط باشد.در منطق صفر و یک باید یک دمای مرجع را در نظر بگیریم و اگر دمای محیط بالاتر از دمای مرجع بود می گوییم محیط گرم است و در غیر این صورت محیط سرد است.ولی در منطق فازی یک محدوده را بجای دمای مرجع در نظر گرفته و ممکن است محیط مثلا 0.3 گرم باشد.این تفاوت میان دو منطق را در شکل زیر می توانید ببینید:
برای آشنایی با منطق فازی و نحوه استدلال با آن ابتدا به معرفی چند مفهوم می پردازیم:
متغیرهای زبانی:
متغیرهای زبانی به متغیرهایی گفته میشود که مقادیر مورد قبول برای آنها به جای اعداد، کلمات و جملات زبانهای انسانی یا ماشینی هستند.همانگونه که در محاسبات ریاضی از متغیرهای عددی استفاده میگردد، در منطق فازی نیز از متغیرهای زبانی استفاده میگردد.هر متغیر زبانی می تواند بر اساس ارزشهای زبانی در مجموعه ای قرار گیرد. به عنوان مثال: متغیر زبانی «سن» بسته به تقسیمات مورد نظر شخصی و شرایط میتواند در مجموعه عباراتی از قبیل «نوجوان»، «جوان»، «میان سال» و «سالمند» قرار گیرد.
توابع عضویت (Membership function):
برای هر مجموعه X، تابع عضویت مجموعه X تابعی است از X نسبت به بازه [0,1] .
توابع عضویت X بیانگر زیرمجموعه فازی X است. تابع عضویت مجموعه فازی A معمولاً بصورت μA نمایش داده میشود. درجه عضویت μA(x)i بیانگر میزان عضویت عنصر x به مجموعه فازی A است.
اگر درجه عضویت یک عنصر از مجموعه برابر با صفر باشد، آن عضو کاملاً از مجموعه خارج است و اگر درجه عضویت یک عضو برابر با یک باشد، آن عضو کاملاً در مجموعه قرار دارد. حال اگر درجه عضویت یک عضو بین صفر و یک باشد، این عدد بیانگر درجه عضویت تدریجی میباشد.برای مثال اگر متغیر دما در تابع عضویت سرد،دارای مقدار درجه عضویت 0.3 باشد بدین مفهوم است که دمای محیط 0.3 سرد است.
شکل زیر انواع توابع عضویت را نشان می دهد:
شکل زیر قسمت های مختلف یک سیستم فازی را نشان می دهد:
چون که ورودی سیستم ها بصورت یک عدد قطعی (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 در مقاله ای نحوه طراحی یک کنترل کننده فازی راشرح داد.فرض کنید سیستمی با فیدبک منفی دارای پاسخ پله زیر باشد:
همان طور که مشاهده می کنید در زیر منحنی،علامت E و DE در بازه های مختلف مشخص شده است.اگر برای هر کدام از متغیر های خطا و تغییرات خطا هفت مجموعه بصورت زیر در نظر بگیریم:
NB (Negative Big)
NM (Negative Medium)
NS (Negative Small)
Z (Zero)
PS (Positive Small)
PM (Positive Medium)
PB (Positive Big)
پایگاه قوانین را بصورت زیر می توان نوشت:
در قسمت بعد نحوه طراحی یک کنترل کننده فازی با 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خیلی ممنون مطالب خیلی مفید بود
پاسخ