Tu primera pregunta probablemente sea – ¿cómo digo “Rete”? Bueno, una búsqueda rápida que conduce a varios diccionarios sugiere que “Reet” es apropiado, mientras que “Ree-tee” y otras pronunciaciones son menos comunes.
El objetivo de un algoritmo Rete es bastante simple: reducir el número de ejecuciones de reglas para llegar al mismo resultado final. Al evaluar la estructura de las reglas, se pueden hacer inferencias para permitir que algunas reglas no se ejecuten en orden porque son innecesarias.
Un ejemplo sencillo y no técnico:
Hecho:
Bob le robó a Joe
Reglas:
Robar es un delito
No hagas negocios con alguien que sea un criminal
No le prestes dinero a alguien con quien no hacemos negocios
Ejecución
Datos: Bob le robó a Joe
Resultado: No le prestes dinero a Bob
Como puede ver, podemos omitir fácilmente la segunda regla porque podemos inferir o recordar Robo = delito = sin relación comercial = sin préstamos.
El algoritmo Rete es una metodología de diseño que sacrifica la memoria por la velocidad. Optimiza los tiempos de ejecución al reducir la cantidad de reglas o datos que requiere una transacción con una red inteligente o una estructura de reglas y datos. La idea fundamental es simple, mientras que las implementaciones pueden llegar a ser bastante complejas.
El principio se reduce esencialmente a crear el árbol de decisiones más sencillo posible en tiempo de ejecución. En un proyecto en el que puede tener millones o miles de millones de transacciones de reglas comerciales – diseñar su ejecución de tal manera que requiera que se ejecuten todas y cada una de las reglas agregará costos generales costosos a los tiempos totales de ejecución. El algoritmo Rete optimiza el patrón de ejecución de reglas con “reglas de prueba” que se colocan temprana y estratégicamente en cualquier ejecución para determinar si es necesario ejecutar/acceder a otros datos o reglas o no.
Obviamente, el ejemplo simple anterior es un ejemplo demasiado trivial de optimización y no hace justicia a los tipos de grandes conjuntos de reglas que pueden existir en escenarios del mundo real. Fue diseñado en los años 70’ y 80’, cuando la potencia de procesamiento computacional era una fracción muy pequeña de lo que es hoy; sin embargo, la optimización de la ejecución de reglas sigue siendo un tema muy relevante.
Una implementación real de RETE realiza esta optimización automáticamente y elige las reglas que se ejecutarán por usted en las etapas de ‘compilación’ o análisis. Esto introduce un poco de ‘magia de caja negra’ en el entorno de reglas. ¿Cuánto necesita el usuario empresarial comprender y/o confiar en la optimización automática de las reglas para tener confianza en que todas las reglas se están ejecutando correctamente.
Todos los datos de las reglas deben poder estar disponibles en la memoria para ser evaluados. Si se toma un conjunto de datos grande, como todos los procedimientos médicos posibles y las pólizas de compañías de seguros relacionadas con ellos, el conjunto de datos puede ser bastante grande y el costo de optimizar los patrones inicialmente es muy costoso.
Los datos evaluados también tienden a ser mejores si son datos bastante planos. Es fácil optimizar reglas como Ingresos > 100, pero mucho más difícil evaluarlas, por ejemplo Contenido de una cartera de inversiones que busca elementos problemáticos específicos.
RETE sólo es realmente necesario cuando el número de reglas es muy grande o Hay algunos tipos de reglas que son realmente costosas de ejecutar.
Decisiones y el algoritmo Rete
Las decisiones abarcan todos los objetivos del algoritmo RETE; sin embargo, nuestra opinión sobre cómo logramos estos objetivos es un poco diferente. A nuestro modo de ver, los beneficios de RETE son
No ejecutar reglas que no son necesarias.
Recordar costosas ejecuciones de reglas para que puedan aplicarse a ejecuciones de datos posteriores.
Sin embargo, hay elementos de uso de reglas en soluciones comerciales, hay algunos objetivos adicionales que también queríamos adoptar
Evite la magia de la caja negra haciendo que las relaciones entre la dependencia de las reglas se declaren y comprendan de manera muy explícita.
Para soportar estructuras de datos que sean mucho más complejas o más profundas. RETE funciona mejor con estructuras de datos bastante planas y no dinámicas.
Vocabulario ampliado de verbos de reglas para permitir que la lógica se extienda a conceptos comerciales complejos. En lugar de [Persona] robado podríamos tener un verbo como [Persona] se encuentra en la lista de personas acusadas o condenadas. No es necesario que todos los datos estén presentes al comienzo de la ejecución de la regla, ya que los verbos de regla son lo suficientemente flexibles como para incorporar datos adicionales y/o lógica altamente ajustada y encapsulada.
Decisions ha incorporado mecanismos de recopilación de reglas que respaldan ‘reglas de prueba’ para detener la evaluación de las condiciones de las reglas basándose en una evaluación temprana. Estos conjuntos de reglas se pueden anidar para formar un árbol de dependencia. Utilizando esta metodología la dependencia de las reglas es muy clara y será entendida por el analista que crea las reglas.
Se realiza una mayor optimización al permitir que las reglas tengan una memoria contextual de ejecución y resultados (incluida la consideración de los datos que se consideran en la regla). Si bien esto significa que la primera ejecución de una regla puede pagar el costo de ejecución de esta regla, cada ejecución siguiente puede beneficiarse de esto.
Las decisiones 4.0 (que se publicarán en el segundo trimestre de 2016) incluirán herramientas adicionales de árbol de dependencias y descubrimiento de dependencias para ayudar a optimizar aún más la ejecución de reglas.