آموزش کار با anfisEdit

anfisEdit در متلب، ابزاری است برای کار با سیستم neuro-fuzzy و بحث یادگیری در آن. در این آموزش با استفاده از matlab2010 بحث یادگیری در anfis را مورد بررسی قرار میدهیم.

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

 

 

 

ابتدا باید ورودی و خروجی های خود را تعیین کنیم.

ورودی ها : 1- اندازه اتاق (بین 6 تا 40)           2-دمای هوا (بین -5 تا 35)

خروجی: 1- شدت گاز خروجی بخاری(بین 0 تا 100)

حال به طراحی سیستم می پردازیم.

برای کار با anfis کافیست در متلب، دستور anfisedit را تایپ کنید. با فشردن دکمه اینتر، پنجره شکل زیر نمایش داده میشود.

 

 

 

از منوی edit گزینه fis properties را کلیک کنید. پنجره مربوط به قسمت فازی نمایش داده می شود.(شکل زیر). در این پنجره، می توانیم ورودی و خروجی های خود را تعریف کنیم. برای اینکار کافیست از منوی edit بر روی add variable رفته و ورودی یا خروجی مورد نظر را به سیستم اضافه کنیم. در این مثال چون دو ورودی داریم، باید با رفتن به add variable یک input وارد کنیم.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

حال این پنجره را بسته و در پنجره شکل یک بر روی دکمه structure کلیک کنید.

با زدن این دکمه، صفحه ای نمایش داده می شود، که حالت اولیه سیستم ما را بدون هیچ rule نمایش میدهد.

  

می بینیم که هیچ قاعده ای در ابتدا وجود ندارد.

حالا باید به سیستم آموزش دهیم. برای اینکار می بایست، داده های ورودی و خروجی مطلوب را به سیستم بدهیم. در اینجا ما لیست از داده های مطلوب را در یک فایل text وارد کرده و نهایتا پسوند فایل را به .dat تغییر میدهیم.(data.dat)

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

پس از ساخته شدن فایل تکست، از طریق load data این فایل را بارگذاری میکنیم.

به عنوان مثال ما این اعداد را در فایل تکست خود ذخیره میکنیم. مثلا اگر اتاق 40 متری بود و دمای هوا هم -5 (سردترین)حالت بود، باید شدت گاز خروجی ماکزیمم باشد (یعنی 100). پس این سه مقدار را در سطر اول فایل متنی وارد میکنیم

40,-5,100

و یا اگر در همان دما ، اندازه اتاق متوسط بود (مثلا 18 متر) باید شدت گاز خروجی کمتر باشد مثلا 60. که این داده ها را نیز در سطر دوم می نویسیم.

40,-5,100

18,-5,60

40,-5,100

18,-5,80

6,-4,60

12,-3,65

30,6,40

20,2,40

40,30,0

40,0,80

32,35,0

6,35,0

همینطور داده هایی را در سطر های بعدی مینویسیم که این داده ها ، داده هایی هستند که سیستم عمل یادگیری را از روی آنها انجام میدهد.

پس از اینکه این داده ها را نوشتیم و در فایل data.dat ذخیره کردیم، حالا باید این داده ها را به سیستم وارد کنیم. برای این کار در قسمت load data گزینه های training data و from file  را انتخاب کرده و بر روی دکمه load data کلیک میکنیم. سپس از پنجره باز شده، فایل را انتخاب میکنیم. (توجه کنید که فایل با utf-8 ذخیره نشده باشد.)

 

 

 

 

 

  حالا با استفاده از دکمه generate fis به تنظیم membership functions می پردازیم.

 

 

 



















در این شکل همانگونه که مشاهده می کنید، دو عدد 3 در کادر بالا نوشته شده است. که اولین عدد نشان دهنده تعداد حالات نشان دهنده اندازه اتاق است (به صورت فازی) مثلا سه حالت (کوچک متوسط بزرگ) و دومین عدد هم نشان دهنده حالات دما (سرد معتدل گرم)

که طبیعتا می توانستیم تعداد این حالات را تغییر دهیم. مثلا  می توانستیم برای نشان دادن اندازه اتاق از 5 حالت (خیلی کوچک کوچک متوسط بزرگ خیلی بزرگ ) استفاده  کنیم که در این صورت بجای عدد 3 3 باید عدد 3 5 را در کادر number of MFs می نوشتیم.

نوع MF type نیز، نوع نمودار فازی است که می تواند مثلثی، گاوسی و یا هر کدام از موارد فوق باشد که ما در اینجا trimf را انتخاب کردیم.دکمه ok را فشار دهید.

بد نیست دوباره نگاهی به structure بیندازیم. پس بر روی دکمه structure کلیک کنید.می بیننید که سیستم یک سری قواعد را ایجاد کرده است.

 

حال این پنجره را ببندید تا سیستم را trainکنیم. در قسمت train FIS دو مقدار داریم. یکی error tolerance که مقدار آن را روی 0.1 میگذاریم و یکی epoch که مقدار آن را روی 100 میگذاریم. حالا دکمه train now را کلیک کنید. می بینید که سیستم شروع به اجرا میکند و عمل یادگیری را انجام میدهد.

تعداد خطاها نیز در کادر پایین صفحه نمایش داده میشود. هر بار که train now را میفشاریم، سیستم دقیقتر می شود و خطایش کمتر میشود.

Normal 0 false false false EN-US X-NONE FA
 

با تشکر

رضا درودی

پاییز 92

Normal 0 false false false EN-US X-NONE FA

نظرات   

 
#2 پیمان 1398-02-03 15:31
سلام. حالا که انفیس رو مدلسازی کردیم چطوری باید داده های واقعی رو بهش بدیم و خروجی ای که نمیدونیم چی هستن و هدف پروژه هستن رو ازش بگیریم؟
نقل قول
 
 
#1 نسرین 1395-09-27 12:45
سلام
مهندس
وقت کردی بازهم از این آموزشها بگذار
خیلی به دردم خورد
خدا عمر با عزت بهت بده
نقل قول
 

اضافه کردن نظر


کد امنیتی
تغییر کد امنیتی