Se encuentra usted aquí

Sistemas de Encadenamiento hacia adelante

Enviado por vacho en Vie, 05/11/2012 - 12:03

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 diagnostico de un automóvil.
Las principales tareas para desarrollar un sistema con encadenamiento hacia adelante son:

  1. Definir el problema.
  2. Definir los datos de entrada.
  3. Definir estructura para el manejo de los datos.
  4. Escribir el código inicial.
  5. Realizar pruebas al sistema.
  6. Diseñar la interfaz.
  7. Expandir el sistema.
  8. Evaluar el sistema.

Dominio de diagnostico de automóviles.
Muchos SE de diagnostico 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.

 

TAREA 1. Definir el problema
El paso inicial para el diseño de un sistema con encadenamiento hacia adelante es obtener conocimiento respecto al problema, una forma de hacer esto es localizar un buen mecánico de autos, que será el experto, un método alternativo es consultar un manual de referencia técnica, ya que sin duda estos manuales son escritos por los expertos.

Existen manuales de distintos tipos:

  • Manuales de reparación.
  • Manuales de reparación automática.

 

Especificación del problema.

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:

  • Manejar problemas relacionados con "motor no arranca."
  • Manejar solo problemas de "sistema de direcciones."

 

TAREA 2: Definir datos de entrada.

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. 

Regla 1 Comenzar diagnóstico
IF Tarea comenzó
THEN ASK Problemas auto

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.

TAREA 3: Definir estructuras para el manejo de los datos

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.

Representamos la parte de Verificación r es la primera premisa de la regla.

Representamos la parte de Resultado es la segunda premisa de la regla.

Representamos la parte de Proceder a es la conclusión.

IF Tarea es test la conexión de la batería TEST
AND luces no encendidas RESULTADO
THEN tarea es test de la batería PROCEDER A

TAREA 4: Escribir código inicial

EL propósito de esta tarea es determinar si se ha capturado efectivamente el conocimiento del problema en una buena estructura de las reglas. Una buena estructura no es solo aquella que brinda resultados correctos sino también un patrón que seguir para el desarrollo de otras reglas. La tarea anterior es la que nos provee la estructura para estas reglas.

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.

El conjunto inicial de reglas para este sistema es el siguiente:

Regla 1 Comenzar diagnóstico IF Tarea IS iniciada THEN ASK Problemas del auto Regla 2 Auto no arranca IF Problema del auto IS no arrancar THEN Tarea IS test del sistema de direcciones Regla 3 Auto falla a altas velocidades IF Problema auto IS falla a altas velocidades THEN Tarea IS test del sistema de combustible
Regla 4 Paso 1.1 Verificar sistema de direcciones IF Tarea IS test sistema de direcciones THEN ASK Motor encender Regla 5 Paso 1.1sistema direcciones defectuoso IF Tarea IS test sistema de direcciones AND Motor enciende lento o no del todo THEN Sistema de direcciones defectuoso AND Tarea IS test de conexión de batería Regla 6 Paso 1.1sistema direcciones bien IF Tarea IS test sistema de direcciones AND Motor enciende normalmente THEN Sistema de direcciones esta bien AND Tarea IS test de sistema de encendido
Regla 7 Paso 2.1 Verificar conexión de batería IF Tarea IS test conexión batería THEN ASK test destornillador mostrar las luces Regla 8 Paso 2.1 conexión de batería es mala IF Tarea IS test conexión de batería AND test de destornillador muestran luces resplandecen OR test de destornillador muestran luces no encienden THEN problema es una mal conexión de batería Regla 9 Paso 2.1 conexión de batería es buena IF Tarea IS test conexión de batería AND test de destornillador se ve luces no resplandecen THEN conexión de batería IS buena AND tarea IS test de batería

TAREA 5: Probar el sistema

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:

SISTEMA: Cuál es el problema con el auto ?

No arranca.

Falla a altas velocidades.

USUARIO: No arranca.

Esta respuesta provoca la activación de la regla 2 y la inserción de Tarea es verificar sistema de direcciones en la memoria de trabajo.

SISTEMA: Por favor activar el encendido
Como actúa el motor?

lento o no del todo
Normalmente

USUARIO: lento o no del todo

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.

TAREA 6: Diseñar la interfaz

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.

Interfaz Gráfica dinámica

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.

La descripción de la interfaz gráfica para el control del automóvil es:

image001

 

Esta interfaz contiene diferentes objetos enlazados a diversas partes de la base de conocimientos. El auto es un mapa de bits cuya posición en la pantalla es controlada con los valores de Posición. Los dos botones Control velocidad permiten al usuario controlar la velocidad del auto. LA base de conocimientos contienen información que es desplegada en la Interfaz y las reglas que trabajan con esta información.

Considerando la regla que incrementa la velocidad del auto:

IF Incre velocidad
THEN Velocidad = Velocidad + 5

AND Incre velocidad

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

Esta regla causa la activación de la temperatura y la lectura del combustible en la interfaz.

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.

TAREA 7: Expandir el sistema

Esta tarea expande el conocimiento del sistema. La expansión debe incluir también el diseño de pantallas de la interfaz y reglas que desplieguen las pantallas.

TAREA 8: Evaluar el sistema

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

ventana1

 

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.

ventana2

 

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

ventana3

 

Comentario: Esta pantalla muestra los resultados intermedios del problema existente en el sistema de direcciones.

PASO 4

Comentario:El sistema intenta determinar si la conexión de la batería esta bien.

ventana4

PASO 5

ventana5

 

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

ventana6

 

 

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

ventana7

 

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

  • El diseño de un SE con encadenamiento hacia adelante es un proceso altamente iterativo.
  • El sistema debe ser verificado inmediatamente después de introducir nuevas reglas.
  • 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.
  • Las reglas usadas en un sistema de encadenamiento hacia adelante generalmente contienen una premisa que permite seguir el estado de la resolución del problema para mantener el control sobre el proceso de inferencia.
  • 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.