private void ViewSet(ContinuousFuzzySet <string, double> set, Chart chart1) { chart1.Series.Clear(); chart1.Series.Add("Fuzzy Set"); chart1.Series["Fuzzy Set"].ChartType = SeriesChartType.Column; IEnumerator <KeyValuePair <string, double> > it = set.GetEnumerator(); while (it.MoveNext()) { KeyValuePair <string, double> pair = it.Current; chart1.Series[0].Points.AddXY(pair.Key, pair.Value); } }
private void ViewSet(ContinuousFuzzySet <double, double> set, Chart chart1) { chart1.Series.Clear(); chart1.Series.Add("Fuzzy Set"); chart1.Series["Fuzzy Set"].ChartType = SeriesChartType.Spline; chart1.Series["Fuzzy Set"].BorderDashStyle = ChartDashStyle.Solid; chart1.Series["Fuzzy Set"].BorderWidth = 3; IEnumerator <KeyValuePair <double, double> > it = set.GetEnumerator(); while (it.MoveNext()) { KeyValuePair <double, double> pair = it.Current; chart1.Series[0].Points.AddXY(pair.Key, pair.Value); } }
private double Defuzzification(ContinuousFuzzySet <double, double> set) { double s1 = 0; double s2 = 0; Dictionary <double, double> .Enumerator it = set.GetEnumerator(); while (it.MoveNext()) { s1 += it.Current.Key * it.Current.Value; s2 += it.Current.Value; } if (s2 == 0) { return(0.5 * (set.Keys.Max() + set.Keys.Min())); } else { return(s1 / s2); } }
ActivateConclusion(double[] y) { int i = 0; ContinuousFuzzySet <double, double>[] sets = new ContinuousFuzzySet <double, double> [y.Length]; foreach (Rule rule in rules) { int j = rule.Conclusion.TermId; ContinuousFuzzySet <double, double> S0 = rule.Conclusion.Variable.Terms[j].FuzzySet; Dictionary <double, double> .Enumerator it = S0.GetEnumerator(); List <KeyValuePair <double, double> > list = new List <KeyValuePair <double, double> >(); while (it.MoveNext()) { double key = it.Current.Key; double value = Math.Min(y[i], it.Current.Value); list.Add(new KeyValuePair <double, double>(key, value)); } sets[i++] = new ContinuousFuzzySet <double, double>(list); } return(sets); }