Sei sulla pagina 1di 67

Universidad

Central de Las Villas


Santa Clara, Cuba
1999







Manual para el uso de la
Mquina de inferencia WUCShell
Versin 1.0

Autores:
Dr. Mateo Lezcano Brito
Lic. Rolando Lorenzo Vera



CAPTULO I. GENERALIDADES ................................................................................ 4
I.1 LOS SISTEMAS EXPERTOS ....................................................................................... 4
I.2 FORMAS DE REPRESENTACIN DEL CONOCIMIENTO ................................................... 4
I.3 MANIPULACIN 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 CARACTERSTICAS GENERALES DE SESE ................................................................ 8
I.7.1 Manipulacin de la incertidumbre en el SESE .............................................. 8
CAPTULO II. WUCSHELL, MANUAL DEL USUARIO ............................................ 14
II.1 EL MEN DE TAREAS Y LA BARRA DE HERRAMIENTAS .............................................. 14
Opcin File .......................................................................................................... 15
Opcin Edit .......................................................................................................... 17
Opcin Search .................................................................................................... 18
Opcin View ........................................................................................................ 19
Opcin Project ..................................................................................................... 20
Opcin Run ......................................................................................................... 21
Opcin Tools ....................................................................................................... 22
Opcin Help ........................................................................................................ 23
II.2 CAJAS DE DILOGOS DEL MEN FILE ..................................................................... 24
Dialogo Open ...................................................................................................... 24
Dilogo 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 edicin de los breakpoints. ............................................................. 28
Vista que muestra la lista de breakpoints. .......................................................... 29
Vista que muestra el Stack. ................................................................................ 30
Vista para la edicin de proyectos. ..................................................................... 31
Vista de la interfaz para las respuestas .............................................................. 32

CAPTULO III: MANUAL DEL PROGRAMADOR ..................................................... 33


III.1 SINTAXIS DE LAS BASES DE CONOCIMIENTO .......................................................... 33
Definicin del bloque de atributos externos ........................................................ 34
Definicin del bloque de preguntas ..................................................................... 36
Definicin del bloque de reglas ........................................................................... 37
Definicin del bloque de acciones ....................................................................... 38
III.2 CONCEPTOS GENERALES .................................................................................... 39
Definicin de la meta sentencia Ask ................................................................... 39
Definicin de imagen ........................................................................................... 40
Conjunto de seleccin ......................................................................................... 40
Dominio de definicin .......................................................................................... 41
Definicin de explicacin ..................................................................................... 42
Definicin de elemento visible ............................................................................. 45
Definicin 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 DEFINICIN DE REGLAS ....................................................................................... 59
Definicin de Conclusin ..................................................................................... 61
Definicin de Condicin ...................................................................................... 62
Definicin de Expresin ...................................................................................... 66
Definicin de Funciones ...................................................................................... 67

Captulo I. Generalidades

Captulo 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 aplicacin concreto de manera similar o aproximadamente similar a
como lo hara un experto humano en esa materia. Estos sistemas estn compuestos
por dos elementos bsicos:
1. La Base de Conocimiento (BC), que contiene el conocimiento sobre el problema.
2. La Mquina de Inferencia (MI), que implementa los mtodos para manipular dicho
conocimiento.
La segunda se encarga de inferir nuevos conocimientos, a travs 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 especfico.
Podemos ver entonces al Sistema Experto como un modelo:
SE = BC + MI
La BC almacena el conocimiento en una determinada notacin, conocida como
Forma de Representacin del Conocimiento (FRC) que constituye el formalismo de
este modelo.
La MI, por su parte, implementa los Mtodos de Solucin del Problema (MSP).
Desde este punto de vista un SE es entonces:
SE= FRC + MSP

I.2 Formas de representacin del conocimiento


Se denomina Forma de Representacin del Conocimiento (FRC) a la notacin 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
aplicacin y ante un problema de un dominio especfico es necesario realizar la
seleccin de la FRC ms adecuada para dicho problema.
La FRC utilizada por el sistema SESE se conoce con el nombre de reglas de
produccin y fueron introducidas en 1943 por Post.
Una regla de produccin consta de un par ordenado (A, B), representado en el
Clculo Proposicional como A B, donde A representa el antecedente y B el
consecuente de la regla.
Una regla de produccin 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 produccin pueden adoptar varias formas:
1. Si condicin P entonces conclusin C.
Ejemplo. 1.1
If
(P >= 180)
then
C := Pesado

Captulo I. Generalidades

2. Si condicin P entonces accin A.


Ejemplo 1.2
If
(P = 100)
then
action Find A
3. Si condicin 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 lgicas.

I.3 Manipulacin del conocimiento representado


Para la manipulacin del conocimiento representado en reglas de produccin se
usan los llamados Sistemas de Produccin (SP).
Un SP consta de tres componentes bsicos:
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 produccin operan sobre la memoria de trabajo. Cada regla tiene
una condicin que es o no satisfecha por los datos de la BD.
Tpicamente una regla tiene una parte izquierda (las condiciones) que tiene que
ser verdadera de acuerdo a la informacin 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 produccin.
3. Intrprete:
Tiene como funcin llevar a cabo el proceso de inferencia.
Este ltimo comprende las siguientes tareas:
Seleccionar las posibles reglas a aplicar.
Verificar cules de ellas se satisfacen.
Ejecutar las acciones especificadas por las reglas satisfechas.
En un esquema clsico se recorren todas las reglas buscando una que se satisfaga,
posteriormente se aplica y esa accin, 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 ms reglas, constituyendo sta la
condicin de terminacin.

Captulo I. Generalidades

La direccin de bsqueda de una solucin 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 estn
almacenados en la BD, o sea a partir de condiciones probadas agrega nuevos
hechos o realiza acciones que estn expresadas en las conclusiones de las
reglas que se cumplen.
2. Dirigido por objetivos o encadenamiento hacia atrs (backward chaining). Dado
un objetivo a probar busca las reglas que contienen ese objetivo en su
conclusin para posteriormente tratar de establecer la verdad de sus
condiciones.
3. Una combinacin de los dos anteriores.
Los esquemas anteriores se enfrentan al conflicto que surge cuando hay ms 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
Resolucin 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 ejecucin.
3. Ejecutar la regla ms recientemente instanciada o la ltima.
Una dificultad con esta FRC es que si bien a medida que crece el nmero de reglas
crece el conocimiento del sistema, tambin se hace ms difcil la bsqueda. Una
solucin parcial a este problema es descomponer la BC inicial en varias partes que
puedan ser procesadas de manera independiente. Adems de descomponer la BC
es necesario descomponer, por supuesto, la condicin de terminacin en varias
subcondiciones, una para cada subbase. Un caso especial de esta descomposicin
es expresarla como una conjuncin de las subcondiciones componentes.
Los sistemas de produccin que permiten descomponer su BC y la condicin de
terminacin reciben el nombre de Sistemas de Produccin 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 aplicacin.
2. Un mtodo 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 informacin 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 algortmico tradicional no puede lidiar con
informacin incompleta ya que si algn dato es incorrecto, la respuesta ser
incorrecta.

Captulo I. Generalidades

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 definicin de los conceptos y sus relaciones.
Imprecisiones y pobre seguridad de los instrumentos usados para hacer las
observaciones.
Imprecisiones del lenguaje de representacin en el que se trasmite la informacin.
Falta de idoneidad de un formalismo para representar cierta clase de
conocimiento.
Agregacin de informacin desde mltiples 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
estn 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 propagacin de la incertidumbre.
Las representaciones numricas son propias para representar y manipular la
incertidumbre dada por la informacin imprecisa, pues ellas permiten trabajar con
valores de confidencia. Es posible, adems, definir un clculo que ofrece un
mecanismo para propagar la incertidumbre a travs del proceso de razonamiento, sin
embargo, la representacin numrica no puede ofrecer una explicacin clara de las
razones que conducen a una conclusin dada.
Los modelos basados en este enfoque estn, en su mayor parte, designados para
manipular el aspecto de la incertidumbre derivado de la informacin incompleta,
pues, al carecer de medidas para cuantificar los niveles de confidencia, son
inadecuados para manipular la informacin imprecisa y son ms apropiados para
permitir seguir la traza desde las fuentes de informacin a las conclusiones.

I.6 Desarrollo de un SE
Para desarrollar un SE es importante conocer los siguientes conceptos:
Ingeniera del Conocimiento: Es la disciplina relacionada con la forma en que se
organizan, construyen y verifican las BC de un SE.
Adquisicin del Conocimiento: Es el proceso de extraccin, codificacin y
verificacin del conocimiento de un experto humano. Si se usa Reglas de
Produccin como forma de representacin del conocimiento, la extraccin se
refiere a la formulacin de las reglas, la codificacin, a la escritura de las mismas
en una determinada sintaxis y la verificacin al refinamiento de la BC. La
adquisicin 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 ingeniera 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 hbil entrevistador.

Captulo I. Generalidades

I.7 Caractersticas generales de SESE


Las bases de conocimiento para el sistema SESE se escriben en forma de Reglas
de Produccin, este formalismo es el ms ampliamente conocido y usado como
paradigma de representacin del conocimiento.
Las mquinas de inferencia de SESE (WUCShell y TeachShell) interpretan un cdigo
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 versin sobre Windows est formado por cuatro partes relativamente
independientes:
WUCShell : Es un ambiente integrado para el desarrollo de Sistemas Expertos.
Este mdulo no necesita de ningn otro componente del sistema aunque, puede
interpretar las bases compiladas por el mdulo 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 bibliografa correspondiente y
adquirir el producto.
TeachShell : Una modificacin de WUCShell que incorpora un mecanismo con
propsitos docentes.
RulesCompiler : Un compilador de lnea para las bases de conocimientos de
WUCShell y TeachShell.
Expert : Un mdulo que contiene el mecanismo de inferencia de WUCShell con el
fin de incorporarlo a otras aplicaciones.
Los objetos que manipulan las mquinas 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 conclusin 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 cualificacin de externo.

I.7.1 Manipulacin de la incertidumbre en el SESE


La manipulacin del conocimiento y los datos inciertos, inseguros e inexactos es
tpica de los SE. El mecanismo de esta manipulacin 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 estn 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:
Imprecisin 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 dbiles debido a que el experto o constructor del modelo es
incapaz de establecer una correlacin fuerte entre la condicin y la conclusin, lo

Captulo I. Generalidades

cual hace que la implicacin no sea categrica 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 dbil.
La declaracin de implicaciones dbiles permite que el Ingeniero de Conocimiento
declare reglas dbiles definiendo el valor de correlacin entre la condicin y la
conclusin 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 evaluacin de la
satisfaccin de las condiciones, en la propagacin de la incertidumbre a travs del
encadenamiento de las reglas y en la consolidacin de la misma conclusin derivada
de diferentes reglas.
El mecanismo de manipulacin de la incertidumbre en los Sistemas Expertos
bsicamente tiene que responder a estas preguntas:
Cuando una condicin est compuesta de mltiples clusulas X1, X2,...,Xn, Cul
es la funcin T(X1,X2,...,Xn) que determina el grado de certeza Xp de la
condicin?
Cuando una implicacin no es totalmente cierta, o sea, tiene una certeza Sr Cul
es la funcin G(Xp, Sr) que propaga la incertidumbre a travs de la regla?
Cuando la misma conclusin est establecida por mltiples reglas con grados de
certeza Y1,..,Ym Cul es la funcin S(Y1,...Ym) que permite calcular el grado
final de certeza de esta conclusin agregando estos grados de certeza?
SESE define las siguientes reglas para la propagacin de la incertidumbre:
1. Para el clculo de las implicaciones dbiles:
Para los operadores (>, >=, <, <=, <>).
Si la regla tiene implicaciones dbiles la certidumbre de las comparaciones es el
valor que indique la implicacin dbil.
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 dbiles (no hay cnf asociados a la condicin), la
certidumbre de las comparaciones es 100.
Ejemplo 1.6
rule 2
if C <= 19
then D := 'Si'

Captulo 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 dbiles la certidumbre de la comparacin es el valor
que indique la implicacin dbil.
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 dbiles la certidumbre de la comparacin es el
valor de certidumbre que el atributo tenga. Ese valor pudo haber sido obtenido a
travs 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 clculo del FC en la premisa se usan:
Condiciones unidas por la conectiva AND
FC(A and B) = mn(FC(A), FC(B)).
Condiciones unidas por la conectiva OR
FC(A or B) = mx(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(Condicin) = mn(FC(A=10),FC(B>76))
Ejemplo 1.11

Captulo I. Generalidades

11

rule 2
if
(A = 10) or
(B > 76)
then
D := 'Si'
end;
El factor de la certidumbre se calcula como:
FC(Condicin) = mx(FC(A=10),FC(B>76))
3. Para el clculo del FC de la conclusin 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 conclusin no contiene la especificacin 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 clculo del FC cuando varias reglas tienen la misma conclusin:
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

Captulo I. Generalidades

C := 19
end;
rule 2
if
D <= 19
then
C := 19 // La misma conclusin
end;

12

14

Captulo II. Manual del usuario

Captulo II. WUCShell, Manual del usuario


II.1 El men de tareas y la barra de herramientas
Men de tareas

Barra de herramientas

Editor del sistema

La figura anterior muestra una vista general del sistema WUCShell (Shell de la
Universidad Central, versin 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 ratn.
2. Usando la combinacin 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.

15

Captulo II. Manual del usuario

Opcin File
La opcin File se usa para abrir, guardar y cerrar proyectos. La siguiente figura nos
permite apreciar su aspecto con el men correspondiente desplegado.

Comandos
New
Open
Save
Save As
Save All
Close
Close All
Exit

Descripcin
.
Crea una nueva base de conocimiento.
Usa una caja de dilogo para cargar una base de conocimiento
dada.
Guarda la base de conocimiento.
Guarda la base de conocimiento actual usando un nuevo
nombre.
Guarda todos los proyectos abiertos.
Cierra la base de conocimiento actual.
Cierra todas las bases de conocimiento.
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
acompaa de la opcin View.
Open Project
New Project

Save Project
Close All

La Barra de herramientas permite un acceso rpido 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 slo se logra con el uso del ratn.

16
Ntese 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.
Captulo II. Manual del usuario

17

Captulo II. Manual del usuario

Opcin Edit
La opcin Edit se utiliza para manipular textos en la edicin de proyectos.

Comandos
Undo
Redo
Cut
Copy
Paste
Delete
Select All

Descripcin
.
Deshace la ltima accin o el ltimo borrado.
Hace lo contrario de el ltimo undo.
Retira de la ventana de edicin el texto marcado y lo enva al
porta papeles o clipboard.
Pone una copia del texto seleccionado en el porta papeles
dejando el texto marcado en su lugar original.
Copia el contenido del porta papeles en la posicin del cursor.
Borra el texto seleccionado.
Selecciona todo el texto contenido en la ventana de edicin.

Opciones disponibles en la Barra de herramientas.

Undo

Cut

Redo

Paste

Copy

Captulo II. Manual del usuario

18

Opcin Search
La opcin Search se utiliza para localizar textos y smbolos dentro del archivo en
edicin, actualmente dispone de un solo comando .

Comando
Find

Descripcin
.
Busca la primera aparicin del texto especificado dentro de
la base de conocimiento en edicin.

Opcin disponible en la Barra de herramientas.


Find

19

Captulo II. Manual del usuario

Opcin View
Se utiliza para mostrar las diferentes vistas del ambiente del WUCShell.

Comandos
Call Infer
Attributes
Breakpoints
SpeedBar

Descripcin
.
Muestra una ventana donde se coloca el atributo que se
est infiriendo y la regla que se est usando.
Muestra las propiedades de los atributos durante el
proceso de inferencia.
Muestra, en una caja de dilogo, la lista de los
Breakpoints.
Permite configurar la Barra de herramienta.

Opciones disponibles en la Barra de herramientas.

Attributes

Call Infer

Breakpoints

20

Captulo II. Manual del usuario

Opcin Project
La opcin Project se usa para compilar una base de conocimiento que debe estar
abierta.

Comandos
Compile
Syntax Check
Information

Descripcin
Si la base de conocimiento actual ha sido
Modificada, la compila.
Chequea sintcticamente la base de
conocimiento actual, pero no genera cdigo.
Muestra informacin acerca del proyecto y el
estado actual despus de su compilacin.

Opciones disponibles en la Barra de herramientas.

Compile

Syntax Check

Information

21

Captulo II. Manual del usuario

Opcin Run
La opcin Run permite la ejecucin de la inferencia y ayuda a depurar los
programas.

Comandos
Run
Step Over
Trace Into
Run To Cursor

Show Execution Point


Program Pause
Program Reset
Add Breakpoint

Descripcin
.
Compila la base de conocimiento
(si ha sido modificada) y ejecuta la aplicacin.
Ejecuta un proyecto paso a paso.
Ejecuta un proyecto paso a paso.
Ejecuta el proyecto hasta la posicin del
cursor, para continuar de ah en adelante
se tiene que utilizar unas de las dos
opciones anteriores.
Cuando se est ejecutando un programa paso
a paso, posiciona el cursor en la lnea de
ejecucin dentro de la ventana de edicin.
Detiene temporalmente la ejecucin de la
aplicacin.
Termina la inferencia.
Abre una caja de dilogo para crear o modificar puntos
de ruptura ("breakpoints").

Las opciones en la Barra de herramientas son:


Trace Into
Run

Run to Cursor

Pause
Trace Over
Show Execute Point

Add BreakPoint

22

Captulo II. Manual del usuario

Opcin Tools
Tools se utiliza actualmente slo para permitir especificar que se compile la base de
conocimiento con informacin simblica, de manera que sirva de entrada para el
sistema TeachShell. A partir de este opcin se podrn configurar, en versiones
posteriores, el aspecto que se desea para cada una de las partes del sistema.
Comandos
Environment Options

Descripcin
.
Marque la opcin "compile with debug information"
en la caja de dilogo que acompaa a este
comando"

Environment Option

Captulo II. Manual del usuario

Opcin Help
Help ofrece una amplia ayuda acerca del uso del sistema.

Comandos
Contents

Descripcin
.
Mantiene una "gua" 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 versin del sistema y datos acerca del equipo
que concibi y program el sistema.

23

Captulo II. Manual del usuario

24

II.2 Cajas de dilogos del men File


Dialogo Open
La caja de dilogo Open se usa para cargar una base de conocimiento en memoria.

Entradas
File Name

Files of type
Look in

Descripcin
.
Escriba el nombre del archivo que desee cargar (la
extensin kbs es para archivos de base de conocimiento y
la extensin kbo es para archivos que han sido
previamente compilados).
Presenta una lista desplegable para seleccionar el tipo de
Archivo (kbs o kbo).
Permite especificar un camino o ruta de acceso hacia el
archivo que se desea cargar.

Captulo II. Manual del usuario

Dilogo Save del comando Save as


La caja de dilogo Save se utiliza para guardar el archivo en edicin.

Entradas
File Name
Save as type
Save in

Descripcin
.
Permite escribir el nombre del archivo que se desea
guardar.
Presenta una lista desplegable para seleccionar el formato
del archivo que se desea guardar.
Permite especificar la localizacin donde se desea
guardar el archivo

25

26

Captulo II. Manual del usuario

II.3 Vistas
Vista de las propiedades de los atributos.
Esta vista, que slo 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.

Valor del atributo

Nombre del atributo

Forma de acceso:
1. Usando el comando Attributes de la opcin View en el Men de tareas.
2. Usando el icon correspondiente dentro de la opcin VIEW en la Barra de
herramientas.

27

Captulo II. Manual del usuario

Vista para editar las propiedades de los atributos.


Esta vista permite, durante el proceso de inferencia, la edicin de las propiedades de
los atributos.
Tipo del atributo
Valor del atributo
Valor de certidumbre

Nivel de inferencia

Para acceder a ella hay que activar la vista anterior y hacer doble click sobre el
nombre del atributo que se desea editar.

28

Captulo II. Manual del usuario

Vista para la edicin de los breakpoints.


Esta vista permite, durante el proceso de inferencia, la edicin de los breakpoints.
Nombre del proyecto

Lnea del Breakpoint

Condicin de parada
Veces a ejecutar
Forma de acceso:
1. Usando el comando Add Breakpoints de la opcin Run en el Men de tareas.
2. Usando el icon correspondiente dentro de la opcin Run en la Barra de
herramientas.

29

Captulo II. Manual del usuario

Vista que muestra la lista de breakpoints.


Muestra la lista de los breakpoints actuales y sus propiedades.
Nombre del proyecto

Nmero de lnea del breakpoint

Breakpoint deshabilitado
Forma de acceso:
1. Usando el comando Breakpoints de la opcin View en el Men de tareas.
2. Usando el icon correspondiente dentro de la opcin View en la Barra de
herramientas.
Al pulsar doble click con el ratn sobre algn breakpoint de la lista se presenta el
editor del sistema con el cursor sobre la lnea donde aparece la sentencia dada.

Captulo II. Manual del usuario

30

Vista que muestra el Stack.


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

Atributos infiriendose

Reglas pendientes

Forma de acceso:
3. Usando el comando Call Infer de la opcin View en el Men de tareas.
4. Usando el icon correspondiente dentro de la opcin View en la Barra de
herramientas.
Doble click sobre cualquier atributo, activa la vista del editor y sita el cursor en el
lugar desde donde se orden la inferencia del atributo.
Doble click sobre la regla, activa la vista del editor y sita el cursor sobre dicha regla.

Captulo II. Manual del usuario

31

Vista para la edicin de proyectos.


Esta vista permite la edicin de los proyectos. Brinda facilidades para marcar, cortar,
copiar y pegar bloques; permite, adems, deshacer las modificaciones.

Click derecho sobre el editor activa un men Pop up que permite cerrar el proyecto y
ubicar breakpoints entre otras opciones.

32

Captulo II. Manual del usuario

Vista de la interfaz para las respuestas


Esta vista aparece durante el proceso de inferencia, a travs 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 continuacin.
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

33

Captulo III. Manual del programador

Captulo 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.
Base de Conocimiento
Actions
External

Asks

End

Rules

.
De acuerdo a la sintaxis anterior, una base de conocimiento est compuesta por
tres mdulos 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 definicin comienza con la palabra reservada Rules.
Adicionalmente existe un cuarto mdulo obligatorio y conocido como Bloque de
acciones, que se define con la palabra reservada Actions.
El fin de un bloque se especifica, implcitamente, con el inicio de otro, excepto el
bloque de acciones que finaliza con la palabra reservada End seguida por un
punto lo que constituye, adems, el fin de la base de conocimiento.
Ejemplo 3.1
External
Familia
...
Asks
Ask Patas: 'Cuntos pares de patas tiene el animal?'
...
Rules
Rule 1
If Familia = 'Artrpodos' and
Patas
= 6
Then
SubFamilia := Insectos
End;
...
Actions
Find SubFamilia
...
End.

34

Captulo III. Manual del programador

Definicin del bloque de atributos externos


Se considera un atributo declarado (implcitamente), cuando ste aparece en una
sentencia ASK del bloque de preguntas o forma parte de la conclusin de una
regla.
La especificacin External define el bloque de atributos externos y especifica una
lista de atributos que se usan en una base dada y no estn 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 conclusin de ninguna regla ni en el bloque de
preguntas de la base), de ah la declaracin de ese atributo como externo para
que la regla 1 pueda utilizarlo.
EXTERNAL

Identificador de atributo externo

,
WUCShell ejecuta sentencias, los atributos externos estn 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 utilizacin 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 utilizacin 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 utilizarn en B2. Esa accin 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.
Obsrvese 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 := 'Artrpodos'
End;
Actions
Find Familia
Savefact Familia
Chain 'B2.KBO'
End.

Captulo III. Manual del programador

Archivo b2.kbs
External
Familia
Asks
Ask Patas: 'Cuntos pares de patas tiene el animal?'
Rules
Rule 1
If Familia = 'Artrpodos' and
Patas
= 6
Then
SubFamilia := Insectos
End;
Actions
Find SubFamilia
End.

35

36

Captulo III. Manual del programador

Definicin del bloque de preguntas


La especificacin Asks define el bloque de preguntas o sea contiene la
declaracin de todos los atributos preguntables (definidos por la meta sentencia
(MS) Ask).
ASKS

Definicin de MS ASK

Las preguntas definen la interfaz entre la mquina de inferencia y el usuario del


sistema experto.
Ejemplo 3.3
asks
ask Reaccion :
'Despus de calentar la sustancia como mximo /n' +
'una hora, a reflujo, con cido sulfrico al /n' +
'60% se observa que : '
domain
'Se disuelve sin desprendimiento de gas',
'Se disuelve con fuerte desprendimiento de CO2',
'Se obtiene una solucin marrn 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 hidrlisis con HCL al 20% durante 4 horas, extraccin/n'+
'con ter y concentracin de las capas acuosa y/n'+
'etrea se obtienen slidos se determinada temperatura/n'+
'de fusin. En este caso, cul es la temperatura de fusin /n'+
'alcanzada por la capa etrea? (en grados Celcius)'
choice 133,152

37

Captulo III. Manual del programador

Definicin del bloque de reglas


La especificacin 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.
RULES

Definicin de regla

;
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;

38

Captulo III. Manual del programador

Definicin del bloque de acciones


La palabra reservada Actions especifica la lista de acciones que sern
ejecutadas durante el proceso de inferencia.
ACTIONS

Definicin de Acciones

El bloque de acciones principal define el punto de entrada para comenzar la


secuencia de deduccin de la mquina de inferencia.
El bloque de acciones de una regla define el conjunto de acciones que se
ejecutarn cuando la condicin 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;

39

Captulo III. Manual del programador

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; slo se utilizan durante el proceso de compilacin para
generar la forma interna, ej. ASK.
2. Las segundas son las verdaderas sentencias y son ejecutadas por la
mquina 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.

Definicin de la meta sentencia Ask


Declara un atributo como un preguntable.
ASK

Nombre de Atributo

Conjunto de Seleccin

Pregunta

Definicin de explicacin

Dominio de definicin

Pregunta
Cadena de Caracteres
Definicin de imagen

Texto de la pregunta

Certidumbre de la respuesta

Editor de respuesta

40

Captulo III. Manual del programador

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 imgenes.

Definicin de imagen
Se utiliza la palabra reservada Image para especificar el camino de bsqueda de
una archivo (incluye el archivo) que contiene la imagen que se desea mostrar
como parte de la interfaz del usuario.
Definicin de imagen

IMAGE

Camino de bsqueda

Se puede utilizar esta facilidad para mostrar preguntas con imgenes , elementos
de un dominio con imgenes asociadas, o para mostrar una imagen mediante la
sentencia Display.

Conjunto de seleccin
El Conjunto de seleccin se define mediante la palabra reservada Choice y
especifica una lista de literales o atributos separados por coma, como posibles
respuestas a las preguntas.
Conjunto de seleccin
CHOICE

Literal
Atributo

,
Los literales pueden ser cualquiera de los tipos definidos por el sistema (string,
real, integer). Los atributos preguntables que forman parte del Conjunto de
seleccin tienen que haber sido previamente definidos en la base de
conocimiento de lo contrario se genera un error de compilacin 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 seleccin.
Ask Mancha1: Image(Mancha.bmp')
Choice 'Caderas', 'Murcilago'

41

Captulo III. Manual del programador

Dominio de definicin
La palabra reservada Domain define el dominio de respuesta.
Dominio de definicin
DOMAIN

Literal
Definicin de imagen

Literal

,
Los literales pueden ser cualquiera de los tipos definidos por el sistema string,
real, integer.
Los elementos del dominio que tienen una interfaz grfica mediante la definicin
de una imagen toman el valor literal definido despus 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 compilacin como en tiempo de ejecucin el sistema
garantiza que los atributos definidos por domain slo puedan tomar valor dentro
del dominio.

Ejemplo 3.8. Pregunta de cadena de caracteres con dominio de definicin sin


imagen asociada.
Ask Reaccion_a :'Caliente el material seco en un tubo de combustin /n' +
'conteniendo en la boca un papel de PH./n/n/n'+
'Cmo se comporta?'
Domain 'Dbilmente alcalino', 'Neutro o dbilmente cido'

42

Captulo III. Manual del programador

Definicin de explicacin
La palabra reservada Because permite asociar a cada pregunta una explicacin
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 botn de <<Because>>.
Definicin de explicacin

BECAUSE

Definicin de items a mostrar

Ejemplo 3.9 Pregunta con explicacin asociada.


Ask Mancha1:
Image(Mancha.bmp')
Choice 'Caderas', 'Murcilago'
Because 'Se necesita saber la reaccin del paciente ante la mancha 1 del
test'.
Imagen de la pregunta

Certidumbre de la respuesta

Texto del because de la pregunta

Botn del because


Botn del browser

43
Se pueden definir preguntas sin conjunto de seleccin ni dominio de definicin
asociado, para este tipo de preguntas y para las de conjunto de seleccin
(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, segn las siguientes reglas:
1. Si la respuesta est compuesta solo por nmeros en el rango que define el
integer entonces la respuesta es un nmero entero (tipo integer).
2. Si la respuesta est compuesta por nmeros y un punto (.) en el formato y
rango que define un real entonces la respuesta es un nmero 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 estn definidos previamente como preguntables ni externos
se consideran deducibles y en tiempo de ejecucin se tratan de inferir mediante
un encadenamiento hacia atrs 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.
Captulo III. Manual del programador

Ejemplo 3.10 Pregunta de cadena de caracteres con dominio de definicin e


imagen asociada.
ask Color: 'Cual es
domain
Image('AP.bmp')
Image('A.bmp')
Image('RC.bmp')
Image('Az.bmp')

el color de la mancha ?'


=
=
=
=

'Amarillo Pardo',
'Amarillo',
'Rojo Carmn',
'Azul Violeta'

Texto de la pregunta

Certidumbre de la respuesta

Elementos del Dominio

44

Captulo III. Manual del programador

Ejemplo 3.11 Pregunta de cadena de caracteres con dominio de definicin sin


imagen asociada.
Ask Country: 'Entre el pas a que pertenece.'
Domain 'USA', 'China', 'Cuba', 'Rusia', 'Canada'

Texto de la pregunta

Certidumbre de la respuesta

Elementos del Dominio

Imagen por defecto

Las imgenes mostradas por las preguntas visuales y por las sentencia Display
se enmarcarn dentro del espacio que la interfaz le asigne a las imgenes
reduciendo su tamao proporcionalmente, estas imgenes reducidas pueden ser
vistas en toda su dimensin mediante un doble click sobre la imagen.
Ejemplo 3.11 Resumen de ASK con dominio
Asks
Ask Color: 'Cul es el color de la mancha?'
Domain
Image('AP.bmp') = 'Amarillo Pardo',
Image('A.bmp') = 'Amarillo',
Image('RC.bmp') = 'Rojo Carmn',
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 pas 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;

45

Captulo III. Manual del programador

Definicin de elemento visible


La definicin 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 compilacin 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.













Definicin de elemento visible


Literal
Atributo

Ask
Cnf

Ejemplo 3.12
Asks
Ask A: 'Qu valor le asigna a A?'
Because 'Me es imprescindible su valor'
Ask B : 'Cunto vale B?'
Because 'Es uno de los componentes de la frmula'
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;

Captulo III. Manual del programador

46

47

Captulo III. Manual del programador

Efecto de una sentencia display con texto solamente

Efecto de una sentencia display con una imagen asociada

Imagen mostrada por Display

48

Captulo III. Manual del programador

Efecto de un zoom sobre una imagen

Imagen mostrada por Display

Ampliacin de la Imagen

Captulo III. Manual del programador

49

Definicin de literal
El sistema es capaz de manipular literales como:
Cadena de caracteres: de cualquier tamao encerrado entre comillas.
Enteros: Secuencia de dgitos en el rango de -32768..32767.
Reales: Secuencia de dgitos permitiendo la inclusin de punto flotante en el
rango 2.9x10-39..1.7x1038
Definicin de literal
Cadena de caracteres
Entero
Real

Ejemplo 3.14
'Esto es un literal de tipo cadena de caracteres '
'Los cambios de lnea 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

50

Captulo III. Manual del programador

III.3 Sentencias
Las acciones que se pueden realizar sobre los elementos de la base de
conocimiento estn 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
sern mostrados en pantalla en tiempo de ejecucin.
Sentencia Display

DISPLAY

Imagen
Elemento visible

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.

Captulo III. Manual del programador

51

52

Captulo III. Manual del programador

Sentencia Is
La declaracin 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.
Sentencia Is
Atributo

IS

Literal
Atributo

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 mximo 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.

53

Captulo III. Manual del programador

Sentencia Repeat
Mediante la sentencia Repeat es posible definir un conjunto de acciones cclicas
que sern llevadas a cabo por cualquiera de las sentencias permisibles. El fin del
ciclo se especifica con la palabra reservada UntilKnown.
La condicin de terminacin 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 condicin de parada no se inferir en el
momento de la evaluacin solo se verificar si su valor es conocido o no.
Sentencia Repeat
REPEAT

Ejemplo 3.17
Actions
Repeat
Reset all
Find Familia
Find Subfamilia
Find Composicion
Find Resumen
Find Finalizar
Untilknown Finalizar
End.

Sentencia

UNTILKNOWN

Atributo

54

Captulo III. Manual del programador

Sentencia Find
La sentencia Find permite iniciar el proceso de inferencia del atributo
especificado.
Sentencia Find
FIND

Atributo

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 direccin de bsqueda
Backward chaining o Dirigida por objetivos.
Si el atributo es externo esta accin no provoca ningn cambio.

Ejemplo 3.18
Actions
Repeat
Reset all
Find Familia
Find Subfamilia
Find Composicion
Find Resumen
Find Finalizar
Untilknown Finalizar
End.

55

Captulo III. Manual del programador

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 accin sea
ejecutada.
Sentencia Reset
RESET

ALL
Atributo

Por defecto todos los atributos tienen asignado el valor Unknown. Si despus de
una inferencia se desea asignar ese valor a todos los atributos de la base de
conocimiento se debe utilizar la clusula All como parmetro de la accin 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.

56

Captulo III. Manual del programador

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, debern ser declarados externos en la base de conocimiento
destino .
Sentencia SaveFact
SAVEFACT

ALL
Atributo

Para guardar todos los atributos de la base de conocimiento actual se utiliza la


clusula All como parmetro de la accin SaveFact.
La accin SaveFact utiliza una zona de memoria para almacenar la direccin de
los ltimos atributos guardados, cada ejecucin de la accin SaveFact
sobrescribe las direcciones anteriores.

57

Captulo III. Manual del programador

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).
Sentencia Chain

Chain

Camino

La ejecucin de la sentencia Chain provoca:


1. Un cambio de ejecucin 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 accin 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 accin 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 ejecucin de la base de conocimiento destino se efecta sobre otro hilo del
sistema dejando el hilo activo en espera de la terminacin de ste y mostrando
otra interfaz de ejecucin para la base destino.
La forma de utilizacin 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 utilizacin 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 utilizarn en B2. Esa accin 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.
Obsrvese que la sentencia Chain utiliza el archivo B2.KBO, por lo que el archivo
B2.KBS debe haberse compilado previamente.

Captulo 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 := 'Artrpodos'
End;
Actions
Find Familia
Savefact Familia
Chain 'B2.KBO'
End.

Archivo b2.kbs
External
Familia
Asks
Ask Patas: 'Cuntos pares de patas tiene el animal?'
Rules
Rule 1
If Familia = 'Artrpodos' and
Patas
= 6
Then
SubFamilia := Insectos
End;
Actions
Find SubFamilia
End.

Nueva interfaz activa

Interfaz de la base de conocimiento del Chain

59

Captulo III. Manual del programador

III.4 Definicin 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
Definicin de regla

Rule
If

Entero
Condicin

Then

Conclusin
End

Bloque de Acciones

Entero: Es un nmero entero que especifica el nivel (Level) de prioridad de la


regla en cuestin y tiene que ser nico para la base de conocimiento.
Condicin: Es el conjunto de condiciones que son necesarias para que las
conclusiones y acciones de la regla puedan ser ejecutadas.
Conclusin: Especifica las conclusiones que se ejecutarn cuando la
condicin de la regla sea verdadera.
Bloque de acciones: Especifica las acciones que se ejecutarn cuando la
condicin de la regla sea verdadera
Todo atributo que se encuentre en la parte derecha de una conclusin 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 sern ejecutadas por la Mquina de Inferencia en el momento de la
deduccin de un atributo, ste tiene una tarea importante en el Mtodo de
Solucin de Conflictos de la mquina.

Captulo III. Manual del programador

60

Ejemplo 3.22
rules
rule 1
if (ReaccionA = 'Neutro o dbilmente 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 poliadicin de ',
'isocianatos polifuncionales con polialcoholes, polieteres',
'o polieteres, conteniendo grupos hidroxilos. Si se pasan ',
'los vapores de la pirlisis del plstico 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 identificacin 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;

61

Captulo III. Manual del programador

Definicin de Conclusin
La definicin de Conclusin especifica el valor que los atributos deducibles
obtendrn cuando sta sea ejecutada por la Mquina de Inferencia.
Definicin de Conclusin
Atributo

:=

Literal
Atributo

Cnf

Real

Mediante la declaracin de una conclusin se define un Atributo como deducible.


El bloque para el clculo 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
condicin de la regla tenga durante la inferencia.
en caso de que no se especifique el bloque CNF el valor de la certidumbre de
la conclusin es la mxima 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;

62

Captulo III. Manual del programador

Definicin de Condicin
La definicin de condicin permite expresar las premisas necesarias para que
una regla sea verdadera, lo que significa que se efecten las acciones que la
regla especifica y se asignen a los atributos de la conclusin los valores
correspondientes.
Las condiciones estn definidas segn el formato estndar ANSII, con los niveles
de prioridad requeridos.
Operadores Condicionales
Operador Operacin Prioridad
Not
negacin
2da
And
and lgico 3ra
Or
or lgico
4ta

Relacin
unario
binario
binario

Ejemplo
.
not(A = B), not(Exclude B)
(A = B) and (B = C) and (C = D)
(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 lgicos son asociativos de izquierda a derecha.

Para el operador and la evaluacin de las condiciones se define como de circuito


corto o evaluacin parcial (short-circuit) lo que significa que si en algn momento
de la evaluacin de las condiciones relacionadas con and alguna es falsa (lo que
implica que la condicin sea falsa), la evaluacin falla.
De acuerdo con las exigencias del clculo de la certidumbre para el operador or la
evaluacin de las condiciones se define como de circuito largo o evaluacin
completa (complete-circuit) lo que significa que todas las condiciones de la
sentencia se evaluarn sean cuales sean los resultados.
Los operadores lgicos no se comportan como operadores sobre bits por lo que
las condiciones de comparacin, que son las de mas relevante importancia, tienen
la mxima prioridad.

63

Captulo III. Manual del programador

Operadores Relacionales
Operador Operacin
=
Igual
<>
Diferente
<
Menor que
>
Mayor que
<=
Menor o igual que
>=
Mayor o igual que
Exclude Control de inferencia

Prioridad
1ra
1ra
1ra
1ra
1ra
1ra
1ra

Relacin
binaria
binaria
binaria
binaria
binaria
binaria
unaria

Ejemplo
A=5, A=string, A=5.3
A<>5, <>string,A<>5.3
A<5, A<string, A<5.3
A>5, A>string ,A>5.3
A<=5,A<=string,A<=5.3
A>=5,A>=string,A>=5.3
not(Exclude B)
exclude b

Mediante la combinacin 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 mquina de inferencia hace lo mismo para los atributos instanciados (en
tiempo de ejecucin). 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.
Definicin de comparacin
Relacin

Cnf
EXCLUDE

Real

Atributo

Definicin de Relacin
Expresin

Expresin

<

UNKNOWN

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

64
Mediante la definicin 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
conclusin (:=) o de hecho (is) provocar un error de compilacin 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 evaluacin (si todava no se han convertido en hechos) o sea la inclusin de
un atributo en la condicin de una regla puede provocar un proceso de inferencia.
Bajo estas circunstancias el ejemplo siguiente provocara una inferencia cclica
(detectada en tiempo de ejecucin).
Ejemplo 3.24
Captulo III. Manual del programador

rules
rule 1
if (A = Unknown)
then A := 'Error de ejecucin'
end;
Actions
Find A
End.

Obsrvese que si A ya tuviera un valor asignado la regla anterior fallara (porque


falla su primera condicin) por la tanto no provocara error de ejecucin.
El sistema SESE en general y, por supuesto, WUCShell en particular sigue un
mecanismo de inferencia de "exploracin 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 conclusin ya que la mquina de inferencia no para
inmediatamente despus de probar el atributo por la primera va exitosa sino que
contina hasta agotarlas todas.
La razn fundamental para usar el mecanismo de "exploracin 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
condicin de la regla que no se desee explorar totalmente, la forma de hacer esto
es la siguiente:
-- Dada una regla con conclusin C - Incluya la sentencia Exclude C como primera premisa de la regla.
-- Esa inclusin hace que no se traten de probar las restantes condiciones de la
regla en cuestin 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)"
Obsrvese 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 "Plstico"),
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 relacin a las premisas, sin
embargo todas tienen el mismo atributo en la asignacin de la conclusin (Tipo).
Supongamos que la tercera regla no tiene la primera lnea, o sea la primera
premisa (que hace uso de exclude), puede suceder lo siguiente:

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 errneo desde el punto
de vista de la concepcin de este sistema porque un plstico solo puede ser
de un tipo dado.
En conclusin 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)
Captulo III. Manual del programador

Ejemplo 3.25
rules
rule 1
if (Reaccion_a = 'Dbilmente 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 dbilmente cido')
and
(Reaccion_b = 'Es soluble como mximo 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 consideracin en relacin 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 comparacin (A = Unknown) y A no es


an 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 cclica y esa es
una mala noticia; la buena es que ese ciclo se detecta en tiempo de ejecucin
(quizs un poco tarde para algunos).
Utilice Exclude tambin 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.

Captulo III. Manual del programador

66

Ejemplo 3.27
rules
rule 1
if Not (Exclude SubTipo) and
(SubTipo = 'Resina')
then Composicin := 10

end;
Si la primera condicin 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 condicin.
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;

Definicin de Expresin
La definicin de expresin permite conformar las ms complejas relaciones entre
operandos aritmticos teniendo en cuenta su nivel de prioridad y la asociacin de
los operadores de igual prioridad.
Operadores Aritmticos
Operador Operacin
Prioridad Relacin Compatibilidad
.
ta
*
Multiplicacin
5
binaria
Operandos numricos
/
Divisin
5ta
binaria
Operandos numricos
ta
Div
Divisin Entera
5
binaria
Operandos enteros
%
Resto de la divisin 5ta
binaria
Operandos enteros
ta
+
Adicin
6
binaria
Operandos numricos
+
Concatenacin
6ta
binaria
Operandos de cadena
ta
Sustraccin
6
binaria
Operandos numricos
Signo
6ta
unaria
Operandos numricos
Existen tres reglas bsicas 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 parntesis tienen la mxima prioridad y se ejecutarn
primero que cualquier operador simple.
El compilador, en tiempo de ejecucin, reduce los operadores eliminando los
clculos innecesarios.

67

Captulo III. Manual del programador

Definicin de Funciones
El sistema ofrece un conjunto de sentencia para la ejecucin de funciones
matemticas de gran uso.
Funciones Matemticas
Funcin Operacin
COS
Coseno
ACOS
Arco Coseno
COSH
Coseno Hiperblico
SIN
Seno
ASIN
Arco Seno
SINH
Seno Hiperblico
TAN
Tangente
ATAN
Arco Tangente
TANH
Tangente Hiperblica
LN
Logaritmo Neperiano
LOG
Logaritmo Natural
SQR
Potencia de 2
SQRT
Raz Cuadrada
EXP
Exponencial
ABS
Mdulo(Valor Absoluto)

Entrada
Numrica
Numrica
Numrica
Numrica
Numrica
Numrica
Numrica
Numrica
Numrica
Numrica
Numrica
Numrica
Numrica
Numrica
Numrica

Salida
Real (Radianes)
Real (Radianes)
Real (Radianes)
Real (Radianes)
Real (Radianes)
Real (Radianes)
Real (Radianes)
Real (Radianes)
Real (Radianes)
Numrica
Numrica
Numrica
Numrica
Numrica
Numrica

Potrebbero piacerti anche