منطق و کنترل فازی
چرا منطق ؟
چون پایه و اساسش همون منطق بولی هست که همه کمابیش با اون آشنا هستن.
چرا فازی؟
منطق بولی فقط دو حالت داشت : 0 و 1 یا بطور روشن تر، سیاه و سفید.
منطق فازی n حالت داره از همین 0 و 1 یا سیاه و سفید ( توجه کنید نمیگم n حالت بین 0 و 1).
مثلا “این رنگ خیلی مایل به سفیده” یعنی این رنگ همچنان همون سفیده اما به میزان مثلا 0.9 (یه ذره تیره تر)
یا یه خورده فازی تر بخوام بگم “عدد 0.75 خیلی نزدیک به 1 هست” یعنی عدد 0.75 همون 1 هست اما به اندازه 0.75 !!!!!!
شاید فکر کنید ما داریم لقمه رو دور سرمون میچرخونیم اما این یه تدبیر هوشمندانه از دانشمندان ( مخصوصا پروفسور خودمون) بود که بار محاسبات کنترلی پیچیده رو بندازن رو دوش زبان گفتگو که براحتی بشه سیستم های پیچیده ای رو فقط با چند تا جمله کنترل کرد!
بیاید یه نگاه دوباره به منطق بولی بندازیم؛
سه تا اپراتور ابتدایی “و” ، “یا” و “نه” داشتیم که از ترکیبشون عملگرهای دیگه رو میساختیم:
a. NOT 0 = 1
b. 0 AND 1 = 0
c. 1 OR 0 = 1
الف. کاری که این عملگرها انجام میدادن این بود:
NOT A = 1 – A ex. NOT 0 = 1 – 0 = 1
A AND B = Min (A , B) ex. 0 AND 1 = Min(0,1) = 0
A OR B = Max (A , B) ex. 1 OR 0 = Max(1,0) = 1
ب. ‘AND’ و ‘OR’ یه فرمول ساده دیگه هم داشتن :
A AND B = A x B ex. 0 AND 1 = 0 x 1 = 0
A OR B = 1 – (1-A) x (1-B) ex. 1 OR 0 = 1 – (1-1) x (1-0) = 1
حالا همین داستان رو برای اعداد اعشاری پیاده کنیم:
ex. NOT 0.2 = 1 – 0.2 = 0.8
ex. 0.3 AND 0.7 = 0.3 x 0.7 = 0.21 Min (0.3 , 0.7) = 0.3
ex. 0.3 OR 0.7 = 1 – (1 – 0.3) x (1 – 0.7) = 0.79 Max (0.3 , 0.7) = 0.7
یه مثال ساده از یه خودرو دنده اتومات
اگر سرعت خودرو 100 بود (1) پا رو از پدال گاز بردار (0)
اگر سرعت خودرو صفر بود (0) پدال رو تا آخر فشار بده (1)
این جمله ها بیانگر یه NOT منطقی هستن به این شکل:
P = NOT (S)
پدال گاز = NOT سرعت
حالا اگر سرعت خودرو نزدیک به 100 بود وضعیت پدال چی میشه؟ مثلا سرعت 80 ( طبق تعریفی که اول داشتیم سرعت خودرو همچنان 1 هست اما به اندازه 0.8 )
خب باز هم از همین NOT استفاده میکنیم:
NOT 0.8 = 1 – 0.8 = 0.2
یعنی پدال گاز رو باید فشار بدیم (1) اما به اندازه 0.2
حالا که میخوایم از حالت 0 و 1 بیرون بیایم جمله ها به این صورت تغییر میکنن:
اگر سرعت خودرو بالا بود پدال گاز رو کم فشار بده
اگر سرعت خودرو پایین بود پدال گاز رو زیاد فشار بده
این دوتا جمله ناخواسته یه جمله سوم برامون میسازن:
NOT 0.5 = 1 – 0.5 = 0.5
یعنی اگر سرعت خودرو متوسط بود پدال گاز رو وسط نگه دار.
اما معیار کلمات بالا، زیاد، کم، گرم، سرد، پایین و … چیه؟ وقتی میگیم سرعت بالا یعنی دقیقا چقدر؟
ما این مقادیر 0.8 ، 0.5 ، 0.7 و … رو از کجا پیدا کردیم؟
مقدار این کلمات در تابعی به نام تابع عضویت در یک مجموعه فازی مشخص میشن که میتونن یه تابع ذوزنقه ای یا مثلثی یا حتی تک نقطه ای یا اگر بخواد کار یه خورده حرفه ای تر باشه تابع زیگموید یا همون S type باشن که ما خودمون باید اونها رو بسته به عملکرد سیستم مورد نظر تعریف کنیم.
این تابع برای سرعت خودرو میتونه به این شکل باشه :
تعریفی که اول بحث داشتیم اینجا میتونه واضح تر باشه، به فلش قرمز رنگ دقت کنید، سرعت 65 کیلومتر بر ساعت همچنان میتونه عضوی از سرعتهای بالا هم به حساب بیاد اما با درجه عضویت 0.25 و عضو سرعتهای متوسط هم هست با درجه عضویت 0.75 (فلش سبز).
مقدار پتانسیومتر پدال گاز که خروجی سیستم هست هم میتونیم به همین شکل تعریف کنیم و مقادیر بدست آمده از توابع ورودی رو به خروجی منتقل کنیم:
مرحله آخر کار بدست آوردن مقدار واقعی و دقیق پتانسیومتر پدال گازه و روش عمومی این کار تعیین مرکز ثقل نواحی مشترک هست که در تصویر کاملا روشنه.
اگر بخوایم سرعت رو 65 بمونه پدال باید 0.25 عضو مجموعه کم و 0.75 عضو متوسط باشه. سطح زیر منحنی ها رو با هم OR میکنیم و مقدار x نقطه ثقلش رو به عنوان خروجی استفاده میکنیم. برای مثال ما پتانسیومتر پدال باید روی 1.8KΩ باشه.
تابع عضویت باید برای هر متغیری که در یک سیستم کنترل نقش داره تعریف بشه چه ورودی چه خروجی. ضمن اینکه هرچقدر این توابع بهتر و دقیق تر مشخص بشن به کم شدن نوسان خروجی سیستم کمک میکنه.
موفق باشید