lab01_expertos

Upload: lidia-contreras-coronado

Post on 05-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 LAB01_EXPERTOS

    1/11

    UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAFACULTAD DE ING. MINAS, GELOGIA Y CIVIL

    ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

    POGRAMACIN EN PROLOG---------------------------------------------------------------------------------------------------------------------------

    Docente del curso: ING KAREN CARRION DOMINGUEZ

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    SISTEMAS EXPERTOS IS-442 - 1 -

    LABORATORIO 01

    PROGRAMACIN VISUAL PROLOG

    OBJETIVOS

    Instalacin de Visual Prolog. Conocer el manejo de Visual Prolog. Conocer la forma de declarar y utilizar los predicados Desarrollar ejemplos en modo consola o texto.

    DESCRIPCIN

    Prolog es un lenguaje de programacin hecho para representar y utilizar el conocimiento que

    se tiene sobre un determinado dominio. Ms exactamente, el dominio es un conjunto de

    objetos y el conocimiento se representa por un conjunto de relaciones que describen las

    propiedades de los objetos y sus interrelaciones. Un conjunto de reglas que describa estaspropiedades y estas relaciones es un programa Prolog.

    Prolog es un lenguaje de programacin que es usado para resolver problemas que envuelven

    objetos y las relaciones entre ellos.

    TIPOS DE DATOS EN PROLOG

    SymbolHay dos tipos de smbolos:

    1. Un grupo de caracteres consecutivos (letras, nmeros y signos de subrayado) quecomienzan con un carcter en minscula

    Ejemplo:alto,alto_edificio,el_alto_edificio_en_la_ciudad

    2. Un grupo de caracteres consecutivos(letras y nmeros) que comienzan y terminan condobles comillas("). Este tipo es til cuando se quiere comenzar el smbolo con un

    carcter en mayscula o si se quieres agregar espacios entre los caracteres del smbolo.

    Ejemplo:"Alto","Alto edificio".

    http://www.monografias.com/Computacion/Programacion/http://www.monografias.com/trabajos/epistemologia2/epistemologia2.shtmlhttp://www.monografias.com/trabajos7/doin/doin.shtmlhttp://www.monografias.com/trabajos7/doin/doin.shtmlhttp://www.monografias.com/trabajos/epistemologia2/epistemologia2.shtmlhttp://www.monografias.com/Computacion/Programacion/http://www.monografias.com/trabajos16/desarrollo-del-lenguaje/desarrollo-del-lenguaje.shtmlhttp://www.monografias.com/Computacion/Programacion/http://www.monografias.com/trabajos15/calidad-serv/calidad-serv.shtml#PLANThttp://www.monografias.com/trabajos11/basdat/basdat.shtmlhttp://www.monografias.com/trabajos14/dinamica-grupos/dinamica-grupos.shtmlhttp://www.monografias.com/trabajos14/dinamica-grupos/dinamica-grupos.shtmlhttp://www.monografias.com/trabajos11/basdat/basdat.shtmlhttp://www.monografias.com/trabajos15/calidad-serv/calidad-serv.shtml#PLANThttp://www.monografias.com/Computacion/Programacion/http://www.monografias.com/trabajos16/desarrollo-del-lenguaje/desarrollo-del-lenguaje.shtmlhttp://www.monografias.com/Computacion/Programacion/http://www.monografias.com/trabajos/epistemologia2/epistemologia2.shtmlhttp://www.monografias.com/trabajos7/doin/doin.shtmlhttp://www.monografias.com/trabajos7/doin/doin.shtmlhttp://www.monografias.com/trabajos/epistemologia2/epistemologia2.shtmlhttp://www.monografias.com/Computacion/Programacion/
  • 7/31/2019 LAB01_EXPERTOS

    2/11

    UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAFACULTAD DE ING. MINAS, GELOGIA Y CIVIL

    ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

    POGRAMACIN EN PROLOG---------------------------------------------------------------------------------------------------------------------------

    Docente del curso: ING KAREN CARRION DOMINGUEZ

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    SISTEMAS EXPERTOS IS-442 - 2 -

    StringCualquier grupo de caracteres consecutivos (letras y nmeros) que comience y termine con

    dobles comillas("). Es igual a smbolo pero Prolog los trata de forma distinta.

    Ejemplo:"alto","alto edificio"

    IntegerCualquier numero comprendido entre (-32.768 y 32.768). El limite esta determinado porque

    los enteros se almacenan como valores de 16 bits, este limite puede variar segn la versin

    de Prolog.

    Ejemplo:4,-300,3004

    RealCualquier numero real en el rango +/- 1E-307 a +/-1E+308. El formato incluye estas

    opciones: signo, numero, punto decimal, fraccin, E(exponente), signo para el exponente,

    exponente.

    Ejemplo:3,3.1415

    CharCualquier carcter de la lista ASCII estndar, posicionado entre dos comillas sencillas().

    Ejemplos:t,X PROLOG est orientado a la resolucin de problemas mediante el clculo de

    predicados, basado en:

    Preguntas a la base de datos.

    Pruebas matemticas.

    El programa PROLOG especifca cmo debe ser la solucin, en vez de dar el algoritmo para

    su resolucin. La solucin se obtiene mediante bsqueda aplicando la lgica de predicados.

    http://www.monografias.com/trabajos14/nuevmicro/nuevmicro.shtmlhttp://www.monografias.com/trabajos12/comptcn/comptcn.shtmlhttp://www.monografias.com/trabajos12/comptcn/comptcn.shtmlhttp://www.monografias.com/trabajos14/nuevmicro/nuevmicro.shtml
  • 7/31/2019 LAB01_EXPERTOS

    3/11

    UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAFACULTAD DE ING. MINAS, GELOGIA Y CIVIL

    ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

    POGRAMACIN EN PROLOG---------------------------------------------------------------------------------------------------------------------------

    Docente del curso: ING KAREN CARRION DOMINGUEZ

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    SISTEMAS EXPERTOS IS-442 - 3 -

    OBJETOS DE DATOS

    Tipos de datos primitivos: variables y constantes:

    Enteros Reales Caracteres

    Los identificadores con minscula representan hechos, los que van con mayscula variables. El

    alcance de una variable es la regla donde aparece.

    EL ENTORNO DE VISUAL PROLOG

  • 7/31/2019 LAB01_EXPERTOS

    4/11

    UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAFACULTAD DE ING. MINAS, GELOGIA Y CIVIL

    ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

    POGRAMACIN EN PROLOG---------------------------------------------------------------------------------------------------------------------------

    Docente del curso: ING KAREN CARRION DOMINGUEZ

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    SISTEMAS EXPERTOS IS-442 - 4 -

    Ejemplos de programacin en Prolog:

    Los programas en Prolog a lo que tienden es a desarrollar consultas en base a predicados que

    se escriben en un "programa" de Prolog. Tras "correr" el programa, se pueden hacer estas

    consultas.

    Ejecutamos el programa. Presione la opcin New del men File. lo que aparecer unaventana en la cual copie lo siguiente:

    Luego almacene su archivo donde deseara pero siempre con la extensin pro., luego dealmacenar el archivo notara el cambio de color de algunas letras del programa quecopio, si no ubico la extensin no suceder el cambio.

  • 7/31/2019 LAB01_EXPERTOS

    5/11

    UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAFACULTAD DE ING. MINAS, GELOGIA Y CIVIL

    ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

    POGRAMACIN EN PROLOG---------------------------------------------------------------------------------------------------------------------------

    Docente del curso: ING KAREN CARRION DOMINGUEZ

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    SISTEMAS EXPERTOS IS-442 - 5 -

    ANLISIS DEL PROGRAMA:La estructuracin de un programa en Visual Prolog contiene estas partes, requeridasnecesariamente:

    Domains: aqu se definen los tipos de datos que se han de usar en los predicados, as porejemplo:

    hombre = stringmetal = symbolnumeros = realletra = char

    Predicates: aqu se definen todos los predicados que se han de definir, en las clusulasequivaldra a la definicin de funciones en lenguaje C, utilizan las definiciones de Domains, aspor ejemplo:

    amigos

    Clauses: contiene la definicin especfica de los predicadosvalioso(oro).hermano(juan, pedro).amigos( luis,pedro,pablo).El smbolo de culminacin se determina por un punto.

    Goal: contiene las consultas a desarrollar en el programa

    El prolog permite como se indico extraer consultas lgicas de los que sucede en el conocimientoexpresado resultando estas consultas verdaderas o falsas (YES, NO) segn corresponda, aquse han de ubicar las preguntas necesarias ejemplo es valioso el oro:valioso(oro).

    Para poner en memoria todas las clusulas y ver la consulta ejecute Test Goaldel men deproyecto o su equivalente CTRL+G o simplemente apretando el botn G de la barra debotones. Luego observara una ventana de sugerencias y errores y otra ventana que muestra elresultado de la consulta en este caso YES. Ntese que se ha ejecutado la consulta para crear

    un ejecutable se tiene que crear un proyecto echo que se desarrollara despus:

  • 7/31/2019 LAB01_EXPERTOS

    6/11

    UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAFACULTAD DE ING. MINAS, GELOGIA Y CIVIL

    ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

    POGRAMACIN EN PROLOG---------------------------------------------------------------------------------------------------------------------------

    Docente del curso: ING KAREN CARRION DOMINGUEZ

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    SISTEMAS EXPERTOS IS-442 - 6 -

    valioso(oro).valioso(plata).valioso(bronce).

    Indican que la "La plata es valiosa", "el oro es valioso". Todos estos predicados se escriben enun "programa" de Prolog. Tras "correr" el programa, se pueden hacer estas consultas:

    Valioso(oro). Es valioso el oro? Esta es una metaYes Si, es la respuesta

    En vez de la consulta anterior se colocara esta nueva:

    Goal Valioso(X).

    X es una variable, por ello va en maysculaAl ejecutar la consulta la respuesta ser:

    Esto corresponde a las especificaciones que se han definido anteriormente en las clusulas.

    Si desea aumentar las especificaciones puede ubicar

    valioso(cobre).valioso(zing).

    La respuesta permitir cinco soluciones para X.

    Consideracin:

    Si desea mejorar la aplicacin podrir ubicar entre comillas todo su programa todas lasespecificaciones de las clusulas el paquete generara de mejor forma estas definicionesubicndolas de un color respectivo.

    Especificaciones en Verde Amarillento, Clusulas en Negro, Cadenas en azul, Variables en verde

    claro, errores en rojo, etc.

  • 7/31/2019 LAB01_EXPERTOS

    7/11

    UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAFACULTAD DE ING. MINAS, GELOGIA Y CIVIL

    ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

    POGRAMACIN EN PROLOG---------------------------------------------------------------------------------------------------------------------------

    Docente del curso: ING KAREN CARRION DOMINGUEZ

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    SISTEMAS EXPERTOS IS-442 - 7 -

    BSQUEDAS: VARIABLES Y PREDICADOS

    La practica le permitir proponer un sistema experto que deduzca quien es cuado de quien enuna familia en base a una serie de conocimientos propuestos, para esto se ira paso a paso.

  • 7/31/2019 LAB01_EXPERTOS

    8/11

    UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAFACULTAD DE ING. MINAS, GELOGIA Y CIVIL

    ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

    POGRAMACIN EN PROLOG---------------------------------------------------------------------------------------------------------------------------

    Docente del curso: ING KAREN CARRION DOMINGUEZ

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    SISTEMAS EXPERTOS IS-442 - 8 -

    Casos: Indicar cual es la respuesta de la consulta:

    Quien es hijo Dan:GOAL hijo(X, "Dan").

    Respuesta:Pedro, Ivan

    Todos los hijos.GOAL hijo(X,Y).

    Respuesta: X=Dan, Y=Juan

    X=Pedro, Y=DanX=Ivan, Y=Dan

    Hermanas de SueGOAL

    Respuesta:

    Hermanas de Susana

    GOALRespuesta:

    Hermanos de LarryGOAL

    Respuesta:

    Todos los casados:GOALRespuesta:

    Todos los hijos de Dan:GOAL

    Respuesta:

  • 7/31/2019 LAB01_EXPERTOS

    9/11

    UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAFACULTAD DE ING. MINAS, GELOGIA Y CIVIL

    ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

    POGRAMACIN EN PROLOG---------------------------------------------------------------------------------------------------------------------------

    Docente del curso: ING KAREN CARRION DOMINGUEZ

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    SISTEMAS EXPERTOS IS-442 - 9 -

    USANDO PREDICADOS :- , ;

    La idea de esta parte es encontrar quien es cuado de quien en base a las clusulas definidasanteriormente, para esto antes de GOAL ubique el siguiente predicado (No interesa que existadoble PREDICATES Y CLAUSES)

    PREDICATEScunado(persona,persona)

    CLAUSEScunado(A,B):-casado(A,C), hermana(C,B).

    cunado(A,B):-hermano(A,C), casado(C,B).

    Referencia: Las variables A, B y C permiten desarrollar las bsquedas necesarias en caso estassean encontradas se cumplan una tras otra en ser verdaderas son asignadas a cuado y se vencomo respuestas.

    Consultas:

    De quien es el cuado(a) de Juan:GOAL cunado("Juan", Z)

    Respuesta:

    Quien es el cuado de Maria:GOAL

    Respuesta:

    Todos los cuados:GOAL

    Respuesta:

    MEJORANDO LA APLICACIN TRABAJANDO CON NUEVOS PREDICADOS

    Se desea conocer en base a los conocimientos definidos:

    PREDICATESpadre(persona,persona)abuelo(persona,persona)

    CLAUSES

    padre(A,B):-hijo(B,A). % no toma en cuenta los hermanos cruzadosabuelo(A,B):-padre(A,C), padre(C,B).

  • 7/31/2019 LAB01_EXPERTOS

    10/11

    UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAFACULTAD DE ING. MINAS, GELOGIA Y CIVIL

    ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

    POGRAMACIN EN PROLOG---------------------------------------------------------------------------------------------------------------------------

    Docente del curso: ING KAREN CARRION DOMINGUEZ

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    SISTEMAS EXPERTOS IS-442 - 10 -

    Consultas:

    Todos los padres:GOAL

    Respuesta:

    Todos los abuelos:GOAL

    Respuesta:

    Se desea conocer los hermanos en comn ya que no se distingue entre estos, existen dospredicados diferentes hermana y hermano, es mas esta no es una relacin de arribaabajo si no del miso nivel por ejemplo si se consulta:

    GOAL hermana("Susana",X).

    La respuesta es: Sin Solucin, pero: hermana("Maria","Susana").

    La solucin parte por incluir un nuevo predicado (incluirlo al final antes de GOAL):

    PREDICATEShermanos(persona,persona)

    CLAUSEShermanos(A,B):-hermano(A,B). %una clusula hermano corresponde a

    hermanoshermanos(A,B):-hermano(B,A). %un hermano puede referirse en forma

    inversa definindose as enhermanos

    hermanos(A,B):-hermana(A,B). %una clusula hermana corresponde a

    hermanoshermanos(A,B):-hermana(B,A). %una hermana puede referirse en forma

    inversa definindose as enhermanos

    hermanos("Popo","Ququ"). %Puede definirse nuevas clusulashermanos("Maria", "Pedro").

    Referencia: Ntese que un predicado no es solamente una definicin si no que se puedesobrecargar, osea redefinirla varias veces.

  • 7/31/2019 LAB01_EXPERTOS

    11/11

    UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAFACULTAD DE ING. MINAS, GELOGIA Y CIVIL

    ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

    POGRAMACIN EN PROLOG---------------------------------------------------------------------------------------------------------------------------

    Docente del curso: ING KAREN CARRION DOMINGUEZ

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    SISTEMAS EXPERTOS IS-442 - 11 -

    Consultas:

    Todos los hermanos existentes:

    GOALRespuesta:

    EJERCICIO 02:

    1. Sobrecargue el predicado hermanos, para encontrar a los hermanos que tengan elmismo padre, utilizando el predicado hijo:

    Ejemplo: Pedro e Ivan son hermanos por que tienen el mismo padre.

    hijo("Pedro", "Dan").hijo("Ivan", "Dan").

    2. Sobrecargue el predicado padre, para encontrar a los hijos de un padre que son loshermanos de sus hijos, utilizando el predicado hijo y hermano.

    Ejemplo: Si Ivan es hijo de Dan e Ivan es hermano de Simon, entonces Simon es hijo de

    Dan.

    hijo("Ivan", "Dan").hermano("Ivan", "Simon").

    3. Desarrolle su ARBOL_GENEALOGICO_ALUMNO.PRO