Está en la página 1de 59

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Metodolog a de Programaci on I Sistemas Expertos


Dr. Alejandro Guerra-Hern andez
Departamento de Inteligencia Articial Facultad de F sica e Inteligencia Articial aguerra@uv.mx http://www.uv.mx/aguerra

Maestr a en Inteligencia Articial 2011

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Objetivos

I I I

Familiarizarse con la terminolog a propia de los Sistemas Expertos. Experimentar con la construcci on de Sistemas Expertos en Prolog Elaborar un mini-shell para el desarrollo de Sistemas Expertos.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Estructura de un Sistema Experto (SE)


I

Componentes y Personas involucradas en el desarrollo y uso de un SE:


Usuario Experto en el Dominio Interface con el Usuario Experiencia

Ingeniero del Conocimieno

Mquina de Inferencia

Ingeniero en Sistemas

Base de Conocimiento

Almacn de Trabajo

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Componentes

I I I

Base de conocimientos. La representaci on declarativa de la experiencia, muchas veces en forma de reglas IF-THEN. Almac en de trabajo. Los datos espec cos al problema que se est a resolviendo. M aquina de inferencia. El c odigo central del SE que deriva recomendaciones con base en la base de conocimientos y los datos espec cos del problema. Interfaz del usuario. El c odigo que controla el di alogo entre el usuario y el SE.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Personas

I I I I

Experto del Dominio. Quien resuelve el problema que el SE intentar a resolver. Ingeniero de Conocimiento. Quien codica el conocimiento de los expertos para que pueda ser usado por el SE. Usuario. Quien consultar a el SE para obtener los consejos que esperar a de un experto del dominio. Ingeniero de Sistemas. Quien construye la interfaz del usuario, dise na el formato declarativo de la base de conocimientos, e implementa la m aquina de inferencia adivinan cual es su rol?

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Consideraciones

I I

Dependiendo de la talla del SE, el ingeniero de conocimiento y el ingeniero del sistema, pueden ser la misma persona. Al proceso de codicar el conocimiento de los expertos, se le conoce como ingenier a del conocimiento. El dise no del formato de la base de conocimientos y su codicaci on est an ntimamente relacionados. Siendo esta una tarea complicada, se busca reutilizar del conocimiento codicado usando shells.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Caracter sticas de un SE 1/2

I I I

Razonamiento guiado por las metas o encadenamiento hacia atr as. Inferencia descomponiendo las metas en sub-metas. Manejo de incertidumbre. La habilidad del SE para trabajar con reglas y datos que no son conocidos con precisi on. Razonamiento guiado por los datos o encadenamiento hacia adelante. Inferencia para deducir soluciones a un problema a partir de los datos iniciales disponibles.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Caracter sticas de un SE 2/2

I I I

Representaci on de datos. La forma en que los datos espec cos a un problema dado, son almacenados y accesados por el SE. Interfaz del usuario. La parte del SE que se usa para una interacci on m as amigable con el usuario. Explicaci on. La habilidad para explicar sus procesos de razonamiento y recomendaciones.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Razonamiento basado en metas

I I I
1 2 3 4 5 6 7

Forma eciente de resolver problemas modelados como casos de selecci on estructurada. Ej. identicaci on y diagn ostico. La meta del SE es elegir la mejor opci on de entre varias posibilidades enumeradas. Ej. reglas parte de un SE para identicar aves.
IF familia es albatros AND color es blanco THEN ave es albatros laysan . IF familia es albatros AND color es negro THEN ave es albatros de pies negros .

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Albatros Laysan

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Sub-metas

El sistema puede usar otras reglas para resolver ` a la Prolog las sub-metas planteadas por las reglas de alto nivel, por ejemplo:
IF orden es tubonasales AND tama~ n o es grande AND alas es grandes anguladas THEN familia es albatros .

1 2 3 4 5 6

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Incertidumbre

Es muy com un en la resoluci on de problemas de selecci on estructurada, que la respuesta nal no es conocida con total certeza. Las reglas del experto pueden ser vagas, o el usuario puede estar inseguro sobre sus respuestas. Esto es f acilmente observable en el diagn ostico m edico. Los SE normalmente usan valores num ericos para representar certidumbre. Existen diveras maneras de denirlos y usarlos en el proceso de razonamiento.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Razonamiento guiado por datos

I I

En algunos problemas no es posible enumerar las soluciones alternativas a las preguntas planteadas. Ej. conguraci on. El encadenamiento hacia adelante usa reglas IF-THEN para explorar el estado actual en la soluci on del problema y moverse a estados m as cercanos a la soluci on. Ej. un SE para acomodar mobiliario.
IF no_colocada tv AND sof a en pared X AND pared Y opuesta a pared X THEN colocar tv en pared Y .

I
1 2 3 4

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Reglas en Prolog

Podemos usar las reglas de Prolog para representar las reglas del SE.
ave ( al ba t ro s_ la y sa n ) : familia ( albatros ) , color ( blanco ) . ave ( a l b a t r o s _ p a t a s _ n e g r a s ) familia ( albatros ) , color ( obscuro ) . ave ( ci sne_silb ador ) : familia ( cisne ) , voz ( suave_musical ) . ave ( c i s n e _ t r o m p e t e r o ) : famila ( cisne ) , voz ( alta_trompeta ) .

1 2 3 4 5 6 7 8 9 10 11 12

:-

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Cisne Trompetero (Audubon, 1838)

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Datos y Preguntas en Prolog


I

Para que estas reglas tengan exito al distinguir un ave, necesitamos almacenar hechos acerca del ave que deseamos identicar con el SE.
familia ( albatros ) . color ( obscuro ) .

1 2

Ahora podemos usar metas para preguntar la SE.


? - ave ( X ) . X = albatros_patas_negras Yes

Prolog fue dise nado para hacer IA.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Car acter jer arquico de reglas


I

Representar la naturaleza jer arquica de las reglas del SE. Ej. clasicaci on de un ave.
orden ( nariz_tubular ) : fosas ( e x t e r n a s _ t u b u l a r e s ) , habitat ( mar ) , pico ( gancho ) . orden ( acuatico ) : patas ( membrana ) , pico ( plano ) . familia ( albatros ) : orden ( nariz_tubular ) , tama~ n o ( grande ) , alas ( muy_largas ) . familia ( cisne ) : orden ( acuatico ) , cuello ( largo ) , color ( blanco ) , vuelo ( pesado ) .

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Granularidad de los datos


I I

Ahora el SE puede identicar al albatros a partir de observaciones fundamentales sobre el ave. En la primer versi on, familia/1 fue implementada como un hecho, ahora se implementa como una regla. Los hechos del SE ahora reejan datos m as primitivos:
fosas ( e x t e r n a s _ t u b u l a r e s ) . habitat ( mar ) . pico ( gancho ) . tama~ n o ( grande ) . alas ( muy_largas ) . color ( obscuro ) .

1 2 3 4 5 6

? - ave ( X ) . X = albatros_patas_negras Yes

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Otras relaciones

El ganso canadiense puede usarse para agregar complejidad al sistema. Esta ave pasa los veranos en Canad a y los inviernos en los Estados Unidos:
ave ( g a n s o _ c a n a d i e n s e ) : familia ( ganso ) , estacion ( invierno ) , pais ( es tados_un idos ) , cabeza ( negra ) , pecho ( blanco ) . ave ( g a n s o _ c a n a d i e n s e ) : familia ( ganso ) , estacion ( verano ) , pais ( canada ) , cabeza ( negra ) , pecho ( blanco ) .

1 2 3 4 5 6 7 8

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Metas con referencia a otras jerarqu as


I

Las metas pueden hacer referencia a otros predicados en una jerarqu a (ontolog a) diferente:
pais ( es tados_un idos ) : - region ( oeste_medio ) . pais ( es tados_un idos ) : - region ( sur_oeste ) . pais ( es tados_un idos ) : - region ( nor_oeste ) . pais ( es tados_un idos ) : - region ( a tl an ti c o_ me di o ) . pais ( canada ) : - provincia ( ontario ) . pais ( canada ) : - provincia ( quebec ) . region ( n u e v a _ i n g l a t e r r a ) : - estado ( X ) , member (X ,[ massachusetts , vermont , connecticut , maine ]) . region ( sur_oeste ) : - estado ( X ) , member (X ,[ florida , mississippi , alabama , nueva_orleans ]) .

1 2 3 4 5 6 7 8 9 10 11 12

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Predicados m ultiples

Otras aves necesitar an de predicados m ultiples para ser identicada. Ej. el Mallard macho (Anas platyrhynchos), o pato com un del norte, tiene la cabeza verde con un anillo blanco; la hembra tiene la cabeza caf e moteada:
ave ( mallard ) : familia ( pato ) , voz ( graznido ) , cabeza ( verde ) . ave ( mallard ) : familia ( pato ) , voz ( graznido ) , cabeza ( cafe_moteada ) .

1 2 3 4 5 6 7 8

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Pato com un del norte (Audubon, 1838)

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Representaci on

El sistema puede mejorarse considerablemente si proveemos una interfaz para el usuario, que pregunte por la informaci on cuando esto sea necesario, en lugar de forzar al usuario a introducirla como hechos del programa. Todos los datos, manejandos hasta ahora, han sido de la forma atributovalor (proposicional). atributo familia voz cabeza valor pato graznido verde

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Interacci on
I

Usaremos el predicado pregunta para determinar con ayuda del usuario, cuando un par atributovalor es verdadero:
come ( X ) : - pregunta ( come , X ) . pies ( X ) : - pregunta ( pies , X ) . alas ( X ) : - pregunta ( alas , X ) . cuello ( X ) : - pregunta ( cuello , X ) . color ( X ) : - pregunta ( color , X ) .

1 2 3 4 5

I
1 2 3 4

La versi on m as simple de pregunta es como sigue:


pregunta ( Atrib , Val ) : write ( Atrib : Val ) , write ( ? ) , read ( si ) .

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Ejemplo de corrida
I

La misma llamada a ave /1 inicia la consulta al SE.


? - ave ( X ) . fosas_nasales : externas tubulares ? si . habitat : mar ? si . pico : ganchudo ? si . tama~ n o : grande ? si . alas : largas ? si . color : blanco ? si . X = a lb at ro s _l ay sa n .

Si se responde no a la u ltima pregunta, la regla para ave (albratros laysan) falla, y por backtracking, el SE nos preguntar a nuevamente informaci on que ya sabe! pregunta deber a recordar lo preguntado.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Conocido
I I

Deniremos un nuevo predicado conocido /3 que nos ayude a recordar las respuestas del usuario. Las respuestas no se guardar an directamente en memoria, sino que ser an guardadas din amicamente con asserta/1 cuando pregunta provea informaci on nueva para el SE:
pregunta (A , V ) : - conocido ( si ,A , V ) , !. pregunta (A , V ) : - conocido (_ ,A , V ) , ! , fail . pregunta (A , V ) : write ( A : V ) , write ? : ) , read ( Resp ) , asserta ( conocido ( Resp ,A , V ) ) , Resp == si .

1 2 3 4 5 6 7 8 9 10

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Menues contextuales
I
1 2 3 4

Para atributos de un solo valor, la interfaz pregunta una vez.


pregunta (A , V ) : not ( multivariado ( A ) ) , conocido ( si ,A , V2 ) , V \== V2 , ! , fail .

Para atributos multivariados, una gu a sobre los valores v alidos se implementa con el predicado menu pregunta.
tama~ no (X) :menu_pregunta ( tama~ n o , X , [ grande , mediano , peque~ n o ]) . color ( X ) : menu_pregunta ( color ,X ,[ blanco , verde , cafe , negro ]) .

1 2 3 4

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Checar pregunta
I
1 2 3 4 5 6 7 8 9 10 11 12 13 14

La denici on de menu pregunta/3 es:


menu_pregunta (A ,V , MenuLista ) : write ( Cual es el valor para , write ( A ) , write ( ? ) , nl , write ( MenuLista ) ,nl , read ( Resp ) , checar ( Resp ,A ,V , MenuLista ) , asserta ( conocido ( si ,A , X ) ) , X == V . checar (X ,A ,V , MenuLista ) : member (X , MenuLista ) , !. checar (X ,A ,V , MenuLista ) : write ( Ese valor no es v a lido , intente nuevamente ) , nl , menu_pregunta (A ,V , MenuLista ) .

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Revisitando componentes

El SE de identicaci on de aves tiene dos partes: una base de conocimientos, que incluye la informaci on espec ca sobre las aves; y los predicados para controlar la interfaz con el usuario. Al separar estas dos partes, podemos crear un shell de SE. Con ello podemos crear un nuevo SE que identique, por ejemplo, peces y reutilizar la parte de control de la interfaz. Un cambio m nimo es necesario para separar las dos partes de nuestro SE. Necesitamos un predicado de alto nivel que inicie el proceso de identicaci on:
meta ( X ) : - ave ( X ) .

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Manteninmiento y soluci on
I

El shell tendr a un predicado solucion/0 para labores de mantenimiento del SE, para luego resolver la meta/1:
solucion : abolish ( conocido ,3) , define ( conocido ,3) , meta ( X ) , write ( La respuesta es : ) , write ( X ) , nl . solucion : write ( No se encontr o una respuesta . ) , nl .

1 2 3 4 5 6 7

abolish/2 se usa para eliminar los hechos denidos previamente con conocido /3, cada vez que una consulta se va a ejecutar. dene /2 permite indicarle a Prolog que conocido estar a denido en el SE, para que no cause error.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Resultado

De esta manera tenemos que el SE ha sido dividido en dos partes. Los predicados en el shell son:
I I I I

solucion, pregunta, menu pregunta, los predicados auxiliares de estos. meta, las reglas sobre el conocimiento del SE, las reglas sobre los atributos provistos por el usuario, las declaraciones de los atributos multi-variados.

Los predicados en la base de conocimientos son:


I I I I

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Deniendo un REPL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

se : - bienvenida , repeat , write ( > ) , read ( X ) , do ( X ) , X == quit . bienvenida : write ( Este es el shell de su SE . ) , nl , write ( Escriba : cargar , consultar , o salir en el prompt . ) , nl . do ( cargar ) : - cargar_bd , !. do ( consultar ) : - solucion , !. do ( salir ) . do ( X ) : - write ( X ) , write ( no es un comando v a lido . ) , nl , fail . cargar_bd : - write ( Nombre del archivo : ) , read ( F ) , reconsult ( F ) .

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Arquitectura obtenida
Interfaz del Usuario se pregunta menu_pregunta

Mquina de inferencia solucion cargar

Base de Conocimientos meta reglas mulivaluado preguntado

Memoria de trabajo conocido

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Un nuevo SE

I I

Desarrollaremos un shell que permita manejar reglas con incertidumbre y encadenamiento hac a atr as. Evidentemente, este SE tendr a un formato de reglas propio, diferente a las reglas de Prolog, y por lo tanto, una m aquina de inferencia propia.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Factores de Certidumbre (CF)

La forma m as com un de trabajar con la incertidumbre consiste en asignar un factor de certidumbre a cada pieza de informaci on en el SE. La m aquina de inferencia deber a mantener los factores de incertidumbre conforme el proceso de inferencia se lleve a cabo. Por ejemplo, asumamos que los factores de certidumbre (precedidos por cf) son:
I I

enteros entre -100 (denitivamente falso) y +100 (denitivamente verdadero).

Ejemplo: SE encendido auto


1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

RULE 1 IF not arranca AND bateria_mala THEN problema is bateria . RULE 2 IF luces_debiles THEN bateria_mala cf 50. RULE 3 IF radio_debil THEN bateria_mala cf 50. RULE 4 IF arranca AND olor_gasolina THEN problema is fuga cf 80.

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

RULE 5 IF arranca AND i n d i c a d o r _ g a s o l i n a is vacio THEN problema is tanque_vacio cf 90. RULE 6 IF arranca AND i n d i c a d o r _ g a s o l i n a is bajo THEN problema is tanque_vacio cf 30. ASK arranca MENU ( si no ) PROMPT Su motor arranca ? . ASK luces_debiles MENU ( si no ) PROMPT Sus luces est an d e biles ? .

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Corrida

consultar , reiniciar , cargar , listar , trazar , c o mo , salida : consultar Su motor arranca ? : si Huele a gasolina ? : si Qu e indica la aguja de la gasolina ? : vacio problema - tanque - vacio - cf -90 problema - fuga - cf -80 problema resuelto

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Observaciones

Observen que a diferencia de Prolog, el sistema no se detiene al encontrar el primer posible valor para problema. En este caso se computan todos los valores razonables para problema y se reporta el valor de certidumbre asociado a estas soluciones. Recordemos que estos factores de certidumbre no son probabilidades, solo ponderan de alguna manera las respuestas.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

CF en los hechos

De igual manera, el usuario podr a capturar factores de certidumbre sobre sus respuestas, por ejemplo:
: consultar ... Huele a gasolina ? si cf 50 ...

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Caracter sticas de los CFs

Existen diversas maneras de capturar el concepto de factor de certidumbre, pero todas ellas deben de confrontar las mismas situaciones b asicas:
I I I I I I

Reglas cuyas conclusiones son inciertas, Reglas cuyas premisas son inciertas, Datos provistos por el usuario inciertos, Combinaci on de premisas inciertas con conclusiones inciertas, Actualizar los factores de incertidumbre en los datos almacenados en el espacio de trabajo, Establecer un umbral sobre el cual las premisas se consideran conocidas.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

MYCYN caso 1: premisas ciertas

Revisemos el uso de estos factores por casos. El m as simple, ser a aquel donde las premisas son totalmente ciertas:
arranca cf 100. olor_gas cf 100.

1 2

disparan la regla 4 y por tanto, problema fuga cf 80 deber a agregarse al almac en de trabajo.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

MYCIN caso 2: premisas inciertas


I

Normalmente no estamos totalmente seguros de las premisas de una regla y lo normal ser a tener hechos como:
arranca cf 80. olor_gas cf 50.

1 2

Cuando esto sucede, la incertidumbre en las premisas de la regla debe combinarse con las de la conclusi on: CF = CFregla m n CFpremisa/100

Ej. la regla 4 se activar a con un cf = 50 (el m nimo de las dos premisas) y dada la f ormula anterior, agregar amos problema fuga cf 40.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Disparo de reglas

I I I

Para que una regla dispare, su factor de certidumbre debe superar un umbral que normalmente se ja en 20. As que bajo la denici on anterior, la regla 4 disparar a. Si tuvi esemos olor gas cf 15, entonces la regla no disparar a.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

MYCIN caso 3: varias reglas

I I

Consideren el caso donde hay m as de una regla que da soporte a cierta conclusi on. Cada una de las reglas que disparan contribuir a al factor de certidumbre de la conclusi on. Si una regla dispara y la conclusi on ya se encontraba en el almac en de trabajo:
CF (X , Y ) CF (X , Y ) CF (X , Y ) = = = X + Y (100 X + Y /1 X )/100. Ambos X , Y > 0 Uno de X , Y < 0 m n(|X |, |Y |).

CF ( X , Y ).

Ambos X , Y < 0

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Ejemplo

Si disparamos la regla 2 (luces d ebiles) con su premisa sin incertidumbre, tendr amos que agregar al almac en de trabajo bateria mala cf 50. Luego si disparamos la regla 3 (radio d ebil), el factor de certidumbre de este hecho debe modicarse a bateria mala cf 75. Lo cual resulta intuitivo (hay m as evidencia de que la bater a tiene problemas). Lo que tambi en resulta intuitivo es que necesitamos programar nuestra propia m aquina de inferencia.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Formato de las reglas

cuando Atributo y Valor son atomos, la estructura general de las reglas se ve como:
regla ( Nombre , premisas ( [ av ( A1 , V1 ) , av ( A2 , V2 ) , ... ] ) , conclusion ( av ( Attr , Val ) , CF ) ) .

I
1 2 3 4

Por ejemplo, la regla 5 quedar a representada como:


regla (5 , premisas ([ av ( arranca , si ) , av ( indicador_gasolina , vacio ) ]) , conclusion ( av ( problema , fuga ) , 80) ) .

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Propiedades m aquina de inferencia

Dado el formato de las reglas del SE deseamos que la inferencia tome en cuenta los siguientes aspectos:
I I I

Combine los factores de certidumbre como se indico anteriormente. Mantenga el espacio de trabajo con la informaci on actualizada con las nuevas evidencias obtenidas. Encontrar toda la informaci on acerca de un atributo en particular cuando se pregunte por el, y poner esa informaci on en el espacio de trabajo.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Hechos y metas
I

Los hechos ser an almacenados con el siguiente formato:


hecho ( av (A , V ) , CF ) .

Un predicado meta/2 har a la llamada para resolver un problema dado en estos t erminos. Ej.
? - meta ( av ( problema , X ) , CF ) .

meta/2 debe de contender con tres casos:


I I I

El atributovalor se conoce de antemano; Existen reglas para deducir el atributovalor; Se debe preguntar al usuario.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Preguntar
I

Se puede preguntar al usuario autom aticamente por el valor de un atributo, ante la ausencia de reglas; o bien, se puede declarar que atributos pueden ser preguntados al usuario. As el manejo de la base de conocimientos sea m as expl cito y provee mayor control sobre los di alogos usuario SE. Podemos denir un predicado pregunta/2 para declarar el atributo a preguntar y la frase para ello:
pregunta ( pais_residencia , En qu e pa s vive ? ) .

I I

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Meta: caso 1

Veamos ahora los tres casos para meta/2. El primero de ellos ocurre cuando la informaci on ya est a en la memoria de trabajo:
meta ( av ( Atr , Val ) , CF ) : hecho ( av ( Atr , Val ) , CF ) , !.

1 2 3

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Meta: caso 2
I

El valor del atributo no se encuentra en la memoria de trabajo, pero es posible preguntar por ello al usuario:
\ meta ( av ( Atr , Val ) , CF ) : \+ hecho ( av ( Atr , _ ) ,_ ) , pregunta ( Atr , Msg ) , preguntar ( Atr , Msg ) , ! , meta ( av ( Atr , Val ) , CF ) .

1 2 3 4

El predicado preguntar /2 interroga al usuario, quien responde con un valor para la atributo Atr y un factor de certidumbre asociado CF . El mensaje Msg da la informaci on necesaria para guiar al usuario en estas consultas:
preguntar ( Atr , Msg ) : write ( Msg ) , read ( Val ) , read ( CF ) , asserta ( fact ( av ( Atr , Val ) , CF ) ) .

1 2 3

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Meta: caso 3

El valor del atributo es desconocido, pero se puede deducir usando las reglas denidas en el sistema:
meta ( Meta , CFactual ) : buscaReglas ( Meta , CFactual ) .

1 2

I I

Esta llamada hace uso de la m aquina de inferencia que dise naremos para nuestro SE con incertidumbre. El factor de certidumbre se etiqueta como actual, porque es posible que cambie de valor al ir aplicando las reglas denidas en el sistema.

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Buscando reglas
I

El predicado buscaReglas /2 se encarga de encontrar aquellas reglas cuya conclusi on unica con la Meta en cuesti on y de actualizar el factor de certidumbre con base en las premisas de estas reglas. Si la Meta es un hecho conocido, no hay nada que hacer, s olo regresar true :
buscaReglas ( Meta , CFactual ) : regla (N , premisas ( ListaPremisas ) , conclusion ( Meta , CF ) ) , probar ( ListaPremisas , Contador ) , ajustar ( CF , Contador , NuevoCF ) , actualizar ( Meta , NuevoCF , CFactual ) , CFactual == 100 , !. buscaReglas ( Meta , CF ) : hecho ( Meta , CF ) .

1 2 3 4 5 6 7 8 9 10 11

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Probando premisas

Dada una lista de premisas pertenecientes a una regla encontrada para satisfacer la Meta del SE, es necesario que buscaReglas /2 las pruebe. Para ello denimos probar /2:
probar ( ListaPremisas , Contador ) : probAux ( ListaPremisas , 100 , Contador ) . probAux ([] , Contador , Contador ) . probAux ([ Premisa1 | RestoPremisas ] , ContadorActual , Contador ) : meta ( Premisa1 , CF , Cont ) , Cont >= 20 , probAux ( RestoPremisas , Cont , Contador ) .

1 2 3 4 5 6 7 8 9

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Ajuste de factores

El ajuste de los factores de certidumbre se lleva a cabo de la siguiente manera:


ajustar ( CF1 , CF2 , CF ) : X is CF1 * CF2 / 100 , int_redondear (X , CF ) . int_redondear (X , I ) : X >= 0 , I is integer ( X + 0.5) . int_redondear (X , I ) : X < 0, I is integer ( X - 0.5) .

1 2 3 4 5 6 7 8 9 10 11

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Actualizaci on memoria de trabajo

La actualizaci on de la memoria de trabajo se lleva a cabo de la siguiente manera:


actualizar ( Meta , NuevoCF , CF ) : hecho ( Meta , ViejoCF ) , combinar ( NuevoCF , ViejoCF , CF ) , retract ( hecho ( Meta , ViejoCF ) ) , asserta ( hecho ( Meta , CF ) ) , !. actualizar ( Meta , CF , CF ) : asserta ( hecho ( Meta , CF ) ) .

1 2 3 4 5 6 7 8 9

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Combinaci on de CFs

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

combinar ( CF1 , CF2 , CF ) : CF1 >= 0 , CF2 >= 0 , X is CF1 + CF2 *(100 - CF1 ) /100 , int_redondear (X , CF ) . combinar ( CF1 , CF2 , CF ) : CF1 < 0 , CF2 < 0 , X is -( -CF1 - CF2 *(100+ CF1 ) /100) , int_redondear (X , CF ) . combinar ( CF1 , CF2 , CF ) : ( CF1 < 0 ; CF2 < 0) , ( CF1 > 0 ; CF2 > 0) , abs_minimum ( CF1 , CF2 , MCF ) , X is 100 * ( CF1 + CF2 ) / (100 - MCF ) , int_redondear (X , CF ) .

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Interfaz con el usuario


I

La interfaz con el usuario es muy parecida a la denida en la secci on anterior. Se incluyen predicados auxiliares necesarios en su denici on:
se : repeat , write ( consultar , cargar , salir ) , nl , write ( : ) , read_line ( X ) , ejec ( X ) , X == salir . ejec ( consultar ) : metas_principales , !. ejec ( cargar ) : cargar_reglas , !. ejec ( salir ) .

1 2 3 4 5 6 7 8 9 10 11 12 13

Introducci on

Caracter sticas de los SE

Usando Prolog

Interfaz con el usuario

Shell

Incertidumbre

Auxiliares
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

metas_principales :meta _princip al ( Atr ) , principal ( Atr ) , imprime_meta ( Atr ) , fail . metas_principales . principal ( Atr ) : meta ( av ( Atr , Val , CF ) ) , !. principal ( _ ) : - true . imprime_meta ( Atr ) : nl , hecho ( av ( Atr , Val ) , CF ) , CF >= 20 , salidap ( av ( Atr , Val ) , CF ) , nl , fail . imprime_meta ( Atr ) : write ( Meta : ) , write ( Attr ) , write ( solucionada . ) , nl , nl .