دانلود رایگان کتابخانه منطق و محاسبات فازی برای دات نت یا DotFuzzy

دانلود رایگان کتابخانه منطق و محاسبات فازی برای دات نت یا DotFuzzy

 

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

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

دانلود رایگان کتابخانه منطق و محاسبات فازی برای دات نت یا DotFuzzy

 

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

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

کتابخانه دات فازی کاملا رایگان اسنت و کد آن نیز به صورت متن باز و تحت مجوز LPGL توزیع شده است. پیاده سازی این کتابخانه کاملا متاثر از قواعد برنامه نویسی شیئ گرا (Object-Oriented Programming) است و این امر باعث انعطاف پذیری و ثبات کتابخانه دات فازی می شود. در این کتابخانه امکان تعریف توابع عضویت فازی از انواع مختلف وجود دارد. همچنین تمام بخش های مورد نیاز برای موتور استنتاج فازی نیز، که شامل فازی سازی، ارزیابی قواعد فازی، و نافازی سازی است، به طور کامل در این کتابخانه پیاده سازی شده اند. کار کردن با دات فازی بسیار ساده است و نیاز به هیچ تخصص اضافی (به غیر از آشنایی به زبان برنامه نویسی مورد استفاده) ندارد. علاوه بر این موارد کتابخانه دات فازی امکان ذخیره سازی سیستم های فازی را در قالب فایل XML فراهم می آورد که در آن از ساختاری مشابه با زبان کنترل فازی استفاده شده است.

به عنوان راهنما و نمونه ای از استفاده از کتابخانه دات فازی در زبان سی شارپ C#، یک قطعه کد برای شما آورده ایم:

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);
}

 

مطالب پیشنهادی‎

پاسخی بگذارید

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