PDA

View Full Version : منطق فازي : درخواست راهنمايي براي كتابخانه Dotfuzzy



ابوذر محمودی
یک شنبه 08 آبان 1390, 12:41 عصر
سلام دوستان وقتتون بخير!
من زياد با منطق فازي آشنا نيستم يك قطعه كد در سي شارپ هست كه من دقيقا نميدونم اون چه كاري انجام ميده ؛ ميتونين يه راهنمايي كنين بگين اين 4 تا عددي كه در قسمت MembershipFunction نوشتن چيه؟ و اعدادي كه مثلا در قسمت Cold هست با اعدادي كه در قسمت Tepid هست چه ربطي به هم دارن.
ممنون ميشم يه توضيحاتي در اين باره بدين.
اگه كسي نمودار اعداد رو ميتونه ترسيم كنه ممنون ميشم واسم بذارش :ناراحت:

LinguisticVariable water = new LinguisticVariable(“Water”);
water.MembershipFunctionCollection.Add(new MembershipFunction(“Cold”, 0, 0, 20, 40));
water.MembershipFunctionCollection.Add(new MembershipFunction(“Tepid”, 30, 50, 50, 70));
water.MembershipFunctionCollection.Add(new MembershipFunction(“Hot”, 50, 80, 100, 100));

LinguisticVariable power = new LinguisticVariable(“Power”);
power.MembershipFunctionCollection.Add(new MembershipFunction(“Low”, 0, 25, 25, 50));
power.MembershipFunctionCollection.Add(new MembershipFunction(“High”, 25, 50, 50, 75));

FuzzyEngine fuzzyEngine = new FuzzyEngine();
fuzzyEngine.LinguisticVariableCollection.Add(water );
fuzzyEngine.LinguisticVariableCollection.Add(power );
fuzzyEngine.Consequent = “Power”;
fuzzyEngine.FuzzyRuleCollection.Add(new FuzzyRule(“IF (Water IS Cold) OR (Water IS Tepid) THEN Power IS High”));
fuzzyEngine.FuzzyRuleCollection.Add(new FuzzyRule(“IF (Water IS Hot) THEN Power IS Low”));

water.InputValue = 60;

try
{
MessageBox.Show(fuzzyEngine.Defuzzify().ToString() );
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}

torisoft
جمعه 13 آبان 1390, 16:35 عصر
دوست عزیز پیشنهاد می کنم قبل از اینکه این برنامه رو تجزیه و تحلیل کنین اول یکم در مورد فازی مطالعه و تحقیق کنین.
cold , Tepid , hot توابع عضویت یک سیستم فازی هستند و اون اعداد بازه ی تغییرات اونها. توابع عضویت معولا به شکلهای متفاوتی از جمله مثلثی، ذوذنقه، گوسی و ... هستند که بسته به نوع انتخاب هرکدام از اینها تعداد اون اعدادی که شما میگین تغییر می کنن ولی بازه (مثلا در مورد Cold بین 0 تا 40) تغییر نمیکند.
در مورد بالا فکر میکنم شکل شما بصورت ذوذنقه باشه که یه نمونه براتون میذارم و میتونین ارتباط هرکدوم رو با هم مشاهده کنین.

موفق باشید77415

torisoft
جمعه 13 آبان 1390, 16:43 عصر
البته یه نکته بگم اینکه در مورد شکل قسمت Warm با توجه به داده های شما (Tepid) بصورت مثلثی می شود.