Informe Arbol Comidas Sistema Experto

19
  INTELIGENCIA  RTIFICIAL  A Integrantes:  Arana López,Liz 07200056 Yguabil Quispe,Renso 01115087 Tarazona Chicmana,Manuel 07200117 Zarate Aliaga, Manuel 03200134 Ciudad Universitaria, 21 de julio del 2010 | CICLO 2010-I

Transcript of Informe Arbol Comidas Sistema Experto

Page 1: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 1/19

 

INTELIGENCIA 

RTIFICIALAIntegrantes: Arana López,Liz 07200056Yguabil Quispe,Renso 01115087Tarazona Chicmana,Manuel 07200117Zarate Aliaga, Manuel 03200134

Ciudad Universitaria, 21 de julio del 2010 | CICLO 2010-I

Page 2: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 2/19

 

CONTENIDO

GENERAL

I. CAPÍTULO 1

Fundamento TeóricoDesarrollo del Sistema ExpertoExplicación Detallada del ProblemaCódigo fuenteCorrida paso a paso del código

II. CAPÍTULO 2Fundamento TeóricoDesarrollo del Sistema Experto Médico y de PlatillosExplicación Detallada del ProblemaCódigo fuenteCorrida paso a paso del código

Page 3: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 3/19

 

Page 4: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 4/19

 

1CONTENIDOI. PARTE TEÓRICA

1.1 Introducción

¿Qué es un sistema basado en el conocimiento?

Historia de los Lenguajes Basados en Conocimiento

Lenguajes y generadores de sistemas basados en el conocimiento

1.2 Prolog

¿Qué es Prolog?

Historia de Prolog

Programación en Prolog

II. PARTE PRÁCTICA

2.1 Ejemplo práctico de un Sistema Experto

Descripción del problema

Explicación a detalle de la Solución

o Cuadro de enfermedades con sus respectivos síntomas.

o Cuadro de enfermedades con sus respectivos medicamentos.

o Cuadro de Pacientes con sus respectivos síntomas.

o Código Fuente.

o Grafo.

o Explicación del Código Fuente:

Page 5: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 5/19

I. PARTE TEÓRICA

1.1 Introducción 

¿QUÉ ES UN SISTEMA BASADO EN EL CONOCIMIENTO?

Los sistemas basados en el conocimiento son el resultado de un largo proceso de investigaciónrealizado por los científicos en el área de la Inteligencia Artificial, cuando, en los años setenta,comenzaron a comprender que la capacidad de un programa de ordenador para resolverproblemas no reside en la expresión formal ni en los esquemas lógicos de inferencia que empleasino en el conocimiento que posee.

Un experto es alguien que posee unos determinados conocimientos y experiencia en un campo dela actividad humana y es capaz de aplicarlos con rapidez y eficiencia en la resolución de tareasdiferentes aunque no le hayan sido encomendadas con anterioridad, pero que caen dentro de sudominio.

Así, un sistema basado en el conocimiento es un cuerpo de programas de ordenador que intentaimitar e incluso superar en algunas situaciones a un experto humano en un ámbito concreto de suactividad. No pretende, en absoluto, reproducir el pensamiento humano, sino simplemente lapericia de un profesional competente (téngase en cuenta que para construir un SBC se suelecontar con grandes expertos en la materia que incorporan su conocimiento al sistema). Estapretensión es más sencilla ya que en algunos campos reducidos los expertos trabajan siguiendoreglas, aunque, generalmente, no sean conscientes de ello. En aquellos campos en los que nosea necesario aplicar la intuición ni el sentido común, los sistemas basados en el conocimientohan conseguido notables éxitos, consiguiendo en ocasiones ser más regulares y rápidos que lospropios expertos.

HISTORIA DE LOS LENGUAJES BASADOS EN CONOCIMIENTO

Sistemas de primera generación: Los sistemas basados en el conocimiento desarrollados hastahace poco constituyen la cuya característica común reside en la superficialidad del conocimientoque se incluye en el mismo. Los ingenieros de conocimiento (desarrolladores de los sistemas

basados en el conocimiento) se limitan a incorporar en los sistemas la experiencia y criterios delos especialistas sin buscar las razones últimas en las que se basan.

Sistemas de Segunda Generación: Actualmente, existen sistemas más avanzados en la que elconocimiento se estructura en dos niveles. El primer nivel, de control (se suele aludir a él comometaconocimiento y las reglas que lo constituyen reciben el nombre de metarreglas), sirve paradeterminar la forma de utilizar el segundo nivel que es el que contiene el conocimiento de losexpertos.

Page 6: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 6/19

LENGUAJES BASADOS EN CONOCIMIENTO

Para el desarrollo de sistemas basados en el conocimiento se han venido utilizando tantolenguajes de programación específicos de la inteligencia artificial (LISP y PROLOG) como depropósito general (C, PASCAL, etc.).

El lenguaje LISP es uno de los más utilizados desde los comienzos de la I.A.

1.2 Prolog

¿QUÉ ES PROLOG?

Prolog , del Frances :Programation en Logique. Es el lenguaje declarativo, quien a partir de losdatos introducidos deduce nuevos hechos y resuelve el problema automáticamente.

PROLOG tiene incluido, por tanto, un motor de inferencia que se encarga de realizar búsquedas

en su base de hechos.

HISTORIA

Se trata de un lenguaje de programación ideado a principios de los años 70 en la universidad deAix-Marseille por los profesores Alain Colmerauer y Phillipe Roussel. Inicialmente se trataba de unlenguaje totalmente interpretado hasta que, a mediados de los 70, David H.D. Warren desarrollóun compilador capaz de traducir Prolog en un conjunto de instrucciones de una máquina abstractadenominada Warren Abstract Machine, o abreviadamente, WAM . Desde entonces Prolog es unlenguaje semi-interpretado.

Prolog se enmarca en el paradigma de los lenguajes lógicos, lo que lo diferencia enormemente deotros lenguajes más populares tales como Fortran, Pascal, C, Java.

PROGRAMACIÓN EN PROLOG

Los programas en Prolog se componen de cláusulas de Horn  que constituyen reglas del tipo"modus ponendo ponens", es decir, "Si es verdad el antecedente , entonces es verdad elconsecuente ". No obstante, la forma de escribir las cláusulas de Horn es al contrario de lohabitual. Primero se escribe el consecuente y luego el antecedente. El antecedente puede ser unaconjunción de condiciones que se denomina secuencia de objetivos . Cada objetivo se separa conuna coma y puede considerarse similar a una instrucción o llamada a procedimiento de los

lenguajes imperativos. En Prolog no existen instrucciones de control. Su ejecución se basa en dosconceptos: la unificación y el backtracking.

Gracias a la unificación, cada objetivo determina un subconjunto de cláusulas susceptibles de serejecutadas. Cada una de ellas se denomina punto de elección . Prolog selecciona el primer puntode elección y sigue ejecutando el programa hasta determinar si el objetivo es verdadero o falso.

En caso de ser falso entra en juego el backtracking , que consiste en deshacer todo lo ejecutadosituando el programa en el mismo estado en el que estaba justo antes de llegar al punto deelección. Entonces se toma el siguiente punto de elección que estaba pendiente y se repite denuevo el proceso. Todos los objetivos terminan su ejecución bien en éxito ("verdadero"), bien enfracaso ("falso").

Page 7: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 7/19

II. PARTE PRÁCTICA

2.1 Ejemplo práctico de un sistema experto 

DESCRIPCIÓN DEL PROBLEMA

Realizar un sistema experto basado en conocimientos, dicho sistema debe considerarpacientes, enfermedades, platos (platillos de los departamentos), Departamentos yespecialistas que tratan la enfermedad. Asimismo el sistema experto debe respondertodo tipo de preguntas al respecto.

EXPLICACIÓN DE LA SOLUCIÓN

Código Fuente: 

El siguiente es el código de un sistema experto que identifica los platos que una persona debecomer según la enfermedad que tiene así como los departamentos del cual son oriundos losplatos como también los especialistas que tratan las enfermedades.

% ************************************************************%%%%%%%%%%%%----------BASE DE CONOCIMIENTO-------%%%%%%%%%%%%%% ************************************************************%%%%departamentosdepartamento(sanMartin).departamento(junin).departamento(cuzco).departamento(ancash).departamento(ucayali).departamento(arequipa).

%%platos que hayplato(rocoto_relleno).plato(picante_de_caracol).plato(ensalada_pan_arbol).plato(ensalada_de_quinua).plato(garabamba).plato(cebiche_serrano).plato(picante_de_cuy).plato(mazamorra_de_tocosh).plato(mazamorra_de_kiwicha).plato(patarashka).

plato(locro_de_zapallo).plato(ajiaco_de_olluco).plato(caigua_rellena).

Page 8: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 8/19

plato(sancochado).plato(parihuela).plato(sopa_seca).plato(dulce_de_higo).plato(agua_de_manzana).plato(coctel_de_algarrobina).

plato(cau_cau).

%%plato por departamentos%pertenece_a(plato,departamento)pertenece_a(rocoto_relleno,arequipa).pertenece_a(picante_de_caracol,ucayali).pertenece_a(ensalada_pan_arbol,ucayali).pertenece_a(ensalada_de_quinua,junin).pertenece_a(garabamba,cuzco).pertenece_a(mazamorra_de_kiwicha,cuzco).pertenece_a(patarashka,sanMartin).pertenece_a(cebiche_serrano,ancash).

pertenece_a(picante_de_cuy,ancash).pertenece_a(mazamorra_de_tocosh,ancash).

%%%ingredientes que hayingrediente(aceite).ingrediente(arroz).ingrediente(pollo).ingrediente(arverja).ingrediente(zanahoria).ingrediente(culandro).ingrediente(sal).

ingrediente(fideo).ingrediente(tomate).ingrediente(carne).ingrediente(pescado).ingrediente(ajos).ingrediente(cebolla).ingrediente(limon).ingrediente(rocoto).ingrediente(papa).ingrediente(queso).ingrediente(perejil).ingrediente(caracol).ingrediente(aji_panca).

ingrediente(aceite_oliva).ingrediente(pan_arbol).ingrediente(oregano).ingrediente(lechuga).ingrediente(quinua).ingrediente(pimenton).ingrediente(apio).ingrediente(trigo).ingrediente(mote).ingrediente(habas).ingrediente(patita_de_chancho).ingrediente(tarwi).ingrediente(maiz).

ingrediente(cuy).ingrediente(mani).

Page 9: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 9/19

ingrediente(tocosh).ingrediente(canela).ingrediente(aji).ingrediente(kiwicha).ingrediente(guindones).ingrediente(pasas).

ingrediente(azucar).ingrediente(naranja).ingrediente(coco).ingrediente(pescado).

%%%contenido de cada plato%contiene(plato,ingrediente)

%1%Rocoto Relleno%contiene(rocoto_relleno,carne).contiene(rocoto_relleno,rocoto).

contiene(rocoto_relleno,papa).contiene(rocoto_relleno,queso).contiene(rocoto_relleno,perejil).contiene(rocoto_relleno,sal).

%2%Picante de Caracol%contiene(picante_de_caracol,caracol).contiene(picante_de_caracol,aji_panca).contiene(picante_de_caracol,ajos).contiene(picante_de_caracol,cebolla).contiene(picante_de_caracol,tomate).contiene(picante_de_caracol,aceite_oliva).contiene(picante_de_caracol,culandro).

contiene(picante_de_caracol,sal).

%3%Ensalada de Pan Arbol%contiene(ensalada_pan_arbol,pan_arbol).contiene(ensalada_pan_arbol,aceite_oliva).contiene(ensalada_pan_arbol,cebolla).contiene(ensalada_pan_arbol,culandro).contiene(ensalada_pan_arbol,limon).contiene(ensalada_pan_arbol,oregano).

%4%Ensalada de Quinua%

contiene(ensalada_de_quinua,quinua).contiene(ensalada_de_quinua,cebolla).contiene(ensalada_de_quinua,ajos).contiene(ensalada_de_quinua,pimenton).contiene(ensalada_de_quinua,apio).contiene(ensalada_de_quinua,tomate).contiene(ensalada_de_quinua,culandro).contiene(ensalada_de_quinua,limon).

%5%Garabamba%contiene(garabamba,trigo).contiene(garabamba,arverja).contiene(garabamba,mote).

contiene(garabamba,habas).contiene(garabamba,patita_de_chancho).

Page 10: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 10/19

contiene(garabamba,perejil).

%6%Cebiche Serrano%contiene(cebiche_serrano,tarwi).contiene(cebiche_serrano,maiz).contiene(cebiche_serrano,cebolla).

contiene(cebiche_serrano,perejil).contiene(cebiche_serrano,limon).contiene(cebiche_serrano,tomate).contiene(cebiche_serrano,ajos).

%7%Picante de Cuy%contiene(picante_de_cuy,cuy).contiene(picante_de_cuy,ajos).contiene(picante_de_cuy,mani).contiene(picante_de_cuy,papa).contiene(picante_de_cuy,aji).

%8%Mazamora de Tocosh%contiene(mazamorra_de_tocosh,tocosh).contiene(mazamorra_de_tocosh,canela).

%9%Patarashka%contiene(patarashka,pescado).contiene(patarashka,sal).contiene(patarashka,cebolla).contiene(patarashka,ajos).contiene(patarashka,culandro).contiene(patarashka,aceite_oliva).

%10%Mazamora de Kiwicha%contiene(mazamorra_de_kiwicha,kiwicha).contiene(mazamorra_de_kiwicha,guindones).contiene(mazamorra_de_kiwicha,pasas).contiene(mazamorra_de_kiwicha,azucar).contiene(mazamorra_de_kiwicha,naranja).contiene(mazamorra_de_kiwicha,coco).

%11%Locro de Zapallocontiene(locro_de_zapallo,zapallo).contiene(locro_de_zapallo,queso).

contiene(locro_de_zapallo,papa).contiene(locro_de_zapallo,choclo).contiene(locro_de_zapallo,cebolla).contiene(locro_de_zapallo,leche).

%12%Ajiaco de ollucocontiene(ajiaco_de_olluco,olluco).contiene(ajiaco_de_olluco,tomate).contiene(ajiaco_de_olluco,cebolla).contiene(ajiaco_de_olluco,ajos).contiene(ajiaco_de_olluco,queso).contiene(ajiaco_de_olluco,aceite).

%13%Caiguas Rellenascontiene(caiguas_rellenas,caigua).

Page 11: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 11/19

contiene(caiguas_rellenas,cebolla).contiene(caiguas_rellenas,tomate).contiene(caiguas_rellenas,carne).contiene(caiguas_rellenas,pasas).contiene(caiguas_rellenas,aceituna).

%14%Sancochadocontiene(sancochado,carne).contiene(sancochado,papa).contiene(sancochado,yuca).contiene(sancochado,arroz).contiene(sancochado,zanahoria).contiene(sancochado,col).contiene(sancochado,apio).contiene(sancochado,nabo).

%15%Parihuelacontiene(parihuela,ajos).contiene(parihuela,cebolla).

contiene(parihuela,vino).contiene(parihuela,choros).contiene(parihuela,camarones).contiene(parihuela,langostinos).contiene(parihuela,aji).contiene(parihuela,pescado).

%16%Sopa Secacontiene(sopa_seca,cebolla).contiene(sopa_seca,ajos).contiene(sopa_seca,albahaca).contiene(sopa_seca,tomate).contiene(sopa_seca,zanahoria).

contiene(sopa_seca,pollo).contiene(sopa_seca,huevo).contiene(sopa_seca,sal).

%17%Dulce de higocontiene(dulce_de_higo,higo).contiene(dulce_de_higo,azucar).contiene(dulce_de_higo,miel).

%18%Agua de Manzanacontiene(agua_de_manzana,manzana).contiene(agua_de_manzana,azucar).contiene(agua_de_manzana,canela).

%19%Coctel de Algarrobinacontiene(coctel_de_algarrobina,pisco).contiene(coctel_de_algarrobina,algarrobina).contiene(coctel_de_algarrobina,huevo).contiene(coctel_de_algarrobina,azucar).contiene(coctel_de_algarrobina,canela).

%20%Cau-Caucontiene(cau_cau,mondongo).contiene(cau_cau,papa).contiene(cau_cau,cebolla).contiene(cau_cau,ajos).

contiene(cau_cau,aceite).contiene(cau_cau,arverja).

Page 12: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 12/19

 

%%%enfermedades que hayenfermedad(colesterol).enfermedad(vista).

enfermedad(osteoporosis).enfermedad(hepatitis).enfermedad(insuficiencia_renal).enfermedad(artritis).enfermedad(colon_irritable).enfermedad(gastritis).enfermedad(estreñimiento).enfermedad(hipertension).

%aumentamos neumonia por la preguntaenfermedad(neumonia).

%ingrediente que producen una enfermedadproducido_por(colesterol,queso).producido_por(colesterol,carne).producido_por(osteoporosis,sal).producido_por(hepatitis,queso).producido_por(hepatitis,carne).producido_por(insuficiencia_renal,sal).producido_por(artritis,limon).producido_por(artritis,tomate).producido_por(colon_irritable,aji_panca).producido_por(colon_irritable,rocoto).producido_por(colon_irritable,aji).

producido_por(gastritis,aji).producido_por(gastritis,aji_panca).producido_por(gastritis,rocoto).producido_por(gastritis,limon).producido_por(gastritis,habas).producido_por(gastritis,naranja).

%ingrediente que previenen una enfermedad

prevenido_por(vista,zanahoria).prevenido_por(vista,tomate).prevenido_por(anemia,pollo).

prevenido_por(anemia,carne).prevenido_por(anemia,pescado).prevenido_por(anemia,ajos).prevenido_por(gripe,ajos).prevenido_por(gripe,cebolla).prevenido_por(gripe,limon).

prevenido_por(osteoporosis,queso).prevenido_por(osteoporosis,perejil).prevenido_por(osteoporosis,culandro).prevenido_por(osteoporosis,quinua).

prevenido_por(hepatitis,cebolla).

prevenido_por(hepatitis,aceite_oliva).

Page 13: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 13/19

prevenido_por(insuficiencia_renal,quinua).prevenido_por(insuficiencia_renal,trigo).prevenido_por(insuficiencia_renal,papa).prevenido_por(insuficiencia_renal,queso).

prevenido_por(artritis,trigo).

prevenido_por(artritis,arverja).prevenido_por(artritis,perejil).prevenido_por(artritis,tarwi).prevenido_por(artritis,pan_arbol).prevenido_por(artritis,culandro).

prevenido_por(colon_irritable,cuy).prevenido_por(colon_irritable,tarwi).

prevenido_por(colesterol,tarwi).prevenido_por(colesterol,cebolla).prevenido_por(colesterol,ajos).prevenido_por(colesterol,quinua).

prevenido_por(colesterol,aceite_oliva).prevenido_por(colesterol,cuy).prevenido_por(colesterol,mani).

prevenido_por(gastritis,tocosh).prevenido_por(gastritis,canela).

prevenido_por(estreñimiento,limon).prevenido_por(estreñimiento,naranja).prevenido_por(estreñimiento,guindones).prevenido_por(estreñimiento,pasas).prevenido_por(estreñimiento,coco).

%agremamos lo que previene a neumoniaprevenido_por(neumonia,limon).prevenido_por(neumonia,apio).

%%%especialidades medicasespecialidad(hepatologo).especialidad(traumatologo).especialidad(nefrologo).especialidad(reumatologo).especialidad(endocrinologo).especialidad(coloproctologo).especialidad(gastroenterologo).

%agregamos la especialidad para prevenir la neumoniaespecialidad(neumologo).

%especialista que atiende la enfermedadatiende(gastroenterologo,gastritis).atiende(coloproctologo,estreñimiento).atiende(coloproctologo,colon_irritable).atiende(reumatologo,artritis).atiende(nefrologo,insuficiencia_renal).atiende(traumatologo,artritis).atiende(reumatologo,osteoporosis).atiende(hepatologo,hepatitis).

%agregamos especialista que trata la enfermedadatiende(neumologo,neumonia).

Page 14: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 14/19

 

%pacientes que tenemos con su enfermedad que tienentiene(renso,gastritis).tiene(tomas,osteoporosis).tiene(tomas,estreñimiento).

tiene(melissa,artritis).tiene(juan,colon_irritable).tiene(yeny,hepatitis).tiene(jose,insuficiencia_renal).

%agregamos la enfermedad que tiene periquitatiene(periquita,neumonia).

% *************************************************************************% %%%%%%%%----------------------REGLAS----------------------%%%%%%%%%%%%%%%% *************************************************************************%

% /************************************************************************************/ %Preg1%¿que plato debe comer?-ok%plato debe comer(persona,lista sin repetidos)plato_debe_comer(Per,L):- platos_deberia_comer(Per,Lpla),elim_repet(Lpla,L).

%devuelve la lista repetida de platos que puede comer%platos_deberia_comer(persona,lista con repeticion)platos_deberia_comer(Per,L):-findall(Pla,(plato_puede_comer(Per,Pla),tiene(Per,Enf),contiene(Pla,Ing),prevenido_por(Enf,Ing)),L).

 /************************************************************************************/ 

%Preg2%¿que plato puede comer-ok%platos_puede_comer(persona,lista de platos)comida_puede_comer(Per,L):- findall(Pla,plato_puede_comer(Per,Pla),L).

%plato_puede_comer(persona,plato que puede comer)plato_puede_comer(Per,Pla):- lista_enfer(Per,Lenf),plato(Pla),enfer_plato(Lenf,Pla).

%recorre y verifica cada enfermedad de la persona con el plato%enfer_plato(lista de enfermedades,plato)enfer_plato([],_):-!.enfer_plato([Enf|Lenf],Pla):- veri_ingre_plato(Enf,Pla),enfer_plato(Lenf,Pla).

% obtengo la lista ingredientes del plato y con la enfermedad% veri_ingre_plato(enfermedad,plato)veri_ingre_plato(Enf,Pla):- lista_ingre(Pla,Ling),enfer_ingre(Enf,Ling).

%recorre y verifica cada ingrediente con la enfermedad%enfer_ingre(enfermedad,lista de ingredientes)enfer_ingre(_,[]):-!.enfer_ingre(Enf,[Ing|Ling]):-not(producido_por(Enf,Ing)),enfer_ingre(Enf,Ling).

 /************************************************************************************/ 

%Preg3%¿que comida no puede comer-ok

%comidas_no_debe_comer(persona,lista de platos)comidas_no_debe_comer(Per,Lpla):- findall(Pla,comida_no_debe_comer(Per,Pla),Lpla).

Page 15: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 15/19

 %comida_no_debe_comer(persona,plato que no debe comer)comida_no_debe_comer(Per,Pla) :- tiene(Per,Enf),producido_por(Enf,Ing),contiene(Pla,Ing).

 /************************************************************************************/ 

%Preg4%¿Qué ingredientes puede comer-ok%ingredientes_puede_comer(persona,lista de ingredientes)ingredientes_puede_comer(Per,Ling):- findall(Ing,ingre_puede_comer(Per,Ing),Ling).

%ingre_puede_comer(persona,ingrediente que puede comer)ingre_puede_comer(Per,Ing):- lista_enfer(Per,Lenf),ingrediente(Ing),ingre_enfer(Ing,Lenf).

%recorre y verifica los ingredientes con cada enfermedad%ingre_enfer(ingrediente,lista de enfermedades)ingre_enfer(_,[]):-!.ingre_enfer(Ing,[Enf|Lenf]):- not(producido_por(Enf,Ing)),ingre_enfer(Ing,Lenf).

 /************************************************************************************/ 

%%Preg5%¿Que ingredientes no puede comer-ok%ingredientes_no_puede_comer(persona,lista de ingredientes q no come)ingredientes_no_puede_comer(Per,Ling):-findall(Ing,no_puede_comer(Per,Ing),Ling).

%no_puede_comer(persona,ingrediente)no_puede_comer(Per,Ing):- tiene(Per,Enf),ingrediente(Ing),producido_por(Enf,Ing).

 /************************************************************************************/ 

%Preg6%¿Que comidas debe recetar el especialista-ok%comidas_debe_recetar(especialista,lista de platos sin repetir)comidas_debe_recetar(Esp,L):-comidas_deberia_recetar(Esp,Lpla),elim_repet(Lpla,L).

%comidas_deberia_recetar(especialista,lista de platos repetidos)comidas_deberia_recetar(Esp,Lpla):- findall(Pla,comida_debe_recetar(Esp,Pla),Lpla).

%comida_debe_recetar(especialista,plato).comida_debe_recetar(Esp,Pla) :- atiende(Esp,Enf),prevenido_por(Enf,Ing),contiene(Pla,Ing).

 /************************************************************************************/ 

%Preg7%¿Que comidas no debe recetar el especialista-ok%comidas_debe_recetar(especialista,lista de platos sin repetir)comidas_no_debe_recetar(Esp,L):-comidas_no_deberia_recetar(Esp,Lpla),elim_repet(Lpla,L).

%comidas_deberia_recetar(especialista,lista de platos repetidos)comidas_no_deberia_recetar(Esp,Lpla):- findall(Pla,comida_no_debe_recetar(Esp,Pla),Lpla).

%comida_debe_recetar(especialista,plato).comida_no_debe_recetar(Esp,Pla) :- atiende(Esp,Enf),producido_por(Enf,Ing),contiene(Pla,Ing).

 /************************************************************************************/ 

%%Preg8%¿Qué departamento(s) debe visitar ?-ok.........................

Page 16: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 16/19

%departamento_debe_visitar(persona,lista de departamentos)departamento_debe_visitar(Per,LDep):-findall(Dep,debe_visitar(Per,Dep),LDep).

%debe_visitar(persona,departamento)debe_visitar(Per,Dep):- plato_puede_comer(Per,Pla),pertenece_a(Pla,Dep).

 /************************************************************************************/ 

%%Preg9%¿Qué departamento(s) no debe visitar ?-ok%departamento_debe_visitar(persona,lista de departamentos)departamento_no_debe_visitar(Per,LDep):-findall(Dep,no_debe_visitar(Per,Dep),LDep).

%no_debe_visitar(persona,departamento)no_debe_visitar(Per,Dep):- tiene(Per,Enf),producido_por(Enf,Ing),contiene(Pla,Ing),pertenece_a(Pla,Dep).

 /************************************************************************************/ 

% Preg10%¿porcentaje de ingredientes beneficioso que hay x plato segun% enfermedad-ok porcentaje(persona)%porcentaje(Per):-plato_puede_comer(Per,Pla),numero_ingredientes(Pla,Ni),ingredientes_recomendables(Per,Pla,Nir),Por is100*Nir/Ni,write(Pla),write('-->'),write(Por),write('%').

%numero de ingredientes x plato que previenen la enfermedad-ok%ingrediente(persona , platos , numero de ingredientes que debe comer)ingredientes_recomendables(Per,Pla,Nir):-tiene(Per,Enf),findall(Ing,(contiene(Pla,Ing),prevenido_por(Enf,Ing)),L),longitud(L,Nir),write(Enf),write('-->').

 /************************************************************************************/ 

%Preg11¿Que platos provienen de un Departamentoplatos_por_departamento(Dep,Lpla):-findall(Pla,pertenece_a(Pla,Dep),Lpla).

 /************************************************************************************/ 

%Preg12¿Que ingredientes contiene el plato%lista de ingredientes de un plato-ok%lista_ingre(plato,lista de ingredientes del plato)lista_ingre(Pla,Ling):- findall(Ing,contiene(Pla,Ing),Ling).

 /************************************************************************************/ 

%Preg13%¿Que enfermedades tiene una persona%lista de enfermedades que tiene-ok%lista_enfer(persona,lista de enfermedades que tiene)lista_enfer(Per,Lenf):- findall(Enf,tiene(Per,Enf),Lenf).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PREGUNTAS QUE RESPONDIMOS AL PROFESOR %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%si tengo meumonia que platos de ucayali debo comer

Page 17: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 17/19

 consulta(Per,Pla):- tiene(Per,Enf),prevenido_por(Enf,Ing),contiene(Pla,Ing),pertenece_a(Pla,ucayali).

%que medico debe tratar a periquitaconsultar_especialista(Per,Esp):- tiene(Per,Enf),atiende(Esp,Enf).

%que platos "debe" comer periquitaplato_debe_comer(Per,L):- platos_deberia_comer(Per,Lpla),elim_repet(Lpla,L).

%que platos "puede" comer periquitacomida_puede_comer(Per,L):- findall(Pla,plato_puede_comer(Per,Pla),L).

%%% OBS: la diferencia esta en que "debe" come platos que le hace bien a%%% su enfermedad, en cambio en "puede" come platos que le hace bien y%%% paltos que no le hace bien ni mal a su enfermedad%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%**************************************************************% Funciones Varios%************************************************************

%cantidad de ingredientes por plato-ok%numero_ingredientes(plato,numero de ingredientes del plato)

numero_ingredientes(Pla,Ni) :- findall(Ing,contiene(Pla,Ing),L),longitud(L,Ni).

%Elimina los elementos repetidos que est n en una lista*/ 

elim_repet([],[]):-!.elim_repet([X|M],S):-not(lista(X)), elimina_x(M,X,T),elim_repet(T,Y),

concatenar([X],Y,S).elim_repet([X|M],S):-lista(X), elim_l1_de_l2(X,M,T),elim_repet(X,Y),

elim_repet(T,J),concatenar([Y],J,S).

%Determina si lo que recibe es una lista*/ 

lista([]):-!.lista([_|Y]):-lista(Y). /*------------------------------------------------------------------*/ 

 /*Elimina todos los elementos de la lista 1 que est n en la 2*/ 

elim_l1_de_l2([],L,L):-!.elim_l1_de_l2([X|M],L,S):-elimina_x(L,X,T),elim_l1_de_l2(M,T,S). /*------------------------------------------------------------------*/ 

 /*Concatena dos listas*/ 

concatenar([],L,L).

concatenar([X|M],L,[X|Z]):-concatenar(M,L,Z). /*------------------------------------------------------------------*/ 

Page 18: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 18/19

  /*Elimina el elemento x de la lista en todos los niveles*/ 

elimina_x([],_,[]):-!.elimina_x([X],X,[]):-!.elimina_x([X|M],X,S):-elimina_x(M,X,S),!.

elimina_x([R|M],X,S):-lista(R), elimina_x(R,X,T), elimina_x(M,X,P), concatenar([T],P,S).elimina_x([R|M],X,S):-elimina_x(M,X,T), concatenar([R],T,S). /*------------------------------------------------------------------*/ 

%longitud normal de una lista-ok%longitud(lista,longitud de la lista)longitud([],0).longitud([_|Y],S) :- longitud(Y,T), S is T + 1.

Explicación de las reglas básicas del Código Fuente: 

Reglas: 

Plato_debe_comer(persona,X):

Nos mostrará los platos que debe comer (que le hacen bien) el paciente.

comida_puede_comer(Per,L):

Nos mostrará los platos que puede comer (que no le hacen bien ni mal) el paciente.

comidas_no_debe_comer(Per,Lpla)

Nos mostrará los platos que no debe comer (que le mal hacen bien) el paciente.

ingredientes_puede_comer(Per,Ling)

Nos mostrará los ingredientes que debe comer (que le hacen bien) el paciente.

ingredientes_no_puede_comer(Per,Ling)

Nos mostrará los ingredientes que no debe comer (que le hacen daño) el paciente.

comidas_debe_recetar(Esp,L)

Nos mostrara la lista de comidas que el especialista debe recetar para que el paciente se

cure.

comidas_no_debe_recetar(Esp,L)

Nos mostrara la lista de comidas que el especialista no debe recetar al paciente.

departamento_debe_visitar(Per,LDep)

Nos mostrara los departamento(s) que debe visitar el paciente, ya que en ese

departamento sus platillos usan ingrediente que le hacen bien.

Page 19: Informe Arbol Comidas Sistema Experto

5/16/2018 Informe Arbol Comidas Sistema Experto - slidepdf.com

http://slidepdf.com/reader/full/informe-arbol-comidas-sistema-experto 19/19

departamento_no_debe_visitar(Per,LDep)

Nos mostrara los departamento(s) que no debe visitar el paciente, ya que en ese

departamento sus platillos usan ingrediente que le hacen daño.

porcentaje(Per)

nos mostrara el porcentaje de ingredientes beneficioso que hay x plato según enfermedad

platos_por_departamento(Dep,Lpla)

nos mostrara la lista de platos que hay por departamento.

lista_ingre(Pla,Ling)

Nos mostrara la lista de ingredientes por cada plato

lista_enfer(Per,Lenf)

nos mostrara las enfermedades que tiene cada paciente.