Professional Documents
Culture Documents
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.