Sistema Experto Ejemplo Sistemas FNI Lucio Salgado
Sistema Experto Nombre: Identificación de animales ZOO Tomado de Winston 1992
Descripción Se supone la existencia de un robot (Robbie), que desea pasar el día en el zoologico. Robbie puede percibir las características básicas, como color, tamaño y si un animal tiene pelo o da leche, pero tiene capacidad limitada para identificar objetos mediante estas características.
Descripción Puede distinguir a los animales de otros pero no puede concluir directamente sobre un animal que observa. Entonces Robbie decide construir un sistema experto para identificar animales El zoologico solo tiene siete animales: Una onza, un tigre, una jirafa, una cebra, un avestruz, un pingüino y un albatros. Solo con el afán de simplificar.
Reglas de clasificación Si x tiene pelo entonces x es mamífero R2: Si x da leche entonces x es mamífero R3: Si x tiene plumas entonces x es ave
Reglas de clasificación Si x vuela y x pone huevos entonces x es ave R5: Si x es mamífero y x come carne entonces x es carnívoro R6: Si x es mamífero y x tiene dientes agudos y x tiene garras y x tiene ojos que miran hacia adelante entonces x es carnívoro
Reglas de clasificación Si x es mamifero y x tiene pezuñas entonces x es ungulado R8: Si x es mamifero y x rumia entonces x es ungulado
Reglas de Identificación Si x es carnívoro y x es color leonado y x tiene manchas oscuras entonces x es una onza R10: Si x es carnívoro y x es color leonado y x tiene franjas negras entonces x es un tigre
Reglas de Identificación Si x es ungulado y x es color leonado y x tiene cuello largo y x tiene patas largas entonces x es una jirafa R12: Si x es ungulado y x es color blanco y x tiene franjas negras entonces x es una jirafa
Reglas de identificación Si x es ave y x tiene patas largas y x tiene cuello largo y x es blanca y negra entonces x es un avestruz R14: Si x es ave y x no vuela y x nada y x es blanca y negra entonces x es un pingüino
Reglas de Identificación Si x es ave y x vuela muy bien entonces x es un albatros
Implementación PROLOG Predicado Principal identificar :- hipotesis(Animal), write('Pienso que el animal es: '), write(Animal), nl, undo.
Hipótesis hipotesis(onza) :- onza, !. hipotesis(tigre) :- tigre, !. hipotesis(jirafa) :- jirafa, !. hipotesis(cebra) :- cebra, !. hipotesis(avestruz) :- avestruz, !. hipotesis(pinguino) :- pinguino, !. hipotesis(albatros) :- albatros, !. hipotesis(desconocido). /* sin diagnostico */
Reglas de Identificación onza :- carnivoro, verify(es_color_leonado), verify(tiene_manchas_oscuras). tigre :- verify(tiene_franjas_negras).
Reglas de Clasificación mamifero :- verify(tiene_pelo), !. mamifero :- verify(da_leche). ave :- verify(tiene_plumas), !. ave :- verify(vuela), verify(pone_huevos). carnivoro :- mamifero,verify(come_carne), !. carnivoro :- mamifero,verify(tiene_dientes_agudos), verify(tiene_garras), verify(tiene_ojos_que_mira_hacia_adelante).
Para preguntar ask(Question) :- write('El animal tiene la siguiente caracteristica : '), write(Question), write('? '), read(Response), nl, ( (Response == yes ; Response == y) -> assert(yes(Question)) ; assert(no(Question)), fail).
Verificar verify(S) :- (yes(S) -> true ; (no(S) fail ; ask(S))).
Elimina afirmaciones undo :- retract(yes(_)),fail. undo :- retract(no(_)),fail. undo.