Aplicación de CLIPS al Problema de Relaciones Familiares

En el campo de la Ingeniería del Conocimiento, hemos desarrollado un sistema experto utilizando CLIPS (C Language Integrated Production System) para gestionar y razonar sobre relaciones familiares. CLIPS es una herramienta potente para crear sistemas basados en reglas, ideales para deducir relaciones complejas a partir de hechos simples.

Estructura del Sistema

El sistema está diseñado para deducir relaciones familiares a partir de datos básicos sobre personas y sus relaciones directas (como padres e hijos). A continuación, se explica cómo funciona el sistema y algunos fragmentos de código clave:

1. Definición de Hechos

Se definen hechos generales sobre las personas (si son hombres o mujeres) y sus relaciones directas. Por ejemplo, se especifica que Juan es un hombre y que ManuelRuiz es padre de Ricardo.

2. Reglas para Inferencia

  • Regla de Dualidad: Permite deducir la relación opuesta. Por ejemplo, si Ricardo es hijo de ManuelRuiz, entonces ManuelRuiz es padre de Ricardo. Esto se logra mediante la siguiente regla:
(defrule dualidad
  (Relacion (tipo ?r) (sujeto ?x) (objeto ?y))
  (dual ?r ?t)
=>
  (assert (Relacion (tipo ?t) (sujeto ?y) (objeto ?x))))
  • Regla de Composición: Deduce relaciones complejas basadas en relaciones existentes. Por ejemplo, si x es hermano de y y y es padre de z, entonces x es tío de z. Esto se define así:
(defrule composicion
  (Relacion (tipo ?r) (sujeto ?y) (objeto ?x))
  (Relacion (tipo ?t) (sujeto ?x) (objeto ?z))
  (comp ?r ?t ?u)
=>
  (assert (Relacion (tipo ?u) (sujeto ?y) (objeto ?z))))

3. Interacción con el Usuario

El sistema permite a los usuarios ingresar nombres y consultas sobre relaciones familiares. Por ejemplo, una regla pregunta al usuario por el nombre de una persona y luego muestra todas las relaciones posibles con esa persona:

(defrule pregunta
  (declare (salience 800)) 
=>
  (printout t "Nombre primera persona: " crlf)
  (assert (primerapersona (read)))
  (printout t "Las relaciones posibles son: " crlf)
)

Beneficios

Este enfoque demuestra cómo CLIPS puede utilizarse para deducir relaciones implícitas y manejar información compleja en un sistema basado en reglas. Aunque nuestro sistema se centra en relaciones familiares, las mismas técnicas se pueden aplicar a otros dominios, como el diagnóstico médico o los sistemas de recomendación.

CLIPS ofrece una forma eficiente y flexible de modelar problemas complejos, mostrando el potencial de los sistemas basados en reglas para resolver desafíos prácticos en diversos campos.