67
Universidad Central de Las Villas Santa Clara, Cuba 1999 Manual para el uso de la Máquina de inferencia WUCShell Versión 1.0 Autores: Dr. Mateo Lezcano Brito Lic. Rolando Lorenzo Vera

WUCShell Tutorial

Embed Size (px)

DESCRIPTION

Manual de WUCShell

Citation preview

Page 1: WUCShell Tutorial

UniversidadCentraldeLasVillas

SantaClara,Cuba

1999

Manualparaelusodela

MáquinadeinferenciaWUCShell

Versión1.0

Autores:

Dr.MateoLezcanoBrito

Lic.RolandoLorenzoVera

Page 2: WUCShell Tutorial

CAPÍTULO I. GENERALIDADES ................................................................................ 4

I.1 LOS SISTEMAS EXPERTOS ....................................................................................... 4 I.2 FORMAS DE REPRESENTACIÓN DEL CONOCIMIENTO ................................................... 4 I.3 MANIPULACIÓN DEL CONOCIMIENTO REPRESENTADO ................................................. 5 I.4 TRATAMIENTO DE LA INCERTIDUMBRE ....................................................................... 6 I.5 FUENTES DE INCERTIDUMBRE ................................................................................. 7 I.6 DESARROLLO DE UN SE .......................................................................................... 7 I.7 CARACTERÍSTICAS GENERALES DE SESE ................................................................ 8

I.7.1 Manipulación de la incertidumbre en el SESE .............................................. 8 CAPÍTULO II. WUCSHELL, MANUAL DEL USUARIO ............................................ 14

II.1 EL MENÚ DE TAREAS Y LA BARRA DE HERRAMIENTAS .............................................. 14 Opción File .......................................................................................................... 15

Opción Edit .......................................................................................................... 17 Opción Search .................................................................................................... 18

Opción View ........................................................................................................ 19 Opción Project ..................................................................................................... 20

Opción Run ......................................................................................................... 21 Opción Tools ....................................................................................................... 22

Opción Help ........................................................................................................ 23 II.2 CAJAS DE DIÁLOGOS DEL MENÚ FILE ..................................................................... 24

Dialogo Open ...................................................................................................... 24 Diálogo Save del comando Save as ................................................................... 25

II.3 VISTAS ............................................................................................................... 26 Vista de las propiedades de los atributos. .......................................................... 26

Vista para editar las propiedades de los atributos. ............................................. 27 Vista para la edición de los breakpoints. ............................................................. 28

Vista que muestra la lista de breakpoints. .......................................................... 29 Vista que muestra el Stack. ................................................................................ 30

Vista para la edición de proyectos. ..................................................................... 31 Vista de la interfaz para las respuestas .............................................................. 32

Page 3: WUCShell Tutorial

CAPÍTULO III: MANUAL DEL PROGRAMADOR ..................................................... 33

III.1 SINTAXIS DE LAS BASES DE CONOCIMIENTO .......................................................... 33 Definición del bloque de atributos externos ........................................................ 34

Definición del bloque de preguntas ..................................................................... 36 Definición del bloque de reglas ........................................................................... 37

Definición del bloque de acciones ....................................................................... 38 III.2 CONCEPTOS GENERALES .................................................................................... 39

Definición de la meta sentencia Ask ................................................................... 39 Definición de imagen ........................................................................................... 40

Conjunto de selección ......................................................................................... 40 Dominio de definición .......................................................................................... 41

Definición de explicación ..................................................................................... 42 Definición de elemento visible ............................................................................. 45

Definición de literal .............................................................................................. 49 III.3 SENTENCIAS ...................................................................................................... 50

Sentencia Display ............................................................................................... 50 Sentencia Is ........................................................................................................ 52 Sentencia Repeat ................................................................................................ 53

Sentencia Find .................................................................................................... 54 Sentencia Reset .................................................................................................. 55

Sentencia SaveFact ............................................................................................ 56 Sentencia Chain .................................................................................................. 57

III.4 DEFINICIÓN DE REGLAS ....................................................................................... 59 Definición de Conclusión ..................................................................................... 61

Definición de Condición ...................................................................................... 62 Definición de Expresión ...................................................................................... 66

Definición de Funciones ...................................................................................... 67

Page 4: WUCShell Tutorial

Capítulo I. Generalidades 4

Capítulo I. Generalidades I.1 Los sistemas expertos Dentro de las áreas de la Inteligencia Artificial (IA) los Sistemas Expertos (SE) se destacan por los éxitos alcanzados, ellos son programas que resuelven problemas de un dominio de aplicación concreto de manera similar o aproximadamente similar a como lo haría un experto humano en esa materia. Estos sistemas están compuestos por dos elementos básicos: 1. La Base de Conocimiento (BC), que contiene el conocimiento sobre el problema. 2. La Máquina de Inferencia (MI), que implementa los métodos para manipular dicho

conocimiento. La segunda se encarga de inferir nuevos conocimientos, a través de un determinado mecanismo y utiliza con ese fin el contenido de la primera que expresa, en un formalismo dado, el conocimiento acerca de un dominio específico. Podemos ver entonces al Sistema Experto como un modelo: SE = BC + MI La BC almacena el conocimiento en una determinada notación, conocida como Forma de Representación del Conocimiento (FRC) que constituye el formalismo de este modelo. La MI, por su parte, implementa los Métodos de Solución del Problema (MSP). Desde este punto de vista un SE es entonces: SE= FRC + MSP I.2 Formas de representación del conocimiento Se denomina Forma de Representación del Conocimiento (FRC) a la notación usada para representar el conocimiento, es decir a la manera en que éste se describe y se almacena. No existe actualmente una FRC general que permita usarse en todo tipo de aplicación y ante un problema de un dominio específico es necesario realizar la selección de la FRC más adecuada para dicho problema. La FRC utilizada por el sistema SESE se conoce con el nombre de reglas de producción y fueron introducidas en 1943 por Post. Una regla de producción consta de un par ordenado (A, B), representado en el Cálculo Proposicional como A ⇒ B, donde A representa el antecedente y B el consecuente de la regla. Una regla de producción se interpreta como “si se satisface el antecedente, entonces se cumple el consecuente”, esta manera de interpretar la regla permite considerarla como una unidad relativamente independiente de conocimiento. Las reglas de producción pueden adoptar varias formas: 1. Si condición P entonces conclusión C.

Ejemplo. 1.1 If (P >= 180) then C := ‘Pesado’

Page 5: WUCShell Tutorial

Capítulo I. Generalidades 5 2. Si condición P entonces acción A.

Ejemplo 1.2 If (P = 100) then

action Find A 3. Si condición P entonces no C.

Ejemplo 1.3 If (P < 180) then C := ‘no es pesado’

Los antecedentes de las reglas, independientemente de la forma que éstas adopten, pueden ser simples o compuestos. Los compuestos se forman uniendo varias condiciones simples por medio de conectivas lógicas.

I.3 Manipulación del conocimiento representado Para la manipulación del conocimiento representado en reglas de producción se usan los llamados Sistemas de Producción (SP). Un SP consta de tres componentes básicos: 1. Base de datos (BD):

Se utiliza como memoria de trabajo y sirve para almacenar los datos iniciales e intermedios.

2. Conjunto de reglas: Las reglas de producción operan sobre la memoria de trabajo. Cada regla tiene una condición que es o no satisfecha por los datos de la BD. Típicamente una regla tiene una parte izquierda (las condiciones) que tiene que ser verdadera de acuerdo a la información existente en la memoria de trabajo para poder usar su parte derecha (las conclusiones). El que la parte izquierda de una regla se satisfaga puede establecerse por referencia a la BD o preguntando al usuario del sistema de producción.

3. Intérprete: Tiene como función llevar a cabo el proceso de inferencia.

Este último comprende las siguientes tareas: • Seleccionar las posibles reglas a aplicar. • Verificar cuáles de ellas se satisfacen. • Ejecutar las acciones especificadas por las reglas satisfechas. En un esquema clásico se recorren todas las reglas buscando una que se satisfaga, posteriormente se aplica y esa acción, en muchos casos, provoca cambios en la BD. El conjunto de reglas se sigue recorriendo hasta que se soluciona el problema (se alcanza el objetivo) o no es posible invocar más reglas, constituyendo ésta la condición de terminación.

Page 6: WUCShell Tutorial

Capítulo I. Generalidades 6 La dirección de búsqueda de una solución sigue diferentes estrategias 1. Dirigido por datos o encadenamiento hacia delante (forward chaining). Consiste

en buscar reglas que se cumplan a partir de hechos conocidos que están almacenados en la BD, o sea a partir de condiciones probadas agrega nuevos hechos o realiza acciones que están expresadas en las conclusiones de las reglas que se cumplen.

2. Dirigido por objetivos o encadenamiento hacia atrás (backward chaining). Dado un objetivo a probar busca las reglas que contienen ese objetivo en su conclusión para posteriormente tratar de establecer la verdad de sus condiciones.

3. Una combinación de los dos anteriores. Los esquemas anteriores se enfrentan al conflicto que surge cuando hay más de una regla que puede ser seleccionada, por supuesto que no se trata de aplicarlas todas a la vez, de ahí que surja la necesidad de tener una Estrategia de Resolución de Conflictos que seleccione la regla que se debe aplicar. Existen diversas estrategias, entre otras podemos citar: 1. Establecer orden en los datos. 2. Clasificar las reglas por prioridad de ejecución. 3. Ejecutar la regla más recientemente instanciada o la última. Una dificultad con esta FRC es que si bien a medida que crece el número de reglas crece el conocimiento del sistema, también se hace más difícil la búsqueda. Una solución parcial a este problema es descomponer la BC inicial en varias partes que puedan ser procesadas de manera independiente. Además de descomponer la BC es necesario descomponer, por supuesto, la condición de terminación en varias subcondiciones, una para cada subbase. Un caso especial de esta descomposición es expresarla como una conjunción de las subcondiciones componentes. Los sistemas de producción que permiten descomponer su BC y la condición de terminación reciben el nombre de Sistemas de Producción Descomponibles, SESE implementa una sentencia (Chain) que lo permite.

I.4 Tratamiento de la incertidumbre En el desarrollo de un proceso de razonamiento intervienen, al menos, tres elementos: 1. El conocimiento sobre el dominio de aplicación. 2. Un método para procesar el conocimiento. 3. Ciertas observaciones vinculadas con el objeto de razonamiento. El razonamiento con incertidumbre denota un proceso de razonamiento en el que alguno de estos elementos no es totalmente preciso, o sea, el razonamiento se realiza sobre la base de una información parcial y, por lo tanto, los resultados de éste son sugeridos pero no asegurados por las premisas del mismo. A diferencia de la IA, el software algorítmico tradicional no puede lidiar con información incompleta ya que si algún dato es incorrecto, la respuesta será incorrecta.

Page 7: WUCShell Tutorial

Capítulo I. Generalidades 7 I.5 Fuentes de incertidumbre La presencia de incertidumbre en los sistemas de razonamiento se puede originar por varias fuentes, entre ellas se pueden mencionar: • Imprecisiones en la definición de los conceptos y sus relaciones. • Imprecisiones y pobre seguridad de los instrumentos usados para hacer las

observaciones. • Imprecisiones del lenguaje de representación en el que se trasmite la información. • Falta de idoneidad de un formalismo para representar cierta clase de

conocimiento. • Agregación de información desde múltiples fuentes. • Falta de seguridad en si un elemento dado pertenece a un conjunto bien definido,

o en la pertenencia parcial de un elemento dado a un conjunto cuyas cotas no están definidas rigurosamente.

• El dominio relevante es realmente aleatorio. • El dominio relevante no es aleatorio dada la suficiente cantidad de datos, pero

nuestro programa no siempre tendrá acceso a todos esos datos. Durante el razonamiento, la incertidumbre proveniente de estas fuentes se combina produciendo resultados parciales y finales que tienen su propia incertidumbre. A este proceso se le llama propagación de la incertidumbre. Las representaciones numéricas son propias para representar y manipular la incertidumbre dada por la información imprecisa, pues ellas permiten trabajar con valores de confidencia. Es posible, además, definir un cálculo que ofrece un mecanismo para propagar la incertidumbre a través del proceso de razonamiento, sin embargo, la representación numérica no puede ofrecer una explicación clara de las razones que conducen a una conclusión dada. Los modelos basados en este enfoque están, en su mayor parte, designados para manipular el aspecto de la incertidumbre derivado de la información incompleta, pues, al carecer de medidas para cuantificar los niveles de confidencia, son inadecuados para manipular la información imprecisa y son más apropiados para permitir seguir la traza desde las fuentes de información a las conclusiones.

I.6 Desarrollo de un SE Para desarrollar un SE es importante conocer los siguientes conceptos: • Ingeniería del Conocimiento: Es la disciplina relacionada con la forma en que se

organizan, construyen y verifican las BC de un SE. • Adquisición del Conocimiento: Es el proceso de extracción, codificación y

verificación del conocimiento de un experto humano. Si se usa Reglas de Producción como forma de representación del conocimiento, la extracción se refiere a la formulación de las reglas, la codificación, a la escritura de las mismas en una determinada sintaxis y la verificación al refinamiento de la BC. La adquisición del conocimiento es conocida como el “Cuello de Botella” de las aplicaciones de los S.E.

• Ingeniero en Conocimiento (IC): Es la persona responsabilizada con desarrollar las tareas de la ingeniería del conocimiento. Debe ser capaz de conocer y comprender los SE, saber usar las herramientas para crear los mismos, ser un buen programador en un lenguaje de IA y un hábil entrevistador.

Page 8: WUCShell Tutorial

Capítulo I. Generalidades 8 I.7 Características generales de SESE Las bases de conocimiento para el sistema SESE se escriben en forma de “Reglas de Producción”, este formalismo es el más ampliamente conocido y usado como paradigma de representación del conocimiento. Las máquinas de inferencia de SESE (WUCShell y TeachShell) interpretan un código previamente generado por cualquiera de sus compiladores, los cuales tienen que leer e interpretar el conocimiento, expresado en un lenguaje fuente dado, para construir una cierta estructura interna que lo represente. SESE está disponible para los sistemas operativos MS-DOS y Windows (9x y NT). La versión sobre Windows está formado por cuatro partes relativamente independientes: • WUCShell : Es un ambiente integrado para el desarrollo de Sistemas Expertos.

Este módulo no necesita de ningún otro componente del sistema aunque, puede interpretar las bases compiladas por el módulo RulesCompiler. Este manual hace referencia a SESE porque todos los conceptos sirven para el sistema en general, pero si desea usar las otras partes debe consultar la bibliografía correspondiente y adquirir el producto.

• TeachShell : Una modificación de WUCShell que incorpora un mecanismo con propósitos docentes.

• RulesCompiler : Un compilador de línea para las bases de conocimientos de WUCShell y TeachShell.

• Expert : Un módulo que contiene el mecanismo de inferencia de WUCShell con el fin de incorporarlo a otras aplicaciones.

Los objetos que manipulan las máquinas de inferencia de SESE se denominan Atributos, y pueden ser de tres tipos: 1. Hechos, cuando tienen un valor asociado. 2. Deducibles, cuando forman parte de la conclusión de una regla. 3. Preguntables, cuando tienen una pregunta asociada. Los dos últimos pueden convertirse en hechos durante el proceso de inferencia, adicionalmente cualquier atributo puede tener la cualificación de externo.

I.7.1 Manipulación de la incertidumbre en el SESE La manipulación del conocimiento y los datos inciertos, inseguros e inexactos es típica de los SE. El mecanismo de esta manipulación constituye una parte sustancial de la MI. La Incertidumbre se expresa, generalmente, por pesos, medidas, grados de confianza, factores de creencia, probabilidades subjetivas, etc. Estas medidas, generalmente, alcanzan valores en los intervalos (0,1] y están representados en SESE en el intervalo (0,100]. La incertidumbre sobre el grado de veracidad de los resultados alcanzados por un sistema experto tiene dos fuentes fundamentales: • Imprecisión en el valor de los atributos que sirven como hechos iniciales. La interfaz de SESE ofrece la posibilidad de entrar el valor de los hechos con un valor de certidumbre dado. • Existencia de reglas débiles debido a que el experto o constructor del modelo es

incapaz de establecer una correlación fuerte entre la condición y la conclusión, lo

Page 9: WUCShell Tutorial

Capítulo I. Generalidades 9 cual hace que la implicación no sea categórica y permita la posibilidad de excepciones a la regla.

Ejemplo 1.4 rule 1 if A = 10 cnf 98 then C := 19 end; En el caso anterior se expresa que C es igual a 19 cuando se tiene la certeza (cnf) 98/100 de que el valor de A es igual a 10, lo cual convierte a la regla en débil. La declaración de implicaciones débiles permite que el Ingeniero de Conocimiento declare reglas débiles definiendo el valor de correlación entre la condición y la conclusión de la regla. Las generalizaciones de conjunciones y disyunciones juegan un papel vital en el manejo de la incertidumbre en los SE; ellas son usadas en la evaluación de la satisfacción de las condiciones, en la propagación de la incertidumbre a través del encadenamiento de las reglas y en la consolidación de la misma conclusión derivada de diferentes reglas. El mecanismo de manipulación de la incertidumbre en los Sistemas Expertos básicamente tiene que responder a estas preguntas: • Cuando una condición está compuesta de múltiples cláusulas X1, X2,...,Xn, ¿Cuál

es la función T(X1,X2,...,Xn) que determina el grado de certeza Xp de la condición?

• Cuando una implicación no es totalmente cierta, o sea, tiene una certeza Sr ¿Cuál es la función G(Xp, Sr) que propaga la incertidumbre a través de la regla?

• Cuando la misma conclusión está establecida por múltiples reglas con grados de certeza Y1,..,Ym ¿Cuál es la función S(Y1,...Ym) que permite calcular el grado final de certeza de esta conclusión agregando estos grados de certeza?

SESE define las siguientes reglas para la propagación de la incertidumbre: 1. Para el cálculo de las implicaciones débiles: • Para los operadores (>, >=, <, <=, <>). Si la regla tiene implicaciones débiles la certidumbre de las comparaciones es el valor que indique la implicación débil. Ejemplo 1.5 rule 1 if A > 10 cnf 98 then C := 19 end; La certidumbre de que A sea mayor que 10 es 98. Si la regla no tiene implicaciones débiles (no hay cnf asociados a la condición), la certidumbre de las comparaciones es 100. Ejemplo 1.6 rule 2 if C <= 19 then D := 'Si'

Page 10: WUCShell Tutorial

Capítulo I. Generalidades 10 end; La certidumbre de que C sea menor o igual a 19 es 100 • Para el operador (=). Si la regla tiene implicaciones débiles la certidumbre de la comparación es el valor que indique la implicación débil. Ejemplo 1.7 rule 1 if A = 10 cnf 98 then C := 19 end; La certidumbre de que A sea igual a 10 es 98. Si la regla no tiene implicaciones débiles la certidumbre de la comparación es el valor de certidumbre que el atributo tenga. Ese valor pudo haber sido obtenido a través de la interfaz en el caso de que los atributos sean preguntables o puede calcularse cuando los atributos sean deducibles. Ejemplo 1.8 rule 2 if C = 19 then D := 'Si' end; La certidumbre de que C sea igual a19 es igual a la certidumbre con que fue probado C.

2. Para el cálculo del FC en la premisa se usan: • Condiciones unidas por la conectiva AND FC(A and B) = mín(FC(A), FC(B)). • Condiciones unidas por la conectiva OR FC(A or B) = máx(FC(A), FC(B)). Ejemplo 1.10 rule 1 if (A = 10) and (B > 76) then C := 19 end; El valor de la certidumbre se calcula como:

FC(Condición) = mín(FC(A=10),FC(B>76)) Ejemplo 1.11

Page 11: WUCShell Tutorial

Capítulo I. Generalidades 11 rule 2 if (A = 10) or (B > 76) then D := 'Si'

end; El factor de la certidumbre se calcula como: FC(Condición) = máx(FC(A=10),FC(B>76)) 3. Para el cálculo del FC de la conclusión se usa:

If A then B cnf v FC(B) = FC(A) * v Ejemplo 1.12 rule 1 if (A > 10) and (B = 90) or (A < 20) then C := 19 cnf 87 end; El factor de certidumbre se calcula como: FC(C) = FC((A > 10) and (B = 90) or (A < 20))*87 Si la conclusión no contiene la especificación de certidumbre (cnf) el valor es 100 Ejemplo 1.13 rule 2 if C = 19 Then D := 'Si' // FC(D) = FC(C=19) end;

4. Para el cálculo del FC cuando varias reglas tienen la misma conclusión: R1: if A then B cnf v1 R2: if C then B cnf v2 FC(B) = FC(BR1) + FC(BR2) - FC(BR1) * FC(BR2) Ejemplo 1.14 rule 1 if A > 10 cnf 98 then

Page 12: WUCShell Tutorial

Capítulo I. Generalidades 12 C := 19 end; rule 2 if D <= 19 then C := 19 // La misma conclusión end;

Page 13: WUCShell Tutorial
Page 14: WUCShell Tutorial

Capítulo II. Manual del usuario 14

Capítulo II. WUCShell, Manual del usuario II.1 El menú de tareas y la barra de herramientas La figura anterior muestra una vista general del sistema WUCShell (Shell de la Universidad Central, versión sobre Windows), se destacan algunas de sus partes. El Menú de tareas permite acceder a diferentes facilidades del sistema y existen dos formas de activar cada una de sus opciones: 1. Usando el ratón. 2. Usando la combinación de teclas ALT + Letra Subrayada. Ambas acciones provocan que se presente un menú desplegable asociado a cada una de las opciones del menú de tareas; de esa forma se puede acceder a diferentes comandos, que permiten realizar varias tareas dentro del sistema.

Menú de tareas

Barra de herramientas

Editor del sistema

Page 15: WUCShell Tutorial

Capítulo II. Manual del usuario 15

Opción File La opción File se usa para abrir, guardar y cerrar proyectos. La siguiente figura nos permite apreciar su aspecto con el menú correspondiente desplegado.

Comandos Descripción . New Crea una nueva base de conocimiento. Open Usa una caja de diálogo para cargar una base de conocimiento

dada. Save Guarda la base de conocimiento. Save As Guarda la base de conocimiento actual usando un nuevo

nombre. Save All Guarda todos los proyectos abiertos. Close Cierra la base de conocimiento actual. Close All Cierra todas las bases de conocimiento. Exit Cierra los proyectos y sale del sistema. Debajo del Menú de tareas se observa la Barra de herramientas que se puede configurar usando el comando SpeedBar localizado en el menú desplegable que acompaña de la opción View. La Barra de herramientas permite un acceso rápido a casi todos los comandos asociados a cada una de las opciones del menú, la figura anterior muestra la parte de la Barra de herramientas que se corresponde con el menú File. El acceso a los comandos usando esta facilidad sólo se logra con el uso del ratón.

New Project

Save Project Open Project

Close All

Page 16: WUCShell Tutorial

Capítulo II. Manual del usuario 16 Nótese que la vista general del sistema muestra una de las posibles configuraciones ya que como se dijo anteriormente la Barra de herramientas se puede configurar.

Page 17: WUCShell Tutorial

Capítulo II. Manual del usuario 17

Opción Edit La opción Edit se utiliza para manipular textos en la edición de proyectos.

Comandos Descripción . Undo Deshace la última acción o el último borrado. Redo Hace lo contrario de el último undo. Cut Retira de la ventana de edición el texto marcado y lo envía al porta papeles o clipboard. Copy Pone una copia del texto seleccionado en el porta papeles dejando el texto marcado en su lugar original. Paste Copia el contenido del porta papeles en la posición del cursor. Delete Borra el texto seleccionado. Select All Selecciona todo el texto contenido en la ventana de edición. Opciones disponibles en la Barra de herramientas.

Undo

Redo

Cut

Copy

Paste

Page 18: WUCShell Tutorial

Capítulo II. Manual del usuario 18

Opción Search La opción Search se utiliza para localizar textos y símbolos dentro del archivo en edición, actualmente dispone de un solo comando .

Comando Descripción . Find Busca la primera aparición del texto especificado dentro de

la base de conocimiento en edición. Opción disponible en la Barra de herramientas.

Find

Page 19: WUCShell Tutorial

Capítulo II. Manual del usuario 19

Opción View Se utiliza para mostrar las diferentes vistas del ambiente del WUCShell.

Comandos Descripción . Call Infer Muestra una ventana donde se coloca el atributo que se está infiriendo y la regla que se está usando. Attributes Muestra las propiedades de los atributos durante el proceso de inferencia. Breakpoints Muestra, en una caja de diálogo, la lista de los Breakpoints. SpeedBar Permite configurar la Barra de herramienta. Opciones disponibles en la Barra de herramientas.

Call Infer

Attributes

Breakpoints

Page 20: WUCShell Tutorial

Capítulo II. Manual del usuario 20

Opción Project La opción Project se usa para compilar una base de conocimiento que debe estar abierta.

Comandos Descripción . Compile Si la base de conocimiento actual ha sido Modificada, la compila. Syntax Check Chequea sintácticamente la base de conocimiento actual, pero no genera código. Information Muestra información acerca del proyecto y el estado actual después de su compilación. Opciones disponibles en la Barra de herramientas.

Compile Syntax Check

Information

Page 21: WUCShell Tutorial

Capítulo II. Manual del usuario 21

Opción Run La opción Run permite la ejecución de la inferencia y ayuda a depurar los programas.

Comandos Descripción . Run Compila la base de conocimiento (si ha sido modificada) y ejecuta la aplicación. Step Over Ejecuta un proyecto paso a paso. Trace Into Ejecuta un proyecto paso a paso. Run To Cursor Ejecuta el proyecto hasta la posición del cursor, para continuar de ahí en adelante se tiene que utilizar unas de las dos opciones anteriores. Show Execution Point Cuando se está ejecutando un programa paso a paso, posiciona el cursor en la línea de ejecución dentro de la ventana de edición. Program Pause Detiene temporalmente la ejecución de la aplicación. Program Reset Termina la inferencia. Add Breakpoint Abre una caja de diálogo para crear o modificar puntos de ruptura ("breakpoints"). Las opciones en la Barra de herramientas son:

Run Trace Into

Trace Over Pause

Run to Cursor

Show Execute Point Add BreakPoint

Page 22: WUCShell Tutorial

Capítulo II. Manual del usuario 22

Opción Tools Tools se utiliza actualmente sólo para permitir especificar que se compile la base de conocimiento con información simbólica, de manera que sirva de entrada para el sistema TeachShell. A partir de este opción se podrán configurar, en versiones posteriores, el aspecto que se desea para cada una de las partes del sistema. Comandos Descripción . Environment Options Marque la opción "compile with debug information" en la caja de diálogo que acompaña a este comando"

Environment Option

Page 23: WUCShell Tutorial

Capítulo II. Manual del usuario 23

Opción Help Help ofrece una amplia ayuda acerca del uso del sistema.

Comandos Descripción . Contents Mantiene una "guía" de los últimos accesos a la ayuda del sistema. Programmers Guid Es la ayuda para los Ingenieros de Conocimiento, explica la sintaxis de cada una de las sentencias de UCShell. Presenta algunos conceptos generales que se utilizan en el sistema e ilustra, con ejemplos apropiados, el uso de sus posibilidades. Shell Guid Explica la interfaz del sistema experto. About Muestra la versión del sistema y datos acerca del equipo que concibió y programó el sistema.

Page 24: WUCShell Tutorial

Capítulo II. Manual del usuario 24 II.2 Cajas de diálogos del menú File Dialogo Open La caja de diálogo Open se usa para cargar una base de conocimiento en memoria. Entradas Descripción . File Name Escriba el nombre del archivo que desee cargar (la extensión kbs es para archivos de base de conocimiento y la extensión kbo es para archivos que han sido previamente compilados). Files of type Presenta una lista desplegable para seleccionar el tipo de Archivo (kbs o kbo). Look in Permite especificar un camino o ruta de acceso hacia el archivo que se desea cargar.

Page 25: WUCShell Tutorial

Capítulo II. Manual del usuario 25

Diálogo Save del comando Save as La caja de diálogo Save se utiliza para guardar el archivo en edición.

Entradas Descripción . File Name Permite escribir el nombre del archivo que se desea guardar. Save as type Presenta una lista desplegable para seleccionar el formato del archivo que se desea guardar. Save in Permite especificar la localización donde se desea guardar el archivo

Page 26: WUCShell Tutorial

Capítulo II. Manual del usuario 26 II.3 Vistas Vista de las propiedades de los atributos. Esta vista, que sólo está disponible durante el proceso de inferencia, permite visualizar el nombre y el valor de los atributos de la base de conocimiento que se está usando. Forma de acceso: 1. Usando el comando Attributes de la opción View en el Menú de tareas. 2. Usando el icon correspondiente dentro de la opción VIEW en la Barra de

herramientas.

Valor del atributo

Nombre del atributo

Page 27: WUCShell Tutorial

Capítulo II. Manual del usuario 27

Vista para editar las propiedades de los atributos. Esta vista permite, durante el proceso de inferencia, la edición de las propiedades de los atributos. Para acceder a ella hay que activar la vista anterior y hacer doble click sobre el nombre del atributo que se desea editar.

Tipo del atributo

Valor del atributo

Valor de certidumbre

Nivel de inferencia

Page 28: WUCShell Tutorial

Capítulo II. Manual del usuario 28

Vista para la edición de los breakpoints. Esta vista permite, durante el proceso de inferencia, la edición de los breakpoints. Forma de acceso: 1. Usando el comando Add Breakpoints de la opción Run en el Menú de tareas. 2. Usando el icon correspondiente dentro de la opción Run en la Barra de

herramientas.

Nombre del proyecto

Línea del Breakpoint

Condición de parada

Veces a ejecutar

Page 29: WUCShell Tutorial

Capítulo II. Manual del usuario 29

Vista que muestra la lista de breakpoints. Muestra la lista de los breakpoints actuales y sus propiedades. Forma de acceso: 1. Usando el comando Breakpoints de la opción View en el Menú de tareas. 2. Usando el icon correspondiente dentro de la opción View en la Barra de

herramientas. Al pulsar doble click con el ratón sobre algún breakpoint de la lista se presenta el editor del sistema con el cursor sobre la línea donde aparece la sentencia dada.

Nombre del proyecto

Número de línea del breakpoint

Breakpoint deshabilitado

Page 30: WUCShell Tutorial

Capítulo II. Manual del usuario 30

Vista que muestra el Stack. Esta vista muestra el estado del stack durante el proceso de inferencia.

Forma de acceso: 3. Usando el comando Call Infer de la opción View en el Menú de tareas. 4. Usando el icon correspondiente dentro de la opción View en la Barra de

herramientas. Doble click sobre cualquier atributo, activa la vista del editor y sitúa el cursor en el lugar desde donde se ordenó la inferencia del atributo. Doble click sobre la regla, activa la vista del editor y sitúa el cursor sobre dicha regla.

Atributos infiriendose

Reglas pendientes

Page 31: WUCShell Tutorial

Capítulo II. Manual del usuario 31

Vista para la edición de proyectos. Esta vista permite la edición de los proyectos. Brinda facilidades para marcar, cortar, copiar y pegar bloques; permite, además, deshacer las modificaciones. Click derecho sobre el editor activa un menú Pop up que permite cerrar el proyecto y ubicar breakpoints entre otras opciones.

Page 32: WUCShell Tutorial

Capítulo II. Manual del usuario 32

Vista de la interfaz para las respuestas Esta vista aparece durante el proceso de inferencia, a través de ella se deben responder las distintas preguntas que hace el sistema. La vista puede tener diferentes aspectos en dependencia de si la respuesta debe ser editada o si se debe seleccionar dentro de un conjunto de posibles respuestas, como se aprecia a continuación. Las respuestas tienen por defecto el valor de certidumbre 100 (totalmente seguro) pero este campo se puede editar cuando la certidumbre no es total.

Texto de la pregunta

Certidumbre de la respuesta

Elementos del Dominio

Page 33: WUCShell Tutorial

Capítulo III. Manual del programador 33

Capítulo III: Manual del programador

III.1 Sintaxis de las bases de conocimiento Una Base de Conocimiento para el sistema SESE está compuesta por cuatro partes, tres de ellas son opcionales y la tercera, denominada bloque de acciones, es obligatoria. La siguiente figura muestra un esquema de su sintaxis.

De acuerdo a la sintaxis anterior, una base de conocimiento está compuesta por tres módulos opcionales que deben escribirse en el orden mostrado. Estos son: 1. Bloque de atributos externos. Se especifica por la palabra reservada

External. 2. Bloque de preguntas, especificado por la palabra reservada Asks. 3. Bloque de reglas, su definición comienza con la palabra reservada Rules. Adicionalmente existe un cuarto módulo obligatorio y conocido como Bloque de acciones, que se define con la palabra reservada Actions. El fin de un bloque se especifica, implícitamente, con el inicio de otro, excepto el bloque de acciones que finaliza con la palabra reservada End seguida por un punto lo que constituye, además, el fin de la base de conocimiento. Ejemplo 3.1 External Familia ... Asks Ask Patas: '¿Cuántos pares de patas tiene el animal?' ... Rules Rule 1 If Familia = 'Artrópodos' and Patas = 6 Then SubFamilia := ‘Insectos’ End; ... Actions Find SubFamilia ... End.

Base de Conocimiento

External

Actions

.

Asks Rules

End

Page 34: WUCShell Tutorial

Capítulo III. Manual del programador 34

Definición del bloque de atributos externos Se considera un atributo declarado (implícitamente), cuando éste aparece en una sentencia ASK del bloque de preguntas o forma parte de la conclusión de una regla. La especificación External define el bloque de atributos externos y especifica una lista de atributos que se usan en una base dada y no están declarados en ella. Esta facilidad permite enlazar hechos entre diferentes bases. En el ejemplo anterior se observa que el atributo Familia no está declarado en esa base de conocimiento (no está en la conclusión de ninguna regla ni en el bloque de preguntas de la base), de ahí la declaración de ese atributo como externo para que la regla 1 pueda utilizarlo. WUCShell ejecuta sentencias, los atributos externos están ligados a dos de ellas: SaveFact y Chain de la siguiente forma: • La sentencia Savefact permite guardar, temporalmente, los valores de los

atributos inferidos, de manera que puedan ser utilizados, como hechos, en otras bases de conocimiento.

• La sentencia Chain permite cambiar el proceso de inferencia de una base de conocimiento hacia otra.

La forma de utilización de estas facilidades es la siguiente: Supongamos que se tiene un sistema experto que utiliza dos bases de conocimiento B1 y B2. Algunos de los atributos inferidos durante la utilización de la base B1 van ser utilizados en la base B2. Los pasos a seguir son los siguientes: 1. En B1 utilizar la sentencia SaveFact para preservar los valores de los

atributos inferidos que se utilizarán en B2. Esa acción hay que realizarla antes de ejecutar la sentencia Chain,

2. En B1 poner la sentencia (Chain ‘B2.KBO’) en el lugar apropiado para cambiar la inferencia de B1 a B2 en el momento deseado.

3. En B2 declarar externos los mismos atributos. Obsérvese que la sentencia Chain utiliza el archivo B2.KBO, por lo que el archivo B2.KBS debe haberse compilado previamente. Ejemplo 3.2 Archivo b1.kbs Asks Ask Exoesqueleto: '¿El animal tiene un esqueleto externo de quitina?' Ask Patas: '¿Sus patas son articuladas?' Rules Rule 1 If Exoesqueleto = 'Si' and Patas = 'Si' Then Familia := 'Artrópodos' End; Actions Find Familia Savefact Familia Chain 'B2.KBO' End.

Identificador de atributo externo EXTERNAL

,

Page 35: WUCShell Tutorial

Capítulo III. Manual del programador 35 Archivo b2.kbs External Familia Asks Ask Patas: '¿Cuántos pares de patas tiene el animal?' Rules Rule 1 If Familia = 'Artrópodos' and Patas = 6 Then SubFamilia := ‘Insectos’ End; Actions Find SubFamilia End.

Page 36: WUCShell Tutorial

Capítulo III. Manual del programador 36

Definición del bloque de preguntas

La especificación Asks define el bloque de preguntas o sea contiene la declaración de todos los atributos preguntables (definidos por la meta sentencia (MS) Ask). Las preguntas definen la interfaz entre la máquina de inferencia y el usuario del sistema experto. Ejemplo 3.3 asks ask Reaccion : 'Después de calentar la sustancia como máximo /n'+ 'una hora, a reflujo, con ácido sulfúrico al /n'+ '60% se observa que : ' domain 'Se disuelve sin desprendimiento de gas', 'Se disuelve con fuerte desprendimiento de CO2', 'Se obtiene una solución marrón oscura' because 'Porque estoy tratando de investigar si se trata de una /n', 'Poliamida, un Poliuretano o una Resina de Urea, para lo cual /n', 'estas reacciones son determinantes.' ask CapaEterea : 'Por hidrólisis con HCL al 20% durante 4 horas, extracción/n'+ 'con éter y concentración de las capas acuosa y/n'+ 'etérea se obtienen sólidos se determinada temperatura/n'+ 'de fusión. En este caso, cuál es la temperatura de fusión /n'+ 'alcanzada por la capa etérea? (en grados Celcius)' choice 133,152

Definición de MS ASK ASKS

Page 37: WUCShell Tutorial

Capítulo III. Manual del programador 37

Definición del bloque de reglas La especificación Rules define un bloque de reglas de tipo IF-THEN, ésta es una parte medular de la base de conocimiento ya que las reglas representan el conocimiento del sistema.

Ejemplo 3.4 Rules Rule 22 If (Familia = 'Poliuretano') And (Rf = 0.58) And (Color = 'Amarillo') Then Composicion := '3' Actions Display 'Está formado por 4,4 diaminodifenilmetano.' End; Rule 23 If (Familia = 'Poliuretano') And (Rf = 0.53) And (Color = 'Amarillo') Then Composicion := '4' Actions Display 'Está formado por 4,4 diamino di-o-tolilmetano.' End;

Definición de regla RULES

;

Page 38: WUCShell Tutorial

Capítulo III. Manual del programador 38

Definición del bloque de acciones La palabra reservada Actions especifica la lista de acciones que serán ejecutadas durante el proceso de inferencia. • El bloque de acciones principal define el punto de entrada para comenzar la

secuencia de deducción de la máquina de inferencia. • El bloque de acciones de una regla define el conjunto de acciones que se

ejecutarán cuando la condición de la regla se haga verdadera durante el proceso de inferencia.

Ejemplo 3.5 Bloque de acciones principal. External ... Asks ... Rules ... Actions Repeat Reset all Find Familia Find Subfamilia Find Composicion Find Resumen Find Finalizar Untilknown Finalizar End. Ejemplo 3.6 Bloque de acciones de una regla. Rules Rule 39 If Reconsulta = 'Si' Then Finalizar := 'No' Actions Reset Finalizar End; Rule 40 If Reconsulta = 'No' Then Finalizar := 'Si' Actions Display 'Gracias por su consulta' End;

Definición de Acciones ACTIONS

Page 39: WUCShell Tutorial

Capítulo III. Manual del programador 39 III.2 Conceptos generales Existen dos tipos de sentencias: 1. Las primeras son en realidad meta sentencias ya que no tienen efecto en el

proceso de inferencia; sólo se utilizan durante el proceso de compilación para generar la forma interna, ej. ASK.

2. Las segundas son las verdaderas sentencias y son ejecutadas por la máquina de inferencia durante el proceso de prueba de un objetivo dado, este grupo de sentencias pueden ser escritas dentro de los bloques de acciones solamente.

Definición de la meta sentencia Ask Declara un atributo como un preguntable.

Texto de la pregunta

Certidumbre de la respuesta

Editor de respuesta

Dominio de definición

Conjunto de Selección Definición de explicación

Nombre de Atributo ASK : Pregunta

‘Cadena de Caracteres’

Pregunta

Definición de imagen

Page 40: WUCShell Tutorial

Capítulo III. Manual del programador 40 Cada meta sentencia Ask define una pregunta para la interfaz del sistema experto y, como puede inferirse a partir de la sintaxis anterior, puede presentarse en dos formas: 1. Preguntas de cadena de caracteres (vista anterior). 2. Preguntas con imágenes.

Definición de imagen Se utiliza la palabra reservada Image para especificar el camino de búsqueda de una archivo (incluye el archivo) que contiene la imagen que se desea mostrar como parte de la interfaz del usuario. Se puede utilizar esta facilidad para mostrar preguntas con imágenes , elementos de un dominio con imágenes asociadas, o para mostrar una imagen mediante la sentencia Display.

Conjunto de selección El Conjunto de selección se define mediante la palabra reservada Choice y especifica una lista de literales o atributos separados por coma, como posibles respuestas a las preguntas. Los literales pueden ser cualquiera de los tipos definidos por el sistema (string, real, integer). Los atributos preguntables que forman parte del Conjunto de selección tienen que haber sido previamente definidos en la base de conocimiento de lo contrario se genera un error de compilación debido a que dichos atributos se tienen que haber convertido previamente en hechos (tienen un valor asignado) porque el compilador del sistema es de una sola pasada. Ejemplo 3.7. Pregunta con imagen y conjunto de selección. Ask Mancha1: Image(‘Mancha.bmp') Choice 'Caderas', 'Murciélago'

,

CHOICE

Conjunto de selección

Literal

Atributo

Definición de imagen

( ) ‘Camino de búsqueda’ IMAGE

Page 41: WUCShell Tutorial

Capítulo III. Manual del programador 41

Dominio de definición La palabra reservada Domain define el dominio de respuesta. Los literales pueden ser cualquiera de los tipos definidos por el sistema string, real, integer. Los elementos del dominio que tienen una interfaz gráfica mediante la definición de una imagen toman el valor literal definido después del operador Igual (=). De no existir éste, el valor que toma el elemento del dominio es el índice que ocupa dentro de la lista (comenzando por cero). Tanto en tiempo de compilación como en tiempo de ejecución el sistema garantiza que los atributos definidos por domain sólo puedan tomar valor dentro del dominio.

Ejemplo 3.8. Pregunta de cadena de caracteres con dominio de definición sin

imagen asociada. Ask Reaccion_a :'Caliente el material seco en un tubo de combustión /n' + 'conteniendo en la boca un papel de PH./n/n/n'+ '¿Cómo se comporta?' Domain 'Débilmente alcalino', 'Neutro o débilmente ácido'

Literal

Definición de imagen

Literal

, =

Dominio de definición

DOMAIN

Page 42: WUCShell Tutorial

Capítulo III. Manual del programador 42

Definición de explicación La palabra reservada Because permite asociar a cada pregunta una explicación que faculta al sistema experto para justificarlas cuando el usuario lo solicite. Un texto definido como because de una pregunta se mostrará como parte de la interfaz cuando se oprima el botón de <<Because>>. Ejemplo 3.9 Pregunta con explicación asociada. Ask Mancha1: Image(‘Mancha.bmp') Choice 'Caderas', 'Murciélago' Because 'Se necesita saber la reacción del paciente ante la mancha 1 del test'.

Imagen de la pregunta

Certidumbre de la respuesta

Texto del because de la pregunta

Botón del because

Botón del browser

,

Definición de explicación

Definición de items a mostrar BECAUSE

Page 43: WUCShell Tutorial

Capítulo III. Manual del programador 43 Se pueden definir preguntas sin conjunto de selección ni dominio de definición asociado, para este tipo de preguntas y para las de conjunto de selección (definidas por choice) se siguen las siguientes reglas: El editor de respuesta capta el conjunto de caracteres editados por el usuario como respuesta a una pregunta. La respuesta se asigna al atributo que generó la pregunta pero antes se convierte a uno de los siguientes tipo de literales: string, integer o real, según las siguientes reglas: 1. Si la respuesta está compuesta solo por números en el rango que define el

integer entonces la respuesta es un número entero (tipo integer). 2. Si la respuesta está compuesta por números y un punto (.) en el formato y

rango que define un real entonces la respuesta es un número real (tipo real). 3. Si la respuesta no cumple ninguna de las reglas anteriores entonces la

respuesta es un cadena de caracteres (tipo string). Los atributos que no están definidos previamente como preguntables ni externos se consideran deducibles y en tiempo de ejecución se tratan de inferir mediante un encadenamiento hacia atrás teniendo en cuenta solo los atributos que son hechos. A todo elemento del dominio que no cuente con una imagen asociada, se le asignará una imagen por defecto. Ejemplo 3.10 Pregunta de cadena de caracteres con dominio de definición e

imagen asociada. ask Color: 'Cual es el color de la mancha ?' domain Image('AP.bmp') = 'Amarillo Pardo', Image('A.bmp') = 'Amarillo', Image('RC.bmp') = 'Rojo Carmín', Image('Az.bmp') = 'Azul Violeta'

Texto de la pregunta

Certidumbre de la respuesta

Elementos del Dominio

Page 44: WUCShell Tutorial

Capítulo III. Manual del programador 44 Ejemplo 3.11 Pregunta de cadena de caracteres con dominio de definición sin

imagen asociada. Ask Country: 'Entre el país a que pertenece.' Domain 'USA', 'China', 'Cuba', 'Rusia','Canada' Las imágenes mostradas por las preguntas visuales y por las sentencia Display se enmarcarán dentro del espacio que la interfaz le asigne a las imágenes reduciendo su tamaño proporcionalmente, estas imágenes reducidas pueden ser vistas en toda su dimensión mediante un doble click sobre la imagen. Ejemplo 3.11 Resumen de ASK con dominio Asks Ask Color: '¿Cuál es el color de la mancha?' Domain Image('AP.bmp') = 'Amarillo Pardo', Image('A.bmp') = 'Amarillo', Image('RC.bmp') = 'Rojo Carmín', Image('Az.bmp') = 'Azul Violeta' Ask IndexColor: 'Cual es el color de la mancha ?' Domain Image('AP.bmp'), // Toma valor 0 Image('A.bmp'), // Toma valor 1 Image('RC.bmp'), // Toma valor 2 Image('Az.bmp') // Toma valor 3 Ask Country: 'Entre el país a que pertenece.' Domain 'USA', 'China', 'Cuba', 'Rusia','Canada' Rules Rule 1 If IndexColor = 0 Then Color := 'AmPar' // Error AmPar no está en el Dominio End;

Texto de la pregunta

Certidumbre de la respuesta

Elementos del Dominio

Imagen por defecto

Page 45: WUCShell Tutorial

Capítulo III. Manual del programador 45

Definición de elemento visible La definición de una lista de elementos visible permite que las sentencias Because y Display incluyan: • Literales: Imprime el valor del literal. • Atributos: Si el atributo no ha sido instanciado lo infiere y luego imprime el

valor • Texto de Preguntas: Si el identificador no es un preguntable genera un error

de compilación de lo contrario imprime el texto de la pregunta del identificador.• CNF de atributos: Si el identificador no ha sido instanciado lo induce y luego

imprime la certidumbre del valor asignado al atributo.Ejemplo 3.12 Asks Ask A: '¿Qué valor le asigna a A?' Because 'Me es imprescindible su valor' Ask B : '¿Cuánto vale B?' Because 'Es uno de los componentes de la fórmula' Rules Rule 1 If (a <> 0) and (b <> 0) Then C := a /b M := LN(100) Actions Display 'El valor de C es:', C, 'y lo he calculado de acuerdo a:' C = A / B /n', '1.- Le pregunté "',A.Ask,'" y dijo que A era: ',A,'/n', '2.- Le pregunté "',B.Ask,'" y dijo que B era: ',B,'/n', 'El valor de M es: ',M End; Actions Find c end. Ejemplo 3.13 rules rule 1 if Mancha1 = 'Caderas' then Reaccion := 'Sexual' actions Display 'Imagen mas similar' Display Image('C:\UCLV\MFC\ManchaSex.bmp') end;

Definición de elemento visible

Atributo

Literal

. Ask

Cnf

Page 46: WUCShell Tutorial

Capítulo III. Manual del programador 46

Page 47: WUCShell Tutorial

Capítulo III. Manual del programador 47

Efecto de una sentencia display con texto solamente

Efecto de una sentencia display con una imagen asociada

Imagen mostrada por Display

Page 48: WUCShell Tutorial

Capítulo III. Manual del programador 48 Efecto de un zoom sobre una imagen

Imagen mostrada por Display

Ampliación de la Imagen

Page 49: WUCShell Tutorial

Capítulo III. Manual del programador 49

Definición de literal El sistema es capaz de manipular literales como: • Cadena de caracteres: de cualquier tamaño encerrado entre comillas. • Enteros: Secuencia de dígitos en el rango de -32768..32767. • Reales: Secuencia de dígitos permitiendo la inclusión de punto flotante en el

rango 2.9x10-39..1.7x1038 Ejemplo 3.14 'Esto es un literal de tipo cadena de caracteres ' 'Los cambios de línea se definen como un literal del tipo cadena de caracteres “\n”' -156 // literal entero 54 // literal entero 32767 // literal entero -45.3 // literal real 0.67 // literal real 78.078 // literal real

Cadena de caracteres

Definición de literal

Entero

Real

Page 50: WUCShell Tutorial

Capítulo III. Manual del programador 50 III.3 Sentencias Las acciones que se pueden realizar sobre los elementos de la base de conocimiento están definidos por un conjunto de sentencias que especifican operaciones sobre los atributos o la base de conocimiento en sentido general. Las sentencias pueden escribirse dentro de los bloques de acciones solamente y son : Display, Find, Reset, Is, Chain, Repeat y SaveFact

Sentencia Display La sentencia Display permite especificar una lista de elementos visibles que serán mostrados en pantalla en tiempo de ejecución. Ejemplo 3.15 Asks Ask A: 'Que valor le asigna a A ?' Ask B : 'Cuanto vale B ?' Rules Rule 1 If (a <> 0) And (b <> 0) Then C := a /b End; Actions Find c Display 'Contenido de C = A / B = ',c,'/n', 'Las A y B toman el valor que usted le asigno : /n', ' A = ',a,' CNF = ',a.Cnf,'/n', ' B = ',b,' CNF = ',b.Cnf,'/n', 'Las pregunta son : /n', ' para a : "',a.ask,'" /n', ' para b : "',b.ask,'" /n', 'El valor de M es : ',M End.

Imagen

Sentencia Display

,

Elemento visible

DISPLAY

Page 51: WUCShell Tutorial

Capítulo III. Manual del programador 51

Page 52: WUCShell Tutorial

Capítulo III. Manual del programador 52

Sentencia Is La declaración de hechos se define con la palabra reservada IS. Esta es la única forma directa de convertir un atributo, de cualquier clase, en un hecho. Los atributos pueden convertirse en hechos de las siguientes formas: 1. Inferidos a partir de la prueba de una o varias reglas durante una consulta. 2. Por las respuestas del usuario, cuando son preguntables. 3. Por medio de la sentencia IS La certidumbre del valor asignado por medio de is tendrá el valor máximo del sistema. Si al atributo de la izquierda se le asigna un atributo con valor desconocido, éste se inferirá antes de que su valor sea asignado. Ejemplo 316 Asks Ask B : 'Cuanto vale B ?' Because 'Lo uso para calcular C' Rules Rule 1 If (a <> 0) And

(b <> 0) Then C := a /b Actions h Is C End; Actions A Is 67 Find c End.

Atributo

Sentencia Is

Atributo

Literal IS

Page 53: WUCShell Tutorial

Capítulo III. Manual del programador 53

Sentencia Repeat Mediante la sentencia Repeat es posible definir un conjunto de acciones cíclicas que serán llevadas a cabo por cualquiera de las sentencias permisibles. El fin del ciclo se especifica con la palabra reservada UntilKnown. La condición de terminación del ciclo se alcanza cuando el atributo que sigue al UntilKnown recibe un valor diferente de desconocido (definido por la constante Unknown). El atributo que se encuentra como condición de parada no se inferirá en el momento de la evaluación solo se verificará si su valor es conocido o no. Ejemplo 3.17 Actions Repeat Reset all Find Familia Find Subfamilia Find Composicion Find Resumen Find Finalizar Untilknown Finalizar End.

Sentencia Repeat

Sentencia REPEAT UNTILKNOWN Atributo

Page 54: WUCShell Tutorial

Capítulo III. Manual del programador 54

Sentencia Find La sentencia Find permite iniciar el proceso de inferencia del atributo especificado. • Si el atributo a inferir es un preguntable, se realizará la pregunta asociada al

atributo. • Si el atributo es un deducible se infiere, siguiendo una dirección de búsqueda

Backward chaining o Dirigida por objetivos. • Si el atributo es externo esta acción no provoca ningún cambio. Ejemplo 3.18 Actions Repeat Reset all Find Familia Find Subfamilia Find Composicion Find Resumen Find Finalizar Untilknown Finalizar End.

Sentencia Find

FIND Atributo

Page 55: WUCShell Tutorial

Capítulo III. Manual del programador 55

Sentencia Reset La sentencia Reset especifica una lista de atributos separados por coma a los que se les asignará el valor de desconocido (Unknown) cuando esta acción sea ejecutada. Por defecto todos los atributos tienen asignado el valor Unknown. Si después de una inferencia se desea asignar ese valor a todos los atributos de la base de conocimiento se debe utilizar la cláusula All como parámetro de la acción Reset. Ejemplo 3.20 Rules Rule 39 If Reconsulta = 'Si' Then Finalizar := 'No' Actions Reset Finalizar End; Rule 40 If Reconsulta = 'No' Then Finalizar := 'Si' actions Display 'Gracias por su consulta' End; Actions repeat Reset all Find Familia Find Resumen Find Finalizar Untilknown Finalizar End.

Sentencia Reset

ALL

,

RESET

Atributo

Page 56: WUCShell Tutorial

Capítulo III. Manual del programador 56

Sentencia SaveFact La sentencia SaveFact permite guardar los valores asociados a los atributos de la base de conocimiento activa (base origen) con el objetivo de hacer una enlace con otra base de conocimiento (base destino). Los atributos que se guarden con esta sentencia, deberán ser declarados externos en la base de conocimiento destino . Para guardar todos los atributos de la base de conocimiento actual se utiliza la cláusula All como parámetro de la acción SaveFact. La acción SaveFact utiliza una zona de memoria para almacenar la dirección de los últimos atributos guardados, cada ejecución de la acción SaveFact sobrescribe las direcciones anteriores.

Atributo

ALL

,

Sentencia SaveFact

SAVEFACT

Page 57: WUCShell Tutorial

Capítulo III. Manual del programador 57

Sentencia Chain La sentencia Chain especifica el camino hacia una base de conocimiento destino con la que se va a enlazar la base de conocimiento origen. La base de conocimiento destino tiene que haber sido previamente compilada (.KBO). La ejecución de la sentencia Chain provoca: 1. Un cambio de ejecución desde la base de conocimiento origen hacia una base

de conocimiento destino. 2. Realiza el intercambio de hechos entre las bases. Para que el intercambio se

haga correctamente antes de ejecutar la sentencia Chain debe haberse ejecutado una sentencia SaveFact para guardar los atributos (con sus valores) de la base origen que se deseen conservar en la base destino.

3. Antes de cargar la base de conocimiento destino, Chain le asigna a todos los atributos externos (External) de la base de conocimiento destino el valor de los atributos guardados por la ultima acción SaveFact, asegurando de esta forma que los hechos de la base de conocimiento origen se conserven para la base de conocimiento destino.

4. Luego de ejecutar la base de conocimientos destino, Chain retorna a la base origen y le asigna a todos los atributos externos (External) de esta última el valor de los atributos guardados por la ultima acción SaveFact de la base de conocimiento destino. De esta forma se asegura que los hechos de la base de conocimiento destino tengan valor en la base de conocimiento origen.

La ejecución de la base de conocimiento destino se efectúa sobre otro hilo del sistema dejando el hilo activo en espera de la terminación de éste y mostrando otra interfaz de ejecución para la base destino. La forma de utilización de estas facilidades es la siguiente: Supongamos que se tiene un sistema experto que utiliza dos bases de conocimiento B1 y B2. Algunos de los atributos inferidos durante la utilización de la base B1 van ser utilizados en la base B2. Los pasos a seguir son los siguientes: 4. En B1 utilizar la sentencia SaveFact para preservar los valores de los

atributos inferidos que se utilizarán en B2. Esa acción hay que realizarla antes de ejecutar la sentencia Chain,

5. En B1 poner la sentencia (Chain ‘B2.KBO’) en el lugar apropiado para cambiar la inferencia de B1 a B2 en el momento deseado.

6. En B2 declarar externos los mismos atributos. Obsérvese que la sentencia Chain utiliza el archivo B2.KBO, por lo que el archivo B2.KBS debe haberse compilado previamente.

Camino Chain

Sentencia Chain

Page 58: WUCShell Tutorial

Capítulo III. Manual del programador 58 Ejemplo 3.21 Archivo b1.kbs Asks Ask Exoesqueleto: '¿El animal tiene un esqueleto externo de quitina?' Ask Patas: '¿Sus patas son articuladas?' Rules Rule 1 If Exoesqueleto = 'Si' and Patas = 'Si' Then Familia := 'Artrópodos' End; Actions Find Familia Savefact Familia Chain 'B2.KBO' End.

Archivo b2.kbs External Familia Asks Ask Patas: '¿Cuántos pares de patas tiene el animal?' Rules Rule 1 If Familia = 'Artrópodos' and Patas = 6 Then SubFamilia := ‘Insectos’ End; Actions Find SubFamilia End.

Interfaz de la base de conocimiento del Chain

Nueva interfaz activa

Page 59: WUCShell Tutorial

Capítulo III. Manual del programador 59 III.4 Definición de reglas Las reglas que forman parte del Bloque de reglas se especifican por la palabra reservada Rule y tienen el formato IF..THEN..ACTION • Entero: Es un número entero que especifica el nivel (Level) de prioridad de la

regla en cuestión y tiene que ser único para la base de conocimiento. • Condición: Es el conjunto de condiciones que son necesarias para que las

conclusiones y acciones de la regla puedan ser ejecutadas. • Conclusión: Especifica las conclusiones que se ejecutarán cuando la

condición de la regla sea verdadera. • Bloque de acciones: Especifica las acciones que se ejecutarán cuando la

condición de la regla sea verdadera Todo atributo que se encuentre en la parte derecha de una conclusión será definido como un atributo deducible, lo que implica que no puede ser definido como preguntable previamente. El entero que especifica el nivel (Level) de la regla no define el orden en que las reglas serán ejecutadas por la Máquina de Inferencia en el momento de la deducción de un atributo, éste tiene una tarea importante en el Método de Solución de Conflictos de la máquina.

Definición de regla

Entero Rule

Bloque de Acciones

End

Conclusión Condición If Then

Page 60: WUCShell Tutorial

Capítulo III. Manual del programador 60 Ejemplo 3.22 rules rule 1 if (ReaccionA = 'Neutro o débilmente ácido') and (ReaccionB = 'Es soluble a un 20% y precipita al enfriar') and (ReaccionC = 'Se disuelve con fuerte desprendimiento de CO2') then TipoPlastico := 'Poliuretano' actions Display 'El material a clasificar es un Poliuretano. /n', 'Los poliuretanos son los productos de poliadición de ', 'isocianatos polifuncionales con polialcoholes, polieteres', 'o polieteres, conteniendo grupos hidroxilos. Si se pasan ', 'los vapores de la pirólisis del plástico por acetona ', 'anhidra y esta se trata con nitrito de sodio al 10% /n ', 'aparece un color naranja o rojo pardo, el cual ratifica ', 'que la sustancia es efectivamente un Poliuretano./n', 'Procederemos a la identificación del tipo de Poliuretano.' end; rule 2 if Reconsulta = 'Si' then Finalizar := 'No' actions Reset Finalizar end; rule 3 if Reconsulta = 'No' then Finalizar := 'Si' actions Display 'Gracias por su consulta' end;

Page 61: WUCShell Tutorial

Capítulo III. Manual del programador 61

Definición de Conclusión La definición de Conclusión especifica el valor que los atributos deducibles obtendrán cuando ésta sea ejecutada por la Máquina de Inferencia.

Mediante la declaración de una conclusión se define un Atributo como deducible. El bloque para el cálculo de la certidumbre (opcional) definido por la palabra reservada CNF se usa de acuerdo al siguiente convenio: • el valor real que sigue a CNF se multiplica por el valor de certidumbre que la

condición de la regla tenga durante la inferencia. • en caso de que no se especifique el bloque CNF el valor de la certidumbre de

la conclusión es la máxima definida por el sistema. Ejemplo 3.23 rules rule 1 if (A = 10 cnf 90) and (B > 30 cnf 50) and (C = 15) and (D <> 89) then Conc := 87 cnf 89 NewC := 78 end;

Atributo

Definición de Conclusión

:=

Atributo

Literal

Real Cnf

Page 62: WUCShell Tutorial

Capítulo III. Manual del programador 62

Definición de Condición La definición de condición permite expresar las premisas necesarias para que una regla sea verdadera, lo que significa que se efectúen las acciones que la regla especifica y se asignen a los atributos de la conclusión los valores correspondientes. Las condiciones están definidas según el formato estándar ANSII, con los niveles de prioridad requeridos. Operadores Condicionales Operador Operación Prioridad Relación Ejemplo . Not negación 2da unario not(A = B), not(Exclude B) And and lógico 3ra binario (A = B) and (B = C) and (C = D) Or or lógico 4ta binario (A = B) or (B = C) or (C = D) • Para el operador not la sentencia “not A” es verdadera si y solo si A es falsa. • Para el operador and la sentencia “A and B” es verdadera si y solo si A es

verdadera y B es verdadera. • Para el operador or la sentencia “A or B” es verdadera si y solo si al menos

uno de los operandos A o B es verdadero. • Los operadores lógicos son asociativos de izquierda a derecha. Para el operador and la evaluación de las condiciones se define como de circuito corto o evaluación parcial (short-circuit) lo que significa que si en algún momento de la evaluación de las condiciones relacionadas con and alguna es falsa (lo que implica que la condición sea falsa), la evaluación falla. De acuerdo con las exigencias del cálculo de la certidumbre para el operador or la evaluación de las condiciones se define como de circuito largo o evaluación completa (complete-circuit) lo que significa que todas las condiciones de la sentencia se evaluarán sean cuales sean los resultados. Los operadores lógicos no se comportan como operadores sobre bits por lo que las condiciones de comparación, que son las de mas relevante importancia, tienen la máxima prioridad.

Page 63: WUCShell Tutorial

Capítulo III. Manual del programador 63 Operadores Relacionales Operador Operación Prioridad Relación Ejemplo = Igual 1ra binaria A=5, A=‘string’, A=5.3 <> Diferente 1ra binaria A<>5, <>‘string’,A<>5.3 < Menor que 1ra binaria A<5, A<‘string’, A<5.3 > Mayor que 1ra binaria A>5, A>‘string’ ,A>5.3 <= Menor o igual que 1ra binaria A<=5,A<=‘string’,A<=5.3 >= Mayor o igual que 1ra binaria A>=5,A>=‘string’,A>=5.3 Exclude Control de inferencia 1ra unaria not(Exclude B) exclude b • Mediante la combinación de los operadores condicionales y relacionales se

puede definir una gama de complejas condiciones capaces de satisfacer, en gran medida, las necesidades de los ingenieros del conocimiento.

• El compilador mantiene un estricto chequeo de tipo para los literales de los operadores relacionales, mostrando los errores de incompatibilidad de tipo.

• La máquina de inferencia hace lo mismo para los atributos instanciados (en tiempo de ejecución). En caso de ocurrir errores, aborta la inferencia e informa de la incompatibilidad generada.

• El operador relacional exclude <atributo> se interpreta de la siguiente forma: • Falla si atributo es conocido (lo que hace fallar la regla donde se

define). • Sucede en otro caso.

Los operadores relacionales pueden ser definidos sobre elementos del mismo tipo o sobre los tipos compatibles (Entero versus real).

Atributo

Definición de comparación

EXCLUDE

Relación

Real Cnf

Expresión Expresión =

<=

<

>

>=

<>

UNKNOWN

Definición de Relación

Page 64: WUCShell Tutorial

Capítulo III. Manual del programador 64 Mediante la definición de la palabra reservada Unknown se pueden realizar comparaciones para determinar si un atributo dado ha sido inferido (si ya tiene un valor se dice que es un hecho). La constante Unknown solo puede usarse con los operadores relacionales, tratar de asignarla a un atributo mediante la sentencia de conclusión (:=) o de hecho (is) provocará un error de compilación ya que la única forma de asignar esta constante a un atributo es usando la sentencia Reset. Los atributos ligados con los operadores relacionales se inducen en el momento de la evaluación (si todavía no se han convertido en hechos) o sea la inclusión de un atributo en la condición de una regla puede provocar un proceso de inferencia. Bajo estas circunstancias el ejemplo siguiente provocaría una inferencia cíclica (detectada en tiempo de ejecución). Ejemplo 3.24 rules rule 1 if (A = Unknown) then A := 'Error de ejecución' end; Actions Find A End. Obsérvese que si A ya tuviera un valor asignado la regla anterior fallaría (porque falla su primera condición) por la tanto no provocaría error de ejecución. El sistema SESE en general y, por supuesto, WUCShell en particular sigue un mecanismo de inferencia de "exploración total". Lo anterior significa que la prueba de un atributo dado implica que se traten de probar todas las reglas donde ese atributo esté como conclusión ya que la máquina de inferencia no para inmediatamente después de probar el atributo por la primera vía exitosa sino que continúa hasta agotarlas todas. La razón fundamental para usar el mecanismo de "exploración total" viene dada por la necesidad de calcular la certidumbre tomando en cuenta los niveles de cada regla (lo cual no se conoce si no se exploran todas). Si se desea evitar ese mecanismo se puede usar el operador relacional exclude como parte de la condición de la regla que no se desee explorar totalmente, la forma de hacer esto es la siguiente: -- Dada una regla con conclusión C -- • Incluya la sentencia Exclude C como primera premisa de la regla. -- Esa inclusión hace que no se traten de probar las restantes condiciones de la regla en cuestión si el atributo C ya fue probado, lo cual acelera el proceso de inferencia. O sea exclude C es una orden equivalente a: "No busque en el resto de esta regla si C ya es conocido (es un hecho)" Obsérvese que existen reglas que, por su naturaleza, son mutuamente excluyentes; esto hace que el usuario del sistema solo se percate de la diferencia entre utilizar o no las facilidades de exclude si sigue el proceso de inferencia paso a paso (Run | Trace Into). No obstante si las reglas no son excluyentes puede obtener resultados no esperados si no usa esta facilidad. En el ejemplo siguiente, tomado de un sistema real (sistema experto "Plástico"), las dos primeras reglas son mutuamente excluyentes debido a que tienen los mismos atributos en sus premisas pero con diferentes condiciones. La tercera regla no tiene nada que ver con las anteriores, en relación a las premisas, sin embargo todas tienen el mismo atributo en la asignación de la conclusión (Tipo). Supongamos que la tercera regla no tiene la primera línea, o sea la primera premisa (que hace uso de exclude), puede suceder lo siguiente:

Page 65: WUCShell Tutorial

Capítulo III. Manual del programador 65 1. El sistema asigna un valor al atributo Tipo por cualquiera de las dos

primeras reglas (solo una se cumplirá ya que son excluyentes). 2. Posteriormente trata de inferir la tercera, como en ese caso la regla no hace

uso de exclude, pasa a probar el atributo Molish, supongamos que éste toma el valor 'SI'.

3. Ahora el atributo Tipo toma un nuevo valor, lo cual es erróneo desde el punto de vista de la concepción de este sistema porque un plástico solo puede ser de un tipo dado.

En conclusión de la forma en que está escrita la regla 3 solo será tomada en cuenta cuando el atributo Tipo sea desconocido (tiene como valor asignado la constante Unknown) Ejemplo 3.25 rules rule 1 if (Reaccion_a = 'Débilmente alcalino') and (Reaccion_b = 'Se disuelve sin desprendimiento de gas') and (Reaccion_c = 'Se disuelve sin desprendimiento de gas') then Tipo := 'Poliamida' end; rule 2 if (Reaccion_a = 'Neutro o débilmente ácido') and (Reaccion_b = 'Es soluble como máximo a un 20% y...') and (Reaccion_c = 'Se disuelve con fuerte desprendimiento de CO2') then Tipo := 'Poliuretano' end; rule 3 if (EXCLUDE Tipo) and (Molish = 'SI') then Tipo := 'Nitrocelulosa' actions display 'El material a clasificar es una Nitrocelulosa./n', end; Otra consideración en relación a exclude se puede hacer a partir del ejemplo siguiente Ejemplo 3.26 rules rule 3 if (Exclude A) then A := 'Urea' end; Si en lugar de Exclude A se utilizara la comparación (A = Unknown) y A no es aún un hecho (tiene un valor igual a unknown, por eso no es un hecho), el sistema tratará de inferir A una y otra vez lo que provoca una inferencia cíclica y esa es una mala noticia; la buena es que ese ciclo se detecta en tiempo de ejecución (quizás un poco tarde para algunos). Utilice Exclude también cuando desee comprobar que un atributo es un hecho o sea que ya fue probado (no tiene el valor Unknown) para luego realizar comparaciones con este atributo.

Page 66: WUCShell Tutorial

Capítulo III. Manual del programador 66 Ejemplo 3.27 rules rule 1 if Not (Exclude SubTipo) and (SubTipo = 'Resina') then Composición := 10 end; Si la primera condición de la regla se cumple, significa que el atributo SubTipo ya tiene un valor o sea ya es un hecho. El bloque de certidumbre definido por la palabra reservada Cnf brinda la posibilidad de definir la certidumbre con la cual se probará la condición. Ejemplo 3.28 rules rule 1 if (A = 10 cnf 90) and (B > 30 cnf 50) and (C = 15) and (D <> 89) then Conc := 87 cnf 89 end; rule 2 if ((A = 10) or (B > 30)) and ((C = 15) or (D <> 89)) then NewC := 78 end;

Definición de Expresión La definición de expresión permite conformar las más complejas relaciones entre operandos aritméticos teniendo en cuenta su nivel de prioridad y la asociación de los operadores de igual prioridad. Operadores Aritméticos Operador Operación Prioridad Relación Compatibilidad . * Multiplicación 5ta binaria Operandos numéricos / División 5ta binaria Operandos numéricos Div División Entera 5ta binaria Operandos enteros % Resto de la división 5ta binaria Operandos enteros + Adición 6ta binaria Operandos numéricos + Concatenación 6ta binaria Operandos de cadena - Sustracción 6ta binaria Operandos numéricos - Signo 6ta unaria Operandos numéricos Existen tres reglas básicas de precedencia: • Si dos operadores tienen diferente prioridad se ejecutará primero el de mayor

prioridad. • Si dos operadores tienen igual prioridad se ejecutará primero el de la

izquierda. • Las expresiones entre paréntesis tienen la máxima prioridad y se ejecutarán

primero que cualquier operador simple. El compilador, en tiempo de ejecución, reduce los operadores eliminando los cálculos innecesarios.

Page 67: WUCShell Tutorial

Capítulo III. Manual del programador 67

Definición de Funciones El sistema ofrece un conjunto de sentencia para la ejecución de funciones matemáticas de gran uso. Funciones Matemáticas Función Operación Entrada Salida . COS Coseno Numérica Real (Radianes) ACOS Arco Coseno Numérica Real (Radianes) COSH Coseno Hiperbólico Numérica Real (Radianes) SIN Seno Numérica Real (Radianes) ASIN Arco Seno Numérica Real (Radianes) SINH Seno Hiperbólico Numérica Real (Radianes) TAN Tangente Numérica Real (Radianes) ATAN Arco Tangente Numérica Real (Radianes) TANH Tangente Hiperbólica Numérica Real (Radianes) LN Logaritmo Neperiano Numérica Numérica LOG Logaritmo Natural Numérica Numérica SQR Potencia de 2 Numérica Numérica SQRT Raíz Cuadrada Numérica Numérica EXP Exponencial Numérica Numérica ABS Módulo(Valor Absoluto) Numérica Numérica