آموزش جعبه ابزار منطق فازی در MATLAB

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

       یک تابع عضویت (MF) یک منحنی است که نشان می دهد که هر نقطه از فضای ورودی چگونه به یک مقدار عضویت (درجه عضویت) بین 0 و 1 نگاشته می شود. از فضای ورودی غالباً به جهان مباحثه یاد می شود.

       یکی از مثالهای معمول برای مجموعه های فازی، مجموعه بلندی قد مردم است که در فصول گذشته اشاره ای به این مثال شد. در این حالت جهان مباحثه، تمام قد های مممکن است که بین 3 تا 9 فوت باشد و کلمه «بلندی» نشان دهنده یک منحنی است که برای بلندی هر کسی یک درجه تعریف می کند. در صورتی که مجموعه بلندی مردم با یک مرز قطعی از مجموعه کلاسیک داده شده باشد، می توانیم بگوییم که تمام افراد دارای بلندی بیش از 6 فوت رسماً بلند قد هستند. ولی چنین تفاوت گذاری کاملاً بی معنی است. چنین طبقه بندی ممکن است این تصر را به ذهن آورد که مجموعه ما، مجموعه تمام اعداد حقیقی بزرگتر از 6 است. ولی مقتی که می خواهیم در مورد مردم واقعی صحبت کنیم. دلیلی ندارد که یک نفر را بلند و دیگری را کوتاه در نظر بگیریم، وقتی که تفاوت قد آنها در اندازه مویشان است.

       شکل زیر ی یک منحنی با تغییرات ملایم را نشان می دهد که از قسمت بلند قد به قسمت غیر بلند قد می رود. محور خروجی یک مقدار عددی است بین 0 و 1 به نام «مقدار عضویت». منحنی با نام تابع عضویت شناخته می شود. این منحنی گذر از بلند قدی به غیر بلند قدی را تعریف می کند. دو نفر با یک درجه بلند هستند ولی یکی از لحاظ مفهومی بلند تر از دیگری است.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

       تنها شرطی را که یک تابع عضویت باید واقعاً ارضا کند اینست که مقدار آن باید بین 0 تا 1 باشد. خود تابع می تواند هر نوع تابع دلخواه باشد. شکل این تابع می تواند از نقطه نظر سادگی، راحت بودن و بازده تغییر کند تا رضایت ما را جلب کند.

یک مجموعه فازی، مجموعه ای توسعه یافته از یک مجموعه کلاسیک است. اگر X جهان مباحثه باشد و اعضای آن را با x نشان دهیم، آنگاه مجموعه فازی A از X یک زوج مرتب را تعریف می کند.

A = { A(x) | xÎX}

mA(x) ، تابع عضویت X در A خوانده می شود. تابع عضویت، هر کدام از عضوهای X را به یک «مقدار عضویت»  می نگارد. این عدد، عددی بین 0 و 1 است.

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

توابع تکه ای- خطی، تابع توزیع گوسی، منحنی حلقوی، توابع چند جمله ای درجه دو وسه. طبق قرارداد تمامی توابع دارای حروف mf در انتهای اسم خود هستند.

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

 

 

 

 

 

 

 

دو تابع عضویت نیز بر اساس منحنی توزیع گوسی ساخته شده اند: یک منحنی ساده و یک ترکیب دو پهلو از دو منحنی جداگانه گوسی. این دو تابع gaussmf و gauss2mf هستند.

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

 

 

 

 

 

 

 

       با وجودی که توابع عضویت گوسی و زنگوله ای به آسانی بدست می آیند، ولی آنها قادر نیستند توابع عضویت غیر متقارن را مشخص کنند. این توابع نامتقارن نقش مهمی را در کاربردهای خاص ایفا می کنند. در ادامه توابع عضویت حلقوی مورد بحث قرار می گیرند که می توانند از راست یا چپ باز و آزاد باشند. توابع عضویت نامتقارن و بسته ( یعنی  اینکه از چپ یا راست باز نباشد) می توانند از ترکیب دو تابع حلقوی بدست آیند، به همین خاطر علاوه بر تابع اصلی sigmf، تفاضل دو تابع حلقوی، dsigmf و حاصل ضرب دو تابع حلقوی psigmf را هم در اختیار داریم.

 

 

 

 

 

 

 

 

 

 

 

 

 

         توابعی که بر اساس چند جمله ای ها ساخته می شوند، برای ساخت توابع عضویت مختلیف که در جعبه ابزرا منطق فازی هستند بکار می روند. سه تابع در رابطه با این نوع توابع، منحنی های S , Z  و Pi هستند. لازم به ذکر است که نامگذاری این نوع توابع بر اساس شکل آنها است. تابع zmf یک تابع چند جمله ای نامتقارن باز از سمت چپ است. تابع smf یک تابع باز از سمت راست است که دارای تقارن آینه ای نسبت به منحنی قبلی است و تابع pimf در دو انتهای خود دارای مقدار صفر و در میانه خود دارای یک برآمدگی است.

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

 

 

3 –  4 : عملگرها در منطق فازی

         به یاد دارید که درستی هر چیزی در منطق فازی با یک مقدار به عنوان درجه برگردانده می شود. حال یک سؤال مطرح می شود : چگونه می توان جدول درستی آن را نشان داد؟ مقادیر ورودی اعداد حثیثی بین 0 و 1 هستند. چه تابعی می تواند نتایج جدول درستی مربوط به AND را برآورده سازد که در عین حالاعداد حقیقی بین 0 و 1 را هم پوشش دهد؟

        یکی از پاسخها عملگر min است. تابع min(A,B) عبارت A AND B را نتیجه می دهد. در اینجا A,B اعداد محدود به مجموعه (0,1) هستند. با همین استدلال ما می توانیم عملگر OR را با تابع max جایگزین کنیم. لذا A OR B با max(A,B)  معادل است و سرانجام، عملگر NOT را می توانن با عملگر 1-A معادل دانست. در این رابطه می توانید به تصاویر 8 و9 و 10 و 11 فصل دوم توجه کنید.

برای روشن شدن هر چه بهتر موضوع، برای نمونه، مثال تعیین مقدار انعام را که دربخش 11 فصل دوم آوردیم را دنبال می کنیم.

در آن مثال سه قانون برای استنتاج به کار می رفت که در زیر به آنها اشاره می شود :

1) اگر ( سرویس ضعیف باشد) یا ( غذا نامطلوب باشد)، آنگاه ( انعام ضعیف خواهد بود).

2) اگر ( سرویس خوب باشد)، آنگاه (انعام متوسط خواهد بود).

3) اگر ( سرویس عالی باشد) یا ( غذا مطلوب باشد)، آنگاه (انعام عالی خواهد بود).

 

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

        باید در نظر داشت که در این مثال و مثالهای بعدی که آورده می شود از سیستم استنتاج فازی ممدانی (Mamdani) استفاده خواهد شد. مراحل تفسیر و ترجمه قانون سوم را در شکل بالا مشاهده کردیم. در مرحله اول با دادن مقادیر عددی ( امتیاز) به یو متغیر سرویس دهی و غذا، آنها را طبق توابع عضویت دلخواهی خود فازی کرده و مقدار فازی شده که عددی بین 0 تا 1 است را برای هر یک بدست می آوریم. در مرحله دوم عملگر OR را که با تابع max نشان دادیم بر روی دو رقم فازی ااعمال کرده و نتیجه را در مرحله سوم بر روی تابع عضویت خروجی ( انعام ) اعمال کرده و بر اساس تابع min سطح رنگی نشان داده شده در شکل جواب ما در اعمال فازی سازی در قانون سوم می باشد.

 

4 – 4 :  تحلیل فرایند استنتاج فازی

       در این بخش مسأله مثال قبل را با سه قانون، دو ورودی و یک خروجی با جزئیات بیشتری مورد بررسی قرار می دهیم. ساختار اساسی این مثال را در شکل زیر مشاهده می کنید.

Input 1

Service (0 -1)

 

Rule 1 : If  Service is poor OR food is  rancid

Then tip is cheap

å

Input 2

food (0 -1)

 

Rule 2 : If  Service is good Then tip is average

Rule 3 : If  Service is excellent OR food is  delicious

Then tip is generous

output

tip (5-25)

 

ورودی ها غیر فازی هستند رقمها در محدوده معین

همه قانون ها به صورت موازی در استدلال فازی به کار می روند

نتیجه اعمال قوانین جمع می شوند و دفازی صورت می گیرد

نتیجه،  یک رقم غیر فازی است

 

 

 

 

 

 

 

 

 

 

 

 

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

 

قدم اول : فازی سازی ورودی ها

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

       مجموعه های فازی زبانی در این مثال را می توان به سرویس دهی ضعیف، سرویس دهی خوب، غذای مطلوب، غذای نامطلوب، انعام ضعیف و غیره اشاره داشت.ورودی ها باید با توجه به مجموعه های زبانی فازی شوند. برای مثال : تاچه اندازه ای غذا واقعاً خوش مزه است؟ در شکل زیر میزان مطلوب بودن غذا در یک رستوران فرضی بر حسب خوشمزگی آورده شده است ( که از 0 تا10 ارزش گذاری شده و توسط تابع عضویت محدود شده است). در این حالت، مقدار 8 را برای تعریف گرافیکی از خوشمزگی تعریف می کنیم. با توجه به این مسئله 0.7 برای تابع عضویت خوشمزگی بدست می آید. (تعریف سر آشپز از این نتیجه خواهد بود : غذای شما با درجه 0.7 خوشمزه است) با این روش هر ورودی به وسیله تابع عضویت محدود کننده ای که برای قوانین لازم است فازی می شود.

 

 

 

 

 

 

 

 

قدم دوم : اعمال عملگر های فازی

       هنگامی که ورودی ها فازی شدند، درجه ای را برای هر یک از قسمتهای بخش« اگر» قانون در اختیار داریم( قسمت اگر هر قانون در سیستم فازی را قسمت مقدم قانون می نامند). در صورتی که مقدم داده شده از قانون بیشتر از یک قسمت باشد آنگاه عملگرهای فازی را به کار می بریم تا یک عدد حاصل شود که نمایانگرحاصل مقدم برای آن قانون است سپس این عدد در تابع خروجی به کار گرفته می شود.

در جعبه ابزار منطق فازی دو نوع روش از پیش ساخته، min (مینیمم) و prod ( حاصلضرب )برای عملگر AND و max (ماکزیمم) و probor (یای احتمالی) برای عملگر OR طراحی شده است. روش OR احتمالی با جمع جبری نیز شناخته می شود و با توجه به معادله زیر بدست می آید.

Probor(a,b) = a + b – ab

علاوه بر این توابع از پیش ساخته شده شما می توانید به دلخواه خود برای این عملگرها توابعی را معرفی کنید و بسازید.

        برای نمونه قانون سوم، که از عملگر OR استفاده کرده است را ارزش دهی می کنیم. مقدم این قانون دارای دوقسمت می باشد(اگر ( سرویس عالی باشد) یا ( غذا مطلوب باشد))، به قسمت اول (سرویس عالی ) ارزش 3 را و به قسمت دوم ( غذا مطلوب ) ارزش 8 را اختصاص می دهیم و حاصل فازی سازی آن به ترتیب 0.0 و 0.7  نتیجه می شود. عملگر فازی OR به سادگی مقدار ماکزیمم دو مقدار 0.7 و 0.0 را یعنی 0.7 انتخاب می کند که در اینجا کار عملگر فازی OR در این قانون تمام می شود.

0.7

0.0

0.7

 

 

 

 

 

 

 

 

 

قدم سوم : اعمال روش دلالت

        هر قانون یک وزن دارد (بین 0 و 1 ) که بر روی عدد بدست آمده بر روی مقدم اعمال می شود. معمولاً این عدد یک است (برای این مثال نیز یک است). اصولاً وزن دهی به قوانین هیچ تأثیری بر روی فرایند دلالت و فرایند نتیجه گیری ندارد. وقتی که وزن مناسب را به هر یک از قوانین نسبت می دهیم، روش دلالت به کار برده می شود. یک برآیند، یک مجموعه فازی است که با یک تابع عضویت مشخص شده و این تابع مشخصه های زبانی را که از خواص آن به حساب می آید وزن دار می کند یعنی در وزن مربوطه ضرب می شود.

      برآیند به وسیله یک تابع با مقدم ( که یک عدد است) پیوند می خورد. ورودی فرایند دلالت یک عدد است که از مقدم بدست می آید و خروجی آن یک مجموعه فازی است. دلالت برای هر یک از قوانین اجرا می شود. در اینجا نیز دو روش از پیش ساخته پشتیبانی می شودو مشابه توابعی هستند که توسط روظ AND به کار می روند: min که خروجی فازی را برش می دهد و prod که مقیاس خروجی مجموعه فازی را تغیر می دهد.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

قدم چهارم : اجتماع تمام خروجی ها

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

قدم پنجم : دِفازی کردن

         ورودی هر فرایند فازی مجموعه فازی است که حاصل اجتماع مجموعه های فازی در قدم 4 بود و خروجی آن یک عدد است. مجموعه فازی که در مرحله قبل به ما نتیجه داد به ظاهر نمی تواند حاصل عملکرد سیستم فازی و نتیجه نهایی که مشخص کند بالاخره خروجی کدام یک از مقادیر متغیر ها در برآیند قوانین بوده است را تعیین کند. پس باید از این مجموعه یک مقدار را که تعیین کننده باشد بدست آورد. که به این عمل اصطلاحاً دِفازی کردن گفته می شود. شاید عامه پسند ترین روش همان طور که در فصول گذشته بیان شد محاسبه مرکز ثقل باشد، که مرکز سطح زیر منحنی را می دهد. برای این منظور 5  روش از پیش ساخته شده وجود دارد : مرکز ثقل، نیمساز، نصف ماکزیمم( میانگین مقدار ماکزیمم مجموعه خروجی )، بزرگترین ماکزیمم و کوچکترین ماکزیمم.

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

 

 

 

 

 

 

 

 

 

 

5 – 4 : سفارشی کردن

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

      برای مثال، شما می توانید توابع MATLAB مورد نظر خود را بجای هر کدام از توابع پیش فرض استفاده شده در پنج قدم قبلی جایگزین کنید. می توانید توابع عضویت، روش AND، روش OR، روش دلالت، روش اجتماع و روش دفازی سازی خود را بسازید.

 

6 – 4 : ساختن سیستم

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

پنج ابزار عمده گرافیکی به منظور ساختن، دیدن و ویرایش کردن سیستم در این جعبه ابزار مهیا شده است :

1) ویرایشگر سیستم استنتاج فازی یا ویرایشگر FIS  (  FIS Editor ).

2) ویرایشگر تابع عضویت ( Membership Function Editor ).

3) ویرایشگر قوانین ( Rule Editor ).

4) نمایشگر قوانین ( Rule Viewer ).

5) نمایشگر سطح (  Surface Viewer ).

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

سیستم

استنتاج فازی

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

1 – 6 – 4 : شروع به کار

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

        برای شروع به سـاخـت سیستـم، پـس از اجـرای نــرم افـزار MATLAB و باز کــردن یـک فایل جدیدِ M-File در خط فرمان آن عبارت Fuzzy  را تایپ می کنیم و دکمه Save and run را می زنیم و یا آن که بعد از اجرا کردن نرم افزار MATLAB در پنجره Command Window این عبارت را تایپ کرده و اینتر می کنیم. اگر از روش اول استفاده کردید ابتدا باید نام فایل را مشخص کرده و ذخیره کنید و آنگاه پنجره ویرایشگر FIS گشوده می شود ولی اگر از روش دوم استفاده کردید مستقیماً بعد از تایپ  Fuzzy و اینتر کردن این پنجره باز خواهد شد.

        در این حال ویرایشگر بدون عنوان FIS باز می شود، با یک ورودی، که به طور پیش فرض input1 نامیده است و یک خروجی که output1 نام دارد. نوع استنتاج را در کادر وسطی و سفید رنگ، ممدانی(Mamdani) انتخاب شده است که خود سیستم به طور پیش فرض قرار داده است.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

        برای افزودن یک ورودی دیگر به سیستم، از پنجره FIS Editor به منوی Edit و سپس گزینه Add variable Þ Input را انتخاب می کنیم تا کادری زرد رنگ دیگر به نام Input2 به شکل اضافه گردد( در این مثال به دو ورودی نیاز داریم).برای تغییر اسم متغیرها مراحل زیر را انجام می دهیم :

1) بر روی کادر زرد رنگ Input1 کلیک کرده تا دور آن قرمز شده و انتخاب گردد.

2) نام مورد نظر خود را درقسمت name از کادر  Current Variable می نویسیم و اینتر می کنیم.

برای این مثال دو ورودی را Service و food می نامیم و برای تغییر نام خروجی نیز کادر آبی رنگ را انتخاب کرده و همانند قبل نام آن را به tip تغییر می دهیم.

برای نام دهی FIS  به  File Þ Import Þ From WorkSpace  رفته تا پنجره ای به شکل زیر باز شود سپس عنوان  tipper را برای آن در نظر می گیریم و Ok می کنیم.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

        موارد پیش فرض در FIS Editor را در شکل 16 مشاهده می کنیم. با بررسی آن در می یابیم که روش عملگر AND را min ، عملگر OR را max ، روش دلالت را min ، روش اجتماع سازی را max و روش دفازی را مرکز ثقل انتخاب کرده است ولی به دلخواه خود می توانیم هر یک را آن طور که نتیجه بهتری می دهید تغییر دهیم( برای این مثال موارد پیش فرض را تغییر نمی دهیم).

حال توابع عضویت مربوط به هر یک از متغیرها را تعریف می کنیم. برای این کار، ویرایشگر تابع عضویت را باز می کنیم. این کار را به دو روش می توانیم انجام دهیم:

1. Edit Þ Membership Functions را انتخاب می کنیم.

2. بر روی کادر یکی از ورودی ها یا خروجی ها دو با کلیک می کنیم.

با این کار پنجره Membership Function Editor: tipper باز خواهد شد. با این پنجره که ویرایشگر تابع عضویت است شما می توانید برای تمام سیستم استنتاج فازی، تمام توابع عضویت مربوط به ورودی ها و خروجی ها را نمایش و ویرایش دهید.

 

 

 

 

 

 



         در این پنجره بر روی کادر زرد رنگ ورودی Service را کلیک کرده تا نمای توابع عضویت مربوط به این متغیر در سمت راست پنجره ظاهر شود. به طور پیش فرض خود سیستم تعداد سه نمودار تابع را برای آن قرار داده است که اگر به کمتر از آن نیاز داشتیم، می توانیم با موس بر روی هر یک از نمودارهای مربوطه کلیک کرده و دکمه Delete را بزنیم تا حذف گردد و در صورت اضافه کردن تابع جدید، می توانیم به منوی Edit Þ Add MFs  این پنجره برویم و تعداد و نوع تابع دلخواه را به آن اضافه کنیم. در گوشه پایین و راست از این پنجره(کادر Current Membership Function) می توانیم نام، نوع و پرامترهای هر یک از توابع عضویت را وقتی که تابع انتخاب شده است تغییر دهیم.

 

 

 

 

 

 

 

 

 

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

فرایند مشخـص کـردن تـوابـع عضـویت بـرای متغیرهـای ورودی و خـروجـی این مثال را دنبال می کنیم :

  • متغیر ورودی service را انتخاب کرده و در کادر Current Variable مقدار Range (محـدوده) را [ 0  10] قـرار می دهـیم و اینـتـر می کـنیـم بـا ایـن کـار مقـدار Display Range نیز به این مقدار تغییر می کند. این به آن معنا است که متغیر service اعداد مابین 0 تا 10 را می تواند اختیار کند.
  • به طور پیش فرض سه تابع عضویت از نوع trimf برای متغیرservice &nbs
/ 67 نظر / 571 بازدید
نمایش نظرات قبلی
جلال

دوست عزیز ممنون از مطالبتون. اگر امکانش هست برای من هم قایلی که شامل تصاویر می باشد ایمیل بفرمائید و یا بفرمائید از کجا می تونم دانلود کنم. با تشکر j_vatan@yahoo.com

احسان

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

Vahdat

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

تینا

با سلام خیلی ممنون از مطالب مفید و کامل تون لطفا در صورت امکان فایل مطالب و تصاویر را ایمیل نمایید، خیلی خیلی احتیاج دارم. با تشکر

احسان

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

hewram

با سلام دستتون درد نکنه اگه میشه برای من هم میل کنید

ahmad

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

حامد

با سلام و عرض خسته نباشید، نمی دونم هنوز این وبلاگ رو بروز می کنین یا نه، ولی اگه پیام من رو دیدین ممنون میشم که این مقاله رو با تصاویرش برای بنده هم میل کنین با تشکر

مهرداد

با سلام ممنون میشم اگه این آموزش رو با تصاویرش برام بفرستین.

حمیدرضا

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