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