SISTEMAS EXPERTOS APRA TECNICOS - PARTE 2

Creación en NePic de una Base de Conocimiento Determinista para Soporte en Reparaciones Electrónicas - Parte 2

Las reglas deterministas constituyen la más sencilla de las metodologías utilizadas en sistemas expertos. En la primera parte de este artículo presentamos las bases necesarias para la implementación de una base de datos que nos ayude en las tareas de reparación. En esta segunda parte veremos la implementación práctica de un sistema experto para soporte en reparaciones electrónicas.

PRACTICA

Implementación de un sistema experto para soporte en reparaciones electrónicas

En la figura 1 vemos los pasos necesarios para la creación de un sistema experto:

En nuestro caso, aprenderemos a crear un sistema experto que nos sirva como apoyo en el hallazgo de fallas en equipos electrónicos (figura 2).

Para esto usaremos en NePic un intérprete de reglas que permite generar sistemas expertos, el código base que utiliza está bajo entorno DOS, pero de todas formas es muy didáctico, amigable y fácil de usar. Este intérprete utiliza la filosofía de encadenamiento hacia atrás, es decir que toma como punto de inicio a los objetivos y combina las reglas y los datos que forman la base de conocimientos para tratar de cumplir estos objetivos.

O sea con este programita no necesitamos preocuparnos ni por la memoria de trabajo y lo que es más importante tampoco por el motor de inferencia, sólo debemos conocer cómo cargar reglas y cuáles son los mensajes que deseamos comunicar al usuario.

Con el propósito didáctico y de no extendernos demasiado supondremos algunas reglas muy simplificadas, a tener en cuenta para hallar la falla de un circuito imaginario (o sea plantearemos conocimiento ficticios) y las incorporaremos en código a la base de datos creando un pequeño sistema experto. Luego verificaremos su funcionamiento.

A partir de esto cada uno puede, siguiendo los mismos pasos, personalizar su propio sistema experto en base a los conocimientos y equipamiento electrónico de diagnostico al que tenga acceso. Se pueden generar bases de conocimiento muy extensas con todo el conocimiento empírico del que dispongamos, más informaciones de manuales, hojas de datos, etc. Así para nuestro ejercicio, supondremos, que se trata de reparación de equipos de comunicaciones (radares) con un monitor con tubo de rayos catódicos donde se muestra la información (repito, es sólo con fines ilustrativos, es un caso ficticio, de todas maneras con información real funciona muy bien). Tenemos pues, la siguiente información, que obtuvimos de las posibles fuentes antes mencionadas (manuales, expertos humanos, hojas de datos, etc) (ver tablas 1 y 2):

Aquí podemos observar que en estas reglas, pese a su simplicidad, se reúnen las ideas básicas que mencionamos y hay reglas entrelazadas de manera que en algunos casos las interrelaciones entre varias de ellas no son tan obvias. Lo mismo sucede en las reparaciones reales, hay veces que una falla produce otra y el reparador tiene que seguir una línea de razonamiento buscando pistas; el diseñar un experto en base a esto nos allana el camino o por lo menos nos orienta en el razonamiento hacia soluciones.

Bueno, veamos cómo implementar estas reglas en nuestro intérprete de reglas.

 
SISTEMA EXPERTO EN NePic

Este software Ud. lo puede bajar gratuitamente de nuestra web: www.webelec-tronica.com.ar, haciendo click en el ícono password e introduciendo la clave Neperto, se trata de la versión actualizada de NePic. Para instalarlo, sólo es muy importante tener en cuenta un detalle: al comenzar la primer pantalla que vemos es una que nos solicita el directorio destino, cambiar el que se halla por defecto (generalmente C:\Archivos de programa\ Nepic) por este C:\i2. Una vez instalado, hacemos click en Inicio-> Programas-> NePic, e ingresamos como vemos en la figura 3.

A continuación aparecerá la siguiente pantalla, (figura 4), con las flechas _ _ del teclado nos podemos mover en el menú, seleccionar “Edit a knowledge base” y luego dar enter. Luego presionamos F2 (que como podemos ver corresponde a New, en el menú que va surgiendo en la parte inferior de la pantalla, cada número corresponde a una tecla de las F) y ahí ingresar un nombre corto (figura 5) con el que llamaremos a nuestro experto, por ejemplo simplemente experto y luego enter.

Y en la pantalla que aparece (figura 6) ya podemos implementar nuestro experto.

Veamos paso a paso el código que pondremos y su significado. El arreglo típico de un programa experto en este intérprete de reglas tendrá los siguientes componentes:

  • Título
  • Declaración de variables
  • Inicialización de variables
  • Objetivos
  • Reglas
  • Carteles de información
  • Finalización
TITULO
El título es una cadena de hasta 60 caracteres. Esta instrucción es obligatoria y es la primera línea de todo programa. Para indicarlo se antecede con la palabra reservada TITLE, en nuestro ejemplo será: TITLE Experto electrónico
 
DECLARACION DE VARIABLES
Aquí podremos declarar cuatro tipos diferentes de variables, éstas podrán ser:
  • NUMERIC (Número entero o real)
  • SIMPLEFACT (Variable de tipo booleano)
  • STRING (Cadena de caracteres)
  • OBJECT (Variable de tipo objeto)

Las variables pueden representarse mediante cualquier cadena de caracteres.

Esta cadena debe utilizarse durante todo el programa exactamente como fue definida, respetando mayúsculas, minúsculas y espacios.

Además si colocamos AND a continuación de una variable que fue definida, la que sigue será del mismo tipo. Las variables de tipo booleano sólo pueden representar verdadero o falso y se denominan hechos simples.

Las variables de tipo objeto son aquellas a las que se les puede asignar algún atributo que las identifique.

Por ejemplo, para la variable de tipo objeto Color, el atributo podría ser Verde, Amarillo, Azul, Rojo. En nuestro ejemplo serán:

  • SIMPLEFACT PantallaAmarilla
  • SIMPLEFACT TemperaturaNormal
  • SIMPLEFACT AumentoTemperatura
  • SIMPLEFACT FrecuenciaNormal
  • SIMPLEFACT ComponenteExcedido
  • SIMPLEFACT ComponenteDisminuido
  • SIMPLEFACT AspectoNormal
  • AND ImagenDébil
  • AND ColorDisplayNormal
  • AND BajoVoltajeFuente
  • NUMERIC Frecuencia
  • NUMERIC Temp1
  • NUMERIC Temp2
INICIALIZACION DE VARIABLES
Permite asignar a las variables declaradas un valor inicial, la sintaxis es:

INIT (Variable): = (Valor inicial)

También en este caso, si se desea inicializar más de una variable, se debe utilizar el conector AND. Cualquier variable que no se inicialice es preguntada al usuario por el motor de inferencias cuando se requiera.

En nuestro ejemplo queremos que todas las variables que se necesiten para el diagnóstico sean preguntadas o calculadas en base a las solicitadas, por lo que no inicializamos ninguna variable, pero puede ser muy útil en ciertos casos.

 
OBJETIVOS
Los objetivos pueden representarse por dos de los tipos de variables:

Objetos / atributos o Hechos simples.

Cada objetivo se indica con un número seguido de un punto y la variable.

  • 1. (Primer objetivo, objeto/atributo o hecho simple)
  • 2. (Segundo objetivo, objeto/atributo o hecho simple)
  • 3. ...

Durante la ejecución del programa el NePic intenta, en base a los datos y a las reglas, concluir acerca de alguno de los objetivos siguiendo el orden de numeración. En el caso de los hechos simples el programa intenta determinarlos como verdaderos. En el caso de los objetos/atributos el programa intenta asignarle al objeto algún atributo.

En este último caso se utiliza para la definición del objetivo la palabra reservada WHAT. En la configuración por defecto de NePic, una vez que el programa verifica un objetivo la ejecución se detiene. También existe la posibilidad de definir subobjetivos para cada uno de los objetivos:

  • 1. (Primer objetivo)
  • 1.1. (Primer subobjetivo del primer objetivo)
  • 1.2. (Segundo subobjetivo del primer objetivo)
  • 1.2.1. (Primer subobjetivo del segundo subobjetivo del primer objetivo)
  • 2. (Segundo objetivo)
  • 2.1. ...

En los casos en los que se definen subojetivos el programa intenta verificar primero algún objetivo y, en caso de lograrlo, intenta verificar algún subojetivo del objetivo verificado. En la configuración por defecto el programa se detiene cuando se verifica algún subobjetivo del último nivel definido.

También existen los objetivos intermedios, que son aquellos que no se definen en la sección de objetivos pero que aparecen en las reglas. Su propósito es el de encadenar reglas, ya que NePic activa sólo a aquellas que poseen objetivos en sus consecuentes.

Si los objetivos internos se ubican en el antecedente de algunas reglas, el NePic activará aquellas reglas que posean estos mismos objetivos en su consecuente para intentar asignarles algún valor.

En nuestro programa colocaremos según la tabla de conocimiento, los siguientes objetivos:

  • 1. FuncionaOK,
  • 2. CañónDañado,
  • 3. Descalibrado,
  • 4. ElevadorDañado
REGLAS
Para cargar las reglas debemos obedecer la siguiente sintaxis:
  • RULE (Título de la regla)
  • IF (Antecedentes)
  • THEN (Consecuentes)

El título de la regla puede ser cualquier cadena de caracteres y no tiene ningún significado para NePic. Sólo se utiliza para identificar el propósito de la regla. Los antecedentes y consecuentes se escriben de a uno por línea, conectados mediante los conectores lógicos AND, OR, NOT (OR no debe usarse en los consecuentes).

 
CARTELES DE INFORMACION
Algo muy importante y que hace a la interfaz con el usuario son los carteles de información. Estos se utilizan para expandir la información que se presenta al operario del programa. Dos formas posibles de expandir la información implican el uso de los comandos reservados DISPLAY y TEXT. Estos obedecen a la siguiente sintaxis:
  • DISPLAY (Título del mensaje) (Cuerpo del mensaje)
  • TEXT (Variable a expandir) (Cuerpo del mensaje)

DISPLAY se utiliza en los consecuentes de las reglas para mostrar información resultado de la regla, mientras que TEXT se utiliza para reemplazar una variable cualquiera por un texto que la explique. En ambos casos se puede mostrar el valor de las variables al operario, incluyéndolas en el mensaje entre corchetes. Para llamar al mensaje de DISPLAY deseado en el consecuente de la regla se agrega AND y a continuación el nombre del DISPLAY .

 
FINALIZACION
En todo programa hecho NePic requiere el uso de la palabra reservada END en la última línea. En la figura 7 podemos observar el código completo de este ejemplo. Una vez que pasemos todo este código, sólo queda compilar la aplicación; para esto presionar\ F3 para guardar y luego F4 para compilar. Si todo está bien, el programa nos informa que no hay errores y ahora sólo queda correrlo, lo que se logra ahora presionando F3. Con esto empezará a funcionar nuestro experto solicitándonos datos ( figura 8 ).

Para asegurarnos que funcione bien, podemos probarlo contestando y guiándonos por la tabla para ver si razona según lo planeado. Por ejemplo:

  • ¿Cuál es el valor en ºC de la temperatura al encender el equipo? 25 ºC
  • ¿Cuál es el valor en ºC de la temperatura luego de 15 minutos de encendido? 50 ºC
  • ¿Se observa la pantalla con tono amarillento? true
  • ¿La imagen pierde fuerza en el interlineado? true

Con lo que el sistema nos responderá como vemos en la figura 9. Una vez que compilamos una base de conocimiento podemos usar nuestro experto corriéndola cuantas veces queramos eligiendo “Run a knowledge base” en el menú inicial y luego la base deseada, lo mismo para modificarla con “Edit a knowledge base”, incluso este ejemplo que vimos ya está con el nombre de ejemplo y podemos cargarlo sin necesidad de pasar todo el código. Para salir se usa F10 y luego F1, y F8 para retornar al menú. Bueno ahora sólo queda diseñar sus propios sistemas expertos y disfrutar de éstos.

 
Autor: Sergio Raúl Richter - Con la colaboración de Mariana Ortúzar
E-Mail: sergioraulrichter@yahoo.com.ar
FIGURA 1
 
FIGURA 2
 
FIGURA 3
 
FIGURA 4 - 5 - 6
 
FIGURA 7
 
FIGURA 8 - 9
 
TABLA 1
 
TABLA 2
 
 
 
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES