コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
        }