Пример #1
0
    def parse_input_vars(self, text):
        """
        Parsea las variables de entrada. Devuelve un VariableCollection

        """
        pattern = re.compile(r'input: \((\w+)\) \((\w+)\) \((.*)\)')
        m = pattern.search(text)

        d = {}

        while m:
            name = m.group(1)
            value_raw = m.group(2)
            func = self.parse_function(m.group(3))

            value = ValueDefinition(value_raw, func)
            if not name in d:
                d[name] = []

            d[name].append(value)

            m = pattern.search(text, m.end())

        variables = VariableCollection()

        for name, values in d.items():
            variables.append(VariableDefinition(name, values))

        return variables
Пример #2
0
class EvaluatorTests(unittest.TestCase):
    def setUp(self):
        f1 = TriangularFunction(
            Point(0, 0),
            Point(10, 0),
            Point(5, 1)
        )
        f2 = TriangularFunction(
            Point(5, 0),
            Point(15, 0),
            Point(10, 1)
        )

        agua_values = [
            ValueDefinition('Fria', f1),
            ValueDefinition('Tibia', f2)
        ]

        propina_values = [
            ValueDefinition('Poca', f1),
            ValueDefinition('Mucha', f2)
        ]

        self.variables = VariableCollection(
            (
                VariableDefinition('Agua', agua_values),
                VariableDefinition('Propina', propina_values)
                )
        )
        self.variables.add_input('Agua', 2.5)
        self.variables.add_input('Propina', 7.5)

        self.evaluator = RuleEvaluator()

    def test_one_var(self):
        result = self.evaluator.evaluate(self.variables, 'Agua = Fria')
        self.assertEqual(result, 0.5)

    def test_one_var_(self):
        result = self.evaluator.evaluate(self.variables, 'Agua = Tibia')
        self.assertEqual(result, 0)

    def test_OR(self):
        result = self.evaluator.evaluate(self.variables,
            'Agua = Fria or Agua = Tibia')
        self.assertEqual(result, 0.5)

    def test_AND(self):
        result = self.evaluator.evaluate(self.variables,
            'Agua = Fria and Agua = Tibia')
        self.assertEqual(result, 0)

    def test_NOT(self):
        result = self.evaluator.evaluate(self.variables,
            'not(Agua = Tibia)')
        self.assertEqual(result, 1)
Пример #3
0
    def setUp(self):
        f1 = TriangularFunction(
            Point(0, 0),
            Point(10, 0),
            Point(5, 1)
        )
        f2 = TriangularFunction(
            Point(5, 0),
            Point(15, 0),
            Point(10, 1)
        )

        agua_values = [
            ValueDefinition('Fria', f1),
            ValueDefinition('Tibia', f2)
        ]

        propina_values = [
            ValueDefinition('Poca', f1),
            ValueDefinition('Mucha', f2)
        ]

        self.variables = VariableCollection(
            (
                VariableDefinition('Agua', agua_values),
                VariableDefinition('Propina', propina_values)
                )
        )
        self.variables.add_input('Agua', 2.5)
        self.variables.add_input('Propina', 7.5)

        self.evaluator = RuleEvaluator()