Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Por medio del conocimiento y los hechos que se presentan se construyen razonamientos para poder
obtener un resultado. Ej: Cuando implementamos el conocimiento que adquirimos en una máquina y
esta nos da una respuesta.
Observando los hechos o las características de un proceso o situación podemos definir el resultado final,
evaluando y razonando todas las opciones posibles.
Podemos identificar el encadenamiento hacia adelante cuando: tenemos pocos datos y con ellos
hayamos muchas posibles conclusiones.
El encadenamiento hacia atras lo identificamos cuando: tenemos mucha información disponible, pero
poca es relevante (consulta de un medico)
Encadenamiento hacia atrás comienza con una lista de objetivos y trabaja al revés de la consecuente al
antecedente para ver si hay datos disponibles que apoyen alguna de estas consecuentes. Un motor de
inferencia utilizando encadenamiento hacia atrás sería buscar las reglas de inferencia hasta que
encuentra uno que tiene un consecuente que coincide con un objetivo deseado. Si el antecedente de
que la regla no se sabe que es verdad, entonces se añade a la lista de objetivos.
Introducción.
En este documento veremos, como diseñar un sistema experto basado en reglas con encadenamiento
hacia adelante. Para esto consideraremos un problema pequeño de diagnóstico de un automóvil.
Las principales tareas para desarrollar un sistema con encadenamiento hacia adelante son:
1. Definir el problema.
6. Diseñar la interfaz.
7. Expandir el sistema.
8. Evaluar el sistema.
Muchos SE de diagnóstico usan encadenamiento hacia adelante, esto debido a que tienen un número
finito metas.
Consideremos el ejemplo de un sistema de diagnóstico de problemas de automóviles.
Manuales de reparación.
Existen muchos problemas que pueden presentarse en un automóvil, para este ejemplo nos
enfocaremos en el problema "Auto no arranca", más específicamente en "Sistema de direcciones".
Después de desarrollar la estructura para encarar el problema debemos tener una idea de como
manejar otros posibles problemas. Las especificaciones de problemas son:
Los sistemas de encadenamiento hacia adelante necesitan primero obtener datos iniciales, para poder
funcionar, entonces es necesario escribir reglas cuya única tarea sea la obtención de información.
acerca del problema. Este tipo de reglas se denominan reglas de arranque, Cuando estas reglas se
activan, realizan alguna consulta sobre alguna información del problema. Para nuestro sistema se desea
consultar al usuario la naturaleza del problema.
Para activar esta regla, primero deberíamos introducir Tarea comenzó en la memoria de trabajo. La
función ASK hace que la siguiente pregunta sea realizada.
¿Cuál es el problema?
Auto no arranca.
Auto falla a altas velocidades.
Después que el usuario selecciona el problema particular, el sistema dirige la resolución del problema
hacia una área especifica. En el caso del ejemplo nos enfocaremos solo a Auto no arranca. Esta simple
pieza de información dirige al sistema para que considere problemas concernientes a la situación. El
sistema de nuestro ejemplo continua realizando preguntas para dirigir la resolución del problema hacia
la conclusión más lógica.
Teóricamente un sistema de encadenamiento hacia adelante funciona activando las reglas cuyas
premisas correspondan con la memoria de trabajo. Por ejemplo la siguiente regla se activa si "A" es
verdad:
IF "A"
THEN inferir o hacer algo
Usando esta regla si A es verdad el sistema puede inferir nueva información o ejecutar alguna tarea. En
aplicaciones pequeñas esta forma de controlar la activación de las reglas puede ser adecuado, sin
embargo en la mayoría de los casos es necesario incluir en cada regla una premisa que ayude a controlar
cuando una regla debe ser activada. Por ejemplo:
IF Tarea es
AND "A"
THEN inferir o hacer algo
Usando una regla de esta forma, la regla se activa solo si se cumplen las dos condiciones, esta estructura
ayuda a mantener el control sobre el proceso de inferencia.
Una vez que hemos limitado nuestro problema a problemas del auto no arranca necesitamos una regla
que cambie a la tarea de "Verificar sistema de direcciones ".
IF Tarea es verificar sistema de direcciones
AND Problema IS auto no arranca.
THEN Tarea es verificar sistema de direcciones.
Esta tarea verifica el conjunto de reglas. Asumimos que “Tarea iniciada” ha sido inicializada en la
memoria de trabajo. Esto causa la activación de la regla y el sistema pregunte Cuál es el problema El
sistema entonces busca todas las reglas por la premisa Problemas de carro . El sistema realiza la
siguiente pregunta:
No arranca.
USUARIO: No arranca.
Con la respuesta dada por el usuario, la regla 5 se activa provocando la inserción Sistema de direcciones
es defectuoso y Tarea es verificar conexión de la batería.
Esta nueva información causa la activación de la regla 7 provocando:
SISTEMA: Poner un destornillador entre la batería y el cable . Entonces poner los faroles en luz larga y
observar como el destornillador es cambiado.
Qué pasa a las luces?
Resplandecen
no encienden
no resplandecen
USUARIO: resplandecen
La respuesta dada por el usuario resulta con la activación de la regla 8 Problema IS conexión mala de
batería.
Una vez que tenemos un conjunto de reglas trabajando adecuadamente el próximo paso es construir la
interfaz del sistema.
La interfaz es un componente muy importante del sistema. Deberíamos diseñar esta en paralelo con la
base de conocimientos y no después, ya que la forma en que se diseñe la base de conocimientos
dependerá del diseño de la interfaz.
Sugerencia de diseño: Comenzar el diseño de la interfaz lo más pronto posible y desarrollarlo en paralelo
con la base de conocimientos del sistema.
La mayoría de los SE son diseñados par interactuar con el usuario usando solo texto. El sistema realiza
preguntas y el usuario responde introduciendo la respuesta por teclado. O seleccionándola de un menú
de opciones. Muchos shells ofrecen herramientas para realizar interfaces. Estos proveen conjuntos de
herramientas de diferentes ítems como ser botones, mapas de bits, etc. que permiten al usuario
observar y controlar la operación de un SE.
IF Incre velocidad
THEN Velocidad = Velocidad + 5
Cuando el usuario presione el botón Incre, la premisa de esta regla se activará . Esta acción causa el
incremento al valor de la velocidad y el velocímetro. La activación de esta reglas causa la activación de:
IF Incre velocidad
THEN Temperatura= (Velo * 2) + 200
AND Verificar combustible ( velocidad * 0.5) +40
El movimiento del auto a lo largo de la pantalla es controlado por los cambios del valor de posición. El
dibujo del auto es un mapa de bits, situado en una posición X y Y que define los cuatro ángulos de la
figura. Para causar un desplazamiento de la figura. Para causar el desplazamiento del dibujo una regla
debería incrementar X, de los cuatro puntos extremos de la figura. El rango de movimiento debe ser
proporcional al valor actual de la velocidad.
La tarea de evaluación se refiere a verificar el prototipo que tenemos del sistema con algún caso real de
verificación. Normalmente esta verificación debería ser realizada por el experto, sin embargo si se uso,
como en este caso un manual de referencias técnicas, se puede trabajar solo con este.
PASO 1
Comentario: La primera pantalla que se muestra al usuario es la pantalla de introducción. Esta pantalla
indica al usuario el objetivo del sistema y brinda una introducción al problema.
Si se selecciona START. Esta inserta “Tarea iniciada” en la memoria de trabajo causando la activación de
la Regla 1S que a la vez activa la regla 1S, causando el despliegue de la siguiente pantalla.
PASO 2
Comentario: El sistema intenta determinar si el problema es con el sistema de direcciones. Si el usuario
escoge” lento o no del todo” se inserta este hecho en la memoria de trabajo causando la activación de la
regla 1B. Esta regla a su vez inserta “Tarea es verificar la conexión de la batería” y se despliega:
PASO 3
Comentario: Esta pantalla muestra los resultados intermedios del problema existente en el sistema de
direcciones.
PASO 4
Comentario: el sistema le indica al usuario que realice un test con un hidrómetro a la batería. Si
seleccionamos true el hecho “lectura del hidrómetro de la batería esta bien” se activa la regla 2D, esto
causa que se cambie a la tarea “tarea es arrancar el sistema”. Esto activa la regla 4A y despliega:
PASO 6
Comentario: el sistema pregunta al usuario para utilizar un “vibrador” para verificar el arranque del
sistema. Si el usuario después de que se realiza este test encuentra que no sucede nada, se inserta en la
memoria de trabajo “arrancador hace nada” causando la activación de la regla 2E. Esta despliega la
pantalla:
PASO 7
Revisión de la sesión
Esta sesión nos muestra un simple ejemplo de encadenamiento hacia adelante. Los hechos insertados
por el usuario causan la activación de las reglas, estos hechos pueden insertar nueva información o
causar que una pantalla sea desplegada. El control de la activación de las reglas es realizado mediante
premisas de estado de la forma Tarea IS
Direcciones futuras
Una vez que se ha construido con éxito un prototipo del sistema, el próximo paso es continuar su
expansión. Para nuestro problema podríamos añadir otras tareas, realizando los pasos adicionales del
manual de referencia.. Hasta este punto nuestro sistema solo se enfoca en el problema del sistema de
direcciones. Los próximos pasos serían contemplar además problemas de sistema de combustible,
sistema de encendido, etc.
Puntos clave
La inferencia con encadenamiento hacia adelante es mejor que la con encadenamiento hacia
atrás si las metas no se que no se conocen con anterioridad son muchas.
Diseñar un sistema de encadenamiento hacia atrás comienza con la definición de las metas del
sistema, mientras que en un sistema de encadenamiento hacia adelante el primer paso es
definir los datos iniciales.
El diseño de la interfaz del sistema debe ser realizada lo más temprano posible en el proyecto y
desarrollada en paralelo con el desarrollo de la base de conocimientos del sistema.
Otra fuente