Sistema Experto
ZOO
Descripcin
Se supone la existencia de un robot (Robbie), que desea pasar el da en el zoologico. Robbie puede percibir las caractersticas bsicas, como color, tamao y si un animal tiene pelo o da leche, pero tiene capacidad limitada para identificar objetos mediante estas caractersticas.
Descripcin
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 pingino y un
Reglas de clasificacin
R1:
Si x tiene pelo entonces x es mamfero Si x da leche entonces x es mamfero Si x tiene plumas entonces x es ave
R2:
R3:
Reglas de clasificacin
R4:
R5:
R6:
Reglas de clasificacin
R7:
R8:
Reglas de Identificacin
R9:
Si x es carnvoro y x es color leonado y x tiene manchas oscuras entonces x es una onza Si x es carnvoro y x es color leonado y x tiene franjas negras entonces x es un tigre
R10:
Reglas de Identificacin
R11:
Si x es ungulado y x es color leonado y x tiene cuello largo y x tiene patas largas entonces x es una jirafa Si x es ungulado y x es color blanco y x tiene franjas negras entonces x es una jirafa
R12:
Reglas de identificacin
R13:
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 Si x es ave y x no vuela y x nada y x es blanca y negra entonces x es un pingino
R14:
Reglas de Identificacin
R15:
Implementacin PROLOG
Predicado Principal
identificar :- hipotesis(Animal), write('Pienso que el animal es: '), write(Animal), nl, undo.
Hiptesis
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 Identificacin
onza :carnivoro, verify(es_color_leonado), verify(tiene_manchas_oscuras). tigre :carnivoro, verify(es_color_leonado), verify(tiene_franjas_negras).
Reglas de Clasificacin
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.