def deduce(self, values, defuz=True): consequences = [rule.apply(values) for rule in self.rules] union = consequences[0] for i in range(1, len(consequences)): union = Operations.binary_operation(union, consequences[i], Operations.zadeh_or()) return self.defuzzifier.defuzzify(union) if defuz else union