Learning/fuzzy

 

 

 

 

 

 

 

 

 

<![if !vml]>four-stroke-engine.gif<![endif]>

منطق فازی : تاریخچه

منطق فازی اولین بار در سال 1965 میلادی توسط دانشمند آذربایجانی به نام لطفعلی عسگرزاده(مشهور به زاده) در مقاله­ای با عنوان «مجموعه­های فازی» مطرح شد. این منطق بر پایه استدلال تقریبی می­باشد و به همین دلیل در سالهای اولیه­ی ظهور خود چندان مورد استقبال دیگر دانشمندان به ویژه ریاضیدانان قرار نگرفت و متهم به این بود که چیزی شبیه قوانین و نظریه­های احتمال بوده و بهتر و موثرتر از آن نیست. البته چنین مخالفتی طبیعی به نظر می­رسید زیرا پیدایش علمی جدید که از مفاهیم گنگ و نادقیق و بدتر از آن، از استدلالهای نادقیق در برابر قوانین سخت و استوار ریاضیات عصر مدرن سخن می­گفت، موردی بسیار تازه و عجیب بود! پروفسور زاده برای اثبات درستی و کارایی ایده­ی جدیدش مقالات و کتابهایی نوشت که در آن مفاهیم و تعاریف اولیه­ی منطق فازی را بر اساس قوانین ریاضی معرفی می­کرد. در واقع او در منطق جدید خود به بسط و توسعه­ی منطق کلاسیک ( که به نامهای منطق دودویی و منطق بولی نیز شناخته می­شود) پرداخت. این بدین معنی است که منطق فازی در حالتی خاص همان منطق کلاسیک می­باشد.

            زاده که خود مهندس کنترل بود، دریافت که قوانین کلاسیک دیگر جوابگوی سیستمهای پیچیده­ی جهان امروزی نیستند و باید ریاضیات جدیدی تعریف نمود. به همین دلیل هدف از ارائه­ی منطق جدید، ساده سازی محاسبات ریاضی و مهندسی مرتبط با دنیای واقعی بود و به نوعی ایده­ی شبیه­سازی پردازش مغز انسان (دانش بشری) و استدلال تقریبی را دنبال می­نمود. با گذشت زمان دانشمندان (که بیشتر آنها از خاور دور بودند) به منطق نوپا روی آوردند و به بسط و توسعه­ی آن کمک نمودند. همچنان که دانشمندان شرقی منطق فازی را جدی گرفته بودند و تحقیقات گسترده­ای در این زمینه انجام می­دادند، جامعه­ی علمی غرب هنوز به دیده­ی شک و تردید به آن می­نگریست و آن را رد می­کرد؛ تا اینکه در دهه­ی 1970 میلادی اولین جنبه­های کاربردی منطق فازی در صنعت (کنترل کننده­ی فازی در موتور بخار توسط دانشمند هندی به نام ابراهیم ممدانی (Mamdani)) به اجرا در آمد.

            در اوایل دهه­ی 1970 میلادی یک کنترلر فازی جهت راه­اندازی کوره سیمان طراحی شد که امیدهای طرفداران فازی را به آینده بیشتر نمود؛ کاربردهای سیستمهای فازی بیشتر به چشم آمد و زمینه­های تحقیقات گسترده­تر (البته باز هم در شرق دور) فراهم شد. دهه­ی 1980 دوران شکوفایی و تولدی دوباره بود؛ دانشمندان و مهندسان ژاپنی که علاقه­ی فراوانی به علم نوظهور نشان می­دادند، انعطاف­پذیری آن را در تقریبا تمامی زمینه­های مهندسی و کنترل درک کرده بودند. سوگنو (Sugeno) و تاکاگی (Takagi) از اولین محققان ژاپن در زمینه­ی کنترل فازی بودند که نتیجه­ی تلاشهای اولیه­ی آنها طراحی مدل فازی معروف تاکاگی-سوگنو بود. در این دهه سیستمهای فازی در ژاپن گرد و خاکی به پا کردند؛ تصفیه­خانه فازی، روباتها و اتومبیلهای فازی و سیستم کنترلی فازی در قطارهای شهری نمونه­های از کاربردهای بزرگ منطق فازی بودند. در دهه­ی 1990 تقریبا همه در ژاپن از مردم عادی تا دولتمردان دیگر متقاعد شده بودند که فازی یک شوخی و یا یک رویا نیست و نسبت به استفاده­ی گسترده از آن متفق شدند. در این دوران اولین کاربرد مصرف خانگی سیستمهای فازی در قالب ماشین لباسشویی هوشمند ظهور کرد!

            از این زمان به بعد بود که جامعه­ی علمی غرب نیز بدبینی خود را نسبت به منطق فازی به تدریج از دست می­داد به طوری که سرانجام انجمن جهانی مهندسان یعنی IEEE در برابر منطق جدید سر تسلیم فرود آورد و این به معنای پذیرفته شدن منطق فازی بود آن هم پس از گذشت سه دهه از تولدش! با راه یافتن فازی به IEEE کتابها و مقالات فراوانی در زمینه­ی فازی منتشر گردید و کمک بسیار زیادی به رشد و پیشرفت آن شد. تلاشها برای بهبود، رفع نواقص، ارائه­ی الگوریتمهای مرتبط و ... صورت گرفت؛ به عنوان مثال مقالاتی با موضوع استفاده از روشهای بهینه­سازی مانند الگوریتم ژنتیک و همچنین شبکه­های عصبی مصنوعی برای بهبود ساختار مدلها و سیستم­های فازی معرفی شد.

            امروزه منطق فازی با اینکه بسیار جوان است، جزء اساسی علوم، مهندسی و هوش مصنوعی به شمار می­رود. چیزی که در این مورد جالب می­نماید اینست که منطق فازی ظهور، پیشرفت و بقای خود را مدیون دانشمندان مشرق زمین بوده و به جرآت می­توان گفت که منطق فازی یک علم کاملا شرقی است! امید است ما ایرانیان نیز به عنوان عضوی از جامعه­ی مشرق زمین بتوانیم در رشد و پیشرفت آن سهم داشته باشیم.

منطق فازی : مقدمات و تعاریف

پیشنیازها : منطق کلاسیک، حساب مجموعه ها

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

شروع به شکل زیر توجه نمایید

<![if !vml]>shooter.jpg<![endif]>

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

<![if !vml]>fuzzyshapes00.jpg<![endif]>

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

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

<![if !vml]>fuzzyshapes01.jpg<![endif]>

در این حالت، شخص خیلی ساده تر به ماجرا می نگرد :

1. فاصله تا هدف زیاد است؛ بین 150 تا 200 متر

2. سرعت باد خیلی تأثیرگذار نیست

3. نتیجه اینکه زاویه باید تقریبا 10 درجه باشد!

مثال بالا مقایسه ای میان منطق دقیق و منطق تقریبی را بیان می کند. شاید تصمیم گیری دقیق برای ماشینها سخت نباشد اما تا زمانی که محدودیتها وجود نداشته باشند. منظور از محدودیتها در واقع همان توقعاتی است که اربابان ماشین (یعنی ما انسانها) از آن دارند و معمولا این محدودیتها مربوط به زمان انجام کار می باشد. زمان را می توان به صورت کاهش داد؛ 1- تجهیزات زیادتر و قویتر مانند حافظه بیشتر و پردازنده بزرگتر و قویتر 2-خلاقیت و میانبر زدن! اساسا منطق فازی برای رفع کاستی و ناتوانی منطق کلاسیک در بیان و مدلسازی برخی مسائل مبهم در دنیای واقعی به وجود آمد؛ به همین دلیل لازم بود تا برخی مفاهیم و تعاریف پیشرفت کنند و یا به اصطلاح تعمیم داده شوند. یکی از تعاریف اولیه و پایه، مجموعه ها هستند که به مجموعه های فازی تعمیم می یابند.

مجموعه فازی

مجموعه فازی A به صورت زیر تعریف می شود :

A = { ( x0, f(x0) ), ( x1 , f(x1) ), ( x2 , f(x2) ), … }

A مجموعه ای متشکل از جفتهای مرتب ( Xn , f(Xn) ) است که Xn عنصری از مجموعه جهانی U (مجموعه مرجع) و f(Xn) مقداری حقیقی در بازه [0,1] بوده و درجه عضویت (Membership Value یا به اختصار MSV) عنصر Xn نامیده می شود.

<![if !vml]>fuzzyshapes02.png<![endif]>

در واقع مجموعه فازی همان مجموعه کلاسیک همراه با مقادیری اضافه به عنوان درجه عضویت است. درجه عضویت میزان تعلق یک عضو به مجموعه را بیان می کند. به عنوان مثال در شکل بالا مجموعه فازی A به صورت زیر تعریف شده است :

A = { (x0 , 0.8) , (x1 , 0.45) , (x2 , 0.64) , (x3 , 0) , (x4 , 0) , (x5 , 0.05) , (x6 , 0) , (x7 , 1) }

برای عنصر x3 از U با درجه عضویت صفر می توان گفت این عضو اصلا در A نیست و عنصر x7 از U با درجه عضویت 1، کاملا در A است. ناحیه سایه خورده فقط جهت جداسازی عناصر با عضویت غیر صفر است؛ در بحث مجموعه های فازی نمی توان مرزی بین مجموعه ها متصور شد. به عنوان مثال تمامی اعضای ناحیه سفید رنگ در A هستند اما با درجه عضویت صفر.

به عنوان یک مثال کاربردی و واقعی می توان مسأله میزان هوش دانش آموزان یک مدرسه را در نظر گرفت. مجموعه کلاسیک دانش آموزان باهوش عبارتست از افرادی که باهوش هستند و افرادی که باهوش نیستند؛ سوالی که پیش می آید اینست که افرادی که از نظر هوش متوسط هستند را کجا قرار دهیم؟ برای پاسخ به این سوال مجموعه فازی زیر را به کار می بریم :

Students Set = { (x1 , 0.85) , (x2 , 0.75) , (x3 , 0.32) , (x4 , 0.5) , (x5 , 0) , (x6 , 1)}

درجه عضویت اعضای یک مجموعه فازی معمولا به کمک توابع حقیقی تعیین می گردد که به آنها تابع عضویت یا تابع تعلق (Fuzzy Membership Function) و به اختصار MSF گفته می شود. تابع تعلق به هر عضو از مجموعه یک عدد حقیقی در بازه [0,1] نسبت می دهد تا میزان تعلق آن عضو در مجموعه را نشان دهد.