示例#1
0
        static void Main(string[] args)
        {
            int L, D, LK, DK, V, S, A, K;

            // Biramo način dekodiranja neizrazitosti:
            Defuzzifier def = new COADefuzzifier();
            // Stvaranje oba sustava:
            // Grade se baze pravila i sve se inicijalizira
            FuzzySystem fsAkcel   = new AkcelFuzzySystemMin(def);
            FuzzySystem fsKormilo = new KormiloFuzzySystemMin(def);

            // Glavna petlja:

            while (true)
            {
                String str = Console.ReadLine();
                if (str[0] == 'K')
                {
                    break;
                }
                else if (str[0] == 'p')
                {
                    Pravilo(def, fsAkcel, fsKormilo);
                    break;
                }
                else if (str[0] == 'm')
                {
                    Manual(def, fsAkcel, fsKormilo);
                    break;
                }
                String[] p = str.Split(' ');
                L  = int.Parse(p[0]);
                D  = int.Parse(p[1]);
                LK = int.Parse(p[2]);
                DK = int.Parse(p[3]);
                V  = int.Parse(p[4]);
                S  = int.Parse(p[5]);

                // Zadaj ulaze, generiraj neizraziti izlaz, dekodiraj i vrati ga:
                A = fsAkcel.Zakljuci(L, D, LK, DK, V, S);
                //A = 4;
                K = fsKormilo.Zakljuci(L, D, LK, DK, V, S);
                //K = 5;
                //akcel = 10; kormilo = 5;
                Console.Write(A.ToString() + " " + K.ToString() + "\r\n");
                Console.Out.Flush();
            }
        }
        public override void ZakljuciPrint(int L, int D, int LK, int DK, int V, int S, Rule rule) //TODO bude li trebala diferencijacija, svaki zakljuci u svoju klasu
        {
            IFuzzySet union = new CalculatedFuzzySet(                                             //mjere pripadnosti su na minimumu mj.pripadnosti antecedenata
                Domain.IntRange(-100, 100),
                StandardFuzzySets.EmptyFunction()
                );


            union = Operations.Operations.BinaryOperation(
                union, rule.SingleRuleConclusion(L, D, LK, DK, V, S), Operations.Operations.ZadehOr());     //TODO IMPORTANT postoji li efikasniji nacin nego doslovno unija svega?
            KormiloFuzzySystemMin.Print(union, "Zakljucak:");

            int rez = def.Defuzzyfy(union);

            Console.WriteLine("Dekodirana vrijednost: {0}", rez);
            return;
        }