private static void LoadAndFuzzifyData(string fileName) { var developerParams = JObject.Parse(File.ReadAllText(fileName)); var legal = (double)developerParams["legal"]; Variables["Правовое состояние"] = LegalStateType.CreateVariable("Правовое состояние"); Variables["Правовое состояние"].Value = LegalStateType.GetValue(legal); var finance = (double)developerParams["finance"]; Variables["Финансовое состояние"] = FinanceStateType.CreateVariable("Финансовое состояние"); Variables["Финансовое состояние"].Value = FinanceStateType.GetValue(finance); var transparent = (double)developerParams["transparent"]; Variables["Прозрачность"] = TransparencyType.CreateVariable("Прозрачность"); Variables["Прозрачность"].Value = TransparencyType.GetValue(transparent); var honest = (double)developerParams["honest"]; Variables["Честность"] = HonestyType.CreateVariable("Честность"); Variables["Честность"].Value = HonestyType.GetValue(honest); var plan = (double)developerParams["plan"]; Variables["Соблюдение планов"] = PlanType.CreateVariable("Соблюдение планов"); Variables["Соблюдение планов"].Value = PlanType.GetValue(plan); }
static void Main(string[] args) { var points = new LinguisticType("Рейтинговые баллы"); points.CreateTerm("Мало", 20, 5, TermType.Left); points.CreateTerm("Средне", 40, 20); points.CreateTerm("Много", 70, 10, TermType.Right); var skips = new LinguisticType("Пропуски"); skips.CreateTerm("Мало", 0, 10, TermType.Left); skips.CreateTerm("Средне", 5, 5); skips.CreateTerm("Много", 10, 10, TermType.Right); var studentPoints = points.CreateVariable("Баллы студента"); studentPoints.Value = points.GetValue(10.0); var studentSkips = skips.CreateVariable("Пропуски студента"); studentSkips.Value = skips.GetValue(20.0); var statement1 = new OrStatement( new AtomicStatement(studentPoints, points["Мало"]), new AtomicStatement(studentSkips, skips["Много"])); var call = new LinguisticType("Необходимость звонка", 0, 10); call.CreateTerm("Срочно звонить", 0, 4, TermType.Left); call.CreateTerm("Поговорить на собрании", 5, 4); call.CreateTerm("Не звонить", 10, 4, TermType.Right); var statement2 = new AndStatement( new AtomicStatement(studentPoints, points["Много"]), new AtomicStatement(studentSkips, skips["Мало"])); var ruleset = new MISORuleSet(call); ruleset.AddRule(statement1, call["Срочно звонить"]); ruleset.AddRule(statement2, call["Не звонить"]); Console.WriteLine(studentPoints); Console.WriteLine(studentSkips); Console.WriteLine(ruleset); Console.WriteLine(call.GetValue(ruleset.GetResult().Defuzzify())); }