public static FuzzySet2D MaxMultCompose(FuzzySet2D R, FuzzySet2D S) { List <double> zList = new List <double>(); zList.AddRange(R.getUniqueX2()); zList.AddRange(S.getUniqueX1()); List <double> xList = new List <double>(); xList.AddRange(R.getUniqueX1()); List <double> yList = new List <double>(); yList.AddRange(S.getUniqueX2()); FuzzySet2D res = new FuzzySet2D(); foreach (double x in xList) { foreach (double y in yList) { double sup = 0; foreach (double z in zList) { double tmp = R.Mu(x, z) * S.Mu(z, y); if (tmp > sup) { sup = tmp; } } res.AddDot(x, y, sup); } } return(res); }
public static FuzzySet2D MinMaxCompose(FuzzySet2D R, FuzzySet2D S) { List <double> zList = new List <double>(); zList.AddRange(R.getUniqueX2()); zList.AddRange(S.getUniqueX1()); List <double> xList = new List <double>(); xList.AddRange(R.getUniqueX1()); List <double> yList = new List <double>(); yList.AddRange(S.getUniqueX2()); FuzzySet2D res = new FuzzySet2D(); foreach (double x in xList) { foreach (double y in yList) { double inf = 1; foreach (double z in zList) { double tmp = Math.Max(R.Mu(x, z), S.Mu(z, y)); if (tmp < inf) { inf = tmp; } } res.AddDot(x, y, inf); } } return(res); }