Exemple #1
0
 def compositionOfBinaryRelations(r1: FS.FuzzySet, r2: FS.FuzzySet):
     domain1, domain2 = r1.getDomain(), r2.getDomain()
     """:type: Domain.Domain"""
     assert domain1.getNumberOfComponents() == 2 and domain2.getNumberOfComponents() == 2
     domains1, domains2 = domain1.getDomains(), domain2.getDomains()
     for i,j in zip(domains1[1], domains2[0]):
         assert(i == j)
     X = domains1[0]
     Y = domains2[1]
     composition = FS.MutableFuzzySet(DM.CompositeDomain.combine(DM.SimpleDomain([x for x in X]), DM.SimpleDomain([y for y in Y])))
     for x in domains1[0]:
             for z in domains2[1]:
                 mins = []
                 for y in domains1[1]:
                     mins.append( min(r1.getValueAt((x,y)), r2.getValueAt((y,z))) )
                 composition.set((x,z), max(mins))
     return composition
Exemple #2
0
 def isUTimesURelation(set: FS.FuzzySet):
     domain = set.getDomain()
     """:type: Domain.Domain"""
     if domain.getNumberOfComponents() != 2:
         return False
     domains = domain.getDomains()
     for a, b in zip(domains[0], domains[1]):
         if a != b:
             return False
     return True
Exemple #3
0
 def isReflexive(set: FS.FuzzySet):
     if not Relations.isUTimesURelation(set):
         return False
     domain = set.getDomain()
     """:type: Domain.Domain"""
     domains = domain.getDomains()
     for i in domains[0]:
         if set.getValueAt((i, i)) != 1.0:
             return False
     return True
Exemple #4
0
 def isSymmetric(set: FS.FuzzySet):
     if not Relations.isUTimesURelation(set):
         return False
     domain = set.getDomain()
     """:type: Domain.Domain"""
     domains = domain.getDomains()
     for i in domains[0]:
         for j in domains[0]:
             if set.getValueAt((i,j)) != set.getValueAt((j,i)):
                 return False
     return True
Exemple #5
0
 def isMinMaxTransitive(set: FS.FuzzySet):
     if not Relations.isUTimesURelation(set):
         return False
     domain = set.getDomain()
     """:type: Domain.Domain"""
     domains = domain.getDomains()
     for u in domains[0]:
         for v in domains[0]:
             tmp = []
             for w in domains[0]:
                 tmp.append(min(set.getValueAt((u, w)), set.getValueAt((w, v))))
             if set.getValueAt((u, v)) < max(tmp):
                     return False
     return True