یک مثال کاربردی در منطق فازی

Facebooktwittergoogle_pluspinterestlinkedinmail
Print Friendly, PDF & Email

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

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

پارامترهای ورودی: دمای داخل(indoor temp)،دمای خارج(outdoor temp)، اختلاف دما با 5 دقیقه گذشته(5-min delta temp)

پارامترهای خروجی: تغییر در جریان گاز

تعریف مجموعه های فازی:

حال نوبت به این رسیده است که برای هر پارامتر مجموعه های فازی را تعریف کنیم. می خواهیم از توابع عضویت مثلثی استفاده کنیم.

ابتدا تصمیم می گیریم که برای هر پارامتر چند مجموعه قرار داده شود:

برای پارامتر InTemp

3 مجموعه فازی تعریف می کنیم: cool, comfortable, too_warm

برای پارامتر OutTemp

5 مجموعه فازی تعیین می کنیم: very_cold,  chilly, warm, very_warm, hot

برای پارامتر DeltaInTemp

5 مجموعه فازی تعیین می کنیم: large_negative, small_negative, newr_zero, small_positive, large_positive

برای پارامتر خروجی یعنی FlowChange

5 مجموعه فازی تعیین می کنیم: decrease_greatly, decrease_slightly, no_change, increase_ slightly, increase_greately

تعداد پارامترهای هر  تابع به موقعیت آن بستگی دارد.

حال سراغ تعیین قوانین(rules) می رویم:

قوانین احتمالی:

قانون 1:

If InTemp is comfortable and DeltaInTemp is near_zero, then FlowChange is no_change.

قانون 2:

If OutTemp is chilly and DeltaInTemp is small_negative, then FlowChange is increase_small.

قانون 3:

If InTemp is too_warm and DeltaInTemp is large­_positive, then FlowChange is decrease_greatly.

قانون 4:

If  InTemp is  cool and DeltaInTemp is near_zero, then FlowChange is increase_small.

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

حال به سراغ تعریف توابع عضویت می رویم.

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

برای مثال: برای دمای داخل یعنی پارامتر InTemp

منطق فازی سید محمدامین ساجدی

در بالا 3 پارامتر را که از پارامترهای ورودی به حساب می آیند را بصورت توایع عضویت درآوردیم. در ابتدای مبحث گفتیم که از تابع عضویت مثلثی یا سه گانه استفاده می کنیم. یعنی اینکه در توابع عضویت خود باید 3 نقطه را مشخص شده ببینیم. در بالا مثلا برای پارامترcool در صورت کسر ها مقادیر 0 و 1 را داریم که به ترتیب نشان دهنده کم ترین و بیش ترین دما برای این پارامتر می باشند. یعنی اینکه برای آنکه یک دما در حوزه عضویت cool قرار بگیرد باید حداقل 50 و حداکثر 60 باشد که بیشترین احتمال سرد بودن را داشتهباشند و درصورتیکه در 70 یا نزدیکی آن باشند از عضویت آن دما در cool کاسته می شود. بقیه پارامترها هم به همین صورت. یعنی هرچقدر به مقداری که صورت آن 0 است نزدیکتر می شویم از عضویت در آن پارامتر کاسته می شود و هرچه هم به 1 نزدیکتر می شویم به عضویت آن دما در پارامتر مورد بحث بیشتر می شود.

برای اختلاف دمای داخل و خارج هم:

منطق فازی سید محمدامین ساجدی

برای پارامتر دمای خروجی هم:

منطق فازی سید محمدامین ساجدی

حال به سراغ فازی سازی می رویم:

فرض کنید دمای داخل 67.5 درجه فارنهایت می باشد. تغییر در دمای تا 5 دقیقه پیش هم -1.6 فارنهایت می باشد و دمای خارج نیز 52 درجه فارنهایت می باشد. حال بدنبال مقادیر فازی لازم برای مسئله خود می رویم.

برای پارامتر InTemp:

منطق فازی سید محمدامین ساجدی

برای پارامتر DeltaInTemp:

منطق فازی سید محمدامین ساجدی

برای پارامتر OutTemp:

منطق فازی سید محمدامین ساجدی

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

قانون 1:

منطق فازی سید محمدامین ساجدی

قانون 2:

منطق فازی سید محمدامین ساجدی

قانون 3:

منطق فازی سید محمدامین ساجدی

قانون 4:

منطق فازی سید محمدامین ساجدی

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

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

پیش بینی فعال سازی های مجموعه های فازی خروجی:

در مثال ما قانون های 1، 2 و 4 فعال می شوند. در واقع 2 مجموعه فازی خروجی فعال شده اند. no_change توسط قانون شماره 1 و increase_small هم توسط هردوی قوانین 2 و 4.

توجه داشته باشید که یک مجموعه فازی می تواند توسط چند قانون بطور همزمان فعال شود. می توانیم از چندین روش برای انتخاب از بین چندین قانونی که یک مجموعه فازی را فعال می کنند استفاده کنیم. روش معمول برای این کار، روش OR دکتر لطفی زاده می باشد. در این مثال با استفاده از این روش مقدار 0.8 برای مجموعه increase_small انتخاب می شود.

مرحله غیرفازی سازی:

در این مرحله قانون های if-then با هم ترکیب می شوند و مقدار خاصی برای متغیر کنترلی(خروجی) بوجود می آورند. در این مثال تغییرات خروجی درواقع تغییر در باز و بسته بودن شیر گاز می باشد.

ما برای این مثال محدوده خروجی -3 تا +3 متر مکعب بر دقیقه را انتخاب کردیم. در این محموعه فازی مرکز 0 متر مکعب بر دقیقه می باشد. حداقل تغییر دز جریان خروجی شیر برابر 0.1 می باشد که یعنی 61 نقطه در این محدوده -3 تا +3 قرار می گیرد(61 نقطه با فاصله 0.1).

مرحله غیرفازی سازی درواقع مرحله ایست که یک مقدار قابل اندازه گیری خروجی را از سیستم می گیریم.

توجه داشته باشید که توابع عضویت بایستی مقادیر قابل اندازه گیری باشند. یک روش معمول برای غیر فازی سازی استفاده از روش مرکز ثقل(centroid) می باشد.

منطق فازی سید محمدامین ساجدی

با قرار دادن مقادیر در فرمول بالا مقدار 0.76 بدست می آید.

حال به سراغ مرحله غیرفازی سازی پارامترهای خروجی که قرار است جریان شیر را کنترل کنیم می رویم. در مراحل قبلی که توابع عضویت برای پارامترها تعیین کردیم، برای شیر کنترلی خروجی (Output) 5 پارامتر تعیین کردیم.(increase_slightly, increase_graeatly, decrease_slightly, decrease_greatly, no_change)

در همان مرحله در توابع عضویت مثلثی مقادیر را برای آن ها تعیین کردیم. حال نوبت به آن رسیده است که توابع عضویت را بصورت نموداری به نمایش دربیاوریم.

منطق فازی سید محمدامین ساجدی

حروف نوشته شده بالای نمودار، حاصل قراردادن حرف اول هر کلمه از پارامترها می باشد. DG یعنی decrease_greatly.

می بینید که بر اساس همان 0 و 1 ها، نمودار برای هر پارامتر رسم شده است. در این مثال نتیجه اجرای قوانین با توجه به مقادیری که داشتیم یعنی دمای داخل و دمای خارج و اختلاف دما در 5 دقیقه، در نهایت پارامترهای no_change و increase_slightly فعال شدند که در این شکل هم محدوده آن د پارامتر یعنی در مجموع از -1 تا 2 انتخاب شده است. اگر بخاطر داشته باشید در مرحله بررسی فعال شدن قانون ها، برای increase_small مقدار 0.8  و برای no_change هم مقدار 0.2 انتخاب شد که هر دوی این مقادیر در محدوده خودشان پر رنگ شده اند و ارتباط آنها هم بر اساس شیب هم پوشانی آن ها صورت گرفته است. در نتیجه بایستی شیر به اندازه تقریبا 8 برابر مقیاس اولیه یعنی 0.1  باز شود.

امیدوارم این مطلب برای شما مفید بوده باشه!

شما احتمالا این مطالب را نیز دوست دارید...

۱۱ بازخورد

  1. رها می‌گه:

    باسلام

    عاااااااااااااالی بود آقای مهندس.

    سپاس******************

  2. قسامی می‌گه:

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

  3. مریم می‌گه:

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

  4. بهناز علی نژاد می‌گه:

    توابع عضویت رو چطور تعریف می کنیم ایا کار تحلیلگر هست
    من می خوام در حوزه انرژی خورشیدی ازش استفاده کنم اما نمی دونم چطور ممنون میشم کمکم کنید چون خیلی به کمک شما نیاز دارم
    ممنون

  5. صالح رافعی می‌گه:

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

  6. اینجانب می‌گه:

    با تشکر و سپاس بی کران

  7. زمانی می‌گه:

    سلام
    آقای مهندس میشه متن مثال را بفرستید؟

  8. Seta می‌گه:

    سلام امکانش هست یه مثال موردی برای توابع سیگموئید برام بگید خیلی فوریه ممنون

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *